json-merge 1.0.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
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +48 -0
- data/CITATION.cff +20 -0
- data/CODE_OF_CONDUCT.md +134 -0
- data/CONTRIBUTING.md +227 -0
- data/FUNDING.md +74 -0
- data/LICENSE.txt +21 -0
- data/README.md +966 -0
- data/REEK +0 -0
- data/RUBOCOP.md +71 -0
- data/SECURITY.md +21 -0
- data/lib/json/merge/conflict_resolver.rb +249 -0
- data/lib/json/merge/debug_logger.rb +41 -0
- data/lib/json/merge/emitter.rb +183 -0
- data/lib/json/merge/file_analysis.rb +190 -0
- data/lib/json/merge/merge_result.rb +136 -0
- data/lib/json/merge/node_wrapper.rb +279 -0
- data/lib/json/merge/object_match_refiner.rb +339 -0
- data/lib/json/merge/smart_merger.rb +149 -0
- data/lib/json/merge/version.rb +12 -0
- data/lib/json/merge.rb +113 -0
- data/lib/json-merge.rb +6 -0
- data/sig/json/merge.rbs +201 -0
- data.tar.gz.sig +0 -0
- metadata +332 -0
- metadata.gz.sig +0 -0
data/sig/json/merge.rbs
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# Type signatures for json-merge gem
|
|
2
|
+
# Smart merge for JSON files using tree-sitter AST analysis
|
|
3
|
+
|
|
4
|
+
module Json
|
|
5
|
+
module Merge
|
|
6
|
+
VERSION: String
|
|
7
|
+
|
|
8
|
+
# Base error class for json-merge errors
|
|
9
|
+
class Error < StandardError
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Error raised when template JSON file has syntax errors
|
|
13
|
+
class TemplateParseError < Error
|
|
14
|
+
attr_reader errors: Array[untyped]
|
|
15
|
+
attr_reader content: String?
|
|
16
|
+
|
|
17
|
+
def initialize: (?String? message, ?errors: Array[untyped], ?content: String?) -> void
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Error raised when destination JSON file has syntax errors
|
|
21
|
+
class DestinationParseError < Error
|
|
22
|
+
attr_reader errors: Array[untyped]
|
|
23
|
+
attr_reader content: String?
|
|
24
|
+
|
|
25
|
+
def initialize: (?String? message, ?errors: Array[untyped], ?content: String?) -> void
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Debug logging utility for Json::Merge
|
|
29
|
+
module DebugLogger
|
|
30
|
+
extend Ast::Merge::DebugLogger
|
|
31
|
+
|
|
32
|
+
def self.env_var_name: () -> String
|
|
33
|
+
def self.env_var_name=: (String name) -> String
|
|
34
|
+
def self.log_prefix: () -> String
|
|
35
|
+
def self.log_prefix=: (String prefix) -> String
|
|
36
|
+
def self.enabled?: () -> bool
|
|
37
|
+
def self.debug: (String message, ?Hash[Symbol, untyped] context) -> void
|
|
38
|
+
def self.info: (String message) -> void
|
|
39
|
+
def self.warning: (String message) -> void
|
|
40
|
+
def self.time: [T] (String operation) { () -> T } -> T
|
|
41
|
+
def self.extract_node_info: (untyped node) -> Hash[Symbol, untyped]
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Wrapper for tree-sitter JSON nodes
|
|
45
|
+
class NodeWrapper
|
|
46
|
+
attr_reader node: untyped
|
|
47
|
+
attr_reader start_line: Integer
|
|
48
|
+
attr_reader end_line: Integer
|
|
49
|
+
attr_reader analysis: FileAnalysis?
|
|
50
|
+
|
|
51
|
+
def initialize: (
|
|
52
|
+
untyped node,
|
|
53
|
+
String source,
|
|
54
|
+
?analysis: FileAnalysis?
|
|
55
|
+
) -> void
|
|
56
|
+
|
|
57
|
+
def location: () -> Ast::Merge::FreezeNode::Location
|
|
58
|
+
def signature: () -> Array[untyped]
|
|
59
|
+
def object?: () -> bool
|
|
60
|
+
def array?: () -> bool
|
|
61
|
+
def pair?: () -> bool
|
|
62
|
+
def key: () -> String?
|
|
63
|
+
def value: () -> untyped
|
|
64
|
+
def slice: () -> String?
|
|
65
|
+
def text: () -> String
|
|
66
|
+
def inspect: () -> String
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# File analysis for JSON files
|
|
70
|
+
class FileAnalysis
|
|
71
|
+
include Ast::Merge::FileAnalysisBase
|
|
72
|
+
|
|
73
|
+
PARSER_SEARCH_PATHS: Array[String]
|
|
74
|
+
|
|
75
|
+
attr_reader source: String
|
|
76
|
+
attr_reader lines: Array[String]
|
|
77
|
+
attr_reader ast: untyped
|
|
78
|
+
attr_reader statements: Array[NodeWrapper]
|
|
79
|
+
attr_reader signature_generator: (^(untyped) -> Array[untyped]?)?
|
|
80
|
+
attr_reader errors: Array[untyped]
|
|
81
|
+
|
|
82
|
+
def self.find_parser_path: () -> String?
|
|
83
|
+
|
|
84
|
+
def initialize: (
|
|
85
|
+
String source,
|
|
86
|
+
?signature_generator: (^(untyped) -> Array[untyped]?)?,
|
|
87
|
+
?parser_path: String?
|
|
88
|
+
) -> void
|
|
89
|
+
|
|
90
|
+
def valid?: () -> bool
|
|
91
|
+
def line_at: (Integer line_num) -> String?
|
|
92
|
+
def normalized_line: (Integer line_num) -> String?
|
|
93
|
+
def signature_at: (Integer index) -> Array[untyped]?
|
|
94
|
+
def generate_signature: (untyped statement) -> Array[untyped]?
|
|
95
|
+
def compute_node_signature: (untyped statement) -> Array[untyped]?
|
|
96
|
+
|
|
97
|
+
private
|
|
98
|
+
|
|
99
|
+
def parse_json: () -> void
|
|
100
|
+
def extract_nodes: (untyped tree_node) -> Array[NodeWrapper]
|
|
101
|
+
def integrate_nodes: () -> Array[NodeWrapper]
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# Result of a JSON merge operation
|
|
105
|
+
class MergeResult < Ast::Merge::MergeResult
|
|
106
|
+
DECISION_KEPT_TEMPLATE: Symbol
|
|
107
|
+
DECISION_KEPT_DEST: Symbol
|
|
108
|
+
DECISION_MERGED: Symbol
|
|
109
|
+
DECISION_ADDED: Symbol
|
|
110
|
+
|
|
111
|
+
attr_reader lines: Array[Hash[Symbol, untyped]]
|
|
112
|
+
attr_reader decisions: Array[Hash[Symbol, untyped]]
|
|
113
|
+
attr_reader statistics: Hash[Symbol, Integer]
|
|
114
|
+
|
|
115
|
+
def initialize: (
|
|
116
|
+
?template_analysis: FileAnalysis?,
|
|
117
|
+
?dest_analysis: FileAnalysis?,
|
|
118
|
+
?conflicts: Array[Hash[Symbol, untyped]],
|
|
119
|
+
?stats: Hash[Symbol, untyped]
|
|
120
|
+
) -> void
|
|
121
|
+
|
|
122
|
+
def add_line: (
|
|
123
|
+
String line,
|
|
124
|
+
decision: Symbol,
|
|
125
|
+
source: Symbol,
|
|
126
|
+
?original_line: Integer?
|
|
127
|
+
) -> void
|
|
128
|
+
|
|
129
|
+
def add_lines: (
|
|
130
|
+
Array[String] lines,
|
|
131
|
+
decision: Symbol,
|
|
132
|
+
source: Symbol,
|
|
133
|
+
?start_line: Integer?
|
|
134
|
+
) -> void
|
|
135
|
+
|
|
136
|
+
def add_blank_line: (?decision: Symbol, ?source: Symbol) -> void
|
|
137
|
+
def to_json: () -> String
|
|
138
|
+
def content: () -> Array[Hash[Symbol, untyped]]
|
|
139
|
+
def content_string: () -> String
|
|
140
|
+
def empty?: () -> bool
|
|
141
|
+
|
|
142
|
+
private
|
|
143
|
+
|
|
144
|
+
def track_statistics: (Symbol decision, Symbol source) -> void
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# Smart merger for JSON files
|
|
148
|
+
class SmartMerger
|
|
149
|
+
include Ast::Merge::MergerConfig
|
|
150
|
+
|
|
151
|
+
attr_reader template_analysis: FileAnalysis
|
|
152
|
+
attr_reader dest_analysis: FileAnalysis
|
|
153
|
+
attr_reader signature_match_preference: (Symbol | Hash[Symbol, Symbol])
|
|
154
|
+
attr_reader add_template_only_nodes: bool
|
|
155
|
+
|
|
156
|
+
def initialize: (
|
|
157
|
+
String template_content,
|
|
158
|
+
String dest_content,
|
|
159
|
+
?signature_match_preference: (Symbol | Hash[Symbol, Symbol]),
|
|
160
|
+
?add_template_only_nodes: bool,
|
|
161
|
+
?signature_generator: (^(untyped) -> Array[untyped]?)?,
|
|
162
|
+
?node_splitter: Hash[Symbol, untyped]?,
|
|
163
|
+
?parser_path: String?
|
|
164
|
+
) -> void
|
|
165
|
+
|
|
166
|
+
def merge: () -> MergeResult
|
|
167
|
+
|
|
168
|
+
private
|
|
169
|
+
|
|
170
|
+
def perform_merge: () -> MergeResult
|
|
171
|
+
def merge_nodes: (MergeResult result) -> void
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
# Conflict resolver for JSON merges
|
|
175
|
+
class ConflictResolver
|
|
176
|
+
attr_reader template_analysis: FileAnalysis
|
|
177
|
+
attr_reader dest_analysis: FileAnalysis
|
|
178
|
+
attr_reader signature_match_preference: (Symbol | Hash[Symbol, Symbol])
|
|
179
|
+
attr_reader add_template_only_nodes: bool
|
|
180
|
+
|
|
181
|
+
def initialize: (
|
|
182
|
+
FileAnalysis template_analysis,
|
|
183
|
+
FileAnalysis dest_analysis,
|
|
184
|
+
?signature_match_preference: (Symbol | Hash[Symbol, Symbol]),
|
|
185
|
+
?add_template_only_nodes: bool
|
|
186
|
+
) -> void
|
|
187
|
+
|
|
188
|
+
def resolve: (untyped boundary, MergeResult result) -> void
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
# Emitter for reconstructing JSON output
|
|
192
|
+
class Emitter
|
|
193
|
+
attr_reader result: MergeResult
|
|
194
|
+
attr_reader indent: Integer
|
|
195
|
+
|
|
196
|
+
def initialize: (MergeResult result, ?indent: Integer) -> void
|
|
197
|
+
|
|
198
|
+
def emit: () -> String
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
end
|
data.tar.gz.sig
ADDED
|
Binary file
|
metadata
ADDED
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: json-merge
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Peter H. Boling
|
|
8
|
+
bindir: exe
|
|
9
|
+
cert_chain:
|
|
10
|
+
- |
|
|
11
|
+
-----BEGIN CERTIFICATE-----
|
|
12
|
+
MIIEgDCCAuigAwIBAgIBATANBgkqhkiG9w0BAQsFADBDMRUwEwYDVQQDDAxwZXRl
|
|
13
|
+
ci5ib2xpbmcxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW
|
|
14
|
+
A2NvbTAeFw0yNTA1MDQxNTMzMDlaFw00NTA0MjkxNTMzMDlaMEMxFTATBgNVBAMM
|
|
15
|
+
DHBldGVyLmJvbGluZzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
|
|
16
|
+
LGQBGRYDY29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAruUoo0WA
|
|
17
|
+
uoNuq6puKWYeRYiZekz/nsDeK5x/0IEirzcCEvaHr3Bmz7rjo1I6On3gGKmiZs61
|
|
18
|
+
LRmQ3oxy77ydmkGTXBjruJB+pQEn7UfLSgQ0xa1/X3kdBZt6RmabFlBxnHkoaGY5
|
|
19
|
+
mZuZ5+Z7walmv6sFD9ajhzj+oIgwWfnEHkXYTR8I6VLN7MRRKGMPoZ/yvOmxb2DN
|
|
20
|
+
coEEHWKO9CvgYpW7asIihl/9GMpKiRkcYPm9dGQzZc6uTwom1COfW0+ZOFrDVBuV
|
|
21
|
+
FMQRPswZcY4Wlq0uEBLPU7hxnCL9nKK6Y9IhdDcz1mY6HZ91WImNslOSI0S8hRpj
|
|
22
|
+
yGOWxQIhBT3fqCBlRIqFQBudrnD9jSNpSGsFvbEijd5ns7Z9ZMehXkXDycpGAUj1
|
|
23
|
+
to/5cuTWWw1JqUWrKJYoifnVhtE1o1DZ+LkPtWxHtz5kjDG/zR3MG0Ula0UOavlD
|
|
24
|
+
qbnbcXPBnwXtTFeZ3C+yrWpE4pGnl3yGkZj9SMTlo9qnTMiPmuWKQDatAgMBAAGj
|
|
25
|
+
fzB9MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQE8uWvNbPVNRXZ
|
|
26
|
+
HlgPbc2PCzC4bjAhBgNVHREEGjAYgRZwZXRlci5ib2xpbmdAZ21haWwuY29tMCEG
|
|
27
|
+
A1UdEgQaMBiBFnBldGVyLmJvbGluZ0BnbWFpbC5jb20wDQYJKoZIhvcNAQELBQAD
|
|
28
|
+
ggGBAJbnUwfJQFPkBgH9cL7hoBfRtmWiCvdqdjeTmi04u8zVNCUox0A4gT982DE9
|
|
29
|
+
wmuN12LpdajxZONqbXuzZvc+nb0StFwmFYZG6iDwaf4BPywm2e/Vmq0YG45vZXGR
|
|
30
|
+
L8yMDSK1cQXjmA+ZBKOHKWavxP6Vp7lWvjAhz8RFwqF9GuNIdhv9NpnCAWcMZtpm
|
|
31
|
+
GUPyIWw/Cw/2wZp74QzZj6Npx+LdXoLTF1HMSJXZ7/pkxLCsB8m4EFVdb/IrW/0k
|
|
32
|
+
kNSfjtAfBHO8nLGuqQZVH9IBD1i9K6aSs7pT6TW8itXUIlkIUI2tg5YzW6OFfPzq
|
|
33
|
+
QekSkX3lZfY+HTSp/o+YvKkqWLUV7PQ7xh1ZYDtocpaHwgxe/j3bBqHE+CUPH2vA
|
|
34
|
+
0V/FwdTRWcwsjVoOJTrYcff8pBZ8r2MvtAc54xfnnhGFzeRHfcltobgFxkAXdE6p
|
|
35
|
+
DVjBtqT23eugOqQ73umLcYDZkc36vnqGxUBSsXrzY9pzV5gGr2I8YUxMqf6ATrZt
|
|
36
|
+
L9nRqA==
|
|
37
|
+
-----END CERTIFICATE-----
|
|
38
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
39
|
+
dependencies:
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: tree_haver
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '3.2'
|
|
47
|
+
- - ">="
|
|
48
|
+
- !ruby/object:Gem::Version
|
|
49
|
+
version: 3.2.6
|
|
50
|
+
type: :runtime
|
|
51
|
+
prerelease: false
|
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
53
|
+
requirements:
|
|
54
|
+
- - "~>"
|
|
55
|
+
- !ruby/object:Gem::Version
|
|
56
|
+
version: '3.2'
|
|
57
|
+
- - ">="
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: 3.2.6
|
|
60
|
+
- !ruby/object:Gem::Dependency
|
|
61
|
+
name: ast-merge
|
|
62
|
+
requirement: !ruby/object:Gem::Requirement
|
|
63
|
+
requirements:
|
|
64
|
+
- - "~>"
|
|
65
|
+
- !ruby/object:Gem::Version
|
|
66
|
+
version: '3.0'
|
|
67
|
+
- - ">="
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: 3.0.0
|
|
70
|
+
type: :runtime
|
|
71
|
+
prerelease: false
|
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
73
|
+
requirements:
|
|
74
|
+
- - "~>"
|
|
75
|
+
- !ruby/object:Gem::Version
|
|
76
|
+
version: '3.0'
|
|
77
|
+
- - ">="
|
|
78
|
+
- !ruby/object:Gem::Version
|
|
79
|
+
version: 3.0.0
|
|
80
|
+
- !ruby/object:Gem::Dependency
|
|
81
|
+
name: version_gem
|
|
82
|
+
requirement: !ruby/object:Gem::Requirement
|
|
83
|
+
requirements:
|
|
84
|
+
- - "~>"
|
|
85
|
+
- !ruby/object:Gem::Version
|
|
86
|
+
version: '1.1'
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: 1.1.9
|
|
90
|
+
type: :runtime
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '1.1'
|
|
97
|
+
- - ">="
|
|
98
|
+
- !ruby/object:Gem::Version
|
|
99
|
+
version: 1.1.9
|
|
100
|
+
- !ruby/object:Gem::Dependency
|
|
101
|
+
name: kettle-dev
|
|
102
|
+
requirement: !ruby/object:Gem::Requirement
|
|
103
|
+
requirements:
|
|
104
|
+
- - "~>"
|
|
105
|
+
- !ruby/object:Gem::Version
|
|
106
|
+
version: '1.1'
|
|
107
|
+
type: :development
|
|
108
|
+
prerelease: false
|
|
109
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
110
|
+
requirements:
|
|
111
|
+
- - "~>"
|
|
112
|
+
- !ruby/object:Gem::Version
|
|
113
|
+
version: '1.1'
|
|
114
|
+
- !ruby/object:Gem::Dependency
|
|
115
|
+
name: bundler-audit
|
|
116
|
+
requirement: !ruby/object:Gem::Requirement
|
|
117
|
+
requirements:
|
|
118
|
+
- - "~>"
|
|
119
|
+
- !ruby/object:Gem::Version
|
|
120
|
+
version: 0.9.2
|
|
121
|
+
type: :development
|
|
122
|
+
prerelease: false
|
|
123
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
124
|
+
requirements:
|
|
125
|
+
- - "~>"
|
|
126
|
+
- !ruby/object:Gem::Version
|
|
127
|
+
version: 0.9.2
|
|
128
|
+
- !ruby/object:Gem::Dependency
|
|
129
|
+
name: rake
|
|
130
|
+
requirement: !ruby/object:Gem::Requirement
|
|
131
|
+
requirements:
|
|
132
|
+
- - "~>"
|
|
133
|
+
- !ruby/object:Gem::Version
|
|
134
|
+
version: '13.0'
|
|
135
|
+
type: :development
|
|
136
|
+
prerelease: false
|
|
137
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
138
|
+
requirements:
|
|
139
|
+
- - "~>"
|
|
140
|
+
- !ruby/object:Gem::Version
|
|
141
|
+
version: '13.0'
|
|
142
|
+
- !ruby/object:Gem::Dependency
|
|
143
|
+
name: require_bench
|
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
|
145
|
+
requirements:
|
|
146
|
+
- - "~>"
|
|
147
|
+
- !ruby/object:Gem::Version
|
|
148
|
+
version: '1.0'
|
|
149
|
+
- - ">="
|
|
150
|
+
- !ruby/object:Gem::Version
|
|
151
|
+
version: 1.0.4
|
|
152
|
+
type: :development
|
|
153
|
+
prerelease: false
|
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
155
|
+
requirements:
|
|
156
|
+
- - "~>"
|
|
157
|
+
- !ruby/object:Gem::Version
|
|
158
|
+
version: '1.0'
|
|
159
|
+
- - ">="
|
|
160
|
+
- !ruby/object:Gem::Version
|
|
161
|
+
version: 1.0.4
|
|
162
|
+
- !ruby/object:Gem::Dependency
|
|
163
|
+
name: appraisal2
|
|
164
|
+
requirement: !ruby/object:Gem::Requirement
|
|
165
|
+
requirements:
|
|
166
|
+
- - "~>"
|
|
167
|
+
- !ruby/object:Gem::Version
|
|
168
|
+
version: '3.0'
|
|
169
|
+
type: :development
|
|
170
|
+
prerelease: false
|
|
171
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
172
|
+
requirements:
|
|
173
|
+
- - "~>"
|
|
174
|
+
- !ruby/object:Gem::Version
|
|
175
|
+
version: '3.0'
|
|
176
|
+
- !ruby/object:Gem::Dependency
|
|
177
|
+
name: kettle-test
|
|
178
|
+
requirement: !ruby/object:Gem::Requirement
|
|
179
|
+
requirements:
|
|
180
|
+
- - "~>"
|
|
181
|
+
- !ruby/object:Gem::Version
|
|
182
|
+
version: '1.0'
|
|
183
|
+
- - ">="
|
|
184
|
+
- !ruby/object:Gem::Version
|
|
185
|
+
version: 1.0.6
|
|
186
|
+
type: :development
|
|
187
|
+
prerelease: false
|
|
188
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
189
|
+
requirements:
|
|
190
|
+
- - "~>"
|
|
191
|
+
- !ruby/object:Gem::Version
|
|
192
|
+
version: '1.0'
|
|
193
|
+
- - ">="
|
|
194
|
+
- !ruby/object:Gem::Version
|
|
195
|
+
version: 1.0.6
|
|
196
|
+
- !ruby/object:Gem::Dependency
|
|
197
|
+
name: ruby-progressbar
|
|
198
|
+
requirement: !ruby/object:Gem::Requirement
|
|
199
|
+
requirements:
|
|
200
|
+
- - "~>"
|
|
201
|
+
- !ruby/object:Gem::Version
|
|
202
|
+
version: '1.13'
|
|
203
|
+
type: :development
|
|
204
|
+
prerelease: false
|
|
205
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
206
|
+
requirements:
|
|
207
|
+
- - "~>"
|
|
208
|
+
- !ruby/object:Gem::Version
|
|
209
|
+
version: '1.13'
|
|
210
|
+
- !ruby/object:Gem::Dependency
|
|
211
|
+
name: stone_checksums
|
|
212
|
+
requirement: !ruby/object:Gem::Requirement
|
|
213
|
+
requirements:
|
|
214
|
+
- - "~>"
|
|
215
|
+
- !ruby/object:Gem::Version
|
|
216
|
+
version: '1.0'
|
|
217
|
+
- - ">="
|
|
218
|
+
- !ruby/object:Gem::Version
|
|
219
|
+
version: 1.0.2
|
|
220
|
+
type: :development
|
|
221
|
+
prerelease: false
|
|
222
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
223
|
+
requirements:
|
|
224
|
+
- - "~>"
|
|
225
|
+
- !ruby/object:Gem::Version
|
|
226
|
+
version: '1.0'
|
|
227
|
+
- - ">="
|
|
228
|
+
- !ruby/object:Gem::Version
|
|
229
|
+
version: 1.0.2
|
|
230
|
+
- !ruby/object:Gem::Dependency
|
|
231
|
+
name: gitmoji-regex
|
|
232
|
+
requirement: !ruby/object:Gem::Requirement
|
|
233
|
+
requirements:
|
|
234
|
+
- - "~>"
|
|
235
|
+
- !ruby/object:Gem::Version
|
|
236
|
+
version: '1.0'
|
|
237
|
+
- - ">="
|
|
238
|
+
- !ruby/object:Gem::Version
|
|
239
|
+
version: 1.0.3
|
|
240
|
+
type: :development
|
|
241
|
+
prerelease: false
|
|
242
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
243
|
+
requirements:
|
|
244
|
+
- - "~>"
|
|
245
|
+
- !ruby/object:Gem::Version
|
|
246
|
+
version: '1.0'
|
|
247
|
+
- - ">="
|
|
248
|
+
- !ruby/object:Gem::Version
|
|
249
|
+
version: 1.0.3
|
|
250
|
+
description: "☯️ Json::Merge provides smart JSON file merging that understands JSON
|
|
251
|
+
structure. Perfect for merging strict JSON configuration files like package.json,
|
|
252
|
+
tsconfig.json (without comments), and other standard JSON files. For JSON with Comments
|
|
253
|
+
(JSONC) files like devcontainer.json and VS Code settings, use jsonc-merge instead."
|
|
254
|
+
email:
|
|
255
|
+
- floss@galtzo.com
|
|
256
|
+
executables: []
|
|
257
|
+
extensions: []
|
|
258
|
+
extra_rdoc_files:
|
|
259
|
+
- CHANGELOG.md
|
|
260
|
+
- CITATION.cff
|
|
261
|
+
- CODE_OF_CONDUCT.md
|
|
262
|
+
- CONTRIBUTING.md
|
|
263
|
+
- FUNDING.md
|
|
264
|
+
- LICENSE.txt
|
|
265
|
+
- README.md
|
|
266
|
+
- REEK
|
|
267
|
+
- RUBOCOP.md
|
|
268
|
+
- SECURITY.md
|
|
269
|
+
files:
|
|
270
|
+
- CHANGELOG.md
|
|
271
|
+
- CITATION.cff
|
|
272
|
+
- CODE_OF_CONDUCT.md
|
|
273
|
+
- CONTRIBUTING.md
|
|
274
|
+
- FUNDING.md
|
|
275
|
+
- LICENSE.txt
|
|
276
|
+
- README.md
|
|
277
|
+
- REEK
|
|
278
|
+
- RUBOCOP.md
|
|
279
|
+
- SECURITY.md
|
|
280
|
+
- lib/json-merge.rb
|
|
281
|
+
- lib/json/merge.rb
|
|
282
|
+
- lib/json/merge/conflict_resolver.rb
|
|
283
|
+
- lib/json/merge/debug_logger.rb
|
|
284
|
+
- lib/json/merge/emitter.rb
|
|
285
|
+
- lib/json/merge/file_analysis.rb
|
|
286
|
+
- lib/json/merge/merge_result.rb
|
|
287
|
+
- lib/json/merge/node_wrapper.rb
|
|
288
|
+
- lib/json/merge/object_match_refiner.rb
|
|
289
|
+
- lib/json/merge/smart_merger.rb
|
|
290
|
+
- lib/json/merge/version.rb
|
|
291
|
+
- sig/json/merge.rbs
|
|
292
|
+
homepage: https://github.com/kettle-rb/json-merge
|
|
293
|
+
licenses:
|
|
294
|
+
- MIT
|
|
295
|
+
metadata:
|
|
296
|
+
homepage_uri: https://json-merge.galtzo.com/
|
|
297
|
+
source_code_uri: https://github.com/kettle-rb/json-merge/tree/v1.0.0
|
|
298
|
+
changelog_uri: https://github.com/kettle-rb/json-merge/blob/v1.0.0/CHANGELOG.md
|
|
299
|
+
bug_tracker_uri: https://github.com/kettle-rb/json-merge/issues
|
|
300
|
+
documentation_uri: https://www.rubydoc.info/gems/json-merge/1.0.0
|
|
301
|
+
funding_uri: https://github.com/sponsors/pboling
|
|
302
|
+
wiki_uri: https://github.com/kettle-rb/json-merge/wiki
|
|
303
|
+
news_uri: https://www.railsbling.com/tags/json-merge
|
|
304
|
+
discord_uri: https://discord.gg/3qme4XHNKN
|
|
305
|
+
rubygems_mfa_required: 'true'
|
|
306
|
+
rdoc_options:
|
|
307
|
+
- "--title"
|
|
308
|
+
- json-merge - ☯️ Intelligent JSON file merging using tree-sitter AST analysis
|
|
309
|
+
- "--main"
|
|
310
|
+
- README.md
|
|
311
|
+
- "--exclude"
|
|
312
|
+
- "^sig/"
|
|
313
|
+
- "--line-numbers"
|
|
314
|
+
- "--inline-source"
|
|
315
|
+
- "--quiet"
|
|
316
|
+
require_paths:
|
|
317
|
+
- lib
|
|
318
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
319
|
+
requirements:
|
|
320
|
+
- - ">="
|
|
321
|
+
- !ruby/object:Gem::Version
|
|
322
|
+
version: 3.2.0
|
|
323
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
324
|
+
requirements:
|
|
325
|
+
- - ">="
|
|
326
|
+
- !ruby/object:Gem::Version
|
|
327
|
+
version: '0'
|
|
328
|
+
requirements: []
|
|
329
|
+
rubygems_version: 4.0.3
|
|
330
|
+
specification_version: 4
|
|
331
|
+
summary: "☯️ Intelligent JSON file merging using tree-sitter AST analysis"
|
|
332
|
+
test_files: []
|
metadata.gz.sig
ADDED
|
Binary file
|