lib/gm/notepad/table_registry.rb in gm-notepad-0.0.4 vs lib/gm/notepad/table_registry.rb in gm-notepad-0.0.5
- old
+ new
@@ -1,25 +1,22 @@
require "gm/notepad/table"
require "gm/notepad/exceptions"
+require 'gm/notepad/line_evaluator'
module Gm
module Notepad
# Responsible for loading and registering all of the named tables
class TableRegistry
- def self.load_for(**config)
- table_registry = new(**config)
+ def self.load_for(config:)
+ table_registry = new(config: config)
table_registry.load!
table_registry
end
- def initialize(line_evaluator: default_line_evaluator, **config)
- self.config = config
- self.line_evaluator = line_evaluator
- self.paths = config.fetch(:paths) { [] }
- self.table_extension = config.fetch(:table_extension) { ".txt" }
- self.filesystem_directory = config.fetch(:filesystem_directory) { "." }
+ Configuration.init!(target: self, from_config: [:paths, :table_extension, :filesystem_directory]) do
@registry = {}
+ @line_evaluator = LineEvaluator.new
end
def load!
paths.each do |path|
Dir.glob(File.join(path, "**/*#{table_extension}")).each do |filename|
@@ -27,20 +24,18 @@
register_by_filename(table_name: table_name, filename: filename)
end
end
end
- private
- attr_accessor :line_evaluator, :paths, :table_extension, :filesystem_directory, :config
- public
+ attr_reader :line_evaluator, :registry
def table_names
- @registry.keys.sort
+ registry.keys.sort
end
def fetch_table(name:)
- @registry.fetch(name.downcase)
+ registry.fetch(name.downcase)
end
def append(table_name:, line:, write:)
table = nil
begin
@@ -74,16 +69,11 @@
private
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, **config)
- end
-
- def default_line_evaluator
- require 'gm/notepad/line_evaluator'
- LineEvaluator.new
+ raise DuplicateKeyError.new(key: table_name, object: self) if registry.key?(table_name.downcase)
+ registry[table_name] = Table.new(config: config, table_name: table_name, lines: lines, filename: filename)
end
end
end
end