class Glaemscribe::API::Charset::VirtualChar

Attributes

charset[RW]
classes[RW]
default[RW]
line[RW]
names[RW]
reversed[RW]

Public Class Methods

new() click to toggle source
# File lib/api/charset.rb, line 65
def initialize
  @classes      = {} # result_char_1 => [trigger_char_1, trigger_char_2 ...] , result_char_1 => ...
  @lookup_table = {}
  @reversed     = false
  @default      = nil
end

Public Instance Methods

[](trigger_char_name) click to toggle source
# File lib/api/charset.rb, line 121
def [](trigger_char_name)
  @lookup_table[trigger_char_name]
end
finalize() click to toggle source
# File lib/api/charset.rb, line 82
def finalize
  @lookup_table = {}
  @classes.each{ |vc|
    
    result_char   = vc.target
    trigger_chars = vc.triggers
    
    trigger_chars.each{ |trigger_char|
      found = @lookup_table[trigger_char]
      if found
        @charset.errors << Glaeml::Error.new(@line, "Trigger char #{trigger_char} found twice in virtual char.")
      else
        rc = @charset[result_char]
        tc = @charset[trigger_char]

        if rc.nil?
          @charset.errors << Glaeml::Error.new(@line, "Trigger char #{trigger_char} points to unknown result char #{result_char}.")
        elsif tc.nil?
          @charset.errors << Glaeml::Error.new(@line, "Unknown trigger char #{trigger_char}.")  
        elsif rc.class == VirtualChar
          @charset.errors << Glaeml::Error.new(@line, "Trigger char #{trigger_char} points to another virtual char #{result_char}. This is not supported!")
        else
          tc.names.each{|trigger_char_name| # Don't forget to match all name variants for that trigger char!
            @lookup_table[trigger_char_name] = rc
          }              
        end  
      end              
    }
  }
  if @default
    c = @charset[@default]
    if !c
      @charset.errors << Glaeml::Error.new(@line, "Default char #{@default} does not match any real character in the charset.")             
    elsif c.virtual?
      @charset.errors << Glaeml::Error.new(@line, "Default char #{@default} is virtual, it should be real only.")
    end
  end
end
sequence?() click to toggle source
# File lib/api/charset.rb, line 129
def sequence?
  false
end
str() click to toggle source
# File lib/api/charset.rb, line 72
def str
  
  # Will be called if the virtual char could not be replaced and still exists at the end of the transcription chain
  if @default
    @charset[@default].str
  else
    VIRTUAL_CHAR_OUTPUT
  end
end
virtual?() click to toggle source
# File lib/api/charset.rb, line 125
def virtual?
  true
end