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)
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
|