Module: Vial::ExplainId

Defined in:
lib/vial/explain_id.rb

Class Method Summary collapse

Class Method Details

.normalize_vial_name(name) ⇒ Object



23
24
25
# File 'lib/vial/explain_id.rb', line 23

def normalize_vial_name(name)
  name.to_s.gsub('__', '/')
end

.parse(query) ⇒ Object

Raises:

  • (ArgumentError)


7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/vial/explain_id.rb', line 7

def parse(query)
  query = query.to_s.strip
  match = query.match(/\[(\d+)\]\s*\z/)
  index = match ? match[1].to_i : 1
  query = query.sub(/\[(\d+)\]\s*\z/, '')

  parts = query.split('.').map(&:strip).reject(&:empty?)
  raise ArgumentError, "Invalid explain_id query: #{query}" if parts.length < 2

  vial_name = normalize_vial_name(parts.shift)
  label = parts.shift
  variants = parts

  [vial_name, label, variants, index]
end