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)