+++ /dev/null
-#!/usr/bin/perl -w
-
-use Getopt::Long;
-use strict;
-use vars qw($atr $value $char
- $opt_map $opt_rev_map $opt_mapfrom $opt_mapto
- $opt_atr $opt_allatr $opt_showatr
- $opt_query
- $opt_help
- );
-use Chise_utils ':all';
-
-my $usage=<<EOF;
-Usage: perl $0 [-m <map> | --map <map> |
- -r <reverse map> |
- --mapfrom <map> |
- --mapto <map> |
- -q <expression> |
- --show-attribute |
- -h | --help |
- -a=<atribuite> <char> |
- -aa <char>]
- -q <expression>
- ex. of <expression>
- total-strokes==8 means
- the attribute of total-strokes exactly matches to 8.
- ids-parts=~矢 means
- the attribute of ids-parts contains the string 矢.
- total-strokes==8,ids-parts=~矢 means both at the same time.
- -a get <attribute> of <char>
- -aa get all attributes of <char>
-EOF
-
-&GetOptions("mapto=s"=>\$opt_mapto,
- "mapfrom=s"=>\$opt_mapfrom,
- "m=s"=>\$opt_map,
- "r=s"=>\$opt_rev_map,
- "a=s"=>\$opt_atr,
- "aa"=>\$opt_allatr,
- "show-attribute"=>\$opt_showatr,
- "q"=>\$opt_query,
- "help",\$opt_help,
- "h",\$opt_help);
-
-if($opt_help
- or !((($opt_map or $opt_rev_map or $opt_mapfrom or $opt_mapto) and @ARGV==0)
- or($opt_showatr and @ARGV==0)
- or @ARGV==1
- )
- ){
- print $usage;
- exit 1;
-}else{
- $char=shift or $char="";
-}
-
-if($opt_mapfrom){
- $opt_map="<=".$opt_mapfrom;
-}elsif($opt_mapto){
- $opt_map="=>".$opt_mapto;
-}
-
-if($opt_map){
- if(&get_db($opt_map)){
- foreach $char (sort keys %{$chardb{$opt_map}}){
- if($chardb{$opt_map}->{$char}){
- print $char,"\t",$chardb{$opt_map}->{$char},"\n";
- }
- }
- }else{
- print STDERR "No map for $opt_map.\n";
- }
-}elsif($opt_rev_map){
- if(&get_reverse_db($opt_rev_map)){
- foreach $char (sort keys %{$reverse_chardb{$opt_rev_map}}){
- if($reverse_chardb{$opt_rev_map}->{$char}){
- print $char,"\t",$reverse_chardb{$opt_rev_map}->{$char},"\n";
- }
- }
- }else{
- print STDERR "No map for $opt_rev_map.\n";
- }
-}elsif($opt_allatr){
- $char=&de_er($char) if($char=~/\d/);
- print $char,"\n";
- foreach $atr (sort keys %db){
- if($value=&get_char_attribute($char,$atr)){
- print " ",$atr,":",$value,"\n";
- }
- }
-}elsif($opt_atr){
- $char=&de_er($char) if($char=~/\d/);
- print $char,"\n";
- print " ",$opt_atr,":",&get_char_attribute($char,$opt_atr),"\n";
-}elsif($opt_showatr){
-# print "In DB\n";
- foreach $atr (sort keys %db){
- print " ",$atr,"\n";
- }
-# print "In reverse DB\n";
-# foreach $atr (sort keys %reverse_db){
-# print " ",$atr,"\n";
-# }
-}elsif($opt_query){
- my $query=$char;
- print join "\n",&get_chars_for($query),"\n";
-}
-
-exit 0;