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.
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JsonMend
4
+ VERSION = '0.1.0'
5
+ end
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
@@ -0,0 +1,5 @@
1
+ module JsonMend
2
+ VERSION: String
3
+
4
+ def self.repair: (String, ?return_objects: bool) -> String | _JSONValue | nil
5
+ end
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: []