Module: PuppetX::Augeas::Util::Parser

Defined in:
lib/puppet_x/augeas/util/parser.rb

Overview

Container for helpers to parse user provided data contained in manifests.

Constant Summary collapse

TOKEN_ARRAY_CLOSE =
%r{\s*\]\s*}
TOKEN_ARRAY_OPEN =
%r{\s*\[\s*}
TOKEN_ARRAY_SEPARATOR =
%r{\s*,\s*}
TOKEN_CLOSE_CURLY =
%r|}|
TOKEN_DOUBLE_QUOTE =
%r{"}
TOKEN_DOUBLE_QUOTE_ESCAPED_CHAR =
%r{\\(["\\abtnvfres0-7xu])}
TOKEN_DOUBLE_QUOTE_UNESCAPED_CHAR =
%r{[^"\\]}
TOKEN_HEX_CHAR =
%r{[0-9a-fA-F]{1,2}}
TOKEN_OCTAL_CHAR =
%r{[0-7]{1,3}}
TOKEN_OPEN_CURLY =
%r|{|
TOKEN_SINGLE_QUOTE =
%r{'}
TOKEN_SINGLE_QUOTE_ESCAPED_CHAR =
%r{\\(['\\])}
TOKEN_SINGLE_QUOTE_UNESCAPED_CHAR =
%r{[^'\\]}
TOKEN_SPACE =
%r{\s}
TOKEN_UNICODE_LONG_HEX_CHAR =
%r{[0-9a-fA-F]{1,6}}
TOKEN_UNICODE_SHORT_HEX_CHAR =
%r{[0-9a-fA-F]{4}}

Instance Method Summary collapse

Instance Method Details

#parse_to_array(string) ⇒ Array<String>

Parse a string into the (nearly) equivalent Ruby array. This only handles arrays with string members (double-, or single-quoted), and does not support the full quite of escape sequences that Ruby allows in double-quoted strings.

Parameters:

  • The (String)

    string to be parsed.

Returns:

  • (Array<String>)

    The parsed array elements, including handling any escape sequences.



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/puppet_x/augeas/util/parser.rb', line 34

def parse_to_array(string)
  s = StringScanner.new(string)
  match = array_open(s)
  raise "Unexpected character in array at: #{s.rest}" if match.nil?

  array_content = array_values(s)

  match = array_close(s)
  raise "Unexpected character in array at: #{s.rest}" if match.nil? || !s.empty?

  array_content
end