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