diff options
Diffstat (limited to 'scripts/bm2menu.pl')
-rw-r--r-- | scripts/bm2menu.pl | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/scripts/bm2menu.pl b/scripts/bm2menu.pl new file mode 100644 index 0000000..1390bae --- /dev/null +++ b/scripts/bm2menu.pl @@ -0,0 +1,54 @@ +#!/usr/bin/perl + +$PRE_MENU = ""; +$POST_MENU = <<EOF; + nop "───────────" + func "ブックマークに追加 (a)" ADD_BOOKMARK "aA" +EOF + +@section = (); +%title = (); +%url = (); +while(<>) { + if (/<h2>(.*)<\/h2>/) { + $s = &unquote($1); + push(@section, $s); + } elsif (/<li><a href=\"(.*)\">(.*)<\/a>/) { + $u = &unquote($1); + $t = &unquote($2); + $url{$s} .= "$u\n"; + $title{$s} .= "$t\n"; + } +} + +print "menu Bookmarks\n"; +print $PRE_MENU; +foreach(@section) { + print " popup\t\"$_\"\t\"$_\"\n"; +} +print $POST_MENU; +print "end\n"; + +foreach(@section) { + print "\n"; + print "menu \"$_\"\n"; + @ts = split("\n", $title{$_}); + @us = split("\n", $url{$_}); + while(@ts) { + $t = shift @ts; + $u = shift @us; + print " func\t\"$t\"\tGOTO\t\"\"\t\"$u\"\n"; + } + print "end\n"; +} + +sub unquote { + local($_) = @_; + + s/\</\</g; + s/\>/\>/g; + s/\ / /g; + s/\&/\&/g; + + return $_; +} |