class Glaemscribe::API::Charset
Attributes
chars[R]
errors[RW]
name[R]
virtual_chars[R]
Public Class Methods
new(name)
click to toggle source
# File lib/api/charset.rb, line 169 def initialize(name) @name = name @chars = [] @errors = [] @virtual_chars = [] end
Public Instance Methods
[](symbol)
click to toggle source
# File lib/api/charset.rb, line 245 def [](symbol) @lookup_table[symbol] end
add_char(line, code, names)
click to toggle source
Pass integer (utf8 num) and array (of strings)
# File lib/api/charset.rb, line 177 def add_char(line, code, names) return if names.empty? || names.include?("?") # Ignore characters with '?' c = Char.new c.line = line c.code = code c.names = names c.str = code.chr('UTF-8') c.charset = self @chars << c end
add_sequence_char(line, names, seq)
click to toggle source
# File lib/api/charset.rb, line 202 def add_sequence_char(line, names, seq) return if names.empty? || names.include?("?") # Ignore characters with '?' c = SequenceChar.new c.line = line c.names = names c.sequence = seq.split.reject{|token| token.empty? } c.charset = self @chars << c end
add_virtual_char(line, classes, names, reversed = false, default = nil)
click to toggle source
# File lib/api/charset.rb, line 189 def add_virtual_char(line, classes, names, reversed = false, default = nil) return if names.empty? || names.include?("?") # Ignore characters with '?' c = VirtualChar.new c.line = line c.names = names c.classes = classes # We'll check errors in finalize c.charset = self c.reversed = reversed c.default = default @chars << c end
finalize()
click to toggle source
# File lib/api/charset.rb, line 213 def finalize @errors = [] @lookup_table = {} @virtual_chars = [] # A convenient filtered array @chars.each { |c| c.names.each { |cname| found = @lookup_table[cname] if found @errors << Glaeml::Error.new(c.line, "Character #{cname} found twice.") else @lookup_table[cname] = c end } } @chars.each{ |c| if c.class == VirtualChar c.finalize @virtual_chars << c end } @chars.each{|c| if c.class == SequenceChar c.finalize end } API::Debug::log("Finalized charset '#{@name}', #{@lookup_table.count} symbols loaded.") end