Add handle_code() method to Pod::Simple::XHTML
[email protected] (Gisle Aas)
| Newsgroups | perl.pod-people |
|---|---|
| Message-ID | <[email protected]> |
For ActivePerl we plug in a syntax highlighter for the code snippets in the generated HTML documentation. In order to support this for perl-5.16 I ended up patching Pod::Simple::XHTML like this: https://github.com/gisle/pod-simple/commit/9cafd6c5dd1aa753ba0dc698324b1fe6ef05274d We will then subclass Pod::Simple::XHTML to invoke our syntax highlighter in an overridden handle_code method. For this to work without much hassle I also found that I needed to add code to join subsequent text segments so that they were all processed by a single _handle_text invocation: https://github.com/gisle/pod-simple/commit/b6bd1521d06246b6c314e149287a590a1ed21da3 Does this look like a sane way to approach this? --Gisle
0001-Join-subsequent-text-segments-before-passing-them-to.patch
(application/octet-stream, 41 KB)
From b6bd1521d06246b6c314e149287a590a1ed21da3 Mon Sep 17 00:00:00 2001 From: Gisle Aas <[email protected]> Date: Sat, 21 Apr 2012 17:38:34 +0200 Subject: [PATCH 1/2] Join subsequent text segments before passing them to _handle_text This makes it much easier to process text using custom handlers. --- lib/Pod/Simple/BlackBox.pm | 6 ++- t/corpus/cp1256.xml | 9 +-- t/corpus/fet_dup.xml | 39 +++++---------- t/corpus/iso6.xml | 9 +-- t/corpus/koi8r.xml | 45 ++++++----------- t/corpus/laozi38.xml | 33 ++++-------- t/corpus/laozi38b.xml | 33 ++++-------- t/corpus/laozi38p.xml | 33 ++++-------- t/corpus/lat1fr.xml | 28 +++------- t/corpus/lat1frim.xml | 28 +++------- t/corpus/pasternak_cp1251.xml | 108 ++++++++++++---------------------------- t/corpus/polish_utf8.xml | 66 ++++++++----------------- t/corpus/thai_iso11.xml | 48 ++++++------------ t/x_nixer.t | 11 +--- 14 files changed, 162 insertions(+), 334 deletions(-) diff --git a/lib/Pod/Simple/BlackBox.pm b/lib/Pod/Simple/BlackBox.pm index b6e8f7a..a1db54e 100644 --- a/lib/Pod/Simple/BlackBox.pm +++ b/lib/Pod/Simple/BlackBox.pm @@ -1459,10 +1459,12 @@ sub _traverse_treelet_bit { # for use only by the routine above my $scratch; $self->_handle_element_start(($scratch=$name), shift @_); - foreach my $x (@_) { - if(ref($x)) { + while (@_) { + my $x = shift; + if (ref($x)) { &_traverse_treelet_bit($self, @$x); } else { + $x .= shift while @_ && !ref($_[0]); $self->_handle_text($x); } } diff --git a/t/corpus/cp1256.xml b/t/corpus/cp1256.xml index deacfd6..7f3021b 100644 --- a/t/corpus/cp1256.xml +++ b/t/corpus/cp1256.xml @@ -73,20 +73,17 @@ قال رسول الله صلى الله عليه وسلم: - - اربع فرضهن + اربع فرضهن الله عز وجل في الاسلام فمن جاء بثلاث لم يغنين عنه - - شيئا حتى يأتي + شيئا حتى يأتي بهن جميعا الصلاة والزكاة وصيام رمضان وحج - - البيت. رواه + البيت. رواه احمد والطبراني في الكبير وفي اسناده diff --git a/t/corpus/fet_dup.xml b/t/corpus/fet_dup.xml index c33277d..92addce 100644 --- a/t/corpus/fet_dup.xml +++ b/t/corpus/fet_dup.xml @@ -63,56 +63,43 @@ Когда читала ты мучительные строки, - - Где сердца + Где сердца звучный пыл сиянье льет кругом - - И страсти + И страсти роковой вздымаются потоки,- - - Не вспомнила + Не вспомнила ль о чем? - - - - Я верить не + + Я верить не хочу! Когда в степи, как диво, - - В полночной + В полночной темноте безвременно горя, - - Вдали перед + Вдали перед тобой прозрачно и красиво - - Вставала + Вставала вдругзаря. </VerbatimFormatted> <VerbatimFormatted start_line="46" xml:space="preserve"> И в эту красоту невольно взор тянуло, - - В тот величавый + В тот величавый блеск за темный весь предел,- - - Ужель ничто + Ужель ничто тебе в то время не шепнуло: - - Там человек + Там человек сгорел! - - - - 15 февраля + + 15 февраля 1887 </VerbatimFormatted> <Para start_line="53"> diff --git a/t/corpus/iso6.xml b/t/corpus/iso6.xml index b597324..b0d6ec4 100644 --- a/t/corpus/iso6.xml +++ b/t/corpus/iso6.xml @@ -74,20 +74,17 @@ قال رسول الله صلى الله عليه وسلم: - - اربع فرضهن + اربع فرضهن الله عز وجل في الاسلام فمن جاء بثلاث لم يغنين عنه - - شيئا حتى يأتي + شيئا حتى يأتي بهن جميعا الصلاة والزكاة وصيام رمضان وحج - - البيت. رواه + البيت. رواه احمد والطبراني في الكبير وفي اسناده diff --git a/t/corpus/koi8r.xml b/t/corpus/koi8r.xml index 94331d7..8febf8d 100644 --- a/t/corpus/koi8r.xml +++ b/t/corpus/koi8r.xml @@ -63,57 +63,42 @@ Когда читала ты мучительные строки, - - Где сердца + Где сердца звучный пыл сиянье льет кругом - - И страсти + И страсти роковой вздымаются потоки,- - - Не вспомнила + Не вспомнила ль о чем? - - - - Я верить не + + Я верить не хочу! Когда в степи, как диво, - - В полночной + В полночной темноте безвременно горя, - - Вдали перед + Вдали перед тобой прозрачно и красиво - - Вставала + Вставала вдругзаря. - - - - И в эту красоту + + И в эту красоту невольно взор тянуло, - - В тот величавый + В тот величавый блеск за темный весь предел,- - - Ужель ничто + Ужель ничто тебе в то время не шепнуло: - - Там человек + Там человек сгорел! - - - - 15 февраля + + 15 февраля 1887 </VerbatimFormatted> <Para start_line="48"> diff --git a/t/corpus/laozi38.xml b/t/corpus/laozi38.xml index 5ff7251..e0d5f78 100644 --- a/t/corpus/laozi38.xml +++ b/t/corpus/laozi38.xml @@ -23,28 +23,17 @@ </Para> <VerbatimFormatted start_line="20" xml:space="preserve"> 上德不德,是以有德﹔ - - 下德不失德,是以無德。 - - 上德無為而無以為﹔ - - 下德無為而有以為。 - - 上仁為之而無以為﹔ - - 上義為之而有以為。 - - 上禮為之而莫之應,則攘臂而扔之。 - - - - 故失道而后德,失德而后仁,失仁而后義,失義而后禮。夫禮者,忠信之薄,而亂之首。 - - 前識者,道之華,而愚之始。 - - 是以大丈夫居其厚,不居其薄﹔居其實,不居其華。 - - 故去彼取此。 + 下德不失德,是以無德。 + 上德無為而無以為﹔ + 下德無為而有以為。 + 上仁為之而無以為﹔ + 上義為之而有以為。 + 上禮為之而莫之應,則攘臂而扔之。 + + 故失道而后德,失德而后仁,失仁而后義,失義而后禮。夫禮者,忠信之薄,而亂之首。 + 前識者,道之華,而愚之始。 + 是以大丈夫居其厚,不居其薄﹔居其實,不居其華。 + 故去彼取此。 </VerbatimFormatted> <Para start_line="33"> [end] diff --git a/t/corpus/laozi38b.xml b/t/corpus/laozi38b.xml index 5ff7251..e0d5f78 100644 --- a/t/corpus/laozi38b.xml +++ b/t/corpus/laozi38b.xml @@ -23,28 +23,17 @@ </Para> <VerbatimFormatted start_line="20" xml:space="preserve"> 上德不德,是以有德﹔ - - 下德不失德,是以無德。 - - 上德無為而無以為﹔ - - 下德無為而有以為。 - - 上仁為之而無以為﹔ - - 上義為之而有以為。 - - 上禮為之而莫之應,則攘臂而扔之。 - - - - 故失道而后德,失德而后仁,失仁而后義,失義而后禮。夫禮者,忠信之薄,而亂之首。 - - 前識者,道之華,而愚之始。 - - 是以大丈夫居其厚,不居其薄﹔居其實,不居其華。 - - 故去彼取此。 + 下德不失德,是以無德。 + 上德無為而無以為﹔ + 下德無為而有以為。 + 上仁為之而無以為﹔ + 上義為之而有以為。 + 上禮為之而莫之應,則攘臂而扔之。 + + 故失道而后德,失德而后仁,失仁而后義,失義而后禮。夫禮者,忠信之薄,而亂之首。 + 前識者,道之華,而愚之始。 + 是以大丈夫居其厚,不居其薄﹔居其實,不居其華。 + 故去彼取此。 </VerbatimFormatted> <Para start_line="33"> [end] diff --git a/t/corpus/laozi38p.xml b/t/corpus/laozi38p.xml index bae00f2..122c5fc 100644 --- a/t/corpus/laozi38p.xml +++ b/t/corpus/laozi38p.xml @@ -40,28 +40,17 @@ </Para> <VerbatimFormatted start_line="30" xml:space="preserve"> 上德不德,是以有德﹔ - - 下德不失德,是以無德。 - - 上德無為而無以為﹔ - - 下德無為而有以為。 - - 上仁為之而無以為﹔ - - 上義為之而有以為。 - - 上禮為之而莫之應,則攘臂而扔之。 - - - - 故失道而后德,失德而后仁,失仁而后義,失義而后禮。夫禮者,忠信之薄,而亂之首。 - - 前識者,道之華,而愚之始。 - - 是以大丈夫居其厚,不居其薄﹔居其實,不居其華。 - - 故去彼取此。 + 下德不失德,是以無德。 + 上德無為而無以為﹔ + 下德無為而有以為。 + 上仁為之而無以為﹔ + 上義為之而有以為。 + 上禮為之而莫之應,則攘臂而扔之。 + + 故失道而后德,失德而后仁,失仁而后義,失義而后禮。夫禮者,忠信之薄,而亂之首。 + 前識者,道之華,而愚之始。 + 是以大丈夫居其厚,不居其薄﹔居其實,不居其華。 + 故去彼取此。 </VerbatimFormatted> <Para start_line="43"> [end] diff --git a/t/corpus/lat1fr.xml b/t/corpus/lat1fr.xml index 017ae6a..4191c44 100644 --- a/t/corpus/lat1fr.xml +++ b/t/corpus/lat1fr.xml @@ -23,10 +23,8 @@ celui-ci examinait avidement comme un objet rare et inconnu. Or, ce joujou, que le petit souillon agaçait, agitait et secouait dans une boîte grillée, c'était - un rat vivant -   - ! Les parents, par économie sans doute, avaient tiré - le joujou de la vie elle-même. + un rat vivant ! Les parents, par économie sans + doute, avaient tiré le joujou de la vie elle-même. </Para> <Para start_line="20"> Et les deux enfants se riaient l'un à l'autre @@ -42,27 +40,19 @@ <VerbatimFormatted start_line="25" xml:space="preserve"> A travers ces barreaux symboliques séparant deux mondes, la grande route - - et le château, l'enfant pauvre montrait à + et le château, l'enfant pauvre montrait à l'enfant riche son propre - - joujou, que celui-ci examinait avidement comme un objet + joujou, que celui-ci examinait avidement comme un objet rare et inconnu. - - Or, ce joujou, que le petit souillon agaçait, agitait + Or, ce joujou, que le petit souillon agaçait, agitait et secouait dans - - une boîte grillée, c'était un rat vivant ! + une boîte grillée, c'était un rat vivant ! Les parents, par économie + sans doute, avaient tiré le joujou de la vie elle-même. - sans doute, avaient tiré le joujou de la vie elle-même. - - - - Et les deux enfants se riaient l'un à l'autre + Et les deux enfants se riaient l'un à l'autre fraternellement, avec des - - dents d'une égale blancheur. + dents d'une égale blancheur. </VerbatimFormatted> <Para start_line="35"> [end] diff --git a/t/corpus/lat1frim.xml b/t/corpus/lat1frim.xml index ffbbdb0..18bec6f 100644 --- a/t/corpus/lat1frim.xml +++ b/t/corpus/lat1frim.xml @@ -23,10 +23,8 @@ celui-ci examinait avidement comme un objet rare et inconnu. Or, ce joujou, que le petit souillon agaçait, agitait et secouait dans une boîte grillée, c'était - un rat vivant -   - ! Les parents, par économie sans doute, avaient tiré - le joujou de la vie elle-même. + un rat vivant ! Les parents, par économie sans + doute, avaient tiré le joujou de la vie elle-même. </Para> <Para start_line="18"> Et les deux enfants se riaient l'un à l'autre @@ -42,27 +40,19 @@ <VerbatimFormatted start_line="23" xml:space="preserve"> A travers ces barreaux symboliques séparant deux mondes, la grande route - - et le château, l'enfant pauvre montrait à + et le château, l'enfant pauvre montrait à l'enfant riche son propre - - joujou, que celui-ci examinait avidement comme un objet + joujou, que celui-ci examinait avidement comme un objet rare et inconnu. - - Or, ce joujou, que le petit souillon agaçait, agitait + Or, ce joujou, que le petit souillon agaçait, agitait et secouait dans - - une boîte grillée, c'était un rat vivant ! + une boîte grillée, c'était un rat vivant ! Les parents, par économie + sans doute, avaient tiré le joujou de la vie elle-même. - sans doute, avaient tiré le joujou de la vie elle-même. - - - - Et les deux enfants se riaient l'un à l'autre + Et les deux enfants se riaient l'un à l'autre fraternellement, avec des - - dents d'une égale blancheur. + dents d'une égale blancheur. </VerbatimFormatted> <Para start_line="33"> [end] diff --git a/t/corpus/pasternak_cp1251.xml b/t/corpus/pasternak_cp1251.xml index 2276551..2243915 100644 --- a/t/corpus/pasternak_cp1251.xml +++ b/t/corpus/pasternak_cp1251.xml @@ -96,113 +96,71 @@ <VerbatimFormatted start_line="61" xml:space="preserve"> Зимняя ночь. - - - Мело, мело + Мело, мело по всей земле - - Во все пределы. - - Свеча горела + Во все пределы. + Свеча горела на столе, + Свеча горела. - Свеча горела. - - - - Как летом + Как летом роем мошкора - - Летит на пламя, - - Слетались + Летит на пламя, + Слетались хлопья со двора - - К оконной + К оконной раме. - - - Метель лепила + Метель лепила на столе - - Кружки и стрелы. - - Свеча горела + Кружки и стрелы. + Свеча горела на столе, + Свеча горела. - Свеча горела. - - - - На озаренный + На озаренный потолок - - Ложились + Ложились тени, - - Скрещенья + Скрещенья рук, скркщенья ног, + Судьбы скрещенья. - Судьбы скрещенья. - - - - И падали два + И падали два башмачка - - Со стуком + Со стуком на пол, - - И воск слезами + И воск слезами с ночника - - На платье + На платье капал. - - - И все терялось + И все терялось в снежной мгле - - Седой и белой. - - Свеча горела + Седой и белой. + Свеча горела на столе, + Свеча горела. - Свеча горела. - - - - На свечку + На свечку дуло из угла, - - И жар соблазна - - Вздымал, как + И жар соблазна + Вздымал, как ангел, два крыла + Крестообразно. - Крестообразно. - - - - Мело весь + Мело весь месяц в феврале, - - И то и дело - - Свеча горела + И то и дело + Свеча горела на столе, + Свеча горела. - Свеча горела. - - - - -- Борис Пастернак, + -- Борис Пастернак, 1946 </VerbatimFormatted> <Para start_line="105"> diff --git a/t/corpus/polish_utf8.xml b/t/corpus/polish_utf8.xml index 1aa77ec..befbd1a 100644 --- a/t/corpus/polish_utf8.xml +++ b/t/corpus/polish_utf8.xml @@ -43,50 +43,28 @@ </Para> <VerbatimFormatted start_line="41" xml:space="preserve"> Wśród nocnej ciszy głos się rozchodzi: - - Wstańcie, pasterze, Bóg się nam rodzi! - - Czym prędzej się wybierajcie, - - Do Betlejem pospieszajcie - - Przywitać Pana. - - - - Poszli, znaleźli Dzieciątko w żłobie - - Z wszystkimi znaki danymi sobie. - - Jako Bogu cześć Mu dali, - - A witając zawołali - - Z wielkiej radości: - - - - Ach, witaj Zbawco z dawno żądany, - - Wiele tysięcy lat wyglądany - - Na Ciebie króle, prorocy - - Czekali, a Tyś tej nocy - - Nam się objawił. - - - - I my czekamy na Ciebie, Pana, - - A skoro przyjdziesz na głos kapłana, - - Padniemy na twarz przed Tobą, - - Wierząc, żeś jest pod osłoną - - Chleba i wina. + Wstańcie, pasterze, Bóg się nam rodzi! + Czym prędzej się wybierajcie, + Do Betlejem pospieszajcie + Przywitać Pana. + + Poszli, znaleźli Dzieciątko w żłobie + Z wszystkimi znaki danymi sobie. + Jako Bogu cześć Mu dali, + A witając zawołali + Z wielkiej radości: + + Ach, witaj Zbawco z dawno żądany, + Wiele tysięcy lat wyglądany + Na Ciebie króle, prorocy + Czekali, a Tyś tej nocy + Nam się objawił. + + I my czekamy na Ciebie, Pana, + A skoro przyjdziesz na głos kapłana, + Padniemy na twarz przed Tobą, + Wierząc, żeś jest pod osłoną + Chleba i wina. </VerbatimFormatted> <Para start_line="65"> [end] diff --git a/t/corpus/thai_iso11.xml b/t/corpus/thai_iso11.xml index a9f4bb7..263ef8e 100644 --- a/t/corpus/thai_iso11.xml +++ b/t/corpus/thai_iso11.xml @@ -49,43 +49,25 @@ </Para> <VerbatimFormatted start_line="40" xml:space="preserve"> ๏ พระเมตตาแจ่มจับใจไผทสยาม - - พระทัยงาม...มองภาพถ่ายมิถ่ายถอน - - เกล้าฯ น้อมเกล้าฯ + พระทัยงาม...มองภาพถ่ายมิถ่ายถอน + เกล้าฯ น้อมเกล้าฯ พจน์เรียงเผดียงกลอน + สื่อสะท้อนพระการุณย์อุ่นดวงมาน๚ - สื่อสะท้อนพระการุณย์อุ่นดวงมาน๚ - - - - ๏ ทุกภาพมิ่งมงคลยลแล้วยิ้ม - - เอื้ออกอิ่มล้ำค่ามหาศาล - - อยากเป็นคุณทองแดงนักจักอยู่งาน - - เฝ้าคลอเคลียบทมาลย์พระภูมิพล๚ - - - - ๏ พระหัตถ์บุญทรงเบิกหล้าพลิกหล้าเขียว - - พระโอษฐ์เรียวตรัสห้ามสงครามฉล - - พระทัย ธ โอภาสผ่องถ่องสกล - - พระยุคลบาทย่างสืบสร้างไทย๚ - - - - ๏ น้อมเกล้าเทิดองค์ราชันศรันย์ศรี - - บารมีหมื่นคู่คงอสงไขย + ๏ ทุกภาพมิ่งมงคลยลแล้วยิ้ม + เอื้ออกอิ่มล้ำค่ามหาศาล + อยากเป็นคุณทองแดงนักจักอยู่งาน + เฝ้าคลอเคลียบทมาลย์พระภูมิพล๚ - กรรดิราชกฤษฎาก้องหล้าไกล + ๏ พระหัตถ์บุญทรงเบิกหล้าพลิกหล้าเขียว + พระโอษฐ์เรียวตรัสห้ามสงครามฉล + พระทัย ธ โอภาสผ่องถ่องสกล + พระยุคลบาทย่างสืบสร้างไทย๚ - ปลื้มประทับถ้วนทุกใจแห่งไท้เอย๚ะ๛ + ๏ น้อมเกล้าเทิดองค์ราชันศรันย์ศรี + บารมีหมื่นคู่คงอสงไขย + กรรดิราชกฤษฎาก้องหล้าไกล + ปลื้มประทับถ้วนทุกใจแห่งไท้เอย๚ะ๛ </VerbatimFormatted> <Para start_line="60"> [end] diff --git a/t/x_nixer.t b/t/x_nixer.t index f435187..92917df 100644 --- a/t/x_nixer.t +++ b/t/x_nixer.t @@ -44,9 +44,7 @@ ok( Pod::Simple::DumpAsXML->_out( "=pod\n\nZ<>F<C<Z<>fE<111>o> I<bar>> B<stuff X ' <Para>', ' <F>', ' <C>', - ' f', - ' o', - ' o', + ' foo', ' </C>', ' ', ' <I>', @@ -77,9 +75,7 @@ ok( Pod::Simple::DumpAsXML->_out( \&nixy, "=pod\n\nZ<>F<C<Z<>fE<111>o> I<bar>> B ' <Para>', ' <F>', ' <C>', - ' f', - ' o', - ' o', + ' foo', ' </C>', ' ', ' <I>', @@ -88,8 +84,7 @@ ok( Pod::Simple::DumpAsXML->_out( \&nixy, "=pod\n\nZ<>F<C<Z<>fE<111>o> I<bar>> B ' </F>', ' ', ' <B>', - ' stuff ', - ' baz', + ' stuff baz', ' </B>', ' </Para>', '</Document>', -- 1.7.5.4
0002-Introduce-handle_code-method.patch
(application/octet-stream, 3.7 KB)
From 9cafd6c5dd1aa753ba0dc698324b1fe6ef05274d Mon Sep 17 00:00:00 2001 From: Gisle Aas <[email protected]> Date: Sat, 21 Apr 2012 16:27:03 +0200 Subject: [PATCH 2/2] Introduce handle_code method --- lib/Pod/Simple/XHTML.pm | 22 ++++++++++++++++++---- t/xhtml01.t | 2 +- t/xhtml20.t | 41 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 t/xhtml20.t diff --git a/lib/Pod/Simple/XHTML.pm b/lib/Pod/Simple/XHTML.pm index efa9b11..0489274 100644 --- a/lib/Pod/Simple/XHTML.pm +++ b/lib/Pod/Simple/XHTML.pm @@ -305,6 +305,12 @@ something like: $self->SUPER::handle_text($text); } +=head2 handle_code + +This method handles the body of text that is marked up to be code. +You might want to override this to for instance plug in a syntax highlighter. +The base implementation just escapes the text and wraps it in C<<< <code>...</code> >>>. + =head2 accept_targets_as_html This method behaves like C<accept_targets_as_text>, but also marks the region @@ -326,14 +332,21 @@ sub accept_targets_as_html { } sub handle_text { + if ($_[0]{'in_code'}) { + return $_[0]->handle_code( $_[1] ); + } # escape special characters in HTML (<, >, &, etc) $_[0]{'scratch'} .= $_[0]->__in_literal_xhtml_region ? $_[1] : $_[0]->encode_entities( $_[1] ); } +sub handle_code { + $_[0]{'scratch'} .= '<code>' . $_[0]->encode_entities( $_[1] ) . '</code>'; +} + sub start_Para { $_[0]{'scratch'} = '<p>' } -sub start_Verbatim { $_[0]{'scratch'} = '<pre><code>' } +sub start_Verbatim { $_[0]{'scratch'} = '<pre>'; $_[0]{'in_code'} = 1; } sub start_head1 { $_[0]{'in_head'} = 1 } sub start_head2 { $_[0]{'in_head'} = 2 } @@ -396,7 +409,8 @@ sub end_over_text { sub end_Para { $_[0]{'scratch'} .= '</p>'; $_[0]->emit } sub end_Verbatim { - $_[0]{'scratch'} .= '</code></pre>'; + $_[0]{'scratch'} .= '</pre>'; + delete $_[0]{'in_code'}; $_[0]->emit; } @@ -567,8 +581,8 @@ sub end_Document { sub start_B { $_[0]{'scratch'} .= '<b>' } sub end_B { $_[0]{'scratch'} .= '</b>' } -sub start_C { $_[0]{'scratch'} .= '<code>' } -sub end_C { $_[0]{'scratch'} .= '</code>' } +sub start_C { $_[0]{'in_code'} = 1; } +sub end_C { delete $_[0]{'in_code'}; } sub start_F { $_[0]{'scratch'} .= '<i>' } sub end_F { $_[0]{'scratch'} .= '</i>' } diff --git a/t/xhtml01.t b/t/xhtml01.t index 27860d8..07a746b 100644 --- a/t/xhtml01.t +++ b/t/xhtml01.t @@ -667,7 +667,7 @@ SKIP: for my $use_html_entities (0, 1) { EOPOD is($results, <<"EOHTML", "Verbatim text with markup and embedded formatting"); <pre><code> # this header is very important & dont you forget it - <b>my \$file = <FILE> || Blank!;</b> + </code><b><code>my \$file = <FILE> || Blank!;</code></b><code> my \$text = "File is: " . <FILE>;</code></pre> EOHTML diff --git a/t/xhtml20.t b/t/xhtml20.t new file mode 100644 index 0000000..06a05ae --- /dev/null +++ b/t/xhtml20.t @@ -0,0 +1,41 @@ +#!/usr/bin/perl -w + +# t/xhtml20.t - test subclassing of Pod::Simple::XHTML + +use strict; +use warnings; +use Test::More tests => 2; + +BEGIN { + package MyXHTML; + use base 'Pod::Simple::XHTML'; + + sub handle_code { + my($self, $code) = @_; + $code = "[$code]"; + $self->SUPER::handle_code($code); + } +} + + + +my ($parser, $results); + +initialize(); +$parser->parse_string_document(<<'EOT'); +=head1 Foo + +This is C<$code> and so is: + + my $foo = 1; +EOT + +like $results, qr/<code>\[\$code]<\/code>/; +like $results , qr/<pre><code>\[ my \$foo = 1;/; + + +sub initialize { + $parser = MyXHTML->new; + $parser->output_string( \$results ); + $results = ''; +} -- 1.7.5.4