Module: KDL

Defined in:
lib/kdl.rb,
lib/kdl/v1.rb,
lib/kdl/node.rb,
lib/kdl/error.rb,
lib/kdl/types.rb,
lib/kdl/value.rb,
lib/kdl/builder.rb,
lib/kdl/kdl.tab.rb,
lib/kdl/v1/node.rb,
lib/kdl/version.rb,
lib/kdl/document.rb,
lib/kdl/types/ip.rb,
lib/kdl/v1/value.rb,
lib/kdl/tokenizer.rb,
lib/kdl/types/irl.rb,
lib/kdl/types/url.rb,
lib/kdl/types/uuid.rb,
lib/kdl/v1/kdl.tab.rb,
lib/kdl/types/email.rb,
lib/kdl/types/regex.rb,
lib/kdl/v1/document.rb,
lib/kdl/types/base64.rb,
lib/kdl/v1/tokenizer.rb,
lib/kdl/parser_common.rb,
lib/kdl/string_dumper.rb,
lib/kdl/types/country.rb,
lib/kdl/types/decimal.rb,
lib/kdl/types/currency.rb,
lib/kdl/types/duration.rb,
lib/kdl/types/hostname.rb,
lib/kdl/types/date_time.rb,
lib/kdl/types/irl/parser.rb,
lib/kdl/v1/string_dumper.rb,
lib/kdl/types/email/parser.rb,
lib/kdl/types/url_template.rb,
lib/kdl/types/hostname/validator.rb,
lib/kdl/types/duration/iso8601_parser.rb,
lib/kdl/types/country/iso3166_countries.rb,
lib/kdl/types/currency/iso4217_currencies.rb,
lib/kdl/types/country/iso3166_subdivisions.rb

Defined Under Namespace

Modules: ParserCommon, StringDumper, Types, V1 Classes: Builder, Document, Error, Node, ParseError, Parser, Tokenizer, UnsupportedVersionError, Value, VersionMismatchError

Constant Summary collapse

VERSION =
"2.1.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.default_output_versionObject

Returns the value of attribute default_output_version.



19
20
21
# File 'lib/kdl.rb', line 19

def default_output_version
  @default_output_version
end

.default_versionObject

Returns the value of attribute default_version.



18
19
20
# File 'lib/kdl.rb', line 18

def default_version
  @default_version
end

Class Method Details

.auto_parse(input, output_version: default_output_version, **options) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/kdl.rb', line 46

def self.auto_parse(input, output_version: default_output_version, **options)
  parse(input, version: 2, output_version: output_version || 2, **options)
rescue VersionMismatchError => e
  parse(input, version: e.version, output_version: output_version || e.version, **options)
rescue ParseError => e
  parse(input, version: 1, output_version: output_version || 1, **options) rescue raise e
end

.build(&block) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
# File 'lib/kdl.rb', line 64

def self.build(&block)
  builder = Builder.new
  if block.arity >= 1
    builder.document do
      yield builder
    end
  else
    builder.instance_exec(&block)
    builder.document
  end
end

.load_file(filespec, **options) ⇒ Object



40
41
42
43
44
# File 'lib/kdl.rb', line 40

def self.load_file(filespec, **options)
  File.open(filespec, 'r:BOM|UTF-8') do |file|
    parse(file.read, **options, filename: file.to_path)
  end
end

.output_module(version) ⇒ Object



54
55
56
57
58
59
60
61
62
# File 'lib/kdl.rb', line 54

def self.output_module(version)
  case version
  when 1 then KDL::V1
  when 2 then KDL
  else
    warn "[WARNING] Unknown output_version '#{version}', defaulting to v2"
    KDL
  end
end

.parse(input, version: default_version, output_version: default_output_version, filename: nil, **options) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/kdl.rb', line 27

def self.parse(input, version: default_version, output_version: default_output_version, filename: nil, **options)
  case version
  when 2
    Parser.new(output_module: output_module(output_version || 2), **options).parse(input, filename:)
  when 1
    V1::Parser.new.parse(input, output_module: output_module(output_version || 1), filename:, **options)
  when nil
    auto_parse(input, output_version:, **options)
  else
    raise UnsupportedVersionError.new("unsupported version '#{version}'", version)
  end
end

.parse_document(input, options = {}) ⇒ Object



22
23
24
25
# File 'lib/kdl.rb', line 22

def self.parse_document(input, options = {})
  warn "[DEPRECATION] `KDL.parse_document' is deprecated. Please use `KDL.parse' instead."
  parse(input, **options)
end