class TSparser::AribStringDecoder::Definition::CodeOperator
Public Class Methods
new()
click to toggle source
# File lib/arib_string_decoder.rb, line 118 def initialize @map = Hash.new @map_part = Hash.new{0} end
Public Instance Methods
candidates(seq, set_map)
click to toggle source
# File lib/arib_string_decoder.rb, line 131 def candidates(seq, set_map) res = @map_part[seq] set_name, group_name = @map[seq[0..(seq.length-2)]] if set_name && set_map[set_name] && set_map[set_name].find_final_code(seq[-1]) res += 1 end return res end
pull(seq, set_map)
click to toggle source
# File lib/arib_string_decoder.rb, line 140 def pull(seq, set_map) set_name, group_name = @map[seq[0..(seq.length-2)]] raise "No operation match with #{seq}." unless set_name raise "Code set \"#{set_name}\" is undefined." unless set_map[set_name] code_name, byte_length = set_map[set_name].find_final_code(seq[-1]) raise "Terminal symbol \"#{seq[-1]}\" is not found." unless code_name return [code_name, group_name] end
set(seq, set_name, group_name)
click to toggle source
# File lib/arib_string_decoder.rb, line 123 def set(seq, set_name, group_name) seq = seq[0..(seq.length-2)].map{|int| Binary.from_int(int)} @map[seq] = [set_name, group_name] seq.length.times do |i| @map_part[seq[0..i]] += 1 end end