Module: NestedText

Defined in:
lib/nestedtext/encode.rb,
lib/nestedtext.rb,
lib/nestedtext/decode.rb,
lib/nestedtext/dumper.rb,
lib/nestedtext/errors.rb,
lib/nestedtext/parser.rb,
lib/nestedtext/version.rb,
lib/nestedtext/scanners.rb,
lib/nestedtext/constants.rb,
lib/nestedtext/encode_helpers.rb,
lib/nestedtext/core_ext_internal.rb

Overview

Model after JSON NestedText.dump(obj, io=nil) => dumps to string, or to IO if given NestedText.dump_file(obj, filename)

Defined Under Namespace

Modules: NTEncodeMixin Classes: Error

Constant Summary collapse

VERSION =
"2.0.0"

Class Method Summary collapse

Class Method Details

.dump(obj, io: nil, indentation: 4, strict: false) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/nestedtext/encode.rb', line 11

def self.dump(obj, io: nil, indentation: 4, strict: false)
  # io - additionaly write the out result to IO and still return result.

  raise Errors::DumpBadIOError, io unless io.nil? || io.respond_to?(:write) && io.respond_to?(:fsync)

  dumper = Dumper.new(indentation, strict)
  result = dumper.dump obj
  unless io.nil?
    io.write(result)
    io.fsync
  end
  dumper.dump obj
end

.dump_file(obj, filename, **kwargs) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/nestedtext/encode.rb', line 25

def self.dump_file(obj, filename, **kwargs)
  raise Errors::DumpFileBadPathError, filename unless filename.is_a? String

  File.open(filename, mode = "wt") do |file|
    dump(obj, io: file, **kwargs)
  end
end

.load(ntstring, top_class: Object, strict: false) ⇒ Object



10
11
12
13
14
# File 'lib/nestedtext/decode.rb', line 10

def self.load(ntstring, top_class: Object, strict: false)
  raise Errors::WrongInputTypeError.new([String], ntstring) unless ntstring.nil? || ntstring.is_a?(String)

  Parser.new(StringIO.new(ntstring), top_class, strict: strict).parse
end

.load_file(filename, top_class: Object, strict: false) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/nestedtext/decode.rb', line 16

def self.load_file(filename, top_class: Object, strict: false)
  raise Errors::WrongInputTypeError.new([String], filename) unless !filename.nil? && filename.is_a?(String)

  # Open explicitly in text mode to detect \r as line ending.
  File.open(filename, mode = "rt") do |file|
    Parser.new(file, top_class, strict: strict).parse
  end
end