lib/gm/notepad/table_registry.rb in gm-notepad-0.0.5 vs lib/gm/notepad/table_registry.rb in gm-notepad-0.0.6
- old
+ new
@@ -12,11 +12,11 @@
table_registry
end
Configuration.init!(target: self, from_config: [:paths, :table_extension, :filesystem_directory]) do
@registry = {}
- @line_evaluator = LineEvaluator.new
+ @line_evaluator = LineEvaluator.new(table_registry: self)
end
def load!
paths.each do |path|
Dir.glob(File.join(path, "**/*#{table_extension}")).each do |filename|
@@ -32,17 +32,19 @@
registry.keys.sort
end
def fetch_table(name:)
registry.fetch(name.downcase)
+ rescue KeyError
+ raise MissingTableError.new(name: name.downcase)
end
def append(table_name:, line:, write:)
table = nil
begin
table = fetch_table(name: table_name)
- rescue KeyError
+ 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
@@ -55,17 +57,22 @@
def register_by_string(table_name:, string:)
register(table_name: table_name, lines: string.split("\n"))
end
def lookup(table_name:, **kwargs)
- table = fetch_table(name: table_name)
- table.lookup(**kwargs)
- rescue KeyError
- "(undefined #{table_name})"
+ # TODO: Push this onto the table, as it removes nosy neighbor syndrom
+ begin
+ table = fetch_table(name: table_name)
+ table.lookup(**kwargs)
+ rescue MissingTableError
+ "(undefined table_name: #{table_name.inspect})"
+ rescue KeyError
+ "(missing entry for #{kwargs.inspect})"
+ end
end
def evaluate(line:)
- line_evaluator.call(line: line, table_lookup_function: method(:lookup))
+ line_evaluator.call(line: line)
end
private
def register(table_name:, lines:, filename: nil)