Class: Zn::SearchAssembler
- Inherits:
-
Object
- Object
- Zn::SearchAssembler
- Defined in:
- lib/zn/search_assembler.rb
Overview
Assembles search assembly from config and registered classes
Instance Attribute Summary collapse
-
#assembly ⇒ Object
readonly
Returns the value of attribute assembly.
-
#config_root ⇒ Object
readonly
Returns the value of attribute config_root.
Instance Method Summary collapse
- #assemble(config_yml) ⇒ Object
- #assemble_associator(association_params) ⇒ Object
- #assemble_datasets(dataset_definitions) ⇒ Object
- #assemble_repo(repo_params) ⇒ Object
-
#initialize(assembly) ⇒ SearchAssembler
constructor
A new instance of SearchAssembler.
- #register_associator_class(name, associator_class) ⇒ Object
- #register_repo_class(name, repo_class) ⇒ Object
Constructor Details
#initialize(assembly) ⇒ SearchAssembler
Returns a new instance of SearchAssembler.
10 11 12 13 14 15 16 |
# File 'lib/zn/search_assembler.rb', line 10 def initialize(assembly) raise ArgumentError, 'Assembly is nil' if assembly.nil? @assembly = assembly @repos = {} @associators = {} end |
Instance Attribute Details
#assembly ⇒ Object (readonly)
Returns the value of attribute assembly.
8 9 10 |
# File 'lib/zn/search_assembler.rb', line 8 def assembly @assembly end |
#config_root ⇒ Object (readonly)
Returns the value of attribute config_root.
8 9 10 |
# File 'lib/zn/search_assembler.rb', line 8 def config_root @config_root end |
Instance Method Details
#assemble(config_yml) ⇒ Object
57 58 59 60 61 62 63 64 |
# File 'lib/zn/search_assembler.rb', line 57 def assemble(config_yml) raise ArgumentError, 'Config yml is empty' if config_yml.to_s.empty? config = YAML.load_file(config_yml) @config_root = File.dirname(config_yml) dataset_definitions = config.fetch('datasets') assemble_datasets(dataset_definitions) end |
#assemble_associator(association_params) ⇒ Object
38 39 40 41 42 |
# File 'lib/zn/search_assembler.rb', line 38 def assemble_associator(association_params) type = association_params.fetch('type').to_sym klass = @associators.fetch(type) klass.new(assembly.datasets, association_params) end |
#assemble_datasets(dataset_definitions) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/zn/search_assembler.rb', line 44 def assemble_datasets(dataset_definitions) dataset_definitions.each do |dataset_name, dataset_params| repo = assemble_repo(dataset_params.fetch('repo')) dataset = Dataset.new(repo) dataset_params.fetch('associations').each do |associator_name, associator_params| dataset.add_associator(associator_name, assemble_associator(associator_params)) end @assembly.add_dataset(dataset_name, dataset) end end |
#assemble_repo(repo_params) ⇒ Object
25 26 27 28 29 |
# File 'lib/zn/search_assembler.rb', line 25 def assemble_repo(repo_params) type = repo_params.fetch('type').to_sym klass = @repos.fetch(type) klass.new(repo_params.merge('dir' => @config_root)) end |
#register_associator_class(name, associator_class) ⇒ Object
31 32 33 34 35 36 |
# File 'lib/zn/search_assembler.rb', line 31 def register_associator_class(name, associator_class) raise ArgumentError, 'Name is empty' if name.to_s.empty? raise ArgumentError, 'Associator class is nil' if associator_class.nil? @associators[name] = associator_class end |
#register_repo_class(name, repo_class) ⇒ Object
18 19 20 21 22 23 |
# File 'lib/zn/search_assembler.rb', line 18 def register_repo_class(name, repo_class) raise ArgumentError, 'Name is empty' if name.to_s.empty? raise ArgumentError, 'Repo class is nil' if repo_class.nil? @repos[name] = repo_class end |