class AutoColors::Mapping

Attributes

entries[RW]

Public Class Methods

new() click to toggle source
# File lib/autocolors/mapping.rb, line 26
def initialize
  map_name = File.dirname(__FILE__) + '/mapping.udon'
  @entries = {}
  parse_map(IO.readlines(map_name))
end

Public Instance Methods

parse_map(lines) click to toggle source
# File lib/autocolors/mapping.rb, line 32
def parse_map(lines)
  lines.each_with_index do |row,i|
    cols = row.gsub(/#.*/,'').strip.split(/\|/u).map{|c| c.strip}
    next if cols.size == 0
    if cols.size < 13
      $stderr.puts("Warning - incomplete mapping line #{i+1} of mapping.udon.")
      next
    end
    cols.shift # blank from leading pipe
    name = cols.shift
    @entries[name] = MapEntry.new(name, Hash[*KEYS.zip(cols).flatten])
  end
  parse_values
end
parse_values() click to toggle source
# File lib/autocolors/mapping.rb, line 47
def parse_values
  @entries.each do |name, entry|
    name_parts = name.split('.')
    if name_parts.size > 1
      localpart = name_parts.pop
      parent_key = name_parts.join('.')
      if ! @entries.has_key?(parent_key)
        $stderr.puts("Warning - skipping entry #{name} because #{parent_key} not found.")
        @entries.delete(name)
        next
      end
      entry.parent = @entries[parent_key]
      entry.parent.children << entry
    end
  end
end