From dacc5a8d7b6f3b716e97cd7c8ee5702347606230 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lera=20Elvo=C3=A9?= Date: Fri, 30 May 2025 05:24:14 +0300 Subject: [PATCH] add some forumoji --- THIRDPARTY.md | 7 +++++++ data/static/emoji/angry.png | Bin 0 -> 458 bytes data/static/emoji/frown.png | Bin 0 -> 533 bytes data/static/emoji/grin.png | Bin 0 -> 535 bytes data/static/emoji/imp.png | Bin 0 -> 532 bytes data/static/emoji/impangry.png | Bin 0 -> 534 bytes data/static/emoji/neutral.png | Bin 0 -> 527 bytes data/static/emoji/smile.png | Bin 0 -> 532 bytes data/static/emoji/sob.png | Bin 0 -> 479 bytes data/static/emoji/surprised.png | Bin 0 -> 522 bytes data/static/emoji/think.png | Bin 0 -> 523 bytes data/static/emoji/tongue.png | Bin 0 -> 551 bytes data/static/emoji/wink.png | Bin 0 -> 536 bytes lib/babycode-emoji.lua | 36 ++++++++++++++++++++++++++++++++ lib/babycode.lua | 9 ++++++++ nginx.conf | 5 +++++ views/common/bbcode_help.etlua | 19 +++++++++++++++++ 17 files changed, 76 insertions(+) create mode 100644 data/static/emoji/angry.png create mode 100644 data/static/emoji/frown.png create mode 100644 data/static/emoji/grin.png create mode 100644 data/static/emoji/imp.png create mode 100644 data/static/emoji/impangry.png create mode 100644 data/static/emoji/neutral.png create mode 100644 data/static/emoji/smile.png create mode 100644 data/static/emoji/sob.png create mode 100644 data/static/emoji/surprised.png create mode 100644 data/static/emoji/think.png create mode 100644 data/static/emoji/tongue.png create mode 100644 data/static/emoji/wink.png create mode 100644 lib/babycode-emoji.lua diff --git a/THIRDPARTY.md b/THIRDPARTY.md index e518a42..b49ae42 100644 --- a/THIRDPARTY.md +++ b/THIRDPARTY.md @@ -31,3 +31,10 @@ Copyright: Gabriele Malaspina Designers: Gabriele Malaspina License: CC0 1.0/CC BY 4.0 CC BY 4.0 compliance: Modified to indicate the URL. Modified size. + +## Forumoji + +Affected files: everything in [`data/static/emoji`](./data/static/emoji) +URL: https://gh.vercte.net/forumoji/ +License: CC0 1.0 +Designers: lolecksdeehaha; Scratch137; 64lu (the project has many more contributors, but these are the people whose designs were reproduced here) diff --git a/data/static/emoji/angry.png b/data/static/emoji/angry.png new file mode 100644 index 0000000000000000000000000000000000000000..7174e718f6045c2ce4b4ec455402578d9f35f511 GIT binary patch literal 458 zcmeAS@N?(olHy`uVBq!ia0vp^{2NS%Lh<0G|+7ApI>x^EEXJ_a4 zNhi98)tz>WHAE+-yslY6xHx*01D3bba4!k2voav)R_5>us#8 zMmN8{{kNfJZQUY92Zrxe^*7=qU3gAykCnga$1l-zNw0LVMWrpv%iSxJgjJp=evnI( z{#^a|(z3G5XLfZ*SqfvXS8j4L{QvO!?V7U9CNlFn{~7!fjM>k6<2%rq44$rjF6*2U FngB>!$npRH literal 0 HcmV?d00001 diff --git a/data/static/emoji/frown.png b/data/static/emoji/frown.png new file mode 100644 index 0000000000000000000000000000000000000000..d5bba916e729ee7441364d29dcb6a16231bb6d1f GIT binary patch literal 533 zcmeAS@N?(olHy`uVBq!ia0vp^{2NS%LhG0X`wFK>GhZr~i+`{y#|me>Lp?QM>0CEdRYr`Tw^1|HJD4S5xmTHhg+k z{olu=e`k`e&C~n$(b>nx=l@B!uRC4;J(m3UR_pIqEg<-RTkHQ(tsfh;o-C34|CsOZ z8^OO{1poXI{C`XE{{g|Ds{|h};QRl8;omEUzaJU?erNdei{bwjhX1=5zAs{UG@If7 zU50;88UCMP_`jLq<9vqyHyHjOWcas+;pJS0&kGnHtYkRW&hTRi(6J0JqOR@-Qr0Cw ze!>6A1`G?2Sjz#8;VkfoEM{QfI}E~%$MaXD00ozMx;TbNgsYxw7iu!#VSDhvsj!iG z&W>A3OIcZ5-u||q;rUa4@0ZiD>=Il7yXH>4{F=Y5tclz0orLknWh~6b<#~^Fr)e{oH4gpk>z}8;Jy>0 zr!CDIc2zFs4Uv+#9Ll?P)BD=4EneNb&Rm(E!hCOG! W)U2AFd-Z@WX7F_Nb6Mw<&;$Sh0uI*z literal 0 HcmV?d00001 diff --git a/data/static/emoji/grin.png b/data/static/emoji/grin.png new file mode 100644 index 0000000000000000000000000000000000000000..c31a42564014a65148cac684545052bd65a6db36 GIT binary patch literal 535 zcmV+y0_gpTP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0jx<_5)#Rq-s52#QCKf+JwH}s{5{(wID>a%yGh@xWE7(yVD zc$%B%?5^2o&e22{tXX^SnKiTLoH2MG;`BA%tZgr-Nv`IA4+DVz5%4O&V;*L9R~Hbm z=e1cLj;1j*JOv{|uH^7!S-|zd9>$grZAE>NS?>2IksAF5Bm#V2ENF3Sb1;s#f2JT+ zA7>|f$gZ5&lIhSHA~l|-@tV;M^7*{7B~D(#_;(oj{L+;@S%TXX(9;j;4vUH2KdQc$ zjbpjU0&JpQ1d5ds(n}AaS#CceNG1T9qYW%fjRR?_A&~+ZUUF#5r3E5qASaw!RM$Dp?(X=t zBec9Q?uyKa%Pi_Fk{(}JWSm*knU)t8LEEWqFyP&uN&Xeosl%%}ZxMUi%@K5yHngn; Z{sRo8$YZ+a5Ci}K002ovPDHLkV1n-2>R literal 0 HcmV?d00001 diff --git a/data/static/emoji/imp.png b/data/static/emoji/imp.png new file mode 100644 index 0000000000000000000000000000000000000000..e0b4f14c411951938cf320e5e968cc50ac6e2e85 GIT binary patch literal 532 zcmeAS@N?(olHy`uVBq!ia0vp^{2NS%LhG0X`wFK)SEBxu&>I0N4MF&Dfatj*zfJM-&bS5uh4#1rrEkK{e2S* z_D(g}JJVoKtHHifgMFC>yVCU6wyN#xQQJ3BZSNGdz0=h8)T`~wSKF7Qwlh&}ZHwBz zPPKhiYWot^wl%2jO9wGFW`oG>nQCi_)%HcI%}G|<1$1rJHi5lB%DN=TFZe&%fMMYg zYdN4XoCO|{#S9F5hd`K7RKu$QD7e(q#W6%8T=iVLP?LcG%LP{HuBN1eUA#>tjvJo* zw?D)CMz#2Jo*JvrggZT1la?}8t+$t8T6}JnVVc^rEuYV9$T__!r}$pwK?|MQor^Zy z+p+F(L2mhP=JmGo_8324oc{W)-|t2a`Gp*RH2i|BPAj%>d|GoLc;}a57N53PuHI8- zo;M6I&-{IFcgLv}KdyNG3Z3Th*kavkx4@b8KU96Iw{4zf@FwUVBga(n-{}YTYXcq3 N;OXk;vd$@?2>{I(`-}hp literal 0 HcmV?d00001 diff --git a/data/static/emoji/impangry.png b/data/static/emoji/impangry.png new file mode 100644 index 0000000000000000000000000000000000000000..a7ed13e7543cbb8451c06c6c8cffda37956eef6e GIT binary patch literal 534 zcmeAS@N?(olHy`uVBq!ia0vp^{2NS%LhG0X`wFK)SEBxu&>I0N4MF&Dfatj*zfJM-&bS5uh4#1rrEkK{e2S* z_D(g}JJVoKtHHifgMFC>yVCU6wyN#xQQJ3BZSNGdz0=h8)T`~wSKF7Qwlh&}ZHwBz zPPKhiYWuR)_9d!qYf#%)thO&5#NL>wwmnmAO{ChKWVKyD*M1PQ>H<>MB|(0{|H%dn z3y)aK0gd4-@Q5sCVBk9h!i=ICUJXFO<(@8%Arj%L=Q@R&6a?5F#P8PeKFzn=|3FAU z@a9K<<=43WZ@u|*MkIsOg)N%PGPSrjRR29FAW^z)j$!H}KkM@{=fB&WFMmE)d`iQq zxOE;8`G*WRGIGm*Gsjlj%+)_2x#QkDext`qRc=k2Ej(2tQ)4&|8c!A1e>^F5j#R+a z{7r5v56sZgHrZ7Be)93uIpMBa`;SQ(c}`lC$J6_gfB%-ubnDr|T%~LO>s*k?J$#p~ Q9Oz^QPgg&ebxsLQ04jL(Z2$lO literal 0 HcmV?d00001 diff --git a/data/static/emoji/neutral.png b/data/static/emoji/neutral.png new file mode 100644 index 0000000000000000000000000000000000000000..d2e53e20598bd2a14806c0484eaefe97fabcc31b GIT binary patch literal 527 zcmV+q0`UEbP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0i;PpK~y+TjZ;ZV z13?shWe7N+B8U=<1_u!0){TlA58wq<5Wz!u1kd1BFQ7MY?U;oKq7ug#l$OM32D{7m ze^+-HKh-h#8`jxY{M!37p(1;=03`bXzZtAyN}*3a{zqQ79CY-~5hC82=8Lp=MWdvkh)jKxZFpdzeggovHOJ+1R%iS%6K{ zo`L7GhxGDeD7Lpf2s#n~#nAx*Q{_UMkC1o(>O7$M?qhhhgs^SD1QU3)9!!IlzFLXJ zr$s$vQ1xINC6zfb+2H9l+Pb?%ti;S~UAkag7vCWii%>R^iQXpL2FM}S#>r`pL~%7x zg(7|`d(JgUa`YIkBRrAp^z8-k7>}$=vE`}qr(8Ieeh|{4Sc#pGqpI+ZzjlP^W`Vug z0){g#60l8awZelU;p~Q1RM#pN=(kPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0jWtuK~y+TjZ@1m z1VI!%Wg_tiA`z2`w@4&oYlGNWSo#4ZBJmME!8h2lv*HU_k7qfa`+{h8GVdqrS*&@AgNL8kz1H($c|ISllCbtNa;Ae#bOI$@h!GSPab>X*`SY%kIP zo2Wbjk1rm27apA1X4?@oCjgqG0s>R!K$>?)+yhk>D7^XTTPnh}?H6GJkLtnHsEk!* zE-@8V$Dr)N){1Hi&18-3c2KL~DWVmZ*LCS&mT8GYI5RgGGPrXE#H2<+qZ2dE^)1#2 z+*}Ypl|APu8+mmzsJU;jJACRVz~dqPE1LRxs+(gDyq0_rQplc?8FJSdc~v#$_-jXq zP8QhPb)at`oC(;vB}*(A87EhDMSb;VfqvWN4FPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0dz@3K~y+Tb&@|z z!%!5(&ohcRhzMeFDe9usPoUzW_yL@pTm-*>o1ey|yR)m{R{vE8Cq>#4kwUc^O`9gq z^KRb@NvuCOdH0^&)4cRWVKmyVS^mrx4GHO|ZD3*!h^K+z6L^1x+Pshfl4i1D?cc7W zR9=J9C2Lu}jNb5kUBmLhjd3LB!n$>}f`z3mz)P%^M>Rd@pBRtz8Y+i%vE&BP$;Xb_ za!#YX;C$EB7&ArESO5k-;-G@PQ~JkRYCTS`J)3&^vH~w`p;_fTb0*B^2hiGQOIh?} zz84}Ns^>!w0%;|TxC@nZxKb7s4SVq&{SK0_108jxwP7k^peLQ+O;Ix(n74+3_xonn zG7Os_W!AHMuI&fD2H(*t^%xE_hhf4>t@0YOpd3o6RE~h>-D9|XB&`}gnY`Tbl6k#R zbhxu-+cw07)#5(TkdNnoOmO2w%G?*`ki!qFEV#V^_02yhvsFWyDTW>LBLxbxz%P8G VtQvPFkJJDF002ovPDHLkV1gZ7)7=07 literal 0 HcmV?d00001 diff --git a/data/static/emoji/surprised.png b/data/static/emoji/surprised.png new file mode 100644 index 0000000000000000000000000000000000000000..726cbb06e20b2d83da9d3c9ba556f6ab08a74893 GIT binary patch literal 522 zcmV+l0`>igP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0iQ`kK~y+TjZ;fX z13?t5HV8&h5kv{*gC9`h2~^y80570|2p+;Ccm}t60doV_{ud&Mkr*`+0wal&OcH0> zdOe>^)P)7F-xb{VRNf$$kUUls4g6)pj$5PZ_kn6 zyA?_em=2LzNK^R4s)S;(Xrix9K0>)K$j$Uz$jNF;*+WDx~4|#wl z+BKlou#n!a_+niigO^MI6o(54l*56cT7KXS=x~8*(?w>t4&Sz0hw?0D3#!Y^+GP2b zni(BGJja6W){QI>GrC;8&D`;KNhBHLoG=yi#RdBvsRQ_85i-IBL==ab=V0?l>^Yv# z2}G>a5=S|kMAPuUL8mtFyG?O+-!Q$aD&274vE)JMdqYLg1+LAWMQ1PkwL|p1u;(Kn zlMB8Cv?*3)$56O>U^;y-EQER6&M^zx`(p4`;#LKb=BGHsKmJv~Hz=aAv#28Wn*aa+ M07*qoM6N<$g7tdlng9R* literal 0 HcmV?d00001 diff --git a/data/static/emoji/think.png b/data/static/emoji/think.png new file mode 100644 index 0000000000000000000000000000000000000000..2d3f235087658b0555b570f59803d7f826357182 GIT binary patch literal 523 zcmeAS@N?(olHy`uVBq!ia0vp^{2NS%Li30X`wFK>GhZr~i+`{y#|me>Lp?QM>0CEdRYr`Tw^1|HJD4S5xmTHhg+k z{oltVA0MB8XOgbX)BE?)*~G-;|4Fy6J6-=hmi+ft>+e^se~$(K-xB#7I;J!GcfQS0%1l`4X*~E;1W+4#}J8d)$^S~O$s8c7qVxkW@dKZTqf$J z$(AYk|9`6O2j21r2R1m)ZdzHF@|34-@y59e6CU}kOuKi-A^G7i#|OXnZI78~a>#&7 zbK>TE6E@sEYPjO<$!QUswYf8HSG%5y?R?h)m8I~ z?{CFy4})bNazoVL)J`g9ySc*a&l+LB)2rU{ysd6^xO#K%wZHGzZ28CB<{+_DDQ3G0 P(7gNS%Lh$0X`wFK>GhZr~i+`{y#|me>Lp?QM>0CEdRYr`Tw^1|HJD4S5xmTHhg+k z{oltVA0MB8XOgbX)BE?)*~G-;|4Fy6J6-=hmi+ft>+e^s|F^aNAJzJ?QR~SP$^Vb} z{=O0X`$h22AHjc*1^?d?{C`03=PJR+3;6y&VEFfn;qP~bKff6Meq{K6h2i@mhDWm* z{@-Qz_mtuPW`>XR8UEj3m?@_AZwg!;iHy{NKg! zV+qjV49E5)b^s~+k|4j}{}cg+KD8Qgpi!I!9+AZi419+`m{C;2s{tsu!qdeuL?T@E zT)R+{0T0`Q2Tp;31rL~FbT=*K>Pou*f1}T-`j=bd-(3<@Vbyr+>G`^(y7uZpR_59c zNy+43Ax*L+s0KF*xvtc`@O;{eqF{f#T~4Q z>4HZ%tNS%Lg50X`wFK>GhZr~i+`{y#|me>Lp?QM>0CEdRYr`Tw^1|HJD4S5xmTHhg+k z{olu=e`k`e&C~n$(b>nx=l@B!uRC4;J(m3UR_pIqEfW)y|F^aNAJzJ?QR~SP$^Vb} z{=O0X`$h22AHjc*1^?d?{C`03=PJR+3;6y&VEFfn;qOO=zuy`D{9^cjh2j4$hVP3Q z9?fR>f0yCkQ-=R%7(UKt_tDNe2UwfVb19UVi!QS6LG`+dBd2%H*cTPV23e zn=MZrIP~oIxuVvluWB5J4H#~``^LWKo5b8l7Iv=BPk$|QH`bfvu4Lhzy6l1#yCTc^ zQbzxxlSL0^w7qII3&?6qZrBz0ZEyL+X_+5a8h=%l4hTB6E2|^rPka2e8=Kc=Ha*Nc aBX7Q4>eZb3u9ZLsGkCiCxvX " + +return { + ["angry"] = emoji_template:gsub("%$", "angry"), + + ["("] = emoji_template:gsub("%$", "frown"), + + ["D"] = emoji_template:gsub("%$", "grin"), + + ["imp"] = emoji_template:gsub("%$", "imp"), + + ["angryimp"] = emoji_template:gsub("%$", "impangry"), + ["impangry"] = emoji_template:gsub("%$", "impangry"), + + ["|"] = emoji_template:gsub("%$", "neutral"), + + [")"] = emoji_template:gsub("%$", "smile"), + + [","] = emoji_template:gsub("%$", "sob"), + ["T"] = emoji_template:gsub("%$", "sob"), + ["cry"] = emoji_template:gsub("%$", "sob"), + ["sob"] = emoji_template:gsub("%$", "sob"), + + ["o"] = emoji_template:gsub("%$", "surprised"), + ["O"] = emoji_template:gsub("%$", "surprised"), + + ["hmm"] = emoji_template:gsub("%$", "think"), + ["think"] = emoji_template:gsub("%$", "think"), + ["thinking"] = emoji_template:gsub("%$", "think"), + + ["P"] = emoji_template:gsub("%$", "tongue"), + ["p"] = emoji_template:gsub("%$", "tongue"), + + [";"] = emoji_template:gsub("%$", "wink"), + ["wink"] = emoji_template:gsub("%$", "wink"), +} diff --git a/lib/babycode.lua b/lib/babycode.lua index 7f37ddb..f0319f1 100644 --- a/lib/babycode.lua +++ b/lib/babycode.lua @@ -1,6 +1,7 @@ local babycode = {} local string_trim = require("lapis.util").trim +local emoji = require("lib.babycode-emoji") local function s_split(s, delimiter, max_matches, trim, allow_empty) local result = {} @@ -121,6 +122,14 @@ function babycode.to_html(s, escape_html) -- these can be nested, so replace open and closed separately text = text:gsub("%[(/?)quote%]", "<%1blockquote>") + + text = text:gsub(":(.-):", function(code) + if emoji[code] then + return emoji[code] + else + return code + end + end) -- replace loose links text = text:gsub("(https?://[%w-_%.%?%.:/%+=&~%@#%%]+[%w-/])", function(url) diff --git a/nginx.conf b/nginx.conf index 2b60a8c..d8d14a9 100644 --- a/nginx.conf +++ b/nginx.conf @@ -38,6 +38,11 @@ http { alias data/static/avatars; expires 1y; } + location /emoji { + alias data/static/emoji; + expires 1y; + } + location /static/js/ { alias js/; diff --git a/views/common/bbcode_help.etlua b/views/common/bbcode_help.etlua index 20dce0a..6868836 100644 --- a/views/common/bbcode_help.etlua +++ b/views/common/bbcode_help.etlua @@ -1,6 +1,25 @@
babycode guide
    +
  • +
    + Forumoji (emoticons) +
      +
    • smile - :):
    • +
    • frown - :(:
    • +
    • grin - :D:
    • +
    • neutral - :|:
    • +
    • angry - :angry:
    • +
    • sob - :,: :cry: :sob: :T:
    • +
    • surprised - :o: :O:
    • +
    • think - :hmm: :think: :thinking:
    • +
    • tongue - :p: :P:
    • +
    • wink - :;: :wink:
    • +
    • imp - :imp:
    • +
    • impangry - :angryimp: :impangry:
    • +
    +
    +
  • Loose links will be converted to clickable links automatically
  • [b]bold[/b]
  • [i]italic[/i]