197x #3 LT 発表資料
長時間バージョンのようなものが btronclub/20110122/presen.html にあります。
きしもと(Internetで見かける岸本さんはひらがなの法則)
id:metanest
@metanest や @metaneet は私ではありません
gravater
ruby で新しいエンコーディングのサポート
公式には「サポートの要望を出してくださいね」ということになっている。
でも...
以下のようなスクリプトが動く。
require "troncode" open("sample.tad", "rb:TADTextBE") {|file| s = file.read }
構造体
static OnigEncodingType stateless_TADTextBE = { &stateless_TADTextBE_mbc_enc_len, "stateless-TADTextBE", /* name */ 4, /* max byte length */ 4, /* min byte length */ &stateless_TADTextBE_is_mbc_newline, &stateless_TADTextBE_mbc_to_code, &stateless_TADTextBE_code_to_mbclen, &stateless_TADTextBE_code_to_mbc, &stateless_TADTextBE_mbc_case_fold, &stateless_TADTextBE_apply_all_case_fold, &stateless_TADTextBE_get_case_fold_codes_by_str, &stateless_TADTextBE_property_name_to_ctype, &stateless_TADTextBE_is_code_ctype, &stateless_TADTextBE_get_ctype_code_range, &stateless_TADTextBE_left_adjust_char_head, &stateless_TADTextBE_is_allowed_reverse_match };
登録
rb_enc_register("stateless-TADTextBE", &stateless_TADTextBE);
<% map = { "00{00-20}" => :func_so, # Control "{21-7e}{21-7e}" => :func_so, # A Zone "{80-fd}{21-7e}" => :func_so, # B Zone "{21-7e}{80-fd}" => :func_so, # C Zone "{80-fd}{80-fd}" => :func_so, # D Zone "fe{21-7e,80-fd}" => :func_so, # Script/Language Change "fefe" => :func_si, # Script/Language Escape } transcode_generate_node(ActionMap.parse(map), "TADTextBE_decoder") map = { "{00,fe}{21-7e,80-fd}" => :func_so, # Script/Language Change } transcode_generate_node(ActionMap.parse(map), "TADTextBE_decoder_lang_escape") %> <%= transcode_generated_code %> static const rb_transcoder rb_TADTextBE_decoder = { "TADTextBE", "stateless-TADTextBE", TADTextBE_decoder, TRANSCODE_TABLE_INFO, 2, /* input_unit_length */ 4, /* max_input */ 4, /* max_output */ incompat_converter, /* asciicompat_type */ 2, tadtext_init, tadtext_init, /* state_size, state_init, state_fini */ NULL, &fun_si_TADTextBE_decoder, NULL, &fun_so_TADTextBE_decoder };