json_mend 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +60 -0
- data/.tool-versions +1 -0
- data/CODE_OF_CONDUCT.md +128 -0
- data/LICENSE +21 -0
- data/README.md +65 -0
- data/Rakefile +12 -0
- data/lib/json_mend/parser.rb +1175 -0
- data/lib/json_mend/version.rb +5 -0
- data/lib/json_mend.rb +32 -0
- data/sig/json_mend.rbs +5 -0
- metadata +82 -0
data/lib/json_mend.rb
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'json'
|
|
4
|
+
|
|
5
|
+
require_relative 'json_mend/parser'
|
|
6
|
+
require_relative 'json_mend/version'
|
|
7
|
+
|
|
8
|
+
# Root module
|
|
9
|
+
module JsonMend
|
|
10
|
+
class << self
|
|
11
|
+
# Repairs a broken JSON string.
|
|
12
|
+
#
|
|
13
|
+
# @param json_string [String] The potentially broken JSON string.
|
|
14
|
+
# @param return_objects [Boolean] If true, returns a Ruby object (Hash or Array), otherwise returns a valid JSON string.
|
|
15
|
+
# @return [Object, String] The repaired JSON object or string.
|
|
16
|
+
def repair(json_string, return_objects: false)
|
|
17
|
+
# First, attempt to parse the string with the standard library.
|
|
18
|
+
repaired_json = begin
|
|
19
|
+
JSON.parse(json_string)
|
|
20
|
+
rescue JSON::ParserError
|
|
21
|
+
parser = Parser.new(json_string)
|
|
22
|
+
parser.parse
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Avoids returning `null` for empty results, returns the object directly
|
|
26
|
+
return repaired_json if return_objects
|
|
27
|
+
|
|
28
|
+
# For string output, ensure we don't just return the string "null" for an empty input
|
|
29
|
+
repaired_json.nil? ? '' : JSON.dump(repaired_json)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
data/sig/json_mend.rbs
ADDED
metadata
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: json_mend
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Alexey Vasiliev
|
|
8
|
+
bindir: exe
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: json
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '0'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '0'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: strscan
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - ">="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '0'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - ">="
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '0'
|
|
40
|
+
description: Repair broken JSON
|
|
41
|
+
email:
|
|
42
|
+
- leopard.not.a@gmail.com
|
|
43
|
+
executables: []
|
|
44
|
+
extensions: []
|
|
45
|
+
extra_rdoc_files: []
|
|
46
|
+
files:
|
|
47
|
+
- ".rspec"
|
|
48
|
+
- ".rubocop.yml"
|
|
49
|
+
- ".tool-versions"
|
|
50
|
+
- CODE_OF_CONDUCT.md
|
|
51
|
+
- LICENSE
|
|
52
|
+
- README.md
|
|
53
|
+
- Rakefile
|
|
54
|
+
- lib/json_mend.rb
|
|
55
|
+
- lib/json_mend/parser.rb
|
|
56
|
+
- lib/json_mend/version.rb
|
|
57
|
+
- sig/json_mend.rbs
|
|
58
|
+
homepage: https://github.com/le0pard/json_mend
|
|
59
|
+
licenses: []
|
|
60
|
+
metadata:
|
|
61
|
+
homepage_uri: https://github.com/le0pard/json_mend
|
|
62
|
+
source_code_uri: https://github.com/le0pard/json_mend
|
|
63
|
+
changelog_uri: https://github.com/le0pard/json_mend/releases
|
|
64
|
+
rubygems_mfa_required: 'true'
|
|
65
|
+
rdoc_options: []
|
|
66
|
+
require_paths:
|
|
67
|
+
- lib
|
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
69
|
+
requirements:
|
|
70
|
+
- - ">="
|
|
71
|
+
- !ruby/object:Gem::Version
|
|
72
|
+
version: 3.1.0
|
|
73
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
|
+
requirements:
|
|
75
|
+
- - ">="
|
|
76
|
+
- !ruby/object:Gem::Version
|
|
77
|
+
version: '0'
|
|
78
|
+
requirements: []
|
|
79
|
+
rubygems_version: 3.6.9
|
|
80
|
+
specification_version: 4
|
|
81
|
+
summary: Repair broken JSON
|
|
82
|
+
test_files: []
|