diff options
author | marcus <marcus@FreeBSD.org> | 2004-01-20 12:08:35 +0800 |
---|---|---|
committer | marcus <marcus@FreeBSD.org> | 2004-01-20 12:08:35 +0800 |
commit | 016a52a4b7874c3ea6dc53a4097f57923be09f92 (patch) | |
tree | 21a3b767fc465aba3df76f729ad81bb5fc11c230 /textproc | |
parent | f0dc8b8ada2d3aa9336a2346483fd2094ef768a2 (diff) | |
download | freebsd-ports-gnome-016a52a4b7874c3ea6dc53a4097f57923be09f92.tar.gz freebsd-ports-gnome-016a52a4b7874c3ea6dc53a4097f57923be09f92.tar.zst freebsd-ports-gnome-016a52a4b7874c3ea6dc53a4097f57923be09f92.zip |
Add a copy of OrigTree.pm to the dist so old misbehaving intltool-0.28 ports
still work.
Reported by: adamw
Diffstat (limited to 'textproc')
-rw-r--r-- | textproc/intltool/Makefile | 6 | ||||
-rw-r--r-- | textproc/intltool/files/OrigTree.pm | 91 | ||||
-rw-r--r-- | textproc/intltool/pkg-plist | 4 |
3 files changed, 101 insertions, 0 deletions
diff --git a/textproc/intltool/Makefile b/textproc/intltool/Makefile index 2a75a74ac873..fe3366b0310b 100644 --- a/textproc/intltool/Makefile +++ b/textproc/intltool/Makefile @@ -7,6 +7,7 @@ PORTNAME= intltool PORTVERSION= 0.29 +PORTREVISION= 1 CATEGORIES= textproc gnome MASTER_SITES= ${MASTER_SITE_GNOME} MASTER_SITE_SUBDIR= sources/${PORTNAME}/0.29 @@ -31,4 +32,9 @@ MAN8= intltool-extract.8 intltool-merge.8 intltool-prepare.8 \ CONFLICTS= xml-i18n-tools-* +post-install: + ${MKDIR} ${PREFIX}/share/intltool/XML/Parser/Style + ${INSTALL_DATA} ${FILESDIR}/OrigTree.pm \ + ${PREFIX}/share/intltool/XML/Parser/Style + .include <bsd.port.mk> diff --git a/textproc/intltool/files/OrigTree.pm b/textproc/intltool/files/OrigTree.pm new file mode 100644 index 000000000000..020400cfa35c --- /dev/null +++ b/textproc/intltool/files/OrigTree.pm @@ -0,0 +1,91 @@ +# $Id: OrigTree.pm,v 1.1 2003/11/26 15:18:28 kenneth Exp $ + +package XML::Parser::Style::OrigTree; +$XML::Parser::Built_In_Styles{OrigTree} = 1; + +sub Init { + my $expat = shift; + $expat->{Lists} = []; + $expat->{Curlist} = $expat->{OrigTree} = []; +} + +sub Start { + my $expat = shift; + my $tag = shift; + my $newlist = [ { @_ } ]; + push @{ $expat->{Lists} }, $expat->{Curlist}; + push @{ $expat->{Curlist} }, $tag => $newlist; + $expat->{Curlist} = $newlist; +} + +sub End { + my $expat = shift; + my $tag = shift; + $expat->{Curlist} = pop @{ $expat->{Lists} }; +} + +sub Char { + my $expat = shift; + my $text = shift; + my $clist = $expat->{Curlist}; + my $pos = $#$clist; + + if ($pos > 0 and $clist->[$pos - 1] eq '0') { + $clist->[$pos] .= $expat->original_string(); + } else { + push @$clist, 0 => $expat->original_string(); + } +} + +sub Final { + my $expat = shift; + delete $expat->{Curlist}; + delete $expat->{Lists}; + $expat->{OrigTree}; +} + +1; +__END__ + +=head1 NAME + +XML::Parser::Style::OrigTree + +=head1 SYNOPSIS + + use XML::Parser; + my $p = XML::Parser->new(Style => 'OrigTree'); + my $tree = $p->parsefile('foo.xml'); + +=head1 DESCRIPTION + +This module is a variant of the XML::Parser's Tree style parser. It +uses original_string, so that Entities are not converted. + +When parsing a document, C<parse()> will return a parse tree for the +document. Each node in the tree +takes the form of a tag, content pair. Text nodes are represented with +a pseudo-tag of "0" and the string that is their content. For elements, +the content is an array reference. The first item in the array is a +(possibly empty) hash reference containing attributes. The remainder of +the array is a sequence of tag-content pairs representing the content +of the element. + +So for example the result of parsing: + + <foo><head id="a">Hello <em>there</em></head><bar>Howdy<ref/></bar>do</foo> + +would be: + Tag Content + ================================================================== + [foo, [{}, head, [{id => "a"}, 0, "Hello ", em, [{}, 0, "there"]], + bar, [ {}, 0, "Howdy", ref, [{}]], + 0, "do" + ] + ] + +The root document "foo", has 3 children: a "head" element, a "bar" +element and the text "do". After the empty attribute hash, these are +represented in it's contents by 3 tag-content pairs. + +=cut diff --git a/textproc/intltool/pkg-plist b/textproc/intltool/pkg-plist index 72c8f666f0e4..1f5de443974e 100644 --- a/textproc/intltool/pkg-plist +++ b/textproc/intltool/pkg-plist @@ -6,6 +6,7 @@ bin/intltoolize bin/xml-i18n-toolize share/aclocal/intltool.m4 share/aclocal/xml-i18n-tools.m4 +share/intltool/XML/Parser/Style/OrigTree.pm share/intltool/intltool-extract.in share/intltool/intltool-merge.in share/intltool/intltool-po-Makefile.in.in-patch-1 @@ -20,4 +21,7 @@ share/intltool/intltool-update.in share/intltool/xml-i18n-po-Makefile.in.in-patch-1 share/intltool/xml-i18n-po-Makefile.in.in-patch-2 share/intltool/xml-i18n-po-Makefile.in.in-patch-5 +@dirrm share/intltool/XML/Parser/Style +@dirrm share/intltool/XML/Parser +@dirrm share/intltool/XML @dirrm share/intltool |