Module: MARC::Spec

Defined in:
lib/marc/spec.rb,
lib/marc/spec/module_info.rb,
lib/marc/spec/queries/dsl.rb,
lib/marc/spec/queries/tag.rb,
lib/marc/spec/queries/part.rb,
lib/marc/spec/queries/query.rb,
lib/marc/spec/parsing/parser.rb,
lib/marc/spec/queries/operator.rb,
lib/marc/spec/queries/position.rb,
lib/marc/spec/queries/selector.rb,
lib/marc/spec/queries/subfield.rb,
lib/marc/spec/queries/condition.rb,
lib/marc/spec/queries/transform.rb,
lib/marc/spec/queries/applicable.rb,
lib/marc/spec/queries/al_num_range.rb,
lib/marc/spec/queries/character_spec.rb,
lib/marc/spec/queries/query_executor.rb,
lib/marc/spec/queries/subfield_value.rb,
lib/marc/spec/queries/indicator_value.rb,
lib/marc/spec/parsing/closed_int_range.rb,
lib/marc/spec/queries/comparison_string.rb,
lib/marc/spec/queries/condition_context.rb,
lib/marc/spec/queries/position_or_range.rb,
lib/marc/spec/parsing/closed_lc_alpha_range.rb

Defined Under Namespace

Modules: Parsing, Queries Classes: ModuleInfo

Class Method Summary collapse

Class Method Details

.execute_query(query, marc_record) ⇒ Object



21
22
23
24
# File 'lib/marc/spec.rb', line 21

def execute_query(query, marc_record)
  executor = Queries::QueryExecutor.new(marc_record, query)
  executor.execute
end

.find(query_string, marc_record) ⇒ Object



7
8
9
10
# File 'lib/marc/spec.rb', line 7

def find(query_string, marc_record)
  root = parse_query(query_string)
  execute_query(root, marc_record)
end

.parse_query(query_string) ⇒ Object



12
13
14
15
16
17
18
19
# File 'lib/marc/spec.rb', line 12

def parse_query(query_string)
  parse_tree = parser.parse(query_string, reporter: reporter)
  xform_result = xform.apply(parse_tree)
  # TODO: unify these?
  xform_result.is_a?(Queries::Query) ? xform_result : Queries::Query.new(tag: xform_result)
rescue Parslet::ParseFailed => e
  raise ArgumentError, "Unable to parse query: #{query_string.inspect}: #{e}"
end