Module: JSON

Defined in:
lib/json/repair.rb,
lib/json/repairer.rb,
lib/json/repair/cli.rb,
lib/json/repair/version.rb,
lib/json/repair/string_utils.rb,
sig/json/repair.rbs,
sig/json/repairer.rbs,
sig/json/repair/cli.rbs,
sig/json/repair/string_utils.rbs

Defined Under Namespace

Modules: Repair, _Readable Classes: JSONRepairError, Repairer

Class Method Summary collapse

Class Method Details

.repair(json, return_objects:, skip_json_loads:) ⇒ ::String .repair(json, return_objects:, skip_json_loads:) ⇒ json_value .repair(json, skip_json_loads:) ⇒ ::String

Overloads:

  • .repair(json, return_objects:, skip_json_loads:) ⇒ ::String

    Parameters:

    • json (::String)
    • return_objects: (false)
    • skip_json_loads: (Boolean)

    Returns:

    • (::String)
  • .repair(json, return_objects:, skip_json_loads:) ⇒ json_value

    Parameters:

    • json (::String)
    • return_objects: (true)
    • skip_json_loads: (Boolean)

    Returns:

    • (json_value)
  • .repair(json, skip_json_loads:) ⇒ ::String

    Parameters:

    • json (::String)
    • skip_json_loads: (Boolean)

    Returns:

    • (::String)


18
19
20
21
# File 'lib/json/repair.rb', line 18

def self.repair(json, return_objects: false, skip_json_loads: false)
  parsed = skip_json_loads ? repaired_parse(json) : tolerant_parse(json)
  return_objects ? parsed : JSON.generate(parsed)
end

.repair_file(path, return_objects:, skip_json_loads:) ⇒ ::String .repair_file(path, return_objects:, skip_json_loads:) ⇒ json_value .repair_file(path, skip_json_loads:) ⇒ ::String

Overloads:

  • .repair_file(path, return_objects:, skip_json_loads:) ⇒ ::String

    Parameters:

    • path (::String, ::Pathname)
    • return_objects: (false)
    • skip_json_loads: (Boolean)

    Returns:

    • (::String)
  • .repair_file(path, return_objects:, skip_json_loads:) ⇒ json_value

    Parameters:

    • path (::String, ::Pathname)
    • return_objects: (true)
    • skip_json_loads: (Boolean)

    Returns:

    • (json_value)
  • .repair_file(path, skip_json_loads:) ⇒ ::String

    Parameters:

    • path (::String, ::Pathname)
    • skip_json_loads: (Boolean)

    Returns:

    • (::String)


33
34
35
36
37
# File 'lib/json/repair.rb', line 33

def self.repair_file(path, return_objects: false, skip_json_loads: false)
  json = File.read(path.to_s)
  parsed = skip_json_loads ? repaired_parse(json) : tolerant_parse(json)
  return_objects ? parsed : JSON.generate(parsed)
end

.repair_io(io, return_objects:, skip_json_loads:) ⇒ ::String .repair_io(io, return_objects:, skip_json_loads:) ⇒ json_value .repair_io(io, skip_json_loads:) ⇒ ::String

Inlined rather than calling repair(...) so the literal-bool overloads in sig/json/repair.rbs narrow correctly per caller — forwarding a bool-typed return_objects will not resolve against the literal- true/false overloads on JSON.repair.

Overloads:

  • .repair_io(io, return_objects:, skip_json_loads:) ⇒ ::String

    Parameters:

    • io (_Readable)
    • return_objects: (false)
    • skip_json_loads: (Boolean)

    Returns:

    • (::String)
  • .repair_io(io, return_objects:, skip_json_loads:) ⇒ json_value

    Parameters:

    • io (_Readable)
    • return_objects: (true)
    • skip_json_loads: (Boolean)

    Returns:

    • (json_value)
  • .repair_io(io, skip_json_loads:) ⇒ ::String

    Parameters:

    Returns:

    • (::String)


27
28
29
30
31
# File 'lib/json/repair.rb', line 27

def self.repair_io(io, return_objects: false, skip_json_loads: false)
  json = io.read || ''
  parsed = skip_json_loads ? repaired_parse(json) : tolerant_parse(json)
  return_objects ? parsed : JSON.generate(parsed)
end