From: Matt S Trout Date: Wed, 21 Oct 2009 16:34:43 +0000 (-0400) Subject: basic HTML tags X-Git-Tag: v0.003~82 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=cb5717efe306975114d1da44b1024ddb8b4e53cb;hp=afe60e532ca8e2bd54a49ed048238710eff71d72;p=catagits%2FWeb-Simple.git basic HTML tags --- diff --git a/lib/HTML/Tags.pm b/lib/HTML/Tags.pm new file mode 100644 index 0000000..6957831 --- /dev/null +++ b/lib/HTML/Tags.pm @@ -0,0 +1,30 @@ +package HTML::Tags; + +use strict; +use warnings FATAL => 'all'; +use XML::Tags (); + +my @HTML_TAGS = qw( + h1 h2 h3 h4 h5 h6 p br hr ol ul li dl dt dd menu code var strong em tt + u i b blockquote pre img a address cite samp dfn html head base body + link nextid title meta kbd start_html end_html input select option + comment charset escapehtml div table caption th td tr tr sup sub + strike applet param nobr embed basefont style span layer ilayer font + frameset frame script small big area map abbr acronym bdo col colgroup + del fieldset iframe ins label legend noframes noscript object optgroup + q thead tbody tfoot blink fontsize center textfield textarea filefield + password_field hidden checkbox checkbox_group submit reset defaults + radio_group popup_menu button autoescape scrolling_list image_button + start_form end_form startform endform start_multipart_form + end_multipart_form isindex tmpfilename uploadinfo url_encoded + multipart form canvas +); + +sub import { + my ($class, @rest) = @_; + my $opts = ref($rest[0]) eq 'HASH' ? shift(@rest) : {}; + ($opts->{into_level}||=1)++; + XML::Tags->import($opts, @HTML_TAGS, @rest); +} + +1; diff --git a/lib/XML/Tags.pm b/lib/XML/Tags.pm index f469070..480fefc 100644 --- a/lib/XML/Tags.pm +++ b/lib/XML/Tags.pm @@ -3,6 +3,10 @@ package XML::Tags; use strict; use warnings FATAL => 'all'; +use File::Glob (); + + + my $IN_SCOPE = 0; sub import { @@ -12,6 +16,7 @@ sub import { my $opts = shift(@args) if ref($args[0]) eq 'HASH'; my $target = $class->_find_target(0, $opts); my @tags = $class->_find_tags(@args); + $class->_setup_glob_override; my $unex = $class->_export_tags_into($target => @tags); $class->_install_unexporter($unex); $IN_SCOPE = 1; @@ -36,7 +41,7 @@ sub _find_target { *CORE::GLOBAL::glob = sub { for ($_[0]) { # unless it smells like or - return CORE::glob($_[0]) unless (/^\/\w+$/ || /^\w+\s+\w+="/); + return File::Glob::glob($_[0]) unless (/^\/\w+$/ || /^\w+\s+\w+="/); } return '<'.$_[0].'>'; }; @@ -49,11 +54,6 @@ sub _export_tags_into { no strict 'refs'; tie *{"${into}::${tag}"}, 'XML::Tags::TIEHANDLE', "<${tag}>"; } - my $orig = \&CORE::GLOBAL::glob || sub { CORE::glob($_[0]) }; - { - no warnings 'redefine'; - *CORE::GLOBAL::glob = sub { '<'.$_[0].'>' }; - } return sub { foreach my $tag (@tags) { no strict 'refs'; diff --git a/t/tags.t b/t/tags.t index b7857ca..4f9807b 100644 --- a/t/tags.t +++ b/t/tags.t @@ -19,6 +19,11 @@ use Test::More qw(no_plan); use XML::Tags qw(bar); ; } + + sub quux { + use HTML::Tags; + , , "YAY", , ; + } } is( @@ -34,3 +39,9 @@ is( '', 'close tag ok' ); + +is( + join('', Foo::quux), + 'YAY', + 'HTML tags ok' +);