rbs-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 +46 -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 +936 -0
- data/REEK +0 -0
- data/RUBOCOP.md +71 -0
- data/SECURITY.md +21 -0
- data/lib/rbs/merge/conflict_resolver.rb +99 -0
- data/lib/rbs/merge/debug_logger.rb +24 -0
- data/lib/rbs/merge/file_aligner.rb +148 -0
- data/lib/rbs/merge/file_analysis.rb +264 -0
- data/lib/rbs/merge/freeze_node.rb +117 -0
- data/lib/rbs/merge/merge_result.rb +171 -0
- data/lib/rbs/merge/smart_merger.rb +266 -0
- data/lib/rbs/merge/version.rb +12 -0
- data/lib/rbs/merge.rb +82 -0
- data/lib/rbs-merge.rb +4 -0
- data/sig/rbs/merge.rbs +203 -0
- data.tar.gz.sig +0 -0
- metadata +318 -0
- metadata.gz.sig +0 -0
data/sig/rbs/merge.rbs
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# Type signatures for rbs-merge gem
|
|
2
|
+
# Smart merge for RBS type signature files using AST analysis
|
|
3
|
+
|
|
4
|
+
module Rbs
|
|
5
|
+
module Merge
|
|
6
|
+
VERSION: String
|
|
7
|
+
|
|
8
|
+
# Base error class for rbs-merge errors
|
|
9
|
+
class Error < StandardError
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Error raised when template RBS file has syntax errors
|
|
13
|
+
class TemplateParseError < Error
|
|
14
|
+
attr_reader errors: Array[RBS::BaseError]
|
|
15
|
+
|
|
16
|
+
def initialize: (Array[RBS::BaseError] errors) -> void
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Error raised when destination RBS file has syntax errors
|
|
20
|
+
class DestinationParseError < Error
|
|
21
|
+
attr_reader errors: Array[RBS::BaseError]
|
|
22
|
+
|
|
23
|
+
def initialize: (Array[RBS::BaseError] errors) -> void
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Debug logging utility
|
|
27
|
+
module DebugLogger
|
|
28
|
+
extend Ast::Merge::DebugLogger
|
|
29
|
+
|
|
30
|
+
BENCHMARK_AVAILABLE: bool
|
|
31
|
+
ENV_VAR_NAME: String
|
|
32
|
+
LOG_PREFIX: String
|
|
33
|
+
|
|
34
|
+
def self.enabled?: () -> bool
|
|
35
|
+
def self.debug: (String message, ?Hash[Symbol, untyped] context) -> void
|
|
36
|
+
def self.info: (String message) -> void
|
|
37
|
+
def self.warning: (String message) -> void
|
|
38
|
+
def self.warn: (String message) -> void
|
|
39
|
+
def self.time: [T] (String operation) { () -> T } -> T
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Freeze block node for RBS files
|
|
43
|
+
class FreezeNode < Ast::Merge::FreezeNode
|
|
44
|
+
InvalidStructureError: singleton(Ast::Merge::FreezeNode::InvalidStructureError)
|
|
45
|
+
Location: singleton(Ast::Merge::FreezeNode::Location)
|
|
46
|
+
|
|
47
|
+
attr_reader nodes: Array[RBS::AST::Declarations::Base | RBS::AST::Members::Base]
|
|
48
|
+
|
|
49
|
+
def initialize: (
|
|
50
|
+
start_line: Integer,
|
|
51
|
+
end_line: Integer,
|
|
52
|
+
analysis: FileAnalysis,
|
|
53
|
+
?nodes: Array[RBS::AST::Declarations::Base | RBS::AST::Members::Base],
|
|
54
|
+
?overlapping_nodes: Array[RBS::AST::Declarations::Base | RBS::AST::Members::Base]?,
|
|
55
|
+
?start_marker: String?,
|
|
56
|
+
?end_marker: String?,
|
|
57
|
+
?pattern_type: Symbol
|
|
58
|
+
) -> void
|
|
59
|
+
|
|
60
|
+
def signature: () -> Array[untyped]
|
|
61
|
+
def inspect: () -> String
|
|
62
|
+
|
|
63
|
+
private
|
|
64
|
+
|
|
65
|
+
def validate_structure!: () -> void
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Merge result container
|
|
69
|
+
class MergeResult < Ast::Merge::MergeResult
|
|
70
|
+
DECISION_FREEZE_BLOCK: Symbol
|
|
71
|
+
DECISION_TEMPLATE: Symbol
|
|
72
|
+
DECISION_DESTINATION: Symbol
|
|
73
|
+
DECISION_ADDED: Symbol
|
|
74
|
+
DECISION_RECURSIVE: Symbol
|
|
75
|
+
|
|
76
|
+
attr_reader template_analysis: FileAnalysis
|
|
77
|
+
attr_reader dest_analysis: FileAnalysis
|
|
78
|
+
attr_reader decisions: Array[Hash[Symbol, untyped]]
|
|
79
|
+
attr_reader content: Array[String]
|
|
80
|
+
|
|
81
|
+
def initialize: (FileAnalysis template_analysis, FileAnalysis dest_analysis) -> void
|
|
82
|
+
|
|
83
|
+
def add_from_template: (Integer index, ?decision: Symbol) -> void
|
|
84
|
+
def add_from_destination: (Integer index, ?decision: Symbol) -> void
|
|
85
|
+
def add_freeze_block: (FreezeNode freeze_node) -> void
|
|
86
|
+
def add_recursive_merge: (String merged_content, template_index: Integer, dest_index: Integer) -> void
|
|
87
|
+
def add_raw: (Array[String] lines, decision: Symbol) -> void
|
|
88
|
+
def to_s: () -> String
|
|
89
|
+
def empty?: () -> bool
|
|
90
|
+
def summary: () -> Hash[Symbol, untyped]
|
|
91
|
+
|
|
92
|
+
private
|
|
93
|
+
|
|
94
|
+
def extract_lines: (untyped statement, FileAnalysis analysis) -> Array[String]
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# File analysis for RBS files
|
|
98
|
+
class FileAnalysis
|
|
99
|
+
DEFAULT_FREEZE_TOKEN: String
|
|
100
|
+
|
|
101
|
+
attr_reader buffer: RBS::Buffer
|
|
102
|
+
attr_reader directives: Array[RBS::AST::Directives::Base]
|
|
103
|
+
attr_reader declarations: Array[RBS::AST::Declarations::Base]
|
|
104
|
+
attr_reader source: String
|
|
105
|
+
attr_reader lines: Array[String]
|
|
106
|
+
attr_reader freeze_token: String
|
|
107
|
+
attr_reader signature_generator: (^(untyped) -> (Array[untyped] | untyped | nil))?
|
|
108
|
+
attr_reader statements: Array[RBS::AST::Declarations::Base | FreezeNode]
|
|
109
|
+
|
|
110
|
+
def initialize: (
|
|
111
|
+
String source,
|
|
112
|
+
?freeze_token: String,
|
|
113
|
+
?signature_generator: (^(untyped) -> (Array[untyped] | untyped | nil))?
|
|
114
|
+
) -> void
|
|
115
|
+
|
|
116
|
+
def valid?: () -> bool
|
|
117
|
+
def freeze_blocks: () -> Array[FreezeNode]
|
|
118
|
+
def line_at: (Integer line_number) -> String?
|
|
119
|
+
def normalized_line: (Integer line_number) -> String?
|
|
120
|
+
def signature_at: (Integer index) -> Array[untyped]?
|
|
121
|
+
def generate_signature: (untyped node) -> Array[untyped]?
|
|
122
|
+
def compute_node_signature: (untyped node) -> Array[untyped]?
|
|
123
|
+
|
|
124
|
+
private
|
|
125
|
+
|
|
126
|
+
def extract_and_integrate_all_nodes: () -> Array[untyped]
|
|
127
|
+
def find_freeze_markers: () -> Array[Hash[Symbol, untyped]]
|
|
128
|
+
def build_freeze_blocks: (Array[Hash[Symbol, untyped]] markers) -> Array[FreezeNode]
|
|
129
|
+
def find_contained_nodes: (Integer start_line, Integer end_line) -> Array[untyped]
|
|
130
|
+
def find_overlapping_nodes: (Integer start_line, Integer end_line) -> Array[untyped]
|
|
131
|
+
def integrate_nodes_with_freeze_blocks: (Array[untyped] declarations, Array[FreezeNode] freeze_blocks) -> Array[untyped]
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# Conflict resolver for merge operations
|
|
135
|
+
class ConflictResolver
|
|
136
|
+
attr_reader preference: (Symbol | Hash[Symbol, Symbol])
|
|
137
|
+
attr_reader template_analysis: FileAnalysis
|
|
138
|
+
attr_reader dest_analysis: FileAnalysis
|
|
139
|
+
|
|
140
|
+
def initialize: (
|
|
141
|
+
preference: (Symbol | Hash[Symbol, Symbol]),
|
|
142
|
+
template_analysis: FileAnalysis,
|
|
143
|
+
dest_analysis: FileAnalysis
|
|
144
|
+
) -> void
|
|
145
|
+
|
|
146
|
+
def resolve: (
|
|
147
|
+
untyped template_decl,
|
|
148
|
+
untyped dest_decl,
|
|
149
|
+
template_index: Integer,
|
|
150
|
+
dest_index: Integer
|
|
151
|
+
) -> Hash[Symbol, untyped]
|
|
152
|
+
|
|
153
|
+
def declarations_identical?: (untyped decl1, untyped decl2) -> bool
|
|
154
|
+
def can_recursive_merge?: (untyped template_decl, untyped dest_decl) -> bool
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
# File aligner for matching declarations
|
|
158
|
+
class FileAligner
|
|
159
|
+
attr_reader template_analysis: FileAnalysis
|
|
160
|
+
attr_reader dest_analysis: FileAnalysis
|
|
161
|
+
|
|
162
|
+
def initialize: (FileAnalysis template_analysis, FileAnalysis dest_analysis) -> void
|
|
163
|
+
|
|
164
|
+
def align: () -> Array[Hash[Symbol, untyped]]
|
|
165
|
+
|
|
166
|
+
private
|
|
167
|
+
|
|
168
|
+
def build_signature_map: (Array[untyped] statements, FileAnalysis analysis) -> Hash[Array[untyped], Array[Integer]]
|
|
169
|
+
def sort_alignment: (Array[Hash[Symbol, untyped]] alignment) -> Array[Hash[Symbol, untyped]]
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# Smart merger orchestrator
|
|
173
|
+
class SmartMerger
|
|
174
|
+
attr_reader template_analysis: FileAnalysis
|
|
175
|
+
attr_reader dest_analysis: FileAnalysis
|
|
176
|
+
attr_reader aligner: FileAligner
|
|
177
|
+
attr_reader resolver: ConflictResolver
|
|
178
|
+
attr_reader result: MergeResult
|
|
179
|
+
|
|
180
|
+
def initialize: (
|
|
181
|
+
String template_content,
|
|
182
|
+
String dest_content,
|
|
183
|
+
?signature_generator: (^(untyped) -> (Array[untyped] | untyped | nil))?,
|
|
184
|
+
?signature_match_preference: (Symbol | Hash[Symbol, Symbol]),
|
|
185
|
+
?add_template_only_nodes: bool,
|
|
186
|
+
?freeze_token: String,
|
|
187
|
+
?max_recursion_depth: Integer | Float,
|
|
188
|
+
?node_splitter: Hash[Symbol, untyped]?
|
|
189
|
+
) -> void
|
|
190
|
+
|
|
191
|
+
def merge: () -> MergeResult
|
|
192
|
+
|
|
193
|
+
private
|
|
194
|
+
|
|
195
|
+
def process_alignment: (Array[Hash[Symbol, untyped]] alignment) -> void
|
|
196
|
+
def process_match: (Hash[Symbol, untyped] entry) -> void
|
|
197
|
+
def process_template_only: (Hash[Symbol, untyped] entry) -> void
|
|
198
|
+
def process_dest_only: (Hash[Symbol, untyped] entry) -> void
|
|
199
|
+
def process_recursive_merge: (Hash[Symbol, untyped] entry, Hash[Symbol, untyped] resolution) -> void
|
|
200
|
+
def reconstruct_declaration_with_merged_members: (untyped template_decl, untyped dest_decl, Integer template_index, Integer dest_index) -> String
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
end
|
data.tar.gz.sig
ADDED
|
Binary file
|
metadata
ADDED
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: rbs-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: rbs
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '1.6'
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - ">="
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '1.6'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: ast-merge
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - "~>"
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '1.0'
|
|
61
|
+
type: :runtime
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - "~>"
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '1.0'
|
|
68
|
+
- !ruby/object:Gem::Dependency
|
|
69
|
+
name: version_gem
|
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - "~>"
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '1.1'
|
|
75
|
+
- - ">="
|
|
76
|
+
- !ruby/object:Gem::Version
|
|
77
|
+
version: 1.1.9
|
|
78
|
+
type: :runtime
|
|
79
|
+
prerelease: false
|
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
81
|
+
requirements:
|
|
82
|
+
- - "~>"
|
|
83
|
+
- !ruby/object:Gem::Version
|
|
84
|
+
version: '1.1'
|
|
85
|
+
- - ">="
|
|
86
|
+
- !ruby/object:Gem::Version
|
|
87
|
+
version: 1.1.9
|
|
88
|
+
- !ruby/object:Gem::Dependency
|
|
89
|
+
name: kettle-dev
|
|
90
|
+
requirement: !ruby/object:Gem::Requirement
|
|
91
|
+
requirements:
|
|
92
|
+
- - "~>"
|
|
93
|
+
- !ruby/object:Gem::Version
|
|
94
|
+
version: '1.1'
|
|
95
|
+
type: :development
|
|
96
|
+
prerelease: false
|
|
97
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
98
|
+
requirements:
|
|
99
|
+
- - "~>"
|
|
100
|
+
- !ruby/object:Gem::Version
|
|
101
|
+
version: '1.1'
|
|
102
|
+
- !ruby/object:Gem::Dependency
|
|
103
|
+
name: bundler-audit
|
|
104
|
+
requirement: !ruby/object:Gem::Requirement
|
|
105
|
+
requirements:
|
|
106
|
+
- - "~>"
|
|
107
|
+
- !ruby/object:Gem::Version
|
|
108
|
+
version: 0.9.2
|
|
109
|
+
type: :development
|
|
110
|
+
prerelease: false
|
|
111
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
112
|
+
requirements:
|
|
113
|
+
- - "~>"
|
|
114
|
+
- !ruby/object:Gem::Version
|
|
115
|
+
version: 0.9.2
|
|
116
|
+
- !ruby/object:Gem::Dependency
|
|
117
|
+
name: rake
|
|
118
|
+
requirement: !ruby/object:Gem::Requirement
|
|
119
|
+
requirements:
|
|
120
|
+
- - "~>"
|
|
121
|
+
- !ruby/object:Gem::Version
|
|
122
|
+
version: '13.0'
|
|
123
|
+
type: :development
|
|
124
|
+
prerelease: false
|
|
125
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
126
|
+
requirements:
|
|
127
|
+
- - "~>"
|
|
128
|
+
- !ruby/object:Gem::Version
|
|
129
|
+
version: '13.0'
|
|
130
|
+
- !ruby/object:Gem::Dependency
|
|
131
|
+
name: require_bench
|
|
132
|
+
requirement: !ruby/object:Gem::Requirement
|
|
133
|
+
requirements:
|
|
134
|
+
- - "~>"
|
|
135
|
+
- !ruby/object:Gem::Version
|
|
136
|
+
version: '1.0'
|
|
137
|
+
- - ">="
|
|
138
|
+
- !ruby/object:Gem::Version
|
|
139
|
+
version: 1.0.4
|
|
140
|
+
type: :development
|
|
141
|
+
prerelease: false
|
|
142
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
143
|
+
requirements:
|
|
144
|
+
- - "~>"
|
|
145
|
+
- !ruby/object:Gem::Version
|
|
146
|
+
version: '1.0'
|
|
147
|
+
- - ">="
|
|
148
|
+
- !ruby/object:Gem::Version
|
|
149
|
+
version: 1.0.4
|
|
150
|
+
- !ruby/object:Gem::Dependency
|
|
151
|
+
name: appraisal2
|
|
152
|
+
requirement: !ruby/object:Gem::Requirement
|
|
153
|
+
requirements:
|
|
154
|
+
- - "~>"
|
|
155
|
+
- !ruby/object:Gem::Version
|
|
156
|
+
version: '3.0'
|
|
157
|
+
type: :development
|
|
158
|
+
prerelease: false
|
|
159
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
160
|
+
requirements:
|
|
161
|
+
- - "~>"
|
|
162
|
+
- !ruby/object:Gem::Version
|
|
163
|
+
version: '3.0'
|
|
164
|
+
- !ruby/object:Gem::Dependency
|
|
165
|
+
name: kettle-test
|
|
166
|
+
requirement: !ruby/object:Gem::Requirement
|
|
167
|
+
requirements:
|
|
168
|
+
- - "~>"
|
|
169
|
+
- !ruby/object:Gem::Version
|
|
170
|
+
version: '1.0'
|
|
171
|
+
- - ">="
|
|
172
|
+
- !ruby/object:Gem::Version
|
|
173
|
+
version: 1.0.6
|
|
174
|
+
type: :development
|
|
175
|
+
prerelease: false
|
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
177
|
+
requirements:
|
|
178
|
+
- - "~>"
|
|
179
|
+
- !ruby/object:Gem::Version
|
|
180
|
+
version: '1.0'
|
|
181
|
+
- - ">="
|
|
182
|
+
- !ruby/object:Gem::Version
|
|
183
|
+
version: 1.0.6
|
|
184
|
+
- !ruby/object:Gem::Dependency
|
|
185
|
+
name: ruby-progressbar
|
|
186
|
+
requirement: !ruby/object:Gem::Requirement
|
|
187
|
+
requirements:
|
|
188
|
+
- - "~>"
|
|
189
|
+
- !ruby/object:Gem::Version
|
|
190
|
+
version: '1.13'
|
|
191
|
+
type: :development
|
|
192
|
+
prerelease: false
|
|
193
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
194
|
+
requirements:
|
|
195
|
+
- - "~>"
|
|
196
|
+
- !ruby/object:Gem::Version
|
|
197
|
+
version: '1.13'
|
|
198
|
+
- !ruby/object:Gem::Dependency
|
|
199
|
+
name: stone_checksums
|
|
200
|
+
requirement: !ruby/object:Gem::Requirement
|
|
201
|
+
requirements:
|
|
202
|
+
- - "~>"
|
|
203
|
+
- !ruby/object:Gem::Version
|
|
204
|
+
version: '1.0'
|
|
205
|
+
- - ">="
|
|
206
|
+
- !ruby/object:Gem::Version
|
|
207
|
+
version: 1.0.2
|
|
208
|
+
type: :development
|
|
209
|
+
prerelease: false
|
|
210
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
211
|
+
requirements:
|
|
212
|
+
- - "~>"
|
|
213
|
+
- !ruby/object:Gem::Version
|
|
214
|
+
version: '1.0'
|
|
215
|
+
- - ">="
|
|
216
|
+
- !ruby/object:Gem::Version
|
|
217
|
+
version: 1.0.2
|
|
218
|
+
- !ruby/object:Gem::Dependency
|
|
219
|
+
name: gitmoji-regex
|
|
220
|
+
requirement: !ruby/object:Gem::Requirement
|
|
221
|
+
requirements:
|
|
222
|
+
- - "~>"
|
|
223
|
+
- !ruby/object:Gem::Version
|
|
224
|
+
version: '1.0'
|
|
225
|
+
- - ">="
|
|
226
|
+
- !ruby/object:Gem::Version
|
|
227
|
+
version: 1.0.3
|
|
228
|
+
type: :development
|
|
229
|
+
prerelease: false
|
|
230
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
231
|
+
requirements:
|
|
232
|
+
- - "~>"
|
|
233
|
+
- !ruby/object:Gem::Version
|
|
234
|
+
version: '1.0'
|
|
235
|
+
- - ">="
|
|
236
|
+
- !ruby/object:Gem::Version
|
|
237
|
+
version: 1.0.3
|
|
238
|
+
description: "☯️ Intelligently merge RBS type signature files by parsing and comparing
|
|
239
|
+
AST structures. Supports freeze blocks to protect customizations, signature-based
|
|
240
|
+
matching, and configurable merge strategies."
|
|
241
|
+
email:
|
|
242
|
+
- floss@galtzo.com
|
|
243
|
+
executables: []
|
|
244
|
+
extensions: []
|
|
245
|
+
extra_rdoc_files:
|
|
246
|
+
- CHANGELOG.md
|
|
247
|
+
- CITATION.cff
|
|
248
|
+
- CODE_OF_CONDUCT.md
|
|
249
|
+
- CONTRIBUTING.md
|
|
250
|
+
- FUNDING.md
|
|
251
|
+
- LICENSE.txt
|
|
252
|
+
- README.md
|
|
253
|
+
- REEK
|
|
254
|
+
- RUBOCOP.md
|
|
255
|
+
- SECURITY.md
|
|
256
|
+
files:
|
|
257
|
+
- CHANGELOG.md
|
|
258
|
+
- CITATION.cff
|
|
259
|
+
- CODE_OF_CONDUCT.md
|
|
260
|
+
- CONTRIBUTING.md
|
|
261
|
+
- FUNDING.md
|
|
262
|
+
- LICENSE.txt
|
|
263
|
+
- README.md
|
|
264
|
+
- REEK
|
|
265
|
+
- RUBOCOP.md
|
|
266
|
+
- SECURITY.md
|
|
267
|
+
- lib/rbs-merge.rb
|
|
268
|
+
- lib/rbs/merge.rb
|
|
269
|
+
- lib/rbs/merge/conflict_resolver.rb
|
|
270
|
+
- lib/rbs/merge/debug_logger.rb
|
|
271
|
+
- lib/rbs/merge/file_aligner.rb
|
|
272
|
+
- lib/rbs/merge/file_analysis.rb
|
|
273
|
+
- lib/rbs/merge/freeze_node.rb
|
|
274
|
+
- lib/rbs/merge/merge_result.rb
|
|
275
|
+
- lib/rbs/merge/smart_merger.rb
|
|
276
|
+
- lib/rbs/merge/version.rb
|
|
277
|
+
- sig/rbs/merge.rbs
|
|
278
|
+
homepage: https://github.com/kettle-rb/rbs-merge
|
|
279
|
+
licenses:
|
|
280
|
+
- MIT
|
|
281
|
+
metadata:
|
|
282
|
+
homepage_uri: https://rbs-merge.galtzo.com/
|
|
283
|
+
source_code_uri: https://github.com/kettle-rb/rbs-merge/tree/v1.0.0
|
|
284
|
+
changelog_uri: https://github.com/kettle-rb/rbs-merge/blob/v1.0.0/CHANGELOG.md
|
|
285
|
+
bug_tracker_uri: https://github.com/kettle-rb/rbs-merge/issues
|
|
286
|
+
documentation_uri: https://www.rubydoc.info/gems/rbs-merge/1.0.0
|
|
287
|
+
funding_uri: https://github.com/sponsors/pboling
|
|
288
|
+
wiki_uri: https://github.com/kettle-rb/rbs-merge/wiki
|
|
289
|
+
news_uri: https://www.railsbling.com/tags/rbs-merge
|
|
290
|
+
discord_uri: https://discord.gg/3qme4XHNKN
|
|
291
|
+
rubygems_mfa_required: 'true'
|
|
292
|
+
rdoc_options:
|
|
293
|
+
- "--title"
|
|
294
|
+
- rbs-merge - ☯️ Smart merge for RBS type signature files using AST analysis
|
|
295
|
+
- "--main"
|
|
296
|
+
- README.md
|
|
297
|
+
- "--exclude"
|
|
298
|
+
- "^sig/"
|
|
299
|
+
- "--line-numbers"
|
|
300
|
+
- "--inline-source"
|
|
301
|
+
- "--quiet"
|
|
302
|
+
require_paths:
|
|
303
|
+
- lib
|
|
304
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
305
|
+
requirements:
|
|
306
|
+
- - ">="
|
|
307
|
+
- !ruby/object:Gem::Version
|
|
308
|
+
version: 3.2.0
|
|
309
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
310
|
+
requirements:
|
|
311
|
+
- - ">="
|
|
312
|
+
- !ruby/object:Gem::Version
|
|
313
|
+
version: '0'
|
|
314
|
+
requirements: []
|
|
315
|
+
rubygems_version: 4.0.1
|
|
316
|
+
specification_version: 4
|
|
317
|
+
summary: "☯️ Smart merge for RBS type signature files using AST analysis"
|
|
318
|
+
test_files: []
|
metadata.gz.sig
ADDED
|
Binary file
|