Changeset 31184 for lang/ruby

Show
Ignore:
Timestamp:
03/14/09 17:12:51 (4 years ago)
Author:
winebarrel
Message:

support wakati gaki

Location:
lang/ruby/aqtk-ruby/trunk/aqtk
Files:
2 removed
2 modified

Legend:

Unmodified
Added
Removed
  • lang/ruby/aqtk-ruby/trunk/aqtk/ext/kakasi.c

    r31181 r31184  
    172172} 
    173173 
     174static VALUE rb_aqtk_kakasi_wakati(VALUE self, VALUE v_str) { 
     175  VALUE v_retval; 
     176  char *kakasi_argv[] = { "kakasi", "-w" }; 
     177  char *retval; 
     178  VALUE eval_argv[] = { rb_str_new2("gsub(/��\b/s, '��.gsub(' ', '')") }; 
     179 
     180  Check_Type(v_str, T_STRING); 
     181         
     182  if (kakasi_getopt_argv(2, kakasi_argv) != 0) { 
     183    kakasi_close_kanwadict(); 
     184    rb_raise(rb_eAquesTalk_Kakasi_Error, "Init kakasi failed"); 
     185  } 
     186 
     187  retval = kakasi_do(RSTRING_PTR(v_str)); 
     188  v_retval = rb_str_buf_new2(retval); 
     189 
     190  if (*retval) { 
     191    kakasi_free(retval); 
     192  } 
     193 
     194  kakasi_close_kanwadict(); 
     195  v_retval = rb_obj_instance_eval(1, eval_argv, v_retval); 
     196 
     197  return v_retval; 
     198} 
     199 
    174200static VALUE rb_aqtk_kakasi_kakasi(VALUE self, VALUE v_str) { 
    175201  VALUE v_opt, v_retval; 
     
    258284 
    259285static VALUE rb_aqtk_kakasi_convert_number(VALUE self, VALUE v_str) { 
    260   VALUE eval_argv[] = { rb_str_new2("gsub(/\\d+/) {|m| \"<NUM VAL=#{m}>\" }") }; 
     286  VALUE eval_argv[] = { rb_str_new2("gsub(/\\d+/s) {|m| \"<NUM VAL=#{m}>\" }") }; 
    261287  return rb_obj_instance_eval(1, eval_argv, v_str); 
    262288} 
     
    264290static VALUE rb_aqtk_kakasi_filter(VALUE self, VALUE v_str) { 
    265291  v_str = rb_funcall(self, rb_intern("convert_charcode"), 1, v_str); 
     292  v_str = rb_funcall(self, rb_intern("wakati"), 1, v_str); 
    266293  v_str = rb_funcall(self, rb_intern("kakasi"), 1, v_str); 
    267294  v_str = rb_funcall(self, rb_intern("normalize"), 1, v_str); 
     
    277304  rb_define_method(rb_cAquesTalk_Kakasi, "initialize", rb_aqtk_kakasi_initialize, -1); 
    278305  rb_define_private_method(rb_cAquesTalk_Kakasi, "convert_charcode", rb_aqtk_kakasi_convert_charcode, 1); 
     306  rb_define_private_method(rb_cAquesTalk_Kakasi, "wakati", rb_aqtk_kakasi_wakati, 1); 
    279307  rb_define_private_method(rb_cAquesTalk_Kakasi, "kakasi", rb_aqtk_kakasi_kakasi, 1); 
    280308  rb_define_private_method(rb_cAquesTalk_Kakasi, "normalize", rb_aqtk_kakasi_normalize, 1);