expressir 2.1.25 → 2.1.26
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/.rubocop_todo.yml +2 -2
- data/Gemfile +1 -0
- data/expressir.gemspec +1 -1
- data/lib/expressir/cli.rb +0 -1
- data/lib/expressir/commands/coverage.rb +90 -54
- data/lib/expressir/schema_manifest.rb +2 -1
- data/lib/expressir/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 94ad4b65c4f08a6ff1aafab5424989afee0419e94ac57fbd4715f2daca1da426
|
4
|
+
data.tar.gz: 21f24a38ca761ced3b7dec0070f08591190de7769e4e43150a4f87db59189ef4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1bc6510434694446b93e6df1e66682e0e737463ad130af77266fa207b0b7214a513817456ee7e42073a419d75ecdbb6adf9f7d34b0077f070269c5eff1d972d4
|
7
|
+
data.tar.gz: 4d44e23f91d30849da8d550b1cbadbc7628260f444eae1004500b2b5a9489ba3c62333ec7cb61c8d9a5860d1f5b1bef93464ad6c26910902ff0f44cb922150c7
|
data/.rubocop_todo.yml
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on 2025-07-
|
3
|
+
# on 2025-07-12 00:59:01 UTC using RuboCop version 1.77.0.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
8
8
|
|
9
|
-
# Offense count:
|
9
|
+
# Offense count: 549
|
10
10
|
# This cop supports safe autocorrection (--autocorrect).
|
11
11
|
# Configuration parameters: Max, AllowHeredoc, AllowURI, AllowQualifiedName, URISchemes, IgnoreCopDirectives, AllowedPatterns, SplitStrings.
|
12
12
|
# URISchemes: http, https
|
data/Gemfile
CHANGED
data/expressir.gemspec
CHANGED
@@ -38,6 +38,6 @@ Gem::Specification.new do |spec|
|
|
38
38
|
spec.add_dependency "lutaml-model"
|
39
39
|
spec.add_dependency "parslet", "~> 2.0"
|
40
40
|
spec.add_dependency "ruby-progressbar", "~> 1.11"
|
41
|
-
spec.add_dependency "
|
41
|
+
spec.add_dependency "table_tennis"
|
42
42
|
spec.add_dependency "thor", "~> 1.0"
|
43
43
|
end
|
data/lib/expressir/cli.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require "
|
1
|
+
require "table_tennis"
|
2
2
|
require "json"
|
3
3
|
require "yaml"
|
4
4
|
require "ruby-progressbar"
|
@@ -173,55 +173,79 @@ module Expressir
|
|
173
173
|
end
|
174
174
|
end
|
175
175
|
|
176
|
-
|
177
|
-
table = Terminal::Table.new(
|
178
|
-
title: "Directory Coverage",
|
179
|
-
headings: ["Directory", "Total", "Documented", "Coverage %"],
|
180
|
-
style: {
|
181
|
-
border_x: "-",
|
182
|
-
border_y: "|",
|
183
|
-
border_i: "+",
|
184
|
-
},
|
185
|
-
)
|
186
|
-
|
187
|
-
# Add rows
|
176
|
+
table_data = []
|
188
177
|
dirs.each do |dir, stats|
|
189
178
|
coverage = stats["total"].positive? ? (stats["documented"].to_f / stats["total"] * 100).round(2) : 100.0
|
190
|
-
|
191
|
-
|
179
|
+
table_data << {
|
180
|
+
directory: dir,
|
181
|
+
total: stats["total"].to_s,
|
182
|
+
documented: stats["documented"].to_s,
|
183
|
+
coverage_percentage: "#{coverage}%",
|
184
|
+
}
|
192
185
|
end
|
193
186
|
|
187
|
+
table = TableTennis.new(
|
188
|
+
table_data,
|
189
|
+
{
|
190
|
+
title: "Entity coverage per directory",
|
191
|
+
headers: {
|
192
|
+
file: "Directory",
|
193
|
+
total: "Total Entities",
|
194
|
+
documented: "Documented Entities",
|
195
|
+
coverage_percentage: "Coverage %",
|
196
|
+
},
|
197
|
+
titleize: true,
|
198
|
+
layout: true,
|
199
|
+
},
|
200
|
+
)
|
201
|
+
|
194
202
|
say table
|
195
203
|
end
|
196
204
|
|
197
205
|
def display_file_coverage(reports)
|
198
|
-
|
199
|
-
|
200
|
-
# Create table
|
201
|
-
table = Terminal::Table.new(
|
202
|
-
title: "File Coverage",
|
203
|
-
headings: ["File", "Undocumented Entities", "Coverage %"],
|
204
|
-
style: {
|
205
|
-
border_x: "-",
|
206
|
-
border_y: "|",
|
207
|
-
border_i: "+",
|
208
|
-
},
|
209
|
-
)
|
210
|
-
|
206
|
+
# Prepare data for table_tennis
|
207
|
+
table_data = []
|
211
208
|
reports.each do |report|
|
212
209
|
report.file_reports.each do |file_report|
|
213
210
|
file_path = file_report["file"]
|
214
211
|
|
215
212
|
# Format undocumented entities as "TYPE name, TYPE name, ..."
|
216
|
-
|
213
|
+
undocumented = file_report["undocumented"].map do |entity_info|
|
217
214
|
"#{entity_info['type']} #{entity_info['name']}"
|
218
215
|
end.join(", ")
|
219
216
|
|
220
217
|
coverage = file_report["coverage"].round(2)
|
221
|
-
|
218
|
+
|
219
|
+
table_data << {
|
220
|
+
filename: File.basename(file_path),
|
221
|
+
undocumented_entities: if undocumented.empty?
|
222
|
+
"None"
|
223
|
+
else
|
224
|
+
undocumented
|
225
|
+
end,
|
226
|
+
coverage_percentage: "#{coverage}%",
|
227
|
+
}
|
222
228
|
end
|
223
229
|
end
|
224
230
|
|
231
|
+
table = TableTennis.new(
|
232
|
+
table_data,
|
233
|
+
{
|
234
|
+
title: "Entity coverage in file",
|
235
|
+
headers: {
|
236
|
+
filename: "Filename",
|
237
|
+
undocumented_entities: "Undocumented Entities",
|
238
|
+
coverage_percentage: "Coverage %",
|
239
|
+
},
|
240
|
+
titleize: true,
|
241
|
+
layout: {
|
242
|
+
filename: 30,
|
243
|
+
undocumented_entities: 50,
|
244
|
+
coverage_percentage: 20,
|
245
|
+
},
|
246
|
+
},
|
247
|
+
)
|
248
|
+
|
225
249
|
say table
|
226
250
|
end
|
227
251
|
|
@@ -229,22 +253,35 @@ module Expressir
|
|
229
253
|
# Get structured report for overall statistics
|
230
254
|
overall = build_structured_report(reports)["overall"]
|
231
255
|
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
256
|
+
coverage_percentage = overall["coverage_percentage"]
|
257
|
+
table_data = [
|
258
|
+
{
|
259
|
+
metric: "Coverage Percentage",
|
260
|
+
value: "#{coverage_percentage}%",
|
261
|
+
},
|
262
|
+
{
|
263
|
+
metric: "Total Entities",
|
264
|
+
value: overall["total_entities"].to_s,
|
265
|
+
},
|
266
|
+
{
|
267
|
+
metric: "Documented Entities",
|
268
|
+
value: overall["documented_entities"].to_s,
|
269
|
+
},
|
270
|
+
{
|
271
|
+
metric: "Undocumented Entities",
|
272
|
+
value: overall["undocumented_entities"].to_s,
|
273
|
+
},
|
274
|
+
]
|
275
|
+
|
276
|
+
table = TableTennis.new(
|
277
|
+
table_data,
|
278
|
+
{
|
279
|
+
title: "Entity overall coverage",
|
280
|
+
titleize: true,
|
281
|
+
layout: true,
|
238
282
|
},
|
239
283
|
)
|
240
284
|
|
241
|
-
table.add_row ["Coverage Percentage",
|
242
|
-
"#{overall['coverage_percentage']}%"]
|
243
|
-
table.add_row ["Total Entities", overall["total_entities"]]
|
244
|
-
table.add_row ["Documented Entities", overall["documented_entities"]]
|
245
|
-
table.add_row ["Undocumented Entities",
|
246
|
-
overall["undocumented_entities"]]
|
247
|
-
|
248
285
|
say table
|
249
286
|
end
|
250
287
|
|
@@ -253,6 +290,15 @@ module Expressir
|
|
253
290
|
ignored_files = reports.flat_map(&:ignored_file_reports)
|
254
291
|
ignored_entities_count = ignored_files.sum { |f| f["total"] }
|
255
292
|
|
293
|
+
total = reports.sum { |r| r.total_entities.size }
|
294
|
+
documented = reports.sum { |r| r.documented_entities.size }
|
295
|
+
|
296
|
+
coverage_per = if total.positive?
|
297
|
+
(documented.to_f / total * 100).round(2)
|
298
|
+
else
|
299
|
+
100.0
|
300
|
+
end
|
301
|
+
|
256
302
|
overall_stats = {
|
257
303
|
"total_entities" => reports.sum { |r| r.total_entities.size },
|
258
304
|
"documented_entities" => reports.sum do |r|
|
@@ -261,17 +307,7 @@ module Expressir
|
|
261
307
|
"undocumented_entities" => reports.sum do |r|
|
262
308
|
r.undocumented_entities.size
|
263
309
|
end,
|
264
|
-
"coverage_percentage" =>
|
265
|
-
r.total_entities.size
|
266
|
-
end.positive?
|
267
|
-
(reports.sum do |r|
|
268
|
-
r.documented_entities.size
|
269
|
-
end.to_f / reports.sum do |r|
|
270
|
-
r.total_entities.size
|
271
|
-
end * 100).round(2)
|
272
|
-
else
|
273
|
-
100.0
|
274
|
-
end,
|
310
|
+
"coverage_percentage" => coverage_per,
|
275
311
|
}
|
276
312
|
|
277
313
|
# Add ignored file information if there are any
|
@@ -28,7 +28,8 @@ module Expressir
|
|
28
28
|
x.set_initial_path(path)
|
29
29
|
end
|
30
30
|
rescue StandardError => e
|
31
|
-
raise InvalidSchemaManifestError,
|
31
|
+
raise InvalidSchemaManifestError,
|
32
|
+
"Invalid schema manifest format: #{e.message}"
|
32
33
|
end
|
33
34
|
|
34
35
|
def to_file(to_path = path)
|
data/lib/expressir/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: expressir
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.26
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-10-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: base64
|
@@ -109,19 +109,19 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '1.11'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: table_tennis
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
117
|
+
version: '0'
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - "
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
124
|
+
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: thor
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|