summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWon-Kyu Park <wkpark@gmail.com>2023-03-14 02:52:54 +0900
committerChoe Hwanjin <choe.hwanjin@gmail.com>2023-04-15 11:38:43 +0900
commit154a5e0f13aebc80a465336642a406d6ddfc06cf (patch)
treed31cfb3e99ea40b087c7519b4aa27503a15c7d2c
parentad760a7d3b16384031f60aa5a31e8e153b2273e3 (diff)
downloadlibhangul-154a5e0f13aebc80a465336642a406d6ddfc06cf.tar.gz
bindings: update ruby bindingHEADmain
-rw-r--r--bindings/ruby/extconf.rb4
-rw-r--r--bindings/ruby/hangul.c22
-rw-r--r--bindings/ruby/test-hangul.rb10
3 files changed, 15 insertions, 21 deletions
diff --git a/bindings/ruby/extconf.rb b/bindings/ruby/extconf.rb
index d443963..9e5ac90 100644
--- a/bindings/ruby/extconf.rb
+++ b/bindings/ruby/extconf.rb
@@ -1,7 +1,9 @@
require 'mkmf'
dir_config('hangul')
-have_library('hangul', 'hangul_ic_new')
+find_header('hangul.h', '../../hangul')
+have_library('expat')
+find_library('hangul', 'hangul_ic_new', '../../hangul/.libs')
create_makefile('hangul')
# vim: set sts=2 sw=2 et:
diff --git a/bindings/ruby/hangul.c b/bindings/ruby/hangul.c
index 664b634..6c641d0 100644
--- a/bindings/ruby/hangul.c
+++ b/bindings/ruby/hangul.c
@@ -20,7 +20,7 @@ static VALUE
rbhic_alloc(VALUE klass)
{
setlocale(LC_CTYPE, "");
- HangulInputContext *hic = hangul_ic_new(HANGUL_KEYBOARD_2);
+ HangulInputContext *hic = hangul_ic_new("2");
return Data_Wrap_Struct(klass, 0, rbhic_free, hic);
}
@@ -32,20 +32,20 @@ rbhic_initialize(int argc, VALUE *argv, VALUE self)
VALUE keyboard;
rb_scan_args(argc, argv, "01", &keyboard);
if (argc > 0) {
- Check_Type(keyboard, T_FIXNUM);
- hangul_ic_set_keyboard(hic, FIX2INT(keyboard));
+ Check_Type(keyboard, T_STRING);
+ hangul_ic_select_keyboard(hic, RSTRING_PTR(keyboard));
}
return self;
}
static VALUE
-rbhic_filter(VALUE self, VALUE ch)
+rbhic_process(VALUE self, VALUE ch)
{
Check_Type(ch, T_FIXNUM);
HangulInputContext *hic;
Data_Get_Struct(self, HangulInputContext, hic);
- bool ret = hangul_ic_filter(hic, NUM2CHR(ch));
+ bool ret = hangul_ic_process(hic, NUM2CHR(ch));
return ret ? Qtrue : Qfalse;
}
@@ -60,7 +60,7 @@ rbhic_commit_string(VALUE self)
HangulInputContext *hic;
Data_Get_Struct(self, HangulInputContext, hic);
- char cbuf[32] = { '\0', };
+ char cbuf[64] = { '\0', };
wchar_t *wstr = (wchar_t *) hangul_ic_get_commit_string(hic);
int len = wcstombs(cbuf, wstr, sizeof(cbuf));
if (strlen(cbuf) > 0)
@@ -106,19 +106,11 @@ Init_hangul(void)
/* Hangul::InputContext methods. */
rb_define_method(rb_cInputContext, "initialize", rbhic_initialize, -1);
- rb_define_method(rb_cInputContext, "filter", rbhic_filter, 1);
+ rb_define_method(rb_cInputContext, "process", rbhic_process, 1);
rb_define_method(rb_cInputContext, "commit_string", rbhic_commit_string, 0);
rb_define_method(rb_cInputContext, "preedit_string", rbhic_preedit_string, 0);
rb_define_method(rb_cInputContext, "backspace", rbhic_backspace, 0);
rb_define_method(rb_cInputContext, "flush", rbhic_flush, 0);
rb_define_method(rb_cInputContext, "reset", rbhic_reset, 0);
-
- /* Hangul::KEYBOARD_* constants. */
- rb_define_const(rb_mHangul, "KEYBOARD_2", INT2FIX(HANGUL_KEYBOARD_2));
- rb_define_const(rb_mHangul, "KEYBOARD_32", INT2FIX(HANGUL_KEYBOARD_32));
- rb_define_const(rb_mHangul, "KEYBOARD_3FINAL", INT2FIX(HANGUL_KEYBOARD_3FINAL));
- rb_define_const(rb_mHangul, "KEYBOARD_390", INT2FIX(HANGUL_KEYBOARD_390));
- rb_define_const(rb_mHangul, "KEYBOARD_3NOSHIFT", INT2FIX(HANGUL_KEYBOARD_3NOSHIFT));
- rb_define_const(rb_mHangul, "KEYBOARD_3YETGUL", INT2FIX(HANGUL_KEYBOARD_3YETGUL));
}
diff --git a/bindings/ruby/test-hangul.rb b/bindings/ruby/test-hangul.rb
index f38abe1..dea3a6d 100644
--- a/bindings/ruby/test-hangul.rb
+++ b/bindings/ruby/test-hangul.rb
@@ -3,20 +3,20 @@ require 'hangul'
class TestHangulInputContext < Test::Unit::TestCase
def setup
- @hic = Hangul::InputContext.new(Hangul::KEYBOARD_2)
+ @hic = Hangul::InputContext.new("2")
end
def test_2bul_string
- input = "fnql gksrmf fkdlqmfjfl xptmxm"
- expected = "루비 한글 라이브러리 테스트"
+ input = "fnql gksrmf fkdlqmfjfl xptmxm."
+ expected = "루비 한글 라이브러리 테스트."
buffer = ''
input.each_byte do |c|
- ret = @hic.filter(c)
+ ret = @hic.process(c)
buffer << @hic.commit_string.to_s
buffer << c.chr unless ret
end
@hic.flush
buffer << @hic.commit_string.to_s
- assert_equal expected, buffer
+ assert_equal expected, buffer.to_s.force_encoding("UTF-8")
end
end