From 4ebd0caa273fa03d75b3aa686e053ed2541df711 Mon Sep 17 00:00:00 2001 From: Estevao Soares dos Santos Date: Sun, 7 Jun 2015 19:02:45 +0100 Subject: [PATCH] feature(extensionLoading): add support to legacy extensions in the new extension mechanism Old extensions that register themselves in `showdown.extensions` can be loaded and validated using the new extension loading mechanism. However, a warn is issued, alerting users and developers that the extension should be updated to use the new mechanism BREAKING CHANGE: Deprecates `showdown.extensions` property. To migrate, you should use the new method `showdown.extension(, )` to register the extension. --- Gruntfile.js | 3 +- dist/showdown.js | Bin 51593 -> 53297 bytes dist/showdown.js.map | Bin 165151 -> 169937 bytes dist/showdown.min.js | Bin 16372 -> 16873 bytes dist/showdown.min.js.map | Bin 17684 -> 18362 bytes package.json | 2 +- src/converter.js | 108 ++++++++++++++++++------ src/showdown.js | 125 +++++++++++++++------------- src/subParsers/outputModifiers.js | 11 --- test/node/legacyExtensionSupport.js | 24 ++++++ test/node/showdown.Converter.js | 4 +- test/node/showdown.js | 12 +-- 12 files changed, 185 insertions(+), 104 deletions(-) delete mode 100644 src/subParsers/outputModifiers.js create mode 100644 test/node/legacyExtensionSupport.js diff --git a/Gruntfile.js b/Gruntfile.js index f77ee4c..4c093a4 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -108,10 +108,11 @@ module.exports = function (grunt) { require('load-grunt-tasks')(grunt); + grunt.registerTask('concatenate', ['concat']); grunt.registerTask('lint', ['jshint', 'jscs']); grunt.registerTask('test', ['lint', 'concat', 'simplemocha']); grunt.registerTask('test-without-building', ['simplemocha']); - grunt.registerTask('build', ['lint', 'test', 'uglify']); + grunt.registerTask('build', ['test', 'uglify']); grunt.registerTask('prep-release', ['build', 'changelog']); // Default task(s). diff --git a/dist/showdown.js b/dist/showdown.js index 930d8e0813843b84b15c149555ccd139bf83d112..c0ecb71ebd5585838787a5966b096e3054497edd 100644 GIT binary patch delta 1995 zcma)7O>7%g5LV;Lk)8N2HqIYS##G7rCvnmQt=l+(gv2d@)QLhWRHCSC?3Z|j*|pxT zW?#1U~I%-gj$38;kCYJXX*x zH#0ZTwSUJI&W}IR1Fl^sA>h1w3zkGJtt6_QRVC?$^eB7IahYP0C>mO-9ICK;^a7yfL#)bi~e8= zR_V1?=N{hTwh(*xU0W1?@dnV_o^#uA;9`5s#W+W^eWYdh1-#py_ehfEW-p7keZ8{d z-v&6V9B##4$yTpr3A^X@;`efN$uUWnnYL+`vXDxt%_z4N4(p1+E*qN^D}^9FQXm=C z^~UJLbNv7-l9 zgD;c3!?FMQK_5O2j-xA-b_<{6ay*o7n8)zLP!4|#4G2h6{V3RjqX{2Qbc7pbZwhsw z5fQzBl?{fm;026??I<1xyDZEH;R!3czrr$MA}%tn&qbbu@HbCSQkvDZEyhj8Df1Op zFbyzE3@VCY5VI-@SKekqY3jJ<>%)zK5TvXW1D$V8F`AaDW|&MVrlmx-J~+62s&658 zX=e87wb!mJEiEpu!0h5&u7M-^#_>_S3&Zj59%(MOw49rrS(#tV!|OB4`T6`M$`_># zhvK(8%WP9A?Btr%U(l7Js%={E=#b!QLXgJ3I5VqUt3Qc9dkUuq+&Jxd5$BVB%B<%k zrsHHXk3Yx}7kR{wGSP0MrkaHkh}t01q|KcQv&o0IlfC#wvU{AwN7e>d=S+Dk>vf_j z5I;fEt7fHYN)whCr-z@xK+2Ok30q_vO0{eX6i%d4__;fP2d!RwH9MdF$L+ z6~B?Y|9_Uoo^sMQVF3OkNzw_>W{&Ws)Y*R~sD3~7u(f_~{9eo86=Hz`n`M1nDFbJl zDwPSR%A(V@yB-kJN?4Z9WDJuNx2@FKsyrnFtcSi~S0!g#s$Mn9J4amM`*K%H)xiBo zkM|IV{c`NIz~Z!=y`HxDk=IQ&0V^fd0J;?@=!QwY^a|sOm>p@D7jtEunRdz3WKm6( zGWL$xgkVIW*)42`VlElfHPnqAD?n#g2JGln+L}?K&H>S?!E8X2p%!cKrhE}U_H|x& zIAq6voJoyi`q!ke8z=Ev=Rj296yX$%X6ZF~c)CZXhjK_VVNIcm*&))QqJ86$D9K6w7dZvD&8zKZ+}A53MX delta 913 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 delta 1291 zcmZWoO^n+_6qd8uZg&^$e|D)_=)`JMPc!QzS}H`G5eK^B0-{B|MUgtT$MHC>9of!i z+cYeK9ypg0Ztqcdqv_7;?R5Vh&z{_=$nnRZL^oB@%QF^?|a`o|NEu(-_b_x zdKsmDJapq>g!US{^&3w%?i8BniQg!=V_91%X-uvcFP?L&y2y~MYY2ebn!doy?0%nP zmDF7Moz_4Tq^hH?IN*^^xOKo11D{MM$4c=bwzsBlb;nRNcp{R8RD~o4kG?95IB>$OCT=cU4EF0>&@LY za|A>C{754{M4$5R{$YO#5gpWEQfBh`+#V3_7C!>Q2gU14s-_<@=XBsdi#Hb%o(+-+ z$@TftGBZ69W;}rg>ig|!zxNGp9)vfI|bZ4{(1h<-0_Et-xlRx zOKY-LTRgH2JYtkRd^j3gUYr=pLK}$)b#d49S^CK^x|PIzo@Dn8TTSD)?GEiiz?Sd~ zJ+=exWZ`Fj84jb6(+VvktVIMI7i9huj>pBr@dV)h~7! zow;N2Fy$k;GXJK$xpr7oU-IetrpwfWQfA`OC&_&Hv_HeOb_UhXgA0Sn%Gt#Uk?{6oDq z?^ukwZLec6a#AKAU)hphm-e(kQI#iD1n!tKYVrd4ymT2PUD(DDKiIwovA2yhPyV`H zIhrns4GQd*c&Wg~@SsBN7^Mv78-EZB*d_qYv>ytG8#ZaYoWcPPrxna_1a0RmhXNJH z%9LbGGGCC3M~< O42&o2_}%7j3oiiI@}-vm diff --git a/dist/showdown.min.js.map b/dist/showdown.min.js.map index 13d9b0e8a8fcba7bfd123dc6e2edc3f93728e80c..cb81904a53c4a6b4920c8309164b26e5581308de 100644 GIT binary patch literal 18362 zcmd6uS#ugelE=S`W8X}SEX%U2nWyTeh1v+U5yBX6Y)oL(LP%T&bl4mF-S_v;Y)&Ds zX7-4EFov$Ith}#k{rj7Td^+ooM{oXmP(O*toAvlI&F6d?us6 zessEb06pG}2YIbC?~0P)J|A7c;_+2}IZkZb+M^)yCY|XF9DG|!ML#&Vb3d48lR2{2 zgYmFGPoCz}PU|ck31KuCcki?^nL^{!Y2LZYr>Q9I4aPq@gVom0jqF@-I*I>hCXW8K zBsa^8Blv!o>j{#-HzD2hg}k>0u>7utX};X6pR@ZPUyKvJU*C_q{CCrtWsjpT(=qCr z3w1J`x-#ciaB_}e@X$2P&!s_dN*D~5PyDRm_#t0DVwau1d?1*Gc`YCEtc&Q-2j3n$ z(-Hr5__wr%>+v+{n4-o%ZUwzkqc+Z`_uaYCyD&2ylW*ysNAuk5Op2bZX}NQaZA6&G zY|xp>9L&C!rw`5AI|F3H+F&gEjK?Fq&8-m<{QF9ef8Qjl#|oRqD-*Hbe>Xj^i(!!W zI^AE(Cuif%mHWe>Gs4sh(Tlsuy-_;8pHJ@RweeN|y6?8>R+>#QF~EkMyZm%M9Prg` zO?!KKvNXzGb2_l6m;L#G0KocLe>OkMA98KOHg3-Pqq}%~KbmWG$u8eJSF(?#LEO(a zRG%-F3Im!=27PnOzJ&o;y6^O)bLYZwU-u>7$7z3_hf()tJiYAb!SKC44)pOsABXz* zsE;E)1`v43am82jt^29SpNlE}pXHsYSrGP!xAJ7tnWI11+Wp9FdG#zBQc&@!y~cxhFH9zD4pjLmYV zozc~J$OCPf8_RZZf%#??GXzx7YkaN;6_#d`&ZyEE-it-)&h*Upp+emWN)+h=(z;>g zi-|iOq79dJXD}}go=nH^Gm}N6^L!}I27Gr(p(9aap;QpXV)5Ul$MD{?bFFRCz98&( zX7tTW-v6TDdpqunBA5Cy5ML}KxtVo35`ydLcqm0Ev}((Etf#~A)xBvtf0~S^W~rVL zSnCW;UqlV%xnXBAL1(1EH-GzE9O6)Fg~w_r)kA26QiadBl!VZV`5qrcrFKX{DGedj zgV4}ggNLD8*4M0*htQ8oAEOZOmlN$t;!>uCB*b6hQcYhgp>poqeJ$2$^@~zfC)lAK zeO9h{5~?~UZP=%ds04kcm-=irOAS8l=t>Fde;e9V2ZyGCG)ny_gkdBCLaHP7l3;U@s~<`w~)5!lfN+RMrLf-Hrl3eAH`(pwx@m8r#7&$cdlImyiMi z5pPE!LWw}Dp|QeHxsg0h!nao(@|HvH$_wtmoav~;jEb}!!F=4I)X6T~wMU-Aj&pRQSD+rGK5MeTcPC{iGy_zFb-ZbfCrTcP- zZ{jsp%&gKBQsQ%Q^)4#ip_%K?CaDx@R({w)KVBiacZlwz>j#u5q9M`!PK2TI8Tkb_ zXg{>d(_!S;uU>)u5v#bq0L%3k#C4j!r0}W^-HXmlJvt=R3+xCYJ6}D{ATe11$|C!b zJS2URa8JYaE2w%0RX^NXinBQV>IyQGOUMixWVYqM?Jq_`9WpBex69k;6({wb|0Fcr zjMw>JN1V!}T3>ZY;STGoRjKqyZgmn~BlSBh2B~9l-z3UR;o|Y+QgNhlXJr3EW}MZQ z5aPoa771<3xHXJCW+XD*7J%`z2vhPKTO%5z;ix%sDGnt2IE*7jkPsK29^QVTqF<4a z{N_+8j9-T;g*unT5jZ54~zdl9+ zZ%cwr;|g3HjhZYPXQ3R-O}Z8t}?;us17>qj0t#n|2MH^XeRwhP!AU6~vvdWb14w634~`xl*b(_kPAid?;&L zoji_1?F!VVp*X#|#{0b~q;(`ND#y|K(!!CTttRd#qAyf)?QW5bSKOoZ^#dig6|1u- zB>OIC;w{Kp`}z-CQ|!HHu{E|RA8O(%JzeL@Q@G{VB88hzk_F{+SPJ<1(T!VoN0e2+ z@tGhcC`vz>;G`pBGI|r0zg!`SfO7~VHXKB=HOfL=f^PkeoDkIFsa^&N=}V)N3I-h4aBI4dYnW zN+=Kh$I)b+f5~%hJXU@EF51)2^hP|Mp7qKKXLS!AmdfvV45@oXxIx)bFoAT{CmcEf>MVE4t zv}m{>%W$FV_nxY62(Yl6YJ)Nnp!Pk~6Ie{XOT%8-aex2?QIvKtE^re@s9T+K9C0)c zi|Wa=7E&u-DuAc5)zLboW{(A-7#I8!Vix?GX@;aqjJ0T$g$ANq-)=6|mAHOJmQP~H zTx@^zfb&)2YTQH=Rie!0>~7jIJIHmcnL!a~t+Y)bM0zzLgCV46D6khzVy{;nPq(D3 z@*Z6zp?MHruOCrf*g53Ab2ZdV!nrYea{_8aDb#upx)Qe6c-_O|a5&FJMia1Pl6;hv z#V3ZPtE52fPjbcDg~e60Uaz={I;>WRHW^u4Sw(pmQB*N4ad@g9Sqcz=cAWzcSmY!e z>KGQOP3RKj^Cq{h)h`B#)AJ)4S-^2~w92_oxMABjW2f6O2O|lyZ_nk8Rl=^oV6jW&Ax@HwAh74r zVj79Y%$k52!3dGoNhj7 z0YQ@f><}qG>RJ&wcnmiBwFpXXNba&qf?yN`X}!(Eikw?&@-D9z-Kc4*5ZFY^dT3v? zEj(9xNpD5KDMd2~YwLh+`z_1Lm7^jm6I)bbsc20}{3>7{61I9SRsQRYhd+FFqVOmoxr;0tq|{+%y%Mgu%6h=FnmIi&)0U2D zhD3ASpBs2ZWjrQtNU{*0V&iav$HQZFWIqhCl0z*dC-xkS@#(!S_6W$^pjHe4+6al6 zeQjLGs$ULG%05{K_6*JU(XC-2X=9!ws2wE%Y^Xl&D?dZ`DDv8SGgXMd8WdFbBkD6$wzVwUSgsuGUY4QCE{=9D zKie(uvJ3}S8qWtKJY>H;ec%P^&Lk~`9;m6QMGOrMp(=wi8WV+E&?=^f(R292GJUOf zZ^UEjSf2H~U>qpi#W&@loxhD(rCG1&%c>5tq=ztve=SXZ-{R(aXnC}=+XPa$SsRp* zqUEaQaaqr*%l4CCwDd5ycRB|tHcdX z)_7H=YmvpuWh;>uQ&d9{eiUbHnk`@aY^w{i4W?vrkE3|W=FkfzIM)jyvTfA?W_+>=KImOka^dbFK?Vv4b6FM zm0qYe7iBgtCmo;@8u-6b>8mdo5_L+2;x;?Z&CF^j1A_g)= zkiR|Xgp)6B9W_9{TzH8`qJ#exRz!FG^5GSuocu>d*(1ejD}Jy4mP?h;J|;w%Tl;*B%@e31ck81pGQk7=m!mRYG;e2P7WesLLa7ETl#I>gr z7c0W3VPgb_M-yv(zLN@{t0;8>4%c(LlOeZhxaS*@YvmR$p-atRs9F8hf};KjeNz^u z<>0=)m6M0?H%>ljXFq;AK?gk8hT+WMAkie+3G#{b_BH~hiYUv6M%2=aG>EXsfhm9r zQ;_4BQnyZGcovA`46%9TZN&{NAW7l{Fe_smt(cV?GWf^CeQU4n){Q9QIz zQ8_9?g$h#(W{he+nt@xz&wWb)pwNj0B@fZgWiwV?La)IUt#$qxR2XVAf(3yLyLCcAo^tdZY>+X zHIhkDeJ-?RuHqwP=cj6I?ochfvz0MHIVsBdwOxPoWy*K#83(OP#uw(QG;$Vh?-HVj zLK7Xxt78+Sq!b63!qm{D=BlA>p)>yOVr_Yi^3CTyHBRkHVBdq8P5Wq5g^DY`4COu+ z$pPB{(y;>^?FNu5JHS%`V0fB)>ng#B9^$tiV|Old9Y7_?`E@GEcQlq?J-dni%7t(A zp{-MCZc$SSoIJ#Pn>SMMKy^$^|1veF4H#T{Y;D@t9EISs}G>!^7y#7~NV%g>4w4 z`Y)DmtiD+00cp^!<~TwrP+_Cgma8L0s?EJ+txzWe8x!M%dbKF!kZi&yN z#QOuc@ylI2%P(~C#^I*tSLsA>9rY=n%RMWex;J7!zUrG4+9pp^rEFGxJx^#B?2&aM z*;|AB?DmmsFwUUhlOfANtotTalXj_fN&bCq78WtM$asP9BA_&mwv0wKz`X}Emmo!8 zJ5b4~7TF~~&#Oeg3Mq3}J@pfej1HQl@IyxAP`XsG?hB|JSL(vR?H)j3a@S#s#E!xz z6J7JTy_jkCa|v)05k3^`Ex+;>r^at=nUg|ZIX{Tz5&AylQEAI!@EZ}wv6Qe zyu8|7)C^AIvKTjxYLJ4DRJm0-EN|5og%y6T?4(%VEvLnuYHAz*QmuBNd3*1^))AJ30z^e zE&q~tRxT}YWm06n}li)H!YRfIPhE$fC&AT9Sqb4Ptp zHzTaJ$;9i7!;@Fk8N3~FwCEf*1#P}r3$;Jh7h9TqC_<4e27;ew-P{JrmenjYyfqi9 zEA)o8%}uK4iG6m1TLq?aupIzVz#lsmUSzR}iw5I<%j#V+H<_|FmSfbrrmZzhF%5?X#?Phto+xXqH@V>z>V{*vq=%b2uYY)lcrthfC z$7*-`&Y>jUCk|xc_;k0-jnFy`+zTbaPt?JiY;d?t(5Pv>=q1V4;d*&wzMX#kz*@8v>vr;E?F)G@nlwmO&>Q%dkXQl_L-%&9PEU;)#Mr8-a z6&yi+P+o_NFSbDn15F3Kn@U(<28_)V8C@^cRes!9{aOrn{Tlw4-9k_b=(v1ed?dH_ z>y}GYP^Q#?{Fh_HB8ZFfE>k+(Gz$l126bB83jVu$?zwTE_U!t(ee0yGHN731e(`RX z9c0Z_{JYG}g(Pbc)h}`nJ;_<32AQprsrQPhnNa3)dgXP4fI=V`lc+WMWN|`1Q3n8^B(;J=d+ow5tMwhSAbAx|scE zp~gi}8a`Jkm2pl`7mQ5n}+jTBIlhv`2AoIyj^7P9+@jQ zctsLU>&K_6Otvpi2G1`~2p6jV29cNHx+~!|0(+I!Z_UmY_aKlAW(SCQw?*3~OyfmK zodSo;BHdu>bO+T#ZX@TB)6_Hq>%WUIX%!4N4>xgfq4Uq&f8gi2NmZ8^q3xGrO(^Qn ze{*jW>?Nb3WBT8?^gv~MFpUVBv=?_}RrrTdAnNmID?awhMCbCO4C@`a&gXwyFnYCX zmH<-?)x(qdrpIm;8~8VMaa(UPW#RMArnr~`FksT`+$>}3ydw00xjrdhNqI{jwY0h0 z^>_ut<`3#`-kT|64+0h2AIp2X@_L8^xkI**k_Rgn9#sk>paZd7X(^cZF{bf*^EbU5 z-1gVywjkf1Pz2Z+Ta5)IFa25x+9aRCtQ4@nDL{4C(5o$EGBK+uPn+Qog=Px5O2HoB zs&rtBO0^BH_%?Pk-o`06n^_H7BVRa9m6qj?cF;CBQfh32gMF|7Hz%o5Wtx17I+p72 zgPHj@Hs!f(Y#dJeuXtThfUeR}*{InPYJonvjf+}es){`UR4;h}6nQ8t{fd0v?6$%Yu(wDG5S6ic3&6_od=3&q4b`-!n{(gs$S`~3Mpp(c!?zMH@5B$@c+ z#Klc_ZX{VKuTdoap}@w*8UM5;>gAgiQ0h-wesDcrBouOVB!sR4u!^%UceU?Udj@IyrPAW z&rCH-XoUgi(Z{j1TYKSm8RQi}7$1SATHHtJUhqvyUFQkL;Mr*e3Fs&d(($`x{LJ zB9U3a5(+P<`>=w0KFMmP-TZ+9!>0nLjHgN&L;I zQs=eI%crUe!|Y**1lePUKm7M0M(y1ho;>TtO^bp zt$CNFTKL9hPr|X4@Wm?z7qm|Cg$KamT`#Y3YIYgEs*qjy)_d}Xi?CK4MOC3Gp{*mk zToMa8w0PwUmnUx2cuk3C6(-^qS1p0I0wWx#NiTP%qnDEGrWjF$73Y6w3YMO@D5TlL zyi2ikY_VcYE>oF0m5WpNno_AA6c;EqWuQuY%+sU;e-$lzI^{>Dr9X5G-zcF$;I{^P z5mpy(u@7ntO>uB;Tl3&`_!Dj+Y_43i;ZS~1^ SwV{`qcpJ$|?xKaBn{?2rC&GkaHh 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' : 'Error in unnamed extension', ret = { valid: true, - error: baseMsg + error: '' }; - if (typeof ext !== 'object') { - ret.valid = false; - ret.error = baseMsg + 'it must be an object, but ' + typeof ext + ' given'; - return ret; + if (!showdown.helper.isArray(extension)) { + extension = [extension]; } - if (!showdown.helper.isString(ext.type)) { - ret.valid = false; - ret.error = baseMsg + 'property "type" must be a string, but ' + typeof ext.type + ' given'; - return ret; - } - - var type = ext.type = ext.type.toLowerCase(); - - // normalize extension type - if (type === 'language') { - type = ext.type = 'lang'; - } - - if (type === 'html') { - type = ext.type = 'output'; - } - - if (type !== 'lang' && type !== 'output') { - ret.valid = false; - ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: "lang" or "output"'; - return ret; - } - - if (ext.filter) { - if (typeof ext.filter !== 'function') { + for (var i = 0; i < extension.length; ++i) { + var baseMsg = errMsg + 'sub-extension ' + i + ': ', + ext = extension[i]; + if (typeof ext !== 'object') { ret.valid = false; - ret.error = baseMsg + '"filter" must be a function, but ' + typeof ext.filter + ' given'; + ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given'; return ret; } - } else if (ext.regex) { - if (showdown.helper.isString(ext.regex)) { - ext.regex = new RegExp(ext.regex, 'g'); - } - if (!ext.regex instanceof RegExp) { + if (!showdown.helper.isString(ext.type)) { ret.valid = false; - ret.error = baseMsg + '"regex" property must either be a string or a RegExp object, but ' + - typeof ext.regex + ' given'; - return ret; - } - if (showdown.helper.isUndefined(ext.replace)) { - ret.valid = false; - ret.error = baseMsg + '"regex" extensions must implement a replace string or function'; + ret.error = baseMsg + 'property "type" must be a string, but ' + typeof ext.type + ' given'; return ret; } - } else { - ret.valid = false; - ret.error = baseMsg + 'extensions must define either a "regex" property or a "filter" method'; - return ret; - } + var type = ext.type = ext.type.toLowerCase(); - if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) { - ret.valid = false; - ret.error = baseMsg + 'output extensions must define a filter property'; - return ret; - } + // normalize extension type + if (type === 'language') { + type = ext.type = 'lang'; + } + if (type === 'html') { + type = ext.type = 'output'; + } + + if (type !== 'lang' && type !== 'output') { + ret.valid = false; + ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: "lang" or "output"'; + return ret; + } + + if (ext.filter) { + if (typeof ext.filter !== 'function') { + ret.valid = false; + ret.error = baseMsg + '"filter" must be a function, but ' + typeof ext.filter + ' given'; + return ret; + } + + } else if (ext.regex) { + if (showdown.helper.isString(ext.regex)) { + ext.regex = new RegExp(ext.regex, 'g'); + } + if (!ext.regex instanceof RegExp) { + ret.valid = false; + ret.error = baseMsg + '"regex" property must either be a string or a RegExp object, but ' + + typeof ext.regex + ' given'; + return ret; + } + if (showdown.helper.isUndefined(ext.replace)) { + ret.valid = false; + ret.error = baseMsg + '"regex" extensions must implement a replace string or function'; + return ret; + } + + } else { + ret.valid = false; + ret.error = baseMsg + 'extensions must define either a "regex" property or a "filter" method'; + return ret; + } + + if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) { + ret.valid = false; + ret.error = baseMsg + 'output extensions must define a filter property'; + return ret; + } + } return ret; } diff --git a/src/subParsers/outputModifiers.js b/src/subParsers/outputModifiers.js deleted file mode 100644 index 79abc4d..0000000 --- a/src/subParsers/outputModifiers.js +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Run language extensions - */ -showdown.subParser('outputModifiers', function (text, config, globals) { - 'use strict'; - - showdown.helper.forEach(globals.outputModifiers, function (ext) { - text = showdown.subParser('runExtension')(ext, text); - }); - return text; -}); diff --git a/test/node/legacyExtensionSupport.js b/test/node/legacyExtensionSupport.js new file mode 100644 index 0000000..354c4c7 --- /dev/null +++ b/test/node/legacyExtensionSupport.js @@ -0,0 +1,24 @@ +/** + * Created by Estevao on 06-06-2015. + */ +require('source-map-support').install(); +var expect = require('chai').expect, + showdown = require('../../dist/showdown.js'); + +describe('showdown legacy extension support', function () { + 'use strict'; + var extObjMock = + { + type: 'lang', + filter: function () {} + }, + extFunc = function () { + return [extObjMock]; + }; + + it('accept extensions loaded by the old mechanism', function () { + showdown.extensions.bazinga = extFunc; + var cnv = new showdown.Converter({extensions: ['bazinga']}); + expect(cnv.getAllExtensions().language).to.eql([extObjMock]); + }); +}); diff --git a/test/node/showdown.Converter.js b/test/node/showdown.Converter.js index 401596d..d796e3d 100644 --- a/test/node/showdown.Converter.js +++ b/test/node/showdown.Converter.js @@ -49,11 +49,11 @@ describe('showdown.Converter', function () { converter.getAllExtensions().language.should.contain(extObjMock); }); - it('addExtension() should add a previous registered extension in showdown', function () { + it('useExtension() should use a previous registered extension in showdown', function () { showdown.extension('foo', extObjMock); var converter = new showdown.Converter(); - converter.addExtension('foo'); + converter.useExtension('foo'); converter.getAllExtensions().language.should.contain(extObjMock); showdown.resetExtensions(); }); diff --git a/test/node/showdown.js b/test/node/showdown.js index 01def6f..b737275 100644 --- a/test/node/showdown.js +++ b/test/node/showdown.js @@ -16,7 +16,7 @@ describe('showdown.options', function () { }); }); -describe('showdown.extension', function () { +describe('showdown.extension()', function () { 'use strict'; var extObjMock = { @@ -28,15 +28,15 @@ describe('showdown.extension', function () { }; describe('should register', function () { - it('should register an extension object', function () { + it('an extension object', function () { showdown.extension('foo', extObjMock); - showdown.extension('foo').should.equal(extObjMock); + showdown.extension('foo').should.eql([extObjMock]); showdown.resetExtensions(); }); - it('should register an extension function', function () { + it('an extension function', function () { showdown.extension('foo', extObjFunc); - showdown.extension('foo').should.equal(extObjMock); + showdown.extension('foo').should.eql([extObjMock]); showdown.resetExtensions(); }); }); @@ -78,6 +78,6 @@ describe('showdown.getAllExtensions()', function () { it('should return all extensions', function () { showdown.extension('bar', extObjMock); - showdown.getAllExtensions().should.eql({bar: extObjMock}); + showdown.getAllExtensions().should.eql({bar: [extObjMock]}); }); });