update.
[chise/ruby.git] / ext / sample.rb
1 #!/usr/bin/env ruby
2 # Copyright (C) 2002-2004 Kouichirou Eto, All rights reserved.
3
4 require "libchise_c"
5 $LOAD_PATH.unshift("..")
6 require "chise/qp"
7
8 def die(msg)
9   puts msg
10   @ds.close unless @ds.nil?
11   exit 1
12 end
13
14 def main
15   db_dir = CHISE::DB_DIR
16   @ds = CHISE::DataSource.new(CHISE::DataSource::Berkeley_DB, db_dir, 0, 0755)
17   die "Can't open data source" if @ds.nil?
18
19   # get a character by Daikanwa number 364.
20   if true
21     char_id = @ds.decode_char("=daikanwa", 364)
22   else
23     ccs = @ds.get_ccs("=daikanwa")
24     die "Can't open CCS =daikanwa" if ccs.nil?
25     char_id = ccs.decode(364)
26   end
27   puts char_id
28
29   ft = @ds.get_feature("ideographic-structure")
30   value = ft.get_value(char_id)
31   printf("#x%X => %s\n", char_id, value.to_s)
32
33   @ds.each_feature_name {|name|
34     #puts "rb_feature : "+name
35   }
36
37   ft = @ds.get_feature("numeric-value")
38   ft.each_char {|cid, valdatum|
39     printf("#x%08X ", cid)
40
41     ucs = @ds.get_feature("=ucs").get_value(cid)
42     if ucs
43       printf("[U-%08X]", ucs.to_s.to_i)
44     else
45       ucs = @ds.get_feature("=>ucs").get_value(cid)
46       if ucs
47         printf("(U-%08X)", ucs.to_s.to_i)
48       else
49         printf("            ")
50       end
51     end
52
53     printf(" %s", @ds.get_feature("name").get_value(cid))
54     printf(" %s\n", valdatum.to_s)
55   }
56
57   @ds.close
58 end
59 main