Module: Linzer::Message::Field::Identifier::Parser

Extended by:
Parser
Included in:
Parser
Defined in:
lib/linzer/message/field/parser.rb

Instance Method Summary collapse

Instance Method Details

#parse(field_name) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/linzer/message/field/parser.rb', line 10

def parse(field_name)
  case
  when field_name.match?(/";/), field_name.start_with?('"')
    Starry.parse_item(field_name)
  when field_name.match?(/;/)
    parse_unserialized_input(field_name)
  when field_name.start_with?("@"), field_name.match?(/^[a-z]/)
    Starry.parse_item(Starry.serialize(field_name))
  else
    raise Error, "Invalid component identifier: '#{field_name}'!"
  end
rescue Starry::ParseError => ex
  parse_error = "Failed to parse component identifier: '#{field_name}'!"
  raise Error, parse_error, cause: ex
end