Module: Ace::Support::Config::Atoms::YamlParser

Defined in:
lib/ace/support/config/atoms/yaml_parser.rb

Overview

Pure YAML parsing functions

Class Method Summary collapse

Class Method Details

.dump(data) ⇒ String

Convert Ruby hash to YAML string

Parameters:

  • data (Hash)

    Data to convert

Returns:

  • (String)

    YAML representation



31
32
33
34
35
# File 'lib/ace/support/config/atoms/yaml_parser.rb', line 31

def dump(data)
  return "" if data.nil? || data.empty?

  YAML.dump(data)
end

.parse(yaml_string) ⇒ Hash

Parse YAML string into Ruby hash

Parameters:

  • yaml_string (String)

    YAML content to parse

Returns:

  • (Hash)

    Parsed YAML content

Raises:



18
19
20
21
22
23
24
25
26
# File 'lib/ace/support/config/atoms/yaml_parser.rb', line 18

def parse(yaml_string)
  return {} if yaml_string.nil? || yaml_string.strip.empty?

  YAML.safe_load(yaml_string, permitted_classes: [Symbol, Date], aliases: true)
rescue Psych::SyntaxError => e
  raise YamlParseError, "Failed to parse YAML: #{e.message}"
rescue Encoding::CompatibilityError, Encoding::InvalidByteSequenceError => e
  raise YamlParseError, "Failed to parse YAML (encoding error): #{e.message}"
end

.valid?(yaml_string) ⇒ Boolean

Check if string is valid YAML

Parameters:

  • yaml_string (String)

    YAML content to validate

Returns:

  • (Boolean)

    true if valid YAML



40
41
42
43
44
45
# File 'lib/ace/support/config/atoms/yaml_parser.rb', line 40

def valid?(yaml_string)
  parse(yaml_string)
  true
rescue YamlParseError
  false
end