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