aboutsummaryrefslogtreecommitdiffstats
path: root/textproc
diff options
context:
space:
mode:
authormarcus <marcus@FreeBSD.org>2004-01-20 12:08:35 +0800
committermarcus <marcus@FreeBSD.org>2004-01-20 12:08:35 +0800
commit016a52a4b7874c3ea6dc53a4097f57923be09f92 (patch)
tree21a3b767fc465aba3df76f729ad81bb5fc11c230 /textproc
parentf0dc8b8ada2d3aa9336a2346483fd2094ef768a2 (diff)
downloadfreebsd-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/Makefile6
-rw-r--r--textproc/intltool/files/OrigTree.pm91
-rw-r--r--textproc/intltool/pkg-plist4
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