tidy_json 0.3.0 → 0.4.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 +4 -4
- data/README.md +35 -5
- data/bin/jtidy +128 -0
- data/bin/jtidy_info.rb +34 -0
- data/lib/tidy_json/formatter.rb +19 -18
- data/lib/tidy_json/version.rb +1 -1
- data/tidy_json.gemspec +8 -4
- metadata +13 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf122c3cc2a34f2252b766f1a47f52bada4c4ff5b5334555ea62a572848d8531
|
4
|
+
data.tar.gz: bcd9134752408044711fc2b4ff3732afba7b65995b9c511c9df7e8fe666df4b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d9d164a90b41f3c5793ebaa04b361a5e1c15bf8ed7580a367421e08c06bcc7cd0f5f8555adc1e9adcff57585c59554472b129797343f78714f964c45c8a7ce6
|
7
|
+
data.tar.gz: 950f0eab8248273ce6b80a37918226d2637f436b99552844450bec62d6b3ab40dbe887c81c6fadc4baabd53dc1a2faaac834e6e68082b17d6fd1ac0d709d16ba
|
data/README.md
CHANGED
@@ -100,21 +100,51 @@ puts my_jsonable.to_tidy_json(indent: 4, sort: true, space_before: 2, ascii_only
|
|
100
100
|
# => nil
|
101
101
|
```
|
102
102
|
|
103
|
+
### Command Line Usage
|
104
|
+
|
105
|
+
After [installing the gem][], pass the name of a file containing JSON to `jtidy`
|
106
|
+
(with or without a file extension). Run `jtidy -h` for a complete list of
|
107
|
+
formatting options:
|
108
|
+
|
109
|
+
```
|
110
|
+
jtidy FILE[.json] [-i [2,4,6,8,10,12]] [-p [1..8]] [-v [1..8]] [-o D] [-a D] [-m N] [-e] [-A] [-N] [-s] [-P]
|
111
|
+
-i, --indent [2,4,6,8,10,12] The number of spaces to indent each object member [2]
|
112
|
+
-p, --prop-name-space [1..8] The number of spaces to put after property names [0]
|
113
|
+
-v, --value-space [1..8] The number of spaces to put before property values [1]
|
114
|
+
-o, --object-delim D A string of whitespace to delimit object members [\n]
|
115
|
+
-a, --array-delim D A string of whitespace to delimit array elements [\n]
|
116
|
+
-m, --max-nesting N The maximum level of data structure nesting in the generated JSON; 0 == "no depth checking" [100]
|
117
|
+
-e, --escape Escape /'s [false]
|
118
|
+
-A, --ascii Generate ASCII characters only [false]
|
119
|
+
-N, --nan Allow NaN, Infinity and -Infinity [false]
|
120
|
+
-s, --sort Sort property names [false]
|
121
|
+
-P, --preview Show preview of output [false]
|
122
|
+
-V, --version Show version
|
123
|
+
-h, --help Show this help message
|
124
|
+
```
|
125
|
+
|
126
|
+
### Notice
|
127
|
+
The `jtidy` executable bundled with this gem is in no way affiliated with, nor based on,
|
128
|
+
the HTML parser and pretty printer [of the same name](https://github.com/jtidy/jtidy).
|
129
|
+
|
130
|
+
The JTidy source code and binaries are licensed under the terms of the Zlib-Libpng License.
|
131
|
+
More information is available [here](https://github.com/jtidy/jtidy/blob/master/LICENSE.txt).
|
132
|
+
|
103
133
|
### License
|
104
134
|
Distributed under the terms of the [MIT License][].
|
105
135
|
|
106
136
|
|
107
137
|
[travis_build_status]: https://travis-ci.com/rdipardo/tidy_json
|
108
|
-
[cci_build_status]: https://circleci.com/gh/rdipardo/tidy_json/tree/
|
138
|
+
[cci_build_status]: https://circleci.com/gh/rdipardo/tidy_json/tree/testing
|
109
139
|
[cci_build_status_badge]: https://circleci.com/gh/rdipardo/tidy_json.svg?style=svg
|
110
140
|
[travis_build_status_badge]: https://travis-ci.com/rdipardo/tidy_json.svg?branch=master
|
111
|
-
[codecov_status]: https://codecov.io/gh/rdipardo/tidy_json/branch/
|
112
|
-
[codecov_badge]: https://codecov.io/gh/rdipardo/tidy_json/branch/
|
141
|
+
[codecov_status]: https://codecov.io/gh/rdipardo/tidy_json/branch/testing
|
142
|
+
[codecov_badge]: https://codecov.io/gh/rdipardo/tidy_json/branch/testing/graph/badge.svg
|
113
143
|
[gem_version_badge]: https://img.shields.io/gem/v/tidy_json?color=%234ec820&label=gem%20version&logo=ruby&logoColor=%23e9573f
|
114
144
|
[gem_downloads]: https://img.shields.io/gem/dt/tidy_json?logo=ruby&logoColor=%23e9573f
|
115
145
|
[MIT License]: https://github.com/rdipardo/tidy_json/blob/master/LICENSE
|
116
|
-
|
146
|
+
[installing the gem]: https://github.com/rdipardo/tidy_json#installation
|
117
147
|
<!-- API spec -->
|
118
148
|
[`JSON.generate`]: https://github.com/flori/json/blob/d49c5de49e54a5ad3f6fcf587f98d63266ef9439/lib/json/pure/generator.rb#L111
|
119
149
|
[the docs]: https://rubydoc.org/github/rdipardo/tidy_json/TidyJson/Formatter#initialize-instance_method
|
120
|
-
[0.3.0]: https://github.com/rdipardo/tidy_json/releases/tag/v0.3.0
|
150
|
+
[0.3.0]: https://github.com/rdipardo/tidy_json/releases/tag/v0.3.0
|
data/bin/jtidy
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'optparse'
|
5
|
+
require 'tidy_json'
|
6
|
+
require_relative 'jtidy_info'
|
7
|
+
|
8
|
+
class Jtidy # :nodoc:
|
9
|
+
OPTIONS = {
|
10
|
+
'-i [2,4,6,8,10,12]': [:indent, Integer, '--indent [2,4,6,8,10,12]',
|
11
|
+
'The number of spaces to indent each object member [2]'],
|
12
|
+
'-p [1..8]': [:space_before, Integer, '--prop-name-space [1..8]',
|
13
|
+
'The number of spaces to put after property names [0]'],
|
14
|
+
'-v [1..8]': [:space, Integer, '--value-space [1..8]',
|
15
|
+
'The number of spaces to put before property values [1]'],
|
16
|
+
'-o D': [:object_nl, String, '--object-delim D',
|
17
|
+
'A string of whitespace to delimit object members [\n]'],
|
18
|
+
'-a D': [:array_nl, String, '--array-delim D',
|
19
|
+
'A string of whitespace to delimit array elements [\n]'],
|
20
|
+
'-m N': [:max_nesting, Integer, '--max-nesting N',
|
21
|
+
'The maximum level of data structure nesting in the generated ' \
|
22
|
+
'JSON; 0 == "no depth checking" [100]'],
|
23
|
+
'-e': [:escape_slash, nil, '--escape', 'Escape /\'s [false]'],
|
24
|
+
'-A': [:ascii_only, nil, '--ascii', 'Generate ASCII characters only [false]'],
|
25
|
+
'-N': [:allow_nan, nil, '--nan', 'Allow NaN, Infinity and -Infinity [false]'],
|
26
|
+
'-s': [:sort, nil, '--sort', 'Sort property names [false]'],
|
27
|
+
# script-only options
|
28
|
+
'-P': [:preview, nil, '--preview', 'Show preview of output [false]']
|
29
|
+
}.freeze
|
30
|
+
|
31
|
+
def self.unescape(str)
|
32
|
+
str.gsub(/\\b|\\h|\\n|\\r|\\s|\\t|\\v/,
|
33
|
+
{
|
34
|
+
'\\b': "\b",
|
35
|
+
'\\h': "\h",
|
36
|
+
'\\n': "\n",
|
37
|
+
'\\r': "\r",
|
38
|
+
'\\s': "\s",
|
39
|
+
'\\t': "\t",
|
40
|
+
'\\v': "\v"
|
41
|
+
})
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.show_unused(opts)
|
45
|
+
return if opts.empty?
|
46
|
+
|
47
|
+
ignored = opts.keys.map do |key|
|
48
|
+
(OPTIONS.keys.select do |k|
|
49
|
+
OPTIONS[k][0].eql? key
|
50
|
+
end.first || '')[0..1]
|
51
|
+
end
|
52
|
+
warn "Ignoring options: #{(ignored.join ', ')}"
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.parse(options)
|
56
|
+
format_options = {}
|
57
|
+
OptionParser.new do |opts|
|
58
|
+
opts.banner = \
|
59
|
+
"#{File.basename __FILE__} FILE[.json] " \
|
60
|
+
"#{(OPTIONS.keys.map { |k| "[#{k}]" }).join ' '}"
|
61
|
+
OPTIONS.each_key do |k|
|
62
|
+
opt, type, long_name, desc = OPTIONS[k]
|
63
|
+
opts.on(k, long_name, type, desc) do |v|
|
64
|
+
format_options[opt] = (type == String ? unescape(v) : v)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
opts.on_tail('-V', '--version', 'Show version') do
|
69
|
+
show_unused format_options
|
70
|
+
puts ::JtidyInfo.new.to_s
|
71
|
+
exit 0
|
72
|
+
end
|
73
|
+
|
74
|
+
opts.on_tail('-h', '--help', 'Show this help message') do
|
75
|
+
show_unused format_options
|
76
|
+
puts opts
|
77
|
+
exit 0
|
78
|
+
end
|
79
|
+
end.parse! options
|
80
|
+
|
81
|
+
format_options
|
82
|
+
end
|
83
|
+
|
84
|
+
private_class_method :unescape, :show_unused
|
85
|
+
end
|
86
|
+
|
87
|
+
begin
|
88
|
+
begin
|
89
|
+
OPTS = Jtidy.parse(ARGV).freeze
|
90
|
+
INPUT_FILE = ARGV[0].freeze
|
91
|
+
rescue OptionParser::InvalidOption => e
|
92
|
+
warn e.message.capitalize
|
93
|
+
raise OptionParser::InvalidArgument
|
94
|
+
end
|
95
|
+
|
96
|
+
if !INPUT_FILE.nil? && !INPUT_FILE.empty?
|
97
|
+
tidy = ''
|
98
|
+
fname = INPUT_FILE.gsub('\\', '/')
|
99
|
+
ext = File.extname(fname)
|
100
|
+
input = File.join(
|
101
|
+
File.expand_path(File.dirname(fname)), File.basename(fname, ext)
|
102
|
+
)
|
103
|
+
|
104
|
+
begin
|
105
|
+
File.open((input + '.json').to_s, 'r') do |json|
|
106
|
+
begin
|
107
|
+
tidy = TidyJson.tidy(JSON.parse(json.read.strip), OPTS)
|
108
|
+
rescue JSON::JSONError => e
|
109
|
+
warn "#{__FILE__}.#{__LINE__}: #{e.message}"
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
if tidy.length.positive?
|
114
|
+
output = (input + '-tidy.json').to_s
|
115
|
+
File.open(output, 'w') { |fd| fd.write(tidy) }
|
116
|
+
puts "\nWrote: #{output}"
|
117
|
+
puts "#{tidy[0..1024]}\n . . ." if OPTS[:preview]
|
118
|
+
end
|
119
|
+
rescue Errno::ENOENT, Errno::EACCES, IOError => e
|
120
|
+
warn "#{__FILE__}.#{__LINE__}: #{e.message}"
|
121
|
+
end
|
122
|
+
|
123
|
+
else
|
124
|
+
Jtidy.parse %w[--help]
|
125
|
+
end
|
126
|
+
rescue OptionParser::InvalidArgument, OptionParser::MissingArgument
|
127
|
+
Jtidy.parse %w[--help]
|
128
|
+
end
|
data/bin/jtidy_info.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module TidyJson # :nodoc:
|
4
|
+
class JtidyInfo
|
5
|
+
NOTICE = [
|
6
|
+
'#',
|
7
|
+
'# jtidy is in no way affiliated with, nor based on, ',
|
8
|
+
'# the HTML parser and pretty printer of the same name.',
|
9
|
+
'#',
|
10
|
+
'# The JTidy source code and binaries are licensed under',
|
11
|
+
'# the terms of the Zlib-Libpng License.',
|
12
|
+
'#',
|
13
|
+
'# More information is available here:',
|
14
|
+
'# https://github.com/jtidy/jtidy/blob/master/LICENSE.txt',
|
15
|
+
'#'
|
16
|
+
].join("\n").freeze
|
17
|
+
|
18
|
+
attr_reader :meta
|
19
|
+
|
20
|
+
def initialize
|
21
|
+
gem = Gem::Specification.find_by_name('tidy_json')
|
22
|
+
@meta = {
|
23
|
+
name: "jtidy #{gem.version}",
|
24
|
+
license: "License: #{gem.license}",
|
25
|
+
bugs: "Bugs: #{gem.metadata['bug_tracker_uri']}",
|
26
|
+
notice: NOTICE
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
def to_s
|
31
|
+
(@meta.values.join "\n").freeze
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/tidy_json/formatter.rb
CHANGED
@@ -14,16 +14,16 @@ module TidyJson
|
|
14
14
|
# Returns a new instance of +Formatter+.
|
15
15
|
#
|
16
16
|
# @param opts [Hash] Formatting options.
|
17
|
-
# @option opts [[2,4,6,8,10,12]] :indent (2)
|
18
|
-
# indent each object member.
|
19
|
-
# @option opts [[2..8]] :space_before (0) The number of spaces to put
|
20
|
-
# before each +:+ delimiter.
|
21
|
-
# @option opts [[2..8]] :space (1) The number of spaces to put after
|
22
|
-
# each +:+ delimiter.
|
23
|
-
# @option opts [String] :object_nl ("\n") A string to put at the end of
|
17
|
+
# @option opts [[2,4,6,8,10,12]] :indent (2) The number of spaces to indent
|
24
18
|
# each object member.
|
25
|
-
# @option opts [
|
26
|
-
#
|
19
|
+
# @option opts [[1..8]] :space_before (0) The number of spaces to put after
|
20
|
+
# property names.
|
21
|
+
# @option opts [[1..8]] :space (1) The number of spaces to put before
|
22
|
+
# property values.
|
23
|
+
# @option opts [String] :object_nl ("\n") A string of whitespace to delimit
|
24
|
+
# object members.
|
25
|
+
# @option opts [String] :array_nl ("\n") A string of whitespace to delimit
|
26
|
+
# array elements.
|
27
27
|
# @option opts [Numeric] :max_nesting (100) The maximum level of data
|
28
28
|
# structure nesting in the generated JSON. Disable depth checking by
|
29
29
|
# passing +max_nesting: 0+.
|
@@ -31,12 +31,12 @@ module TidyJson
|
|
31
31
|
# slash (/) should be escaped.
|
32
32
|
# @option opts [Boolean] :ascii_only (false) Whether or not only ASCII
|
33
33
|
# characters should be generated.
|
34
|
-
# @option opts [Boolean] :allow_nan (false) Whether or not +NaN+,
|
35
|
-
# +Infinity+ and +-Infinity
|
36
|
-
#
|
34
|
+
# @option opts [Boolean] :allow_nan (false) Whether or not to allow +NaN+,
|
35
|
+
# +Infinity+ and +-Infinity+. If +false+, an exception is thrown if one
|
36
|
+
# of these values is encountered.
|
37
37
|
# @option opts [Boolean] :sort (false) Whether or not object members should
|
38
|
-
# be sorted by
|
39
|
-
# @see https://github.com/flori/json/blob/
|
38
|
+
# be sorted by property name.
|
39
|
+
# @see https://github.com/flori/json/blob/b8c1c640cd375f2e2ccca1b18bf943f80ad04816/lib/json/pure/generator.rb#L111 JSON::Pure::Generator
|
40
40
|
def initialize(opts = {})
|
41
41
|
# The number of times to reduce the left indent of a nested array's
|
42
42
|
# opening bracket
|
@@ -46,18 +46,19 @@ module TidyJson
|
|
46
46
|
@need_offset = false
|
47
47
|
|
48
48
|
valid_indent = (2..12).step(2).include?(opts[:indent])
|
49
|
-
valid_space_before = (
|
50
|
-
valid_space_after = (
|
49
|
+
valid_space_before = (1..8).include?(opts[:space_before])
|
50
|
+
valid_space_after = (1..8).include?(opts[:space])
|
51
51
|
# don't test for the more explicit :integer? method because it's defined
|
52
52
|
# for floating point numbers also
|
53
53
|
valid_depth = opts[:max_nesting] >= 0 \
|
54
54
|
if opts[:max_nesting].respond_to?(:times)
|
55
|
+
valid_newline = ->(str) { str.respond_to?(:strip) && str.strip.empty? }
|
55
56
|
@format = {
|
56
57
|
indent: "\s" * (valid_indent ? opts[:indent] : 2),
|
57
58
|
space_before: "\s" * (valid_space_before ? opts[:space_before] : 0),
|
58
59
|
space: "\s" * (valid_space_after ? opts[:space] : 1),
|
59
|
-
object_nl: opts[:object_nl]
|
60
|
-
array_nl: opts[:array_nl]
|
60
|
+
object_nl: (valid_newline.call(opts[:object_nl]) ? opts[:object_nl] : "\n"),
|
61
|
+
array_nl: (valid_newline.call(opts[:array_nl]) ? opts[:array_nl] : "\n"),
|
61
62
|
max_nesting: valid_depth ? opts[:max_nesting] : 100,
|
62
63
|
escape_slash: opts[:escape_slash] || false,
|
63
64
|
ascii_only: opts[:ascii_only] || false,
|
data/lib/tidy_json/version.rb
CHANGED
data/tidy_json.gemspec
CHANGED
@@ -12,18 +12,22 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.authors = ['Robert Di Pardo']
|
13
13
|
spec.email = 'dipardo.r@gmail.com'
|
14
14
|
spec.homepage = 'https://github.com/rdipardo/tidy_json'
|
15
|
-
spec.metadata = { 'documentation_uri' => 'https://rubydoc.org/github/rdipardo/tidy_json' }
|
16
15
|
spec.license = 'MIT'
|
16
|
+
spec.metadata = {
|
17
|
+
'documentation_uri' => 'https://rubydoc.org/github/rdipardo/tidy_json',
|
18
|
+
'bug_tracker_uri' => 'https://github.com/rdipardo/tidy_json/issues'
|
19
|
+
}
|
17
20
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
18
|
-
['.yardopts'].concat(`git ls-files -z`.split("\x0").reject { |f| f.match(/^(\.[\w+\.]+|test|spec|features)/) })
|
21
|
+
['.yardopts'].concat(`git ls-files -z`.split("\x0").reject { |f| f.match(/^(\.[\w+\.]+|test|spec|features|codecov)/) })
|
19
22
|
end
|
20
23
|
spec.test_files = Dir['test/*']
|
21
24
|
spec.require_paths = ['lib']
|
25
|
+
spec.executables = ['jtidy']
|
22
26
|
spec.required_ruby_version = Gem::Requirement.new('>= 2.3')
|
23
27
|
spec.add_runtime_dependency 'json', '~> 2.5'
|
24
|
-
spec.add_development_dependency 'codecov', '0.2.5'
|
28
|
+
spec.add_development_dependency 'codecov', '~> 0.2.5'
|
25
29
|
spec.add_development_dependency 'simplecov', '~> 0.17'
|
26
|
-
spec.add_development_dependency 'test-unit', '~> 3.
|
30
|
+
spec.add_development_dependency 'test-unit', '~> 3.4'
|
27
31
|
spec.add_development_dependency 'yard', '~> 0.9'
|
28
32
|
spec.rdoc_options = ['-x test/*']
|
29
33
|
spec.post_install_message = TidyJson::DEDICATION
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tidy_json
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Di Pardo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -28,14 +28,14 @@ dependencies:
|
|
28
28
|
name: codecov
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 0.2.5
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.2.5
|
41
41
|
- !ruby/object:Gem::Dependency
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '3.
|
61
|
+
version: '3.4'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '3.
|
68
|
+
version: '3.4'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: yard
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -82,7 +82,8 @@ dependencies:
|
|
82
82
|
version: '0.9'
|
83
83
|
description: A mixin providing (recursive) JSON serialization and pretty printing.
|
84
84
|
email: dipardo.r@gmail.com
|
85
|
-
executables:
|
85
|
+
executables:
|
86
|
+
- jtidy
|
86
87
|
extensions: []
|
87
88
|
extra_rdoc_files: []
|
88
89
|
files:
|
@@ -91,6 +92,8 @@ files:
|
|
91
92
|
- LICENSE
|
92
93
|
- README.md
|
93
94
|
- Rakefile
|
95
|
+
- bin/jtidy
|
96
|
+
- bin/jtidy_info.rb
|
94
97
|
- lib/tidy_json.rb
|
95
98
|
- lib/tidy_json/dedication.rb
|
96
99
|
- lib/tidy_json/formatter.rb
|
@@ -105,6 +108,7 @@ licenses:
|
|
105
108
|
- MIT
|
106
109
|
metadata:
|
107
110
|
documentation_uri: https://rubydoc.org/github/rdipardo/tidy_json
|
111
|
+
bug_tracker_uri: https://github.com/rdipardo/tidy_json/issues
|
108
112
|
post_install_message: |2+
|
109
113
|
|
110
114
|
....................................................
|
@@ -139,11 +143,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
139
143
|
- !ruby/object:Gem::Version
|
140
144
|
version: '0'
|
141
145
|
requirements: []
|
142
|
-
rubygems_version: 3.
|
146
|
+
rubygems_version: 3.2.3
|
143
147
|
signing_key:
|
144
148
|
specification_version: 4
|
145
149
|
summary: Serialize any Ruby object as readable JSON
|
146
150
|
test_files:
|
147
|
-
- test/codecov_runner.rb
|
148
151
|
- test/JsonableObject.json
|
152
|
+
- test/codecov_runner.rb
|
149
153
|
- test/test_tidy_json.rb
|