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.so"
5 module CHISE
6   DataSource = DataSource_C
7   Feature = Feature_C
8   CCS = CCS_C
9 end
10
11 $LOAD_PATH.unshift("..")
12 require "chise/qp"
13
14 def die(msg)
15   puts msg
16   @ds.close unless @ds.nil?
17   exit 1
18 end
19
20 def main
21   db_dir = CHISE::DataSource::DB_DIR
22   @ds = CHISE::DataSource.new(CHISE::DataSource::Berkeley_DB, db_dir, 0, 0755)
23   die "Can't open data source" if @ds.nil?
24
25   # get a character by Daikanwa number 364.
26   if true
27     char_id = @ds.decode_char("=daikanwa", 364)
28   else
29     ccs = @ds.get_ccs("=daikanwa")
30     die "Can't open CCS =daikanwa" if ccs.nil?
31     char_id = ccs.decode(364)
32   end
33   puts char_id
34
35   ft = @ds.get_feature("ideographic-structure")
36   value = ft.get_value(char_id)
37   printf("#x%X => %s\n", char_id, value)
38
39   @ds.each_feature_name {|name|
40     puts "feature : "+name
41   }
42
43   ft = @ds.get_feature("numeric-value")
44   ft.each_char {|cid, valdatum|
45     printf("#x%08X ", cid)
46
47     ucs = @ds.get_feature("=ucs").get_value(cid)
48     if ucs
49       printf("[U-%08X]", ucs.to_i)
50     else
51       ucs = @ds.get_feature("=>ucs").get_value(cid)
52       if ucs
53         printf("(U-%08X)", ucs.to_i)
54       else
55         printf("            ")
56       end
57     end
58
59     printf(" %s", @ds.get_feature("name").get_value(cid))
60     printf(" %s\n", valdatum)
61   }
62
63   @ds.close
64 end
65 main