CoderFunda
  • Home
  • About us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • About us
  • Home
  • Php
  • HTML
  • CSS
  • JavaScript
    • JavaScript
    • Jquery
    • JqueryUI
    • Stock
  • SQL
  • Vue.Js
  • Python
  • Wordpress
  • C++
    • C++
    • C
  • Laravel
    • Laravel
      • Overview
      • Namespaces
      • Middleware
      • Routing
      • Configuration
      • Application Structure
      • Installation
    • Overview
  • DBMS
    • DBMS
      • PL/SQL
      • SQLite
      • MongoDB
      • Cassandra
      • MySQL
      • Oracle
      • CouchDB
      • Neo4j
      • DB2
      • Quiz
    • Overview
  • Entertainment
    • TV Series Update
    • Movie Review
    • Movie Review
  • More
    • Vue. Js
    • Php Question
    • Php Interview Question
    • Laravel Interview Question
    • SQL Interview Question
    • IAS Interview Question
    • PCS Interview Question
    • Technology
    • Other

29 April, 2024

HTML::Element endtag generates end tags for and

 Programing Coderfunda     April 29, 2024     No comments   

I'm using the following Perl code to traverse and format some HTML:
#!/usr/bin/env perl
use v5.38;
use HTML::TreeBuilder;
my $indent = 3;
my $content = do {local $/; };
my $tree = HTML::TreeBuilder->new();
$tree->parse_content($content);
visit($tree);

sub visit($x) {
my $depth = $x->depth;
my $in = ' ' x ($indent * $depth);
foreach my $e ($x->content_list) {
# element
if (ref ($e)) {
say $in . $e->starttag;
visit($e);
say $in . $e->endtag;
}
# text
else {
say $in . $e;
}
}
}
__DATA__







5/5/61 Bob & Jerry - Arroyo Lounge, Stanford University, Palo Alto, CA




(Robert Hunter and Jerry Garcia; source: McNally, Jackson research)





5/26/61 Bob & Jerry - Barbara Meier's 16th birthday party, Menlo Park, CA



Follow The Drinking Gourd, John Henry, Santy Anno*, Poor Paddy Works On The Railway


(*included on
Before The Dead
;
birthday doodle for Barbara by Jerry
;
the master tape

)







My problem is that each
is output as:






Both
and cause new lines to be rendered. I was surprised that endtag generated anything at all in the case of tag br (and img).


I avoided using HTML::Tree::traverse because the doc discourages its use:



[I]f you want to recursively visit every node in the tree, it's almost
always simpler to write a subroutine does just that, than it is to
bundle up the pre- and/or post-order code in callbacks for the
traverse method.



There are no examples given, so the above is what I cooked up.


Am I using starttag and endtag correctly? Should I detect when I'm displaying a tag that doesn't take an end tag and avoid calling endtag? What's the right/best/simplest way to traverse an HTML tree and prettify it?


Update:


As suggested by Stephen Ullrich, I tried to use as_HTML() for formatting:
#!/usr/bin/env perl
use v5.38;
use HTML::TreeBuilder;
say "\%HTML::Element::optionalEndTag= ",
join ', ', keys %HTML::Element::optionalEndTag;
my $content = do {local $/; };
my $tree = HTML::TreeBuilder->new();
$tree->parse_content($content);
# don't encode any entities; indent with three spaces;
say $tree->as_HTML('', ' ');
__DATA__







5/5/61 Bob & Jerry - Arroyo Lounge, Stanford University, Palo Alto, CA




(Robert Hunter and Jerry Garcia; source: McNally, Jackson research)





5/26/61 Bob & Jerry - Barbara Meier's 16th birthday party, Menlo Park, CA



Follow The Drinking Gourd, John Henry, Santy Anno*, Poor Paddy Works On The Railway


(*included on
Before The Dead
;
birthday doodle for Barbara by Jerry
;
the master tape

)







Output:
%HTML::Element::optionalEndTag= dt, dd, li, p





5/5/61 Bob & Jerry - Arroyo Lounge, Stanford University, Palo Alto, CA
(Robert Hunter and Jerry Garcia; source: McNally, Jackson research)


5/26/61 Bob & Jerry - Barbara Meier's 16th birthday party, Menlo Park, CA
Follow The Drinking Gourd, John Henry, Santy Anno*, Poor Paddy Works On The Railway
(*included on Before The Dead ; birthday doodle for Barbara by Jerry ; the master tape )








Unfortunately, this isn't "pretty" enough. I don't understand why the indenting leaves off after the first couple of levels. However, I do note that it doesn't generate or , despite the fact that neither of these tags is mentioned in %HTML::Element::optionalEndTag!
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook

Related Posts:

  • Insert Data In Database by laravel FrameWork<?php     <!-- Insert Data In Database by laravel FrameWork -->  &… Read More
  • Image to Word, Image to Excel, Image to Text - OCR OnlineYou can change image , jpg, pdf file  convert in excel sheet visit this UrlClick Here   Brand NameNR-HEAT-ANR-HEAT-KNR-HEAT-CNR-M-CRET… Read More
  • JPG to EXCEL Convert online & free - Online PDF Converter JPG to EXCEL Convert online & free - Online PDF ConverterYou can choose not to convert the JPG file to EXCEL with the expanded online versio… Read More
  • How to insert data in database - Laravel         How to insert data in database - Laravel   &nb… Read More
  • Insert data in laravel <?php Route:Route::get('/cuisines','backEnd\contentManagement\CuisinesController@index');Route::post('/data/cuisines','backEnd\contentMa… Read More
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Spring boot app (error: method getFirst()) failed to run at local machine, but can run on server
    The Spring boot app can run on the online server. Now, we want to replicate the same app at the local machine but the Spring boot jar file f...
  • Log activity in a Laravel app with Spatie/Laravel-Activitylog
      Requirements This package needs PHP 8.1+ and Laravel 9.0 or higher. The latest version of this package needs PHP 8.2+ and Laravel 8 or hig...
  • Failed to install 'cordova-plugin-firebase': CordovaError: Uh oh
    I had follow these steps to install an configure firebase to my cordova project for cloud messaging. https://medium.com/@felipepucinelli/how...
  • Step-by-step guide to linking gnuplot to Octave within Virtual Studio Code (VSC)
    I am aware of a number of previous questions (here, here and here for example) pointing out to the need to modify a file named .octaverc. ...
  • Laravel auth login with phone or email
          <?php     Laravel auth login with phone or email     <? php     namespace App \ Http \ Controllers \ Auth ;         use ...

Categories

  • Ajax (26)
  • Bootstrap (30)
  • DBMS (42)
  • HTML (12)
  • HTML5 (45)
  • JavaScript (10)
  • Jquery (34)
  • Jquery UI (2)
  • JqueryUI (32)
  • Laravel (1017)
  • Laravel Tutorials (23)
  • Laravel-Question (6)
  • Magento (9)
  • Magento 2 (95)
  • MariaDB (1)
  • MySql Tutorial (2)
  • PHP-Interview-Questions (3)
  • Php Question (13)
  • Python (36)
  • RDBMS (13)
  • SQL Tutorial (79)
  • Vue.js Tutorial (68)
  • Wordpress (150)
  • Wordpress Theme (3)
  • codeigniter (108)
  • oops (4)
  • php (853)

Social Media Links

  • Follow on Twitter
  • Like on Facebook
  • Subscribe on Youtube
  • Follow on Instagram

Pages

  • Home
  • Contact Us
  • Privacy Policy
  • About us

Blog Archive

  • September (100)
  • August (50)
  • July (56)
  • June (46)
  • May (59)
  • April (50)
  • March (60)
  • February (42)
  • January (53)
  • December (58)
  • November (61)
  • October (39)
  • September (36)
  • August (36)
  • July (34)
  • June (34)
  • May (36)
  • April (29)
  • March (82)
  • February (1)
  • January (8)
  • December (14)
  • November (41)
  • October (13)
  • September (5)
  • August (48)
  • July (9)
  • June (6)
  • May (119)
  • April (259)
  • March (122)
  • February (368)
  • January (33)
  • October (2)
  • July (11)
  • June (29)
  • May (25)
  • April (168)
  • March (93)
  • February (60)
  • January (28)
  • December (195)
  • November (24)
  • October (40)
  • September (55)
  • August (6)
  • July (48)
  • May (2)
  • January (2)
  • July (6)
  • June (6)
  • February (17)
  • January (69)
  • December (122)
  • November (56)
  • October (92)
  • September (76)
  • August (6)

  • Failed to install 'cordova-plugin-firebase': CordovaError: Uh oh - 9/21/2024
  • pyspark XPath Query Returns Lists Omitting Missing Values Instead of Including None - 9/20/2024
  • SQL REPL from within Python/Sqlalchemy/Psychopg2 - 9/20/2024
  • MySql Explain with Tobias Petry - 9/20/2024
  • How to combine information from different devices into one common abstract virtual disk? [closed] - 9/20/2024

Laravel News

  • Track Metrics Effortlessly with Laravel's Context Increment and Decrement Methods - 5/4/2025
  • NativePHP Hit $100K — And We're Just Getting Started 🚀 - 5/8/2025
  • Name Queued Closures in Laravel 12.13 - 5/9/2025
  • Simplify HasManyThrough Relationships with Laravel's CanBeOneOfMany Support - 5/4/2025
  • Using Database Comments to Track Columns With Sensitive Data - 5/7/2025

Copyright © 2025 CoderFunda | Powered by Blogger
Design by Coderfunda | Blogger Theme by Coderfunda | Distributed By Coderfunda