class Gm::Notepad::TableRegistry
Responsible for loading and registering all of the named tables
Public Class Methods
build_and_load()
click to toggle source
# File lib/gm/notepad/table_registry.rb, line 11 def self.build_and_load new { load! } end
new(*args, &block)
click to toggle source
Calls superclass method
# File lib/gm/notepad/table_registry.rb, line 22 def initialize(*args, &block) super instance_exec(&block) if block_given? end
Public Instance Methods
append(table_name:, line:, write:)
click to toggle source
# File lib/gm/notepad/table_registry.rb, line 37 def append(table_name:, line:, write:) table = nil begin table = fetch_table(name: table_name) rescue MissingTableError filename = File.join(filesystem_directory, "#{table_name}#{table_extension}") table = register(table_name: table_name, lines: [], filename: filename) end table.append(line: line, write: write) end
evaluate(line:)
click to toggle source
# File lib/gm/notepad/table_registry.rb, line 64 def evaluate(line:) line_evaluator.call(line: line) end
fetch_table(name:)
click to toggle source
# File lib/gm/notepad/table_registry.rb, line 31 def fetch_table(name:) registry.fetch(name.downcase) rescue KeyError raise MissingTableError.new(name: name.downcase) end
lookup(table_name:, **kwargs)
click to toggle source
# File lib/gm/notepad/table_registry.rb, line 57 def lookup(table_name:, **kwargs) table = fetch_table(name: table_name) table.lookup(**kwargs) rescue MissingTableError, MissingTableEntryError => e e.to_buffer_message end
register_by_filename(table_name:, filename:)
click to toggle source
# File lib/gm/notepad/table_registry.rb, line 48 def register_by_filename(table_name:, filename:) content = File.read(filename) register(table_name: table_name, lines: content.split("\n"), filename: filename) end
register_by_string(table_name:, string:)
click to toggle source
# File lib/gm/notepad/table_registry.rb, line 53 def register_by_string(table_name:, string:) register(table_name: table_name, lines: string.split("\n")) end
table_names()
click to toggle source
# File lib/gm/notepad/table_registry.rb, line 27 def table_names registry.keys.sort end
Private Instance Methods
load!()
click to toggle source
# File lib/gm/notepad/table_registry.rb, line 70 def load! paths.each do |path| Dir.glob(File.join(path, "**/*#{table_extension}")).each do |filename| table_name = File.basename(filename, table_extension) register_by_filename(table_name: table_name, filename: filename) end end end
register(table_name:, lines:, filename: nil)
click to toggle source
# File lib/gm/notepad/table_registry.rb, line 79 def register(table_name:, lines:, filename: nil) table_name = table_name.downcase raise DuplicateKeyError.new(key: table_name, object: self) if registry.key?(table_name.downcase) registry[table_name] = Table.new(table_name: table_name, lines: lines, filename: filename) end