diff options
Diffstat (limited to 'perl-install/share/po/help_xml2pm.pl')
-rwxr-xr-x | perl-install/share/po/help_xml2pm.pl | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/perl-install/share/po/help_xml2pm.pl b/perl-install/share/po/help_xml2pm.pl deleted file mode 100755 index 9996c13d6..000000000 --- a/perl-install/share/po/help_xml2pm.pl +++ /dev/null @@ -1,127 +0,0 @@ -#!/usr/bin/perl - -use XML::Parser; -use MDK::Common; - -@ARGV == 1 or die "usage: help_xml2pm <drakx-help.xml>\n"; - -my $p = new XML::Parser(Style => 'Tree'); -my $tree = $p->parsefile($ARGV[0]); -my $help = {}; - -# rewrite2 fills in $help -rewrite2(rewrite1(@$tree)); - -print -q{package help; -use common; -%steps = ( -empty => '', -}; -print qq( -$_ => -__("$help->{$_}"), -) foreach sort keys %$help; -print ");\n"; - - -# i don't like the default tree format given by XML::Parser, -# rewrite it in my own tree format -sub rewrite1 { - my ($tag, $tree) = @_; - my ($attr, @nodes) = @$tree; - my @l; - while (@nodes) { - my ($tag, $tree) = splice(@nodes, 0, 2); - if ($tag eq '0') { - foreach ($tree) { - s/\s+/ /gs; - s/"/\\"/g; - } - } - push @l, $tag eq '0' ? $tree : rewrite1($tag, $tree); - } - { attr => $attr, tag => $tag, children => \@l }; -} - -# return the list of nodes named $tag -sub find { - my ($tag, $tree) = @_; - if (!ref($tree)) { - (); - } elsif ($tree->{tag} eq $tag) { - $tree; - } else { - map { find($tag, $_) } @{$tree->{children}}; - } -} - -sub rewrite2 { - my ($tree) = @_; - ref($tree) or return $tree; - - my $text = do { - my @l = map { rewrite2($_) } @{$tree->{children}}; - my $text; - foreach (grep { !/^\s*$/ } @l) { - s/^ // if $text =~ /\s$/; - $text =~ s/ $// if /^\s/; - $text =~ s/\n+$// if /^\n/; - $text .= $_; - } - $text; - }; - - if (0) { - } elsif (member($tree->{tag}, 'para', 'itemizedlist', 'orderedlist')) { - $text =~ s/^\s(?!\s)//; - $text =~ s/^( ?\n)+//; - $text =~ s/\s+$//; - qq(\n$text\n); - } elsif ($tree->{tag} eq 'quote') { - qq(``$text''); - } elsif ($tree->{tag} eq 'command') { - qq(\\"$text\\"); - } elsif ($tree->{tag} eq 'userinput') { - qq(>>$text<<); - } elsif ($tree->{tag} eq 'footnote') { - '(*)' - } elsif ($tree->{tag} eq 'warning') { - $text =~ s/^(\s+)/$1!! /; - $text =~ s/(\s+)$/ !!$1/; - $text; - } elsif ($tree->{tag} eq 'listitem') { - my $cnt; - $text =~ s/^\s+//; - $text =~ s/^/' ' . ($cnt++ ? ' ' : '* ')/emg; - "\n$text\n"; - - } elsif (member($tree->{tag}, 'guibutton', 'guimenu', 'guilabel', - 'emphasis', 'acronym', 'keycap', 'ulink', 'tip', 'note', - 'primary', 'indexterm', - )) { - # ignored tags - $text; - } elsif (member($tree->{tag}, 'title', 'article')) { - # dropped tags - ''; - } elsif ($tree->{tag} eq 'sect1') { - $text =~ s/^\s+//; - - my @footnotes = map { - my $s = rewrite2({ %$_, tag => 'para' }); - $s =~ s/^\s+//; - "(*) $s"; - } find('footnote', $tree); - $help->{$tree->{attr}{id}} = aerate($text . join('', @footnotes)); - ''; - } else { - die "unknown tag $tree->{tag}\n"; - } -} - -sub aerate { - my ($s) = @_; - my $s2 = join("\n\n", map { join("\n", warp_text($_)) } split "\n", $s); - $s2; -} |