.gnumeric: For clipboards, send also result values.
[gnumeric.git] / doc / add_dbhh.pl
blob994e9dfc342be79a1daa5f6bfaba88bf8681fced
1 #!/usr/bin/perl
2 use strict;
3 use warnings;
5 use Data::Dumper;
6 use HTML::Parser ();
7 use HTML::Entities ();
9 use Getopt::Long;
11 my $indent = 2;
12 my $out_dir = 'output';
13 my $map_file = 'hhmap';
15 binmode(STDOUT, ":utf8");
17 GetOptions(
18 'indent=s' => \$indent,
19 'out-dir=s' => \$out_dir,
20 'map-file=s' => \$map_file,
23 my @list;
25 sub start {
26 my ($tagname, $attr, $offset_end, $column) = @_;
28 if ($tagname =~ /\Asect[0-9]\Z/i) {
29 my %attr;
31 while (my ($k, $v) = each %$attr) {
32 $attr{lc($k)} = $v;
35 push @list, [$offset_end, $column, $attr{id}];
39 my $id = 10;
41 mkdir $out_dir;
42 open MAP, '>:utf8', "$map_file";
44 foreach my $file (<*.xml>) {
45 open FH, "<:utf8", $file;
46 my $xml = do { local $/; <FH>; };
47 close FH;
49 @list = ();
51 my $p = HTML::Parser->new(
52 api_version => 3,
53 start_h => [\&start, "tagname, attr, offset_end, column"],
54 marked_sections => 1,
57 $p->parse($xml);
59 my $last = 0;
61 open FH, '>:utf8', "$out_dir/$file";
63 foreach my $sect (@list) {
64 my ($offset, $column, $name) = @$sect;
65 print FH substr($xml, $last, ($offset - $last));
66 print FH "\n" . (' ' x ($column + $indent)) . "<?dbhh topicname=\"$name\" topicid=\"$id\"?>\n";
67 print MAP "$id\t$name\n";
68 $last = $offset;
69 ++$id;
72 print FH substr($xml, $last);
74 close FH;
76 close MAP;
78 # vi: set autoindent shiftwidth=4 tabstop=8 softtabstop=4 expandtab: