PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /usr/share/doc/perl-PPI
Viewing File: /usr/share/doc/perl-PPI/Changes
Revision history for Perl extension PPI 1.270 2019-07-09 15:14:57Z Summary: - attempt to handle new blead binary/hexadecimal parsing behavior in tests 1.269 2019-05-17 18:36:46Z Summary: - many small documentation improvements 1.268 2019-05-16 10:00:39Z Summary: - fix a broken link in the pod 1.267 2019-05-16 09:22:34Z Summary: - make PPI::Test::Run more OS-agnostic 1.266 2019-05-15 16:17:49Z Summary: - keep heredoc terminator detection from triggering regex errors - small cleanups Details: - make the output of PPI::Test::Run more useful - remove a superfluous import 1.265 2019-05-14 12:39:51Z Summary: - simplified a code construct 1.264 2019-04-28 14:56:28Z Summary: - keep vstring processing from swallowing underscores 1.262 2019-04-28 11:41:54Z Summary: - convert newlines in some raw test files from win32 to unix 1.260 2019-04-28 11:10:02Z Summary: - allow underscores in vstrings 1.258 2019-04-27 17:05:33Z Summary: - remove accidentally included Test::InDistDir 1.256 2019-04-26 16:40:01Z Summary: - allow all PPI::Document instances to have a filename attribute 1.254 2019-04-26 16:23:21Z Summary: - recognize `for (;<$foo>;) {}` as containing a readline operator 1.252 2019-04-26 14:21:36Z Summary: - add support for the double diamond (<<>>) input operator - adjust position of a todo marker to not catch a passing test 1.250 2019-04-25 16:43:32Z Summary: - various smaller releng changes Details: - removed dependency on File::Remove - add some tests including a TODO test for misparse bug on '(1)-1' - allow tests to run without pre-determined module versions - add travis-perl helper to be run before install - update versions of Perl Travis tests on 1.248 2019-04-25 16:08:08Z Summary: - parse list-embedded curlies as hash constructors 1.246 2019-04-25 15:33:48Z Summary: - support indented here-docs - fixed some typos 1.244 2019-04-25 15:21:51Z Summary: - support key-value and index-value slices in PPI::Token::Symbol symbol method 1.242 2019-04-25 14:33:56Z Summary: - keep exponents of 2 or more zeroes from trapping PPI in an endless loop 1.240 2019-04-25 14:09:24Z Summary: - add support for lexical subroutines from perl-5.26 1.238 2019-04-25 12:03:37Z Summary: - only release engineering, moved to Dist::Zilla, straightened out dependencies and fixed some formatting in Changes 1.237_001 Wed 15 Nov 2017 Summary: - support postfix dereference - remove dependencies on vars, base and List::MoreUtils - reduce globals and cross-package variables - make xt/api.t skip/run properly Details: - convert many cross-package var accesses to var imports - convert several unnecessary globals to local variables 1.236 Thu 22 June 2017 Summary: - prevent Node->child from proceeding without a valid argument - make test pragma warning code enable -w to match warnings policy 1.234 Wed 21 June 2017 Summary: - Prevent sub names like v10 from being version strings (GitHub #65) (MOREGAN) 1.232 Wed 21 June 2017 Summary: - add Changes entries forgotten in 1.230 1.230 Wed 21 June 2017 Summary: - remove temporary fix introduced in 1.226 - prevent possible regex on undefined scalar in __current_token_is_forced_word 1.228 Tue 20 June 2017 Summary: - keep PPI::Dumper from breaking Perl::Critic under cperl 5.27 (RURBAN) 1.226 Tue 20 June 2017 Summary: - Fix test reliance on '.' in @INC (KENTNL) - temporary fix to keep an untested combination from blocking Perl::Critic (https://github.com/chriscapaci) 1.224 Sun 14 May 2017 Summary: - updating an out-of-date meta.yml caused by Module::Install 1.222 Sun 14 May 2017 Summary: - unit tests for many parts, both passing and TODO - many documentation fixes - add ->version method to PPI::Statement::Package (WOLFSAGE) - remove unused PPI::Document->new timeout feature - do not expect '.' in @INC (PLICEASE) - many parsing fixes - various fixes to the behaviors of methods - removal of problematic dependencies Details: - Remove undocumented, non-working 'timeout' attribute to Document->new, including HAVE_ALARM and PPI::Exception::ParserTimeout. (GitHub #140) (MOREGAN) - first cut of a travis configuration - do hex number matching with [[:xdigit:]] - some readability improvements on the code of HereDoc.pm - recognize heredoc even if they have no newline at the end (AUBERTG) - parse left side of => as bareword even if it looks like a keyword or op (MOREGAN) - remove source code escapes in the output of QuoteLike::Words->literal (MOREGAN) - removal of Test::NoWarnings - less uses of List::MoreUtils in favor of List::Util - expand $'x to $::main::x in Symbol->canonical as with $::x (MOREGAN) - fixed parsing of large numbers in Number::Exp on Solaris 80 (JMASLAK) - make remove_child actually return undef on failure to find child to remove - higher accuracy when deciding whether certain characters are operators or variable type casts (*&% etc.) (MOREGAN) - parse x as the first element of code as a word, not an operator (MOREGAN) - recognize the implied end of a package statement that includes a block (MOREGAN) - parse package names that look like operators as strings, not ops (MOREGAN) - parse package names that look like v10 as strings, not versions (MOREGAN) - parse things like v49use as a single bareword, not v-string + keyword (MOREGAN) - parse x64 as a word, not x operator + number (MOREGAN) - parse 1.eq 1 as float + op, not concatenation - parse subroutine attributes correctly (MOREGAN) 1.220 Tue 11 Nov 2014 Summary: - incompatible behavior fixes on PPI::Statement::Sub->prototype - improved parsing of various syntax elements - code quality improvements - various small documentation fixes Details: - {} is now recognized as anonymous hash constructor instead of a code block after these operators: &&= //= || && // ? : (GitHub #36) (MOREGAN) - regex capture variables greater than $9 are now parsed completely, instead of being parsed as single digit captures with numbers after them (GitHub #38) (MOREGAN) - DESTROY and AUTOLOAD subs are now parsed even without the sub keyword (GitHub #39) (MOREGAN) - PPI::Statement::Sub->prototype behavior now matches its documentation, instead of returning the prototype string unchanged and still including the parens (GitHub #56) (MOREGAN) - PPI::Statement::Sub->prototype now returns undef on subs without a prototype, instead of returning an empty string (GitHub #56) (MOREGAN) - list of keywords which are not parsed as packages when followed by the Perl4 package separator ' has been increased (GitHub #77) (MOREGAN) - application of a number of Perl::Critic policies and documentation fixes (GitHub #53) (MOREGAN, MITHALDU) - automation of README.md generation for git (GitHub #86) (COWENS) - various small documentation fixes (Github #96) (MOREGAN) 1.218 Sat 16 Aug 2014 Summary: - Fixes for various parsing and documentation bugs - 1MB limit on input document size removed - Moved repository to GitHub: https://github.com/adamkennedy/PPI Details: - Stop directing bugs to rt.cpan.org (GitHub #40) (MOREGAN) - Fix documentation reference to List::Util (RT #75308) (RWSTAUNER) - Improve scalability of parsing long lines, and remove the size limit on documents PPI will parse (GitHub #5) (MITHALDU) - Speed up adding an element to an unlabeled statement. Allow inlining of some methods. (WOLFSAGE) - Expanded test coverage (DOLMEN, MOREGAN) - Convert inline tests to standalone tests (GitHub #12) (MOREGAN) - Fix for '1=>x' being parsed as x operator (GitHub #46) (MOREGAN) - Recognize that '1 x3' is the x operator followed by a 3 (RT #37892, GitHub #27) (MOREGAN) - Support all augmented assignment operators (<<=, ||=, etc.) (RT #68176, 71705) (MOREGAN) - Stop upper-case "=CUT" from terminating POD (RT #75039) (JAE) - Support upper-case digits in hex and binary numbers, including in the leading '0X' and '0B'. (RT #36540) (KRYDE, MOREGAN) - Fix float argument to range operator misparsed as version string (RT #45014) (MOREGAN) - Fix POD markup in PPI::Find (RT #51693) (FWIE) - Fix spelling of "Tom Christiansen" (RT #67264) (TADMC) - Fix a large raft of spelling and grammar errors (RT #85049) (David Steinbrunner, DOLMEN, MOREGAN) - Fix errors in documentation of the PPI::Element class hierarchy (RT #30863, 69026) (SJQUINNEY) - Prevent PPI::XSAccessor packages from hiding corresponding PPI packages in CPAN (RT #90792) (MITHALDU) - Recognize the formfeed character as whitespace (RT #67517) (WYANT) - Recognize regex match following 'return' (RT #27475) (ADAMK) - Fix missing dereference, length called on reference (RT #40103) (ADAMK) 1.215 Sat 26 Feb 2011 Summary: - No changes Details: - Confirmed new Perl::Critic works with 1.214_02, so we can release a new PPI now. 1.214_02 Mon 31 Jan 2011 Summary: - More minor fixes, preparing for production release Details: - Updated copyright year to 2011 (ADAMK) - Fixed RT #64247 bless {} probably contains a hash constructor (WYANT) - Backed out glob fix (WYANT) - Fixed RT #65199 Cast can trump braces in PPI::Token::Symbol->symbol (WYANT) 1.214_01 Thu 16 Dec 2010 Summary: - General fix release Details: - index_locations on an empty document no longer warns (WYANT) - Corrected a bug in line-spanning attribute support (WYANT) - Regression test for line-spanning attribute support (ADAMK) - Fixed #61305 return { foo => 1 } should parse curlys as hash constructor, not block (WYANT) - Fixed #63943 map and regexp confuse PPI? (ADAMK) 1.213 Tue 6 Jul 2010 Summary: - Targetted bug fix, no changes to parsing or normal usage Details: - Updated to Module::Install 1.00 - Updated module depednencies in xt author tests - Fixed extremely broken PPI::Token::Pod::merge and added test case 1.212 Sun 9 May 2010 Summary: - Minor bug fixes and development support Details: - Fixed #48819: Bug in ForLoop back-compatilbilty warning - Added support for $ENV{X_TOKENIZER} --> $PPI::Lexer::X_TOKENIZER 1.211_01 Sun 21 Feb 2010 Summary: - Experimentation support and bug fixes Details: - Upgraded to Module::Install 0.93 - Added support for $PPI::Lexer::X_TOKENIZER, so that alternate experimentatal tokenizers can be swapped in for testing. - Added an extra 14_charsets.t case to validate we handle byte order marks properly. - Moved author tests from t to xt to reduce spurious test failures in CPAN Testers, when the testing modules change across versions - Fixed #26082: scalar { %x } is misparsed - Fixed #26591: VMS patch for PPI 1.118 - Fixed #44862: PPI cannot parse "package Foo::100;" correctly - Fixed #54208: PPI::Token::Quote::Literal::literal is missing due to case-sensitivity error 1.210 Mon 15 Feb 2010 Summary: - Packaging fixes Details: - No functional changes - Upgrading to Module::Install 0.93 - Added missing test_requires dependency for Class::Inspector 1.209 Sat 6 Feb 2010 Summary: - Small optimisation release Details: - No functional changes - Upgrading to Module::Install 0.92 - Moved the Test::ClassAPI test to only run during RELEASE_TESTING to reduce the dependency load (and occasionally Test::ClassAPI seems to FAIL on CPAN Testers. 1.208 Thu 14 Jan 2010 Summary: - THIS IS THE 100TH RELEASE OF PPI! - Fixes some tiny issues, otherwise unchanged from 1.207_01 Details: - Don't assign '' to $^W, it generates a warning on Gentoo - Added missing PPI::Token::Regexp fix to Changes file - Updating Copyright to the new year (yet again) 1.207_01 Thu 10 Dec 2009 Summary: - This is a general bug fix and accuracy release Details: - Fixed #50309: literal() wrong result on "qw (a b c)" - PPI::Dumper no longer causes Elements to flush location data. Also it no longer disables location information for non-Documents. - +{ package => 1 } doesn't create a PPI::Statement::Package - PPI::Token::Regexp and PPI::Token::QuoteLike::Regexp how have methods for getting at the various components (delimiters, modifiers, match & substitution strings). 1.206 Sun 9 Aug 2009 Summary: - This is an optimisation release (1-2% speed up) (Using information uncovered by a Devel::NYTProf 3 alpha) Details: - Removing som superfluous 1; returns - Using defined and ref to avoid highly excessive calls to PPI::Util::TRUE 1.205 Mon 3 Aug 2009 Summary: - This is a production release Details: - No changes from 1.204_07 1.204_07 Fri 31 Jul 2009 Summary: - Minor tweaks Details: - Allow ::For and ::List to return true to ->isa(::ForLoop) and do a once-per-process warning when we do. - Fixed a bug in Class::XSAccessor prototype. 1.204_06 Wed 22 Jul 2009 Summary: - API Change Details: - Changing PPI::Structure::ForLoop to PPI::Structure::For 1.204_05 Tue 21 Jul 2009 Summary: - Bug fixes in preparation for production release Details: - There is no longer any real reason to bundle the testing modules except as a potential source of more bugs. - Removed quantifier ? on zero-length ^ in /^?for(?:each)?\z/ - Run-time load PPI::Document instal of compile-time loading it - Tweak a few load orders to get PPI::Util loaded earlier. - Fixed location access methods on PPI::Element - New PPI::Statement::Include::version_literal() method. 1.204_04 Thu 16 Jul 2009 Summary: - Dependency tweaks Details: - Because we bundle Test::ClassAPI, we need to explicitly match its dependencies. Bumped Params::Util to 1.00. - Bumped a couple of deps a couple of revisions to get better XS. 1.204_03 Tue 14 Jul 2009 Summary: - More bug fixing, clean up, and optimisation - Cleaning up contributed APIs - Adding some demonstration classes Details: - Implemented PPI::Transform::UpdateCopyright - Removed the use of 'use base' - Various minor simplifications - Renamed PPI::Statement::Switch to ::Given - Renamed PPI::Structure::WhenMatch to ::When - Converted the Lexer internals to use exception-based error handling. - Take advantage of the removal of all those "or return undef" to simplify the Lexer code, remove variable declarations, and inline calls to several hot-code-path functions. The Lexer should be significantly faster (FSDO "significant"). - The v6 key on Tokenizer broke support for Perl 5.6 (perl thought it was a numeric v-string) 1.204_02 Sun 10 May 2009 Summary: - Various bug fixing and stabilisation work - It's a perl 5.10 extravaganza! Details: - Updated Module::Install to 0.87 - Added Test::NoWarnings to the test suite - Added support for qw{foo} in addition to for ('foo') - Added support for vstrings again - Now supports the 5.10 "state" keyword. (As far as PPI is concerned it's a synonym for "my") - Now supports switch statements. - Now supports the smart match operator (~~). - Now supports keeping track of line numbers and file names as affected by the #line directive. - Now supports UNITCHECK blocks. - Statement::Include::module_version() implemented. - Statement::Include::arguments() implemented. - Statement::Variable::symbols() implemented. - Token::QuoteLike::Words::literal() implemented. - Token::Quote::Double::simplify() fixed. - Element line_number(), column_number(), visual_column_number(), logical_line_number(), and logical_filename() implemented. - Support for Unicode byte order marks (PPI::Token::BOM) added. - Token::Word::method_call() implemented. - Element::descendant_of() and Element::ancestor_of() implemented. - Statement::specialized() implemented. - Now can handle files named "0". (Perl::Critic got a complaint about this) - foreach loop variables can be declared using "our". - Much more comprehensive testing of compound statement detection. 1.204_01 Sun 18 May 2008 Summary: - Unicode cleanup and bug fixing - Taking the opportunity to do some house cleaning while the code base is relatively stable, before things get crazy again. Details: - For completeness sake, add support for empty documents - Moved capability detection into PPI::Util - POD test script now skips on install properly - Removed 200 lines of old dead "rawinput" code from PPI::Tokenizer - 100% of PPI::Tokenizer is now exception-driven - Workaround for "RT#35917 - charsets.t eats all available VM" (unicode bug in 5.8.6, works in 5.8.8) - Temporarily disable round-trip testing of 14_charset.t 1.203 Wed 14 May 2008 Summary: - No change, switching to production version 1.202_03 Wed 14 May 2008 Summary: - Initial Perl 6 support - Bug fixes and final 1.203 release candidate - I finally catch up with all the failing test cases that Chris Dolan keeps commiting :) Details: - Adding initial support for "use v6-alpha;" - Adding new class Perl::Statement::Include::Perl6 - Adding a test on the KindaPerl6::Grammar, which triggered a bug in the tokenizer during CPAN::Metrics tinderboxing. - All open() calls now use three-argument form - Upgrading explicit Perl dependency to 5.006, because of the previous item. - Better support for labels, including tricky ones like "BEGIN : { ... }" 1.202_02 Wed 2 Jan 2008 Summary: - Back-compatibility and 1.203 release candidate Details: - Removing the use of use base 'Exporter'; - Updating Test::SubCalls dep to 1.07 to get the use base 'Exporter' fix for that too. 1.202_01 Tue 20 Nov 2007 Summary: - Minor bug fix release Details: - RT #30469: calling length() on PPI::Token gives error - 14_charsets.t was incorrectly skipping in situations that it should have been running. 1.201 Mon 22 Oct 2007 Summary: - Minor bug fix release Details: - The internal exception class PPI::Exception::ParserTimeout was inheriting from itself. 1.200 Mon 15 Oct 2007 Summary: - Production Release Details: - Zero changes from 1.199_07 - Updated version from 1.199_07 to 1.200 1.199_07 Fri 12 Oct 2007 Summary: - This is the third release candidate for 1.200 - Minor tweak Details: - Changed the way to detect Perl 5.6 to ignore the 1_0e1_0 failure 1.199_06 Wed 10 Oct 2007 Summary: - This is the second release candidate for 1.200 - Some small bug fixes Details: - Remove -w from test scripts to allow taint'enabled testing - Skip the failing 1_0e1_0 test on Perl 5.6.2 1.199_05 Tue 9 Oct 2007 Summary: - This is the first release candidate for 1.200 - Fix some parser corner cases Details: - Fixed parsing of %!, $^\w, and %^H - Fixed parsing of @{$foo}-1 - Fixed parsing of <$fh1>, <$fh2> 1.199_04 Summary: - Build tweaks - More regression changes Details: - Increasing List::Util dependency to 1.19 (Removes a memory leak on Win32) 1.199_03 Thu 12 Jul 2007 Summary: - Support for a few more rare/legacy Perl syntax - Tokenizer simplification, optimization and exception'ification Details: - Added support for the <<\EOF heredoc style - Always create ->{type} in full-quote sections - Converted more of the Tokenizer to use exceptions - Optimized away a bunch of now-unneeded "or return undef" - Optimized _set_token_class down to a single statement - Inlined _set_token_class out of existence - Cache and fast-clone PPI::Token::Whitespace->null - Removed some superfluous parameter checks on private methods, for conditions that would cause explosions and be noticed anyway. - Removed the fancy options from PPI::Token::new - More consistent structure of incomplete quotes 1.199_02 Mon 5 Mar 2007 Summary: - Added parser timeout support - Fixing various regression cases - Adding some housekeeping tweaks Details: - Created PPI::Exception with an eye to moving towards using exceptions more for error handling (for speed). The goal is to get rid of the "or return undef"s. - Added the timeout param to the PPI::Document constructor which uses alarm to implement basic timeout support. This should help when parsing a large corpus on Unix. (Not available on Win32) - Fixed incorrect location() for PPI::Structure instances. - Adding better parsing of hash constructors. - Pushing Clone dependency to 0.22 to get closer to taint support) - Pushing deps on bundled test modules to prevent accidentally bundling old versions. 1.199_01 Tue 31 Oct 2006 Summary: - Improved lexing correctness - Partial implementation of literal - Initial implementation of Number classes (Chris Dolan) Details: - Split out PPI::Token::Number subclasses - Implement numbers with exponential notation - Implement literal() for ::Number classes (except ::Version) - Implement literal() for ::Token::Quote::Single - Added -T for inline tests - Add tests for nested statements and nested structures - Fixed some bugs as a result - Improved detection of the correct curly brace structure types 1.118 Fri 22 Sep 2006 Summary: - Better 5.10 support - Fixing various (mostly parsing) bugs Details: - Upgraded to Module::Install 0.64 - Improving support for dor and added //= operators - Fixed parsing of binary, octal and hex numbers - Fixed parsing of /= and *= - Fixed #21571 symbol() returns just sigil with adjacent braces - Fixed #21575 variables() chokes on list with whitespace - Fixed #20480 (Misparse of some floating-point numbers.) - Fixed #19999: Make test fails (undeclared global variable $document) under Perl 5.6.2 (or at least, I think I have. This needs double-checking on Perl 5.6.2) - Partially Fixed #16952: [PATCH] Speed up tokenizer char-by-char (Did not apply the patch, but fixed a bug noted as an aside in the report) - PPI::Document::File was returning a plain PPI::Document object, fixed. - FINALLY added some basic POD for PPI::Structure, the one class I somehow keep forgetting to do. 1.117 Sat 02 Sep 2006 Summary: - Fixing bugs introduced in 1.116 Details: - Simple compound statements "{ 1 }" were not end-detecting properly - The new handling for the "-" character was shortcutting naively - Labelled compound statements were not end-detecting properly - { package => 1 } was treating package incorrectly - Fixed bugs in test cases submitted by the Perl::Critic team - Added a number of extra test cases, and introduced Test::Object based testing for PPI::Document objects. 1.116 Thu 31 Aug 2006 Summary: - PPI::Document::File first release - Adding readonly attribute - Fixed various accumulated bugs Details: - Upgraded to Module::Install 0.63 - Add a new file-only subclass of PPI::Document - Added the readonly attribute to the PPI::Document->new constructor - Added method PPI::Document->readonly method - 'goto' is a PPI::Statement::Break - Re-fixed #19629: End of list mistakenly seen as end of statement - Applied #16892: [PATCH] docs and comments - Fixed #16815 (location of Structure::List is not defined.) - Fixed misparsing of C< 1-1 > - Fixed #18413: PPI::Node prune() implementation broken - Fixed #20428 (minor doc bug in PPI::Token::Symbol) - Resolved NOTABUG #20031 (PPI installation) - Resolved NOTABUG #20038 (PPI installation) - Fixed #19883: 'package' bareword used as hash key is detected as package statement - Fixed #19629: End of list mistakenly seen as end of statement - Fixed #15043: (no description) # He wanted PPI::Document::File 1.115 Sat 03 Jun 2006 Summary: - Fixing rt.cpan.org bugs Details: - Fixed #19614: Suspicious code in PPI::Structure - Fixed #16831: until () { } not parsed as compound statement - NOTABUG #16834: "$a = 1 if ($a == 2)" vs "$a = 1 if $a == 2" - Fixed #19629: End of list mistakenly seen as end of statement - Fixed #18413: PPI::Node prune() implementation broken 1.114 Thu 25 May 2006 Summary: - This release addresses only dependency issues Details: - Changed over from IO::Scalar to IO::String - Added a dependency on Task::Weaken so that we can make various not-so-clueful downstream packagers play nicely. 1.113 Wed 10 May 2006 Summary: - This release contains only build-time changes Details: - Upgraded to Module::Install 0.62 - No features() used in this dist, so removing auto_install 1.112 Mon 24 Apr 2006 Summary: - Emergency release to fix a bug that prevents install on perl > 5.8.4 Details: - Small typo in the unicode-specific section of 14_charsets.t prevents tests passing for anyone with a unicode-sane Perl version. - Added a test for strange locales that can't handle unicode, and skip the unicode tests. 1.111 Sat 22 Apr 2006 General - Moved from SourceForge CVS to new collaborative SVN repository - Fixed regressions other people had added since 1.110 - Upgraded to Module::Install 0.62 Details: - SourceForge was too hard to get into, so moved to specially designed new SVN repository to make it easy for others to help out. - Moved t.data to t/data in line with current style and to reduce complexity. - Fixed t/data/08_regression/11_multiply_vs_glob_cast (added by unknown) - Fixed t/data/08_regression/12_pow (added by unknown) - Removed every use of UNIVERSAL::isa in the tests - Upgraded to Module::Install 0.62 (my private prerelease) 1.110 Fri Jan 27 2005 General - Added test support for the third location component (Arjen Laarhoven) - Various bug fixes (Releasing early with only small changes at the request of Perl::Critic) Details: - Fixed CPAN #16924: PPI::Statement::Sub.pm fix to use Params::Util line to resolve _INSTANCE error - Fixed CPAN #16837: typo in PPI::Statement::Expression POD - Fixed CPAN #16973: PPI 1.109 shouldn't require List::Util 1.18 (We do need 1.18 to avoid a leak, but it doesn't work everywhere) - Fixed CPAN #16814: _INSTANCE method not defined in PPI::Statement::Sub (dupe) - Arjen Laarhoven added to CVS committers - Added a third element to ->location return arrayref that contains the visual starting column of the token, taking into account tabbing. 1.109 Fri Dec 30 2005 Summary: - Various bug fixes - Minor structural cleanup Details: - Removed every single use of UNIVERSAL::isa - PPI::Normal was quite broken, cleaned it up - Fixed PPI::Normal::Standard::remove_statement_separator - Fixed CPAN #16674 PPI::Token::Quote::Double->interpolations (awigley) - Fixed CPAN #15131 PPI::Node->find() behavior not completely documented (Jeffrey Thalhammer) - Fixed CPAN 13743 PPI::Statement::Scheduled api (johanl) - PPI::Statement::Scheduled is now a subclass of PPI::Statement::Sub - Removed breaking circular include in PPI::Util - Removed an 'our' variable in t/04_element.t that created a 5.6.0 dependency - Only do the PPI::Cache tests that use Test::SubCalls if >= 5.006 - (Except for File::Remove, we should ACTUALLY depend on 5.005 now) - Fixed CPAN #16671 $_ is not localized (JPIERCE) (I missed an unlocaled $_ hiding in the Node object destructor) 1.108 Thu Dec 15 2005 Summary: - Fixing of some very minor bugs Details: - 8 wasn't an illegal character in an octal number (fixed) - Two <<heredocs with no content on the final line didn't round-trip (fixed) 1.107 Wed Dec 14 2005 Summary: - PPI is now Editor-compatible. - You can create a PPI::Document from random ASCII line noise! Details: - Added a dozen various patches to complete round-trip Tokenizer and Lexer support for absolutely anything (i.e. line noise) inside the normal set of ASCII characters used in Perl programs. - Does not include Latin-1 and Unicode line noise (yet). - Completely the 21_exhaustive.t test script. - Tested 21_exhaustive.t against 500,000 x 120-character completely random line noise Perl programs. (Apparently I'm still leaking 1k per document somewhere) 1.106 Sun Dec 11 2005 Summary: - More changes to support all possible 4-character programs Details: - Various fixes to weird things like *::' 1.105 Sat Dec 10 2005 Summary: - Improvements driven by Audrey Tang's pugs wishlist. (So pugs can parse Perl 5, eep) - Latin-1/Unicode improvements (but now requires perl >= 5.8.5) (not pre-checked and enforced yet, but will be) - Starting new generation of "exhaustive" testing Details: - Added 20_tokenizer_regressions, which tests all detectably-failing 3-or-less character long Perl programs (not inclusive of latin-1 or Unicode). (Audrey Tang) - Fixed bug for incomplete <READLINE> quotes at EOF (there may be a few more similar cases) - Fixed bug with $'0 (where 0 is only legal after ::) - No longer die for illegal chars in hex/bin number types (Attach the error to $token->{_warning} instead) - Caught a number of cases with trailing colons for $things (Both at EOF and end of token) - Convert [^\W\d]\w* to (?!\d)\w+ to improve unicode support in symbols etc (Audrey Tang) - Miscellaneous doc bugs in the SYNOPSIS (Audrey Tang) 1.104 Thu Nov 10 2005 General - No change to code - Both List::Util and List::MoreUtil contain memory leaks, and we use them extensively. Pushed the dependencies up to versions with the memory leaks fixed. 1.103 Thu Oct 6 2005 General - Small bug fix that shouldn't have escaped Details: - Changed md5hex_file to act more like the PPI::Documeny way. That is, localise and THEN convert to \015 1.102 Wed Oct 5 2005 General - Small things to support Perl::Metrics Details: - Added undocumented PPI::Util::md5hex_file function 1.101 Thu Sep 29 2005 General - Bug fix release Details: - Fixed CPAN bug #14436 and #14440, misparse for my ($foo) ... - Added an self-analysis test script for PPI-testable problems - Fixed some minor bugs it threw up. 1.100_03 General - Major bug fixing - Some additions to help simplify Perl::Metrics Details: - A whole bunch (practically all) of the sibling code was breaking under non-trivial use. Fixed, with a number of new tests added. - Added function PPI::Util::md5hex - Added method PPI::Document::hex_id 1.100_02 General - Various bug fixes - Completed the first version of PPI::Cache Details: - Expanded round-trip testing coverage to all the lexer and regression test files - 06_round_trip.t wasn't doing the round-trip test properly. Fortunately, this only resulted in false failures, so no actual damage was done as a result of this. 1.100_01 Sat Sep 03 2005 Summary: - Added integrated cache support Details: - Added PPI::Cache class - Removed warning in 99_pod.t - Added a common PPI::Util::_slurp function - PPI::Document can be given a cache to use 1.003 Tue Aug 18 2005 Summary: - Bug fix release Details: - Add support for 'for $foo () {}' - Add support for 'for my $foo () {}' - Fixed bug where "'Hello..." crashed the Tokenizer - Fixed bug where '"Hello...' crashed the Tokenizer - Fixed bug where 's' crashed the Tokenizer 1.002 Thu Jul 14 2005 Summary: - Bug fix release Details: - Fixed CPAN #13655 - insert_before and insert_after broken. 1.001 Tue Jul 12 2005 Summary: - Turning on Test::Inline scripts Details: - Bug fix: ->string returns wrong for qq <foo> and all braced quotes - Added Test::Inline 2.100-type inline2test.conf and inline2test.tpl files - Added t/ppi_token__quoteengine_full.t - Added t/ppi_token_quote_single.t - Added t/ppi_token_quote_double.t - Added t/ppi_token_quote_literal.t - Added t/ppi_token_quote_interpolate.t 1.000 Sat Jul 9 2005 Summary: - FIRST PRODUCTION RELEASE - Finalising POD, corrected the Copyright dates - Rewrote much of the main PPI.pm docs - Removing more unneeded dependencies - Added native Storable support Details: - Removed dependency on Class::Inspector - Added build dependency on Class::Inspector and include() it (although it's still needed at build time, this still does manage to reduce the number of files to download by one more) - Added PPI::Document::STORABLE_freeze and PPI::Document::STORABLE_thaw 0.996 Fri Jul 8 2005 Summary: - RELEASE CANDIDATE 2 - Clearing all remaining RT bugs - Removing and inlining dependencies Details: - Resolved PDOM bug CPAN #13454 ( while ( $s = $s->sprevious_sibling ) infinite loops ) Mental Note: Doing an auto-decrement in an array subscript is BAD - Resolved Lexer bug CPAN #13425 ( $p{package} creates a PPI::Statement::Package ) Added smarts to resolve word-started statements as ::Expression in subscripts - Resolved PDOM bug CPAN #13326 ( problems in index_locations ) Patch and comprehensive additional tests provided by johanl[ÄT]DarSerMan.com - Removed dependency on Class::Autouse. Just load Tokenizer and Lexer up front. - Removed dependency on File::Slurp. Only use it 3 times and it's not worth it when almost all the files we will read are under 50k. 0.995 Sun Jul 3 2005 Summary: - RELEASE CANDIDATE 1 - Added some internals to help with XML compatibility - Completed primary POD docs - Completed first versions of insert_before and insert_after - Removed last uses of _isa - Added final missing POD docs Details: - Added convenience method PPI::Element::class - Added docs for all PPI::Structure classes - Added additional tests to check for ::Unknown classes - Added PPI::Document::insert_before to return an error - Added PPI::Document::insert_after to return an error - Added PPI::Document::replace to return an error - Removed a number of unneeded UNIVERSAL::isa imports - Removed PPI::Token::_isa before anyone starts using it. It was hacky and unsuitable to a production release 0.994 skipped 0.993 Tue Jun 21 2005 Summary: - Various minor code, packaging and POD cleanups Details: - Corrected a POD bug in PPI::Dumper - Upgraded PPI::Dumper param checking to Params::Util - Restored PPI::Element->clone to using Clone::clone ( 0.17+ ) - Removed dependency on Storable - Until it fixes the problem, explicitly include ExtUtils::AutoInstall 0.992 Sun Jun 12 2005 Summary: - Added the PPI::Transform API 0.991 Fri Jun 10 2005 - Typo. I wasn't dieing on newlines to PPI::Document->new( string ) correctly, and thus dieing without the API CHANGE message. This was confusing people as to why. 0.990 Wed Jun 8 2005 Summary: - Last version (hopefully) to make API changes - Slight API shuffle in the constructors - Completed all PPI::Statement::* API documentation - Enabled latin-1 support in the appropriate places 0.906 Thu Apr 28 2005 Summary: - Completed location support and added related unit tests - Added API for future support of tab widths Details: - Removed PPI::Element::_line - Removed PPI::Element::_col - Fixed bugs in PPI::Document::index_location - Fixed bugs in PPI::Element::location - Added 12_location.t unit test - Added PPI::Document::tab_width method - Added PPI::Normal::Standard::remove_useless_attributes (to remove the ->{tab_width} attributes and later other things) 0.905 Wed Apr 20 2005 Summary: - Completely forgot to write unit tests for PPI::Util, and a bug slipped in. Fixed and added tests Details: - Fixed bug in PPI::Util::_Document - Added 11_util.t 0.904 Wed Apr 20 2005 Summary: - Improvements to PPI::Normal - Method renaming to parse-time PDOM private methods - Various bug fixes and POD tweaks - Added PPI::Util Details: - Partly added Layer 2 to PPI::Normal - Added function PPI::Normal::Standard::remove_useless_pragma - Added function PPI::Normal::Standard::remove_statement_separator - Added function PPI::Normal::Standard::remove_useless_return - Renamed _on_line_start to __TOKENIZER__on_line_start - Renamed _on_line_end to __TOKENIZER__on_line_end - Renamed _on_char to __TOKENIZER__on_char - Renamed _scan_for_end to __TOKENIZER__scan_for_end - Renamed _commit to __TOKENIZER__commit - Renamed _is_an_attribute to __TOKENIZER__is_an_attribute - Renamed _literal to __TOKENIZER__literal - Renamed _opposite to __LEXER__opposite - Fixed bug in PPI::Statement::Package::namespace - Added unit tests for PPI::Statement::Package - Added (currently mostly internal) PPI::Util - Added exportable function PPI::Util::_Document 0.903 Fri Mar 25 2005 Summary: - PPI::Document and other PPI::Node-subclasses will now implicitly DESTROY correctly. - Now that PPI.pm is just a module loader, merge the main documentation from PPI::Manual back into it again. Details: - Added use of Scalar::Util::weaken for all %_PARENT writes - Uncovered critical bug in Clone, so we use Storable::dclone for now, until Clone is fixed. This resolves rt.cpan.org #11552 - Added dependency on Storable 1.13 - Moved all PPI::Manual content to PPI and relinked This resolves rt.cpan.org #11803 - Removed lib/PPI/Manual.pod - Added the standard 99_pod.t to check POD - Fixed a POD bug in Element.pm 0.902 Sun Feb 6 2005 Summary: - Added Document Normalization functions from old Perl::Compare (although it is very very limited in function at this point) Details: - Added class PPI::Normal - Added class PPI::Normal::Standard - Added class PPI::Document::Normalized - Added method PPI::Document->normalize - Bug: ->clone was going to all the trouble to build a clone, but then returning the original :( Fixed 0.901 Sat Jan 29 2005 Summary: - Moved all up-to-date code over to SourceForge - Various fixes to allow the release of File::Find::Rule::PPI Details: - Got all modules synchronising their versions correctly - Moved to SourceForge CVS repository - Changed all files over to the new CVS directory layout - Fixed bug in PPI::Node::find_first - Added unit tests for PPI::Node::find_first - Added unit tests for PPI::Node::find_any - Added a stub and docs for PPI::Statement::stable 0.900 Mon Jan 17 2005 Summary: - Final removal of PPI::Base - Completed majority of crash bugs in the Tokenizer Details: - Fixed Tokenizer Bug C< @foo = <<EOF; > seen as ::Readline - Fixed Tokenizer Bug C< (<<EOF) > seen as ::Readline - Fixed Tokenizer Bug C< q'foo bar' > parsed incorrectly - Fixed bug in PPI::Token::_QuoteEngine::_scan_quote_like_operator_gap - Fixed Tokenizer Bug C< $foo:'<undef>' > sees symbol $foo:' - Fixed Tokenizer Bug C< $#arrayindex > was seen as a Symbol - Fixed Tokenizer Bug C< %2 > was seen as a Symbol - Fixed Tokenizer Bug C< &64 > was seen as a Symbol - Fixed Tokenizer Bug C< $::| > is actually a Magic - Fixed Tokenizer Bug C< @0 > is a Magic - Deleted PPI::Base - Added $PPI::Element::errstr - Added basic private error methods to PPI::Element - PPI::Element::significant now returns '' as false - PPI::XS - Added all C<significant> methods 0.846 Mon Jan 17 2005 Summary: - Added proper support for <FILE> - Last release before beta 1 if all looks good Details: - Added class PPI::Token::QuoteLike::Readline - Added t.data/05_lexer_practical/10_readline.code/dump - Added support for <> - A few other minor bug fixes 0.845 Sat Jan 15 2005 Summary: - Adding integration with PPI::XS, autoloading if installed Details: - Added $PPI::XS_COMPATIBLE and $PPI::XS_EXCLUDE variables to guide integration - Don't autoload PPI::Document, always load - Load in PPI::XS whenever it is installed - Loading and depending on Class::Inspector - PPI::Element::significant implemented in XS (as a trial) 0.844 Fri Jan 14 2005 Summary: - Found a massive performance bug when parsing large perl constructs - Fixed some install problems Details: - PPI::Node::schild was copying the entirety of its child array each call. This was causing massive slowdowns when ->{children} got large. Fixed. - The core tests still expect Transform to be in the core. Fixed. 0.843 Tue Jan 12 2005 Summary: - Starting the process of removing PPI::Base. It only does does error handling now, which will be split up. - Fixing some packaging and "play well with others" issues Details: - Randal Schwartz pointed out t/06... wouldn't working for him. It appears when Test::More bug CPAN #8385 was fixed, we broke. - We now include build-time-only dependencies in the installer - Although unusable, PPI::Document::Normalized's version fell out of sync with the rest of the distribution. Fixed. - PPI::Tokenizer no longer inherits from PPI::Base - Added class variable $PPI::Tokenizer::errstr - Added class method PPI::Tokenizer->errstr - Fixed Tokenizer Bug: C< y => 1 > was being seen as a regex - Fixed Tokenizer Bug: C< <<''; > was dying because I expected at least one character - Fixed Tokenizer Bug: C< $foo->{s} > was being seen as a regex 0.842 Tue Jan 11 2005 Summary: - Lots of debugging based on Tinderbox results Details: - Fixed MANIFEST.SKIP to removed PPI::Transform and PPI::Tinderbox from the core PPI distribution (like they should be) - Optimised the previous #9582 to not have to run for EVERY word, only those where it might be needed. - Corrected a use of QuoteLike::Execute to QuoteLike::Backtick - Fixed CPAN #9598 Tokenizer Bug: C< qx( $command ) > - Fixed CPAN #9614 Tokenizer Bug: C< $foo << 16 > - Set the properly includive regex for << '...' here-doc - Added an very early filter to prevent non-basic chars going in 0.841 Mon Jan 10 2005 Summary: - Completed much more documentation on the core classes - PPI::Tester back in sync again (separate distribution) - PPI::Processor and PPI::Tinderbox completed (separate distribution) Details: - Documented PPI::Tokenizer - PPI::Document->new( $source ) added as a convenience - PPI::Lexer::lex_file can now be called statically - PPI::Lexer::lex_source can now be called statically - PPI::Lexer::lex_tokenizer can now be called statically - Fixed a small bug in PPI::Dumper::print - Fixed CPAN #9582 Tokenizer Bug: C< sub y { } # Comment > - Fixed similar case with C< foo->y() > 0.840 Thu Dec 21 2004 Summary: - Changed the PPI summary to no longer use the devisive word "parse" Now: "PPI - Analyze and manipulate Perl code without using perl itself" - Total rewrite of all the ->location code - Upgrading MakeFile.PL to Module::Install - Fixed #CPAN 8752 (a round-trip edge case bug) - Added 08_regression.t to do code/dump regression testing for lexer bugs - Completed (hopefully) HereDocs conversion to a single complex token - PPI is now compatible with prefork.pm (although not dependant) Details: - Added PPI::Node::find_first object method - Changed PPI::Node::find_any to just call PPI::Node::find_first - Added PPI::Element::first_token object method - Added PPI::Element::last_token object method - Made a partial-removal-capable PPI::Element::_flush_locations - PPI::Document::flush_locations uses PPI::Element::_flush_locations - PPI::Document::index_locations is here-doc sane - Added PPI::Token::HereDoc::heredoc object method - Added PPI::Token::HereDoc::terminator object method - Documented PPI::Token::HereDoc - Added a HereDoc code/dump test to 05_lexer_practical.t - Added PPI::Document::serialize, which replaces the use of ->content for generating the actual string to write out to files when saving Documents. - File::Spec reduced from dependency to build dependency - Updated Test::ClassAPI dependency to newest version - Enabled API collision detection in 02_api.t - Updated Class::Autouse dependency to newest version 0.840_01 Tue Dec 21 2004 Summary: - Perl Foundation Funding Commences - Changes separated into General and Details from here on - Complete re-organisation of the quote-like token classes. Any and all code that works with quotes will be broken. - Gave up on the old PPI::Query code and wrote a complete new and much thinner implementation based roughly on the API of File::Find::Rule. PPI::Find uses the &wanted function (which also has a slightly different API to the old one) but has the ->in style search methods. It should be relatively easy for someone to write PPI::Find::Rule on top of it. - PPI::Transform is thus temporarily stale Details: - Introduced a bug for C< foreach $foo () > and caught/fixed it during the changeover. - Changed PPI::Lexer::Dump to PPI::Dumper - API Freeze PPI::Find - API Freeze PPI::Dumper - Documented PPI::Find - Documented PPI::Dumper 0.831 Fri Nov 5 2004 - Overloaded PPI::Document bool => true - Overloaded PPI::Document "" => content (That is, ::Documents stringify to their content) - Fixed PPI::Document::save - Merged Leon Brocard's docs patch - Cleaned up PPI::Node::_condition and documented conditions better (fixed #7799) - Allow dropping of the initial PPI:: in class search conditions - Fixed two instances of File::Slurp::read_file being called as a method 0.830 Mon Sep 27 2004 - Added PPI::Statement::Package::file_scoped object method - Handle potentially dangerous C< sub foo ($$ > safer - Resolve C< sub BEGIN { } > to PPI::Statement::Scheduled correctly - Resolve C< sub () { 1 }; > to PPI::Statement correctly - API Freeze PPI::Statement::Package - API Freeze PPI::Statement::Scheduled - API Freeze PPI::Statement::Sub - Documented PPI::Statement - Documented PPI::Statement::Package - Documented PPI::Statement::Scheduled - Documented PPI::Statement::Sub - Documented PPI::Document::Fragment 0.829 Sat Sep 25 2004 - BREAKS API COMPATIBILITY - Changed PPI::Token::SubPrototype to PPI::Token::Prototype - Added PPI::Token::Prototype::prototype object method - Added PPI::Statement::Sub::prototype object method - Added PPI::Statement::Sub::block object method - Fixed PPI::Statement::Include::version 0.828 Sun Aug 8 2004 - BREAKS API COMPATIBILITY - Changed PPI::Token::DashedBareword to PPI::Token::Quote::Dashed - Changed PPI::Token::Bareword to PPI::Token::Word - Vastly improved PPI::Manual 0.827 Thu Aug 5 2004 - Added PPI::Token::Separator class ( for __DATA__ and __END__ ) - Added better Tokenizer handling of __DATA__ and __END__ - Added better Lexer handling of __DATA__ and __END__ - Fixed some version inconsistencies 0.826 Sat Jul 31 2004 - Added PPI::Element::statement object method - Added PPI::Transform abstract class - Sped up the 'bool' overload for PPI::Element - Added PPI::Element::snext_sibling object method - Added PPI::Element::sprevious_sibling object method - Added PPI::Element::insert_before object method placeholder - Added PPI::Element::insert_after object method placeholder - Changed {elements} to {children} to match PPI::Node definitions - Added PPI::Node::first_element object method - Added PPI::Node::last_element object method - Added PPI::Element::next_token object method - Added PPI::Element::previous_token object method - Added PPI::Token::Symbol::symbol object method 0.825 Mon Jul 26 2004 - Added PPI::Statement::Include::type object method - Added PPI::Statement::Include::module object method - Added PPI::Statement::Include::pragma object method - Added PPI::Statement::Include::version object method - Overloaded == as "the same object" for PPI::Element - Overloaded eq as "->content is the same" for PPI::Element - Overloaded bool as always true, to prevent an error - Added PPI::Statement::Package::namespace object method - 100% round-trip safe. What goes in, will come out. - Reduced leaks by 95%. Process size 30meg after 5000 files. Still some leaks remaining when Lexing errors out. - Separated largest Tokens into their own files. This aligns token class structure with that of ::Statement and ::Structure - Rewrote PPI::Node::DESTROY several times while hunting down more leaks - Fixed Tokenizer crash on empty subroutine prototypes such as C< sub foo() {} > - Treat unexpected braces as an implicit close, to make the lexer more resilient - Added PPI::Statement::UnmatchedBrace (name suggested by Abhijit Menon-Sen) to handle closing braces found at the base of a Document. - Enabled foo'bar package notation again. - Getting close to the first 0.900 series beta release 0.824 Wed Jul 21 2004 - Removed a 6 meg tmon.out file I accidentally bundled 0.823 Wed Jul 21 2004 - Added PPI::Document::Fragment class - Added PPI::Node::schildren object method - Completed compound statement parsing - Lexer is now officially feature complete 0.822 Wed Jul 21 2004 - Filling out the API test as much as possible - Added PPI::Statement::label object method - Moved PPI::Structure::elements object method to PPI::Node::elements - Re-organised statement parsing to better implement ::Compound statements - Added PPI::Statement::Data class - Added PPI::Statement::End class - Re-organised the _lex_statement, _statement_continues stuff, ready for while - Added PPI::Lexer::_lex_statement_end to handle PPI::Statement::End properly - Organising 02_api.t was getting hard, so added implicit Module=class to Test::ClassAPI 0.821 Mon Jul 19 2004 - Cleaned up test data files directories - Added PPI::Statement::Variable::type object method - Added PPI::Statement::Variable::variables object method - Added some more classes to the API testing - Started 07_tokens.t for testing particular token classes - Added PPI::Token::Symbol::canonical object method (and tests) - PPI::Token::Magic now ISA PPI::Token::Symbol - PPI::Element::clone now fixes _PARENT links for Nodes 0.820 Mon Jul 19 2004 - Added Round-Trip-Safe testing for all PPI files - Added PPI::Node::find_any object method - Added PPI::Node::contains object method - Continuing the never ending addition of tests - Structure open and close brace tokens now see the Structure as their parent - Removed the sample application, to streamline the core install - Removed dependencies for the sample application - Removed custom META.yml, as now no longer needed 0.819 Mon Jul 14 2004 - Many parts of PPI are VASTLY changed in this revision - Breaks API compatibility heavily - Adds dependency on List::MoreUtils - Added PPI::Lexer support for CHECK blocks - Added PPI::Document::load method - Added PPI::Document::save method - Added PPI::Document::index_locations method - Added PPI::Document::flush_locations method - Added PPI::Element::top method - Added PPI::Element::document method - Renamed PPI::Element::extract -> PPI::Element::remove - Added test script for element-y stuff - Optimisation across the board using List::Any - Added PPI::Node::first_child method - Added PPI::Node::last_child method - Added PPI::Element::clone method - Removed Filehandle support from PPI::Tokenizer, to allow the ability to rollback source lines into the buffer if needed. - Added POD documentation for PPI::Element - Added POD documentation for PPI::Node - Added POD documentation for PPI::Document 0.818 Mon Jul 5 2004 - Changed lib/PPI/Manual.pm to lib/PPI/Manual.pod - Added documentation for PPI::Lexer - Fixed the misparsing of s{//}{\} - More clues added for deciding "slash or regex" - Removed PPI::Batch from the default distribution - Replaced File::Flat with File::Slurp to reduce dependencies 0.817 Thu Jul 1 2004 - Fixed the misparsing of $#{ } - Changed PPI::ParentElement to PPI::Node and moved it to its own file - Changed PPI::Common to PPI::Base - Fixed PPI::Node::find - Added PPI::Node::prune - Started to add a little more class structure documentation - Tried to make the DESTROY sequence of events work better 0.816 Tue Jun 29 2004 - Solved the "last token in file parses wrong" bug 0.815 Sun Jun 27 2004 - Fixed a bug with the detection of @- and @+ - Added support for @* - Added missing classmap entry for ^ to ::Token::WhiteSpace - Added support for arcane "foo"x10 idiosyncracy 0.814 Sat Jun 26 2004 - Added the PPI tester, a desktop-based interactive debugger, which should greatly accelerate finding and fixing both ::Tokenizer and ::Lexer bugs. This will probably end up as a separate distribution though, as it has a dependency on wxPerl. - Fixed the misparsing of Foo::Bar::Baz - Fixed the misparsing of *100 - Fixed the misparsing of Class::->method properly, or rather Foo:: - Tokenizer correctly identifies labels - Changed PPI::Statement::Flow to PPI::Statement::Compound - Removed the extra null whitespace token appearing after a bareword at the end of a file. - -X operator are recognised correctly, although not at end of file - Lexer detects subroutine and if () statement ends correctly 0.813 Sat Jun 26 2004 - PPI::Lexer is now structurally complete 0.812 Tue Jun 22 2004 - No changes to PPI itself. - With the addition of Test::ClassAPI 'complete' support, upgraded 02_api.t to use it. Fixed a few small house-keeping bugs. 0.811 Mon Jun 21 2004 - Added support for subroutine attributes - Fixed some problems with anonymous subroutines and prototypes - $#$foo parses as (Cast,Symbol) now, not (Magic,Symbol) 0.810 Mon Jun 14 2004 - Recognise the _ magic filehandle 0.809 Sat Apr 17 2004 - No changes to PPI itself. Set the correct number of tests to match changes to Test::ClassAPI 0.808 Sat Apr 17 2004 - No changes to PPI itself. Upgraded 02_api.t to match changes to Test::ClassAPI 0.807 Sat Apr 3 2004 - Added a manual META.yml file to stop the bundled private AppLib library from being indexed by CPAN 0.806 Mon Mar 22 2004 - The $} magic variable is now supported - Fixed a "tight sub property" bug ( sub foo:lvalue ) 0.805 Sun Sep 28 2003 - The maximum line length regressed, reseting it to 5000. - In PPI::Format::HTML, not any parsing error causing a premature end of tokenizer by adding it in a comment at the end of the file. 0.804 Sat Sep 06 2003 - Statement and Structure resolution preliminarily work. Some basic types of statements and structures are identified. - PPI::Format::Apache has been separated into a different module 0.803 Sat Sep 06 2003 - Added very long line protection support. Maximum line length is now 5000. - Added bug fixes to the Lexer so that block tree building works mostly OK again, without adding broken duplicate tokens. - Added the PPI::Lexer::Dump module, to do Lexer object dumps. 0.802 Sat Aug 23 2003 - PPI::Format::HTML sends the correct content headers 0.801 Fri Aug 22 2003 - Moved to a new numbering scheme to get more room before 1.0 - Always fully load when called under mod_perl - Add mod_perl hook to PPI::Format::HTML 0.8 Fixes to the quote parsing engine 0.7 Fixed some minor bugs 0.6 Fixed POD, fixed version number, included $'a as a symbol 0.5 Missing 0.4 Mon Dec 23 10:24:21 - Some more minor parsing fixes in Tokenizer - Completely changed the API from doThis to do_this style - Changed API to indicate private methods properly 0.3 Tue Dec 17 10:29:27 - Restructured a little bit - Fixed some mis-parsing cases 0.2 Unknown - Added test script 0.1 Thu Dec 06 16:50:23 2002 - original version