Class: Ariblib::String
- Inherits:
-
Object
- Object
- Ariblib::String
- Defined in:
- lib/ariblib/String.rb
Constant Summary collapse
- DesignationGSET =
{ 0x42 => [:set_code_group, [:put_kanji ,true ].freeze].freeze,#:CODE_KANJI 0x4A => [:set_code_group, [:put_alphanumeric ,false].freeze].freeze,#:CODE_ALPHANUMERIC 0x30 => [:set_code_group, [:put_hiragana ,false].freeze].freeze,#:CODE_HIRAGANA 0x31 => [:set_code_group, [:put_katakana ,false].freeze].freeze,#:CODE_KATAKANA 0x32 => [:set_code_group, [:put_ignore ,false].freeze].freeze,#:CODE_MOSAIC_A 0x33 => [:set_code_group, [:put_ignore ,false].freeze].freeze,#:CODE_MOSAIC_B 0x34 => [:set_code_group, [:put_ignore ,false].freeze].freeze,#:CODE_MOSAIC_C 0x35 => [:set_code_group, [:put_ignore ,false].freeze].freeze,#:CODE_MOSAIC_D 0x36 => [:set_code_group, [:put_alphanumeric ,false].freeze].freeze,#:CODE_PROP_ALPHANUMERIC 0x37 => [:set_code_group, [:put_hiragana ,false].freeze].freeze,#:CODE_PROP_HIRAGANA 0x38 => [:set_code_group, [:put_katakana ,false].freeze].freeze,#:CODE_PROP_KATAKANA 0x49 => [:set_code_group, [:put_jis_katakana ,false].freeze].freeze,#:CODE_JIS_X0201_KATAKANA 0x39 => [:set_code_group, [:put_kanji ,true ].freeze].freeze,#:CODE_JIS_KANJI_PLANE_1 0x3A => [:set_code_group, [:put_kanji ,true ].freeze].freeze,#:CODE_JIS_KANJI_PLANE_2 0x3B => [:set_code_group, [:put_symbols ,true ].freeze].freeze,#:CODE_ADDITIONAL_SYMBOLS }.freeze
- DesignationDRCS =
{ 0x40 => [:set_code_group, [:put_ignore,true ].freeze].freeze,# DRCS-0 0x41 => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-1 0x42 => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-2 0x43 => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-3 0x44 => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-4 0x45 => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-5 0x46 => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-6 0x47 => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-7 0x48 => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-8 0x49 => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-9 0x4A => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-10 0x4B => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-11 0x4C => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-12 0x4D => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-13 0x4E => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-14 0x4F => [:set_code_group, [:put_ignore,false].freeze].freeze,# DRCS-15 0x70 => [:set_code_group, [:put_ignore,false].freeze].freeze,# Macro }.freeze
- Esc_4th =
DesignationDRCS.freeze
- Esc_3rd_drcs =
DesignationDRCS.merge({0x20 => [:esc_seq,Esc_4th,nil].freeze}).freeze
- Esc_3rd_gset =
DesignationGSET.merge({0x20 => [:esc_seq,Esc_4th,nil].freeze}).freeze
- Esc_2nd =
{ 0x20 => [:esc_seq,Esc_3rd_drcs ,nil].freeze, 0x28 => [:esc_seq,Esc_3rd_drcs , 0].freeze, 0x29 => [:esc_seq,Esc_3rd_gset , 1].freeze, 0x2A => [:esc_seq,Esc_3rd_gset , 2].freeze, 0x2B => [:esc_seq,Esc_3rd_gset , 3].freeze, }.merge(DesignationGSET).freeze
- Esc_1st =
{ # Invocation of code elements 0x6E => [:set_locking_gl,2].freeze,# LS2 0x6F => [:set_locking_gl,3].freeze,# LS3 0x7E => [:set_locking_gr,1].freeze,# LS1R 0x7D => [:set_locking_gr,2].freeze,# LS2R 0x7C => [:set_locking_gr,3].freeze,# LS3R # Designation of graphic sets 0x24 => [:esc_seq,Esc_2nd,0].freeze, 0x28 => [:esc_seq,Esc_2nd,0].freeze, 0x29 => [:esc_seq,Esc_2nd,1].freeze, 0x2A => [:esc_seq,Esc_2nd,2].freeze, 0x2B => [:esc_seq,Esc_2nd,3].freeze, }.freeze
- Esc_Error =
[:escape_error].freeze
- Ctrl_code =
{ 0x0F => [:set_locking_gl , 0 ].freeze,# LS0 0x0E => [:set_locking_gl , 1 ].freeze,# LS1 0x19 => [:set_single_gl , 2 ].freeze,# SS2 0x1D => [:set_single_gl , 3 ].freeze,# SS3 0x1B => [:esc_seq ,Esc_1st,nil].freeze, # ESC #0x89 => [:set_em_str_size , :STR_MEDIUM ].freeze,# MSZ #0x8A => [:set_em_str_size , :STR_NORMAL ].freeze,# NSZ 0x20 => [:put_alphanumeric_narrow, 0x20 ].freeze,# space 0xA0 => [:put_alphanumeric_narrow, 0x20 ].freeze,# space(ARIB) 0x09 => [:put_alphanumeric_narrow, 0x20 ].freeze,# HT 0x0D => [:put_alphanumeric_narrow, 0x0d ].freeze, 0x0A => [:put_alphanumeric_narrow, 0x0d ].freeze, }.freeze
- Code_kanji =
[0x1B, 0x24, 0x40,nil,nil,0x1B,0x28,0x4a]
- Code_alphanumeric =
( " "+ " "+ " !”#$%&’()*+,-./"+ "0123456789:;<=>?"+ "@ABCDEFGHIJKLMNO"+ "PQRSTUVWXYZ[¥]^_"+ " abcdefghijklmno"+ "pqrstuvwxyz{|} ̄ ").freeze
- Code_hiragana =
( " "+ " "+ " ぁあぃいぅうぇえぉおかがきぎく"+ "ぐけげこごさざしじすずせぜそぞた"+ "だちぢっつづてでとどなにぬねのは"+ "ばぱひびぴふぶぷへべぺほぼぽまみ"+ "むめもゃやゅゆょよらりるれろゎわ"+ "ゐゑをん ゝゞー。「」、・ ").freeze
- Code_katakana =
( " "+ " "+ " ァアィイゥウェエォオカガキギク"+ "グケゲコゴサザシジスズセゼソゾタ"+ "ダチヂッツヅテデトドナニヌネノハ"+ "バパヒビピフブプヘベペホボポマミ"+ "ムメモャヤュユョヨラリルレロヮワ"+ "ヰヱヲンヴヵヶヽヾー。「」、・ ").freeze
- Code_jis_katakana =
( " "+ " "+ " 。「」、・ヲァィゥェォャュョッ"+ "ーアイウエオカキクケコサシスセソ"+ "タチツテトナニヌネノハヒフヘホマ"+ "ミムメモヤユヨラリルレロワン゛゜"+ " "+ " ").freeze
- Code_gaiji =
{ 0x7A => [ nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,#0x21-0x2f nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,#0x30-0x3f nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,#0x40-0x4f "【HV】","【SD】","【P】","【W】","【MV】","【手】","【字】","【双】", "【デ】","【S】","【二】","【多】","【解】","【SS】","【B】","【N】", "■" ,"●" ,"【天】","【交】","【映】","【無】","【料】","【年齢制限】", "【前】","【後】","【再】","【新】","【初】","【終】","【生】","【販】", "【声】","【吹】","【PPV】","(秘)","ほか",], 0x7C=>[ "→" ,"←" ,"↑" ,"↓" ,"●" ,"○" ,"年" , "月" ,"日" ,"円" ,"㎡" ,"㎥" ,"㎝" ,"㎠" ,"㎤" , "0." ,"1." ,"2." ,"3." ,"4." ,"5." ,"6." ,"7." , "8." ,"9." ,"氏" ,"副" ,"元" ,"故" ,"前" ,"[新]", "0," ,"1," ,"2," ,"3," ,"4," ,"5," ,"6," ,"7," , "8," ,"9," ,"(社)","(財)","(有)","(株)","(代)","(問)", "▶" ,"◀" ,"〖" ,"〗" ,"⟐" ,"^2" ,"^3" ,"(CD)", "(vn)","(ob)","(cb)","(ce" ,"mb)" ,"(hp)","(br)","(p)" , "(s)" ,"(ms)","(t)" ,"(bs)","(b)" ,"(tb)","(tp)","(ds)", "(ag)","(eg)","(vo)","(fl)","(ke" ,"y)" ,"(sa" ,"x)" , "(sy" ,"n)" ,"(or" ,"g)" ,"(pe" ,"r)" ,"(R)" ,"(C)" , "(箏)","DJ" ,"[演]","Fax",], 0x7D=>[ "㈪" ,"㈫" ,"㈬" , "㈭" ,"㈮" ,"㈯" ,"㈰" , "㈷" ,"㍾" ,"㍽" ,"㍼" , "㍻" ,"№" ,"℡" ,"〶" , "○" ,"〔本〕" ,"〔三〕" ,"〔二〕" , "〔安〕" ,"〔点〕" ,"〔打〕" ,"〔盗〕" , "〔勝〕" ,"〔敗〕" ,"〔S〕" ,"[投]" , "[捕]" ,"[一]" ,"[二]" ,"[三]" , "[遊]" ,"[左]" ,"[中]" ,"[右]" , "[指]" ,"[走]" ,"[打]" ,"㍑" , "㎏" ,"㎐" ,"ha" ,"㎞" , "㎢" ,"㍱" ,"・" ,"・" , "1/2" ,"0/3" ,"1/3" ,"2/3" , "1/4" ,"3/4" ,"1/5" ,"2/5" , "3/5" ,"4/5" ,"1/6" ,"5/6" , "1/7" ,"1/8" ,"1/9" ,"1/10" , "☀" ,"☁" ,"☂" ,"☃" , "☖" ,"☗" ,"▽" ,"▼" , "♦" ,"♥" ,"♣" ,"♠" , "⌺" ,"⦿" ,"‼" ,"⁉" , "(曇/晴)","☔" ,"(雨)" ,"(雪)" , "(大雪)" ,"⚡" ,"(雷雨)" ," " , "・" ,"・" ,"♬" "☎" ,], 0x7E=>[ "Ⅰ" ,"Ⅱ" ,"Ⅲ" ,"Ⅳ" ,"Ⅴ" ,"Ⅵ" ,"Ⅶ" , "Ⅷ" ,"Ⅸ" ,"Ⅹ" ,"Ⅺ" ,"Ⅻ" ,"⑰" ,"⑱" ,"⑲" , "⑳" ,"⑴" ,"⑵" ,"⑶" ,"⑷" ,"⑸" ,"⑹" ,"⑺" , "⑻" ,"⑼" ,"⑽" ,"⑾" ,"⑿" ,"㉑" ,"㉒" ,"㉓" , "㉔" ,"(A)","(B)","(C)","(D)","(E)","(F)","(G)", "(H)","(I)","(J)","(K)","(L)","(M)","(N)","(O)", "(P)","(Q)","(R)","(S)","(T)","(U)","(V)","(W)", "(X)","(Y)","(Z)","㉕" ,"㉖" ,"㉗" ,"㉘" ,"㉙" , "㉚" ,"①" ,"②" ,"③" ,"④" ,"⑤" ,"⑥" ,"⑦" , "⑧" ,"⑨" ,"⑩" ,"⑪" ,"⑫" ,"⑬" ,"⑭" ,"⑮" , "⑯" ,"❶" ,"❷" ,"❸" ,"❹" ,"❺" ,"❻" ,"❼" , "❽" ,"❾" ,"❿" ,"⓫" ,"⓬" ,"㉛" ,], 0x75=>[ "㐂","亭","份","仿","侚","俉","傜", "儞","冼","㔟","匇","卡","卬","詹","吉", "呍","咖","咜","咩","唎","啊","噲","囤", "圳","圴","塚","墀","姤","娣","婕","寬", "﨑","㟢","庬","弴","彅","德","怗","恵", "愰","昤","曈","曙","曺","曻","桒","・", "椑","椻","橅","檑","櫛","・","・","・", "毱","泠","洮","海","涿","淊","淸","渚", "潞","濹","灤","・","・","煇","燁","爀", "玟","・","珉","珖","琛","琡","琢","琦", "琪","琬","琹","瑋","㻚","畵","疁","睲", "䂓","磈","磠","祇","禮","・","・",], 0x76=>[ "・","秚","稞","筿","簱","䉤","綋", "羡","脘","脺","・","芮","葛","蓜","蓬", "蕙","藎","蝕","蟬","蠋","裵","角","諶", "跎","辻","迶","郝","鄧","鄭","醲","鈳", "銈","錡","鍈","閒","雞","餃","饀","髙", "鯖","鷗","麴","麵",], }
Instance Method Summary collapse
- #conv ⇒ Object
- #esc_seq(hash, byIndexG) ⇒ Object
- #escape_error ⇒ Object
-
#initialize(bs, len) ⇒ String
constructor
A new instance of String.
-
#put_alphanumeric(char1, char2) ⇒ Object
rescue => e puts e.message p (@bs.pos-@debug_pos)/8 @bs.pos=@debug_pos p @bs.str(@debug_len).unpack(‘C*’) puts @dst exit.
- #put_alphanumeric_narrow(char1, char2) ⇒ Object
- #put_alphanumeric_wide(char1, char2) ⇒ Object
- #put_hiragana(char1, char2) ⇒ Object
- #put_ignore(char1, char2) ⇒ Object
- #put_jis_katakana(char1, char2) ⇒ Object
- #put_kanji(char1, char2) ⇒ Object
- #put_katakana(char1, char2) ⇒ Object
- #put_symbols(char1, char2) ⇒ Object
- #set_code_group(val) ⇒ Object
- #set_em_str_size(val) ⇒ Object
- #set_locking_gl(val) ⇒ Object
- #set_locking_gr(val) ⇒ Object
- #set_single_gl(val) ⇒ Object
- #to_utf8 ⇒ Object
Constructor Details
#initialize(bs, len) ⇒ String
259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 |
# File 'lib/ariblib/String.rb', line 259 def initialize(bs,len) @len=bs.pos+len*8 @bs=bs @dst=''.force_encoding('utf-8') # 状態初期設定 @m_CodeG =[ DesignationGSET[0x42][1], DesignationGSET[0x4a][1], DesignationGSET[0x30][1], DesignationGSET[0x31][1]] @m_pLockingGL = 0 @m_pLockingGR = 2 @m_pSingleGL = nil #@str=bs.str(len).unpack('C*') #bs.pos-=len*8 #@debug_pos=bs.pos #@debug_len=len conv end |
Instance Method Details
#conv ⇒ Object
285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 |
# File 'lib/ariblib/String.rb', line 285 def conv #@m_emStrSize = :STR_NORMAL while(@bs.pos < @len) dwSrcData = @bs.getc if((dwSrcData >= 0x21) && (dwSrcData <= 0x7E)) #GL領域 curCodeSet = @m_CodeG[@m_pSingleGL || @m_pLockingGL]; @m_pSingleGL=nil char2 = (curCodeSet[1])? @bs.getc : nil #// 2バイトコード send( curCodeSet[0],dwSrcData,char2) if @bs.pos <= @len elsif((dwSrcData >= 0xA1) && (dwSrcData <= 0xFE)) #// GR領域 curCodeSet = @m_CodeG[@m_pLockingGR]; char2 = (curCodeSet[1])? @bs.getc : nil #// 2バイトコード send( curCodeSet[0],dwSrcData & 0x7f,char2 & 0x7f) if @bs.pos <= @len else #// 制御コード case(dwSrcData) when 0x0F then @m_pLockingGL = 0 # LS0 when 0x0E then @m_pLockingGL = 1 # LS1 when 0x19 then @m_pSingleGL = 2 # SS2 when 0x1D then @m_pSingleGL = 3 # SS3 when 0x1B then esc_seq(Esc_1st,nil) # ESC #when 0x89 then @m_emStrSize = :STR_MEDIUM # MSZ #when 0x8A then @m_emStrSize = :STR_NORMAL # NSZ when 0x20 then @dst+=' ' # space when 0xA0 then @dst+=' ' # space(ARIB) when 0x09 then @dst+=' ' # HT when 0x0D then @dst+="\r" when 0x0A then @dst+="\r" else end end end @dst end |
#esc_seq(hash, byIndexG) ⇒ Object
101 102 103 104 105 |
# File 'lib/ariblib/String.rb', line 101 def esc_seq(hash , byIndexG) @byIndexG=byIndexG if byIndexG args=hash.fetch(@bs.getc,Esc_Error) send *args if @bs.pos <= @len end |
#escape_error ⇒ Object
99 100 |
# File 'lib/ariblib/String.rb', line 99 def escape_error end |
#put_alphanumeric(char1, char2) ⇒ Object
rescue => e puts e.message p (@bs.pos-@debug_pos)/8 @bs.pos=@debug_pos p @bs.str(@debug_len).unpack(‘C*’) puts @dst exit
234 235 236 |
# File 'lib/ariblib/String.rb', line 234 def put_alphanumeric(char1,char2) @dst+=char1.chr end |
#put_alphanumeric_narrow(char1, char2) ⇒ Object
237 238 239 |
# File 'lib/ariblib/String.rb', line 237 def put_alphanumeric_narrow(char1,char2) @dst+=char1.chr end |
#put_alphanumeric_wide(char1, char2) ⇒ Object
240 241 242 |
# File 'lib/ariblib/String.rb', line 240 def put_alphanumeric_wide(char1,char2) @dst+=Code_alphanumeric[char1] end |
#put_hiragana(char1, char2) ⇒ Object
243 244 245 |
# File 'lib/ariblib/String.rb', line 243 def put_hiragana(char1,char2) @dst+=Code_hiragana[char1] end |
#put_ignore(char1, char2) ⇒ Object
256 257 |
# File 'lib/ariblib/String.rb', line 256 def put_ignore(char1,char2) end |
#put_jis_katakana(char1, char2) ⇒ Object
249 250 251 |
# File 'lib/ariblib/String.rb', line 249 def put_jis_katakana(char1,char2) @dst+=Code_jis_katakana[char1] end |
#put_kanji(char1, char2) ⇒ Object
222 223 224 225 226 227 228 229 230 231 232 233 |
# File 'lib/ariblib/String.rb', line 222 def put_kanji(char1,char2) Code_kanji[3]=char1 Code_kanji[4]=char2 @dst+=Code_kanji.pack('C*').force_encoding('ISO-2022-JP').encode('utf-8') #rescue => e # puts e.message # p (@bs.pos-@debug_pos)/8 # @bs.pos=@debug_pos # p @bs.str(@debug_len).unpack('C*') # puts @dst # exit end |
#put_katakana(char1, char2) ⇒ Object
246 247 248 |
# File 'lib/ariblib/String.rb', line 246 def put_katakana(char1,char2) @dst+=Code_katakana[char1] end |
#put_symbols(char1, char2) ⇒ Object
252 253 254 255 |
# File 'lib/ariblib/String.rb', line 252 def put_symbols(char1,char2) return if char2 < 0x21 @dst+=Code_gaiji[char1][char2-0x21]||'' end |
#set_code_group(val) ⇒ Object
96 97 98 |
# File 'lib/ariblib/String.rb', line 96 def set_code_group(val) @m_CodeG[@byIndexG]=val end |
#set_em_str_size(val) ⇒ Object
84 85 86 |
# File 'lib/ariblib/String.rb', line 84 def set_em_str_size(val) @m_emStrSize = val end |
#set_locking_gl(val) ⇒ Object
90 91 92 |
# File 'lib/ariblib/String.rb', line 90 def set_locking_gl(val) @m_pLockingGL = val end |
#set_locking_gr(val) ⇒ Object
93 94 95 |
# File 'lib/ariblib/String.rb', line 93 def set_locking_gr(val) @m_pLockingGR = val end |
#set_single_gl(val) ⇒ Object
87 88 89 |
# File 'lib/ariblib/String.rb', line 87 def set_single_gl(val) @m_pSingleGL = val end |
#to_utf8 ⇒ Object
281 282 283 |
# File 'lib/ariblib/String.rb', line 281 def to_utf8 @dst end |