dcm 0.0.11 → 0.0.12
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/lib/cli.rb +3 -16
- data/lib/codinginfo.rb +5 -10
- data/lib/variant_filter.rb +27 -0
- data/lib/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d6c6d8b3341afdbe2ee6d4fbb596409e364844ca8e16552e6b2deb22756609a
|
4
|
+
data.tar.gz: 7881fdc1335265a96d70e88121dca3c5cfee693c328b1f8518a9952633e13bca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 246e46a81052ddb1c86a49c529979e7e9134b129b6d68d58756ce319b84453d2b9b9d155e424ff748eaea226ab40774f5f11971ee3a43df36374dd2b2bbbcf7e
|
7
|
+
data.tar.gz: aaec1159240e20cc19caf6be99b9f8d62c6c8c04d40441957c6f1d34febc4de28dc069fac4aca833aa795a409524457e533b584af044349b4d2b62e067fbf141
|
data/lib/cli.rb
CHANGED
@@ -11,6 +11,7 @@ require_relative "codinginfo"
|
|
11
11
|
require_relative "tempfile_handler"
|
12
12
|
require_relative "diff_viewer"
|
13
13
|
require_relative "label_selector"
|
14
|
+
require_relative "variant_filter"
|
14
15
|
require_relative "core_ext"
|
15
16
|
require_relative "version"
|
16
17
|
|
@@ -18,8 +19,6 @@ module Dcm
|
|
18
19
|
|
19
20
|
class CLI < Thor
|
20
21
|
|
21
|
-
ALLOWED_FILTERKEYS = [:swfk_id, :typekey, :devkey]
|
22
|
-
|
23
22
|
desc "show FILE", "Show all labels in FILE"
|
24
23
|
option :oneline, type: :boolean, aliases: ["-l"]
|
25
24
|
def show(file=nil)
|
@@ -46,7 +45,7 @@ module Dcm
|
|
46
45
|
def creta2begu(expr, codingpath, file)
|
47
46
|
list = parse_file(file)
|
48
47
|
|
49
|
-
puts Codinginfo.new(codingpath,
|
48
|
+
puts Codinginfo.new(codingpath, VariantFilter.new(expr))
|
50
49
|
.flatten_list(list)
|
51
50
|
.to_dcm
|
52
51
|
end
|
@@ -55,7 +54,7 @@ module Dcm
|
|
55
54
|
def begu2creta(expr, codingpath, file)
|
56
55
|
list = parse_file(file)
|
57
56
|
|
58
|
-
puts Codinginfo.new(codingpath,
|
57
|
+
puts Codinginfo.new(codingpath, VariantFilter.new(expr))
|
59
58
|
.unflatten_list(list)
|
60
59
|
.to_dcm
|
61
60
|
end
|
@@ -256,18 +255,6 @@ module Dcm
|
|
256
255
|
Ecu::LabelList.new([label])
|
257
256
|
end
|
258
257
|
|
259
|
-
def check_filter(expr)
|
260
|
-
return if ALLOWED_FILTERKEYS.include?(expr.split(":").first)
|
261
|
-
|
262
|
-
fail "Unknown filter expression #{expr}. Possible keys are #{ALLOWED_FILTERKEYS.join(", ")}. Use key:value1,value2 syntax."
|
263
|
-
end
|
264
|
-
|
265
|
-
def parse_filter(expr)
|
266
|
-
expr
|
267
|
-
.split(":")
|
268
|
-
.then { { _1.to_sym => _2.split(",") } }
|
269
|
-
end
|
270
|
-
|
271
258
|
def display_list(list:, detail:, format: :tty)
|
272
259
|
case format
|
273
260
|
when :tty
|
data/lib/codinginfo.rb
CHANGED
@@ -49,6 +49,7 @@ class Codinginfo
|
|
49
49
|
|
50
50
|
def initialize(filepath, filter)
|
51
51
|
@doc = SimpleXlsxReader.open(filepath)
|
52
|
+
@filter = filter
|
52
53
|
@headers = []
|
53
54
|
@variants = []
|
54
55
|
@assignments = {}
|
@@ -57,7 +58,7 @@ class Codinginfo
|
|
57
58
|
.rows
|
58
59
|
.each do |row|
|
59
60
|
next unless headers_parsed?(row)
|
60
|
-
next unless
|
61
|
+
next unless filter.match?(@headers, row)
|
61
62
|
|
62
63
|
@variants << Variant.new(@headers, row)
|
63
64
|
end
|
@@ -85,22 +86,16 @@ class Codinginfo
|
|
85
86
|
.tap { fail "Cannot find sheet Parameterdefinition" if _1.nil? }
|
86
87
|
end
|
87
88
|
|
88
|
-
def matches_filter?(row, key, values)
|
89
|
-
return false unless row[3]
|
90
|
-
return false unless row[3].match?(/CVAR/)
|
91
|
-
return false unless @headers.include?(key)
|
92
|
-
|
93
|
-
values.any? { row[@headers.index(key)].match?(/#{_1}/i) }
|
94
|
-
end
|
95
|
-
|
96
89
|
def variant
|
97
|
-
fail "No variant matching #{
|
90
|
+
fail "No variant matching #{@filter} found!" if @variants.empty?
|
98
91
|
fail "More than one variant matching #{id} found!" if @variants.size > 1
|
99
92
|
|
100
93
|
@variants.first
|
101
94
|
end
|
102
95
|
|
103
96
|
def unflatten_list(list)
|
97
|
+
fail "No variants found matching #{@filter}" if @variants.empty?
|
98
|
+
|
104
99
|
Ecu::LabelList.new \
|
105
100
|
list.flat_map { |label|
|
106
101
|
if has_cvar_assignment?(label)
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Dcm
|
2
|
+
class VariantFilter
|
3
|
+
ALLOWED_FILTERKEYS = %w(swfk_id typekey devkey)
|
4
|
+
|
5
|
+
attr_reader :key, :matchers
|
6
|
+
def initialize(expr)
|
7
|
+
unless expr.match?(/^[\w_]+\:/) && ALLOWED_FILTERKEYS.include?(expr.split(":").first)
|
8
|
+
fail "Unknown filter expression #{expr}. "
|
9
|
+
"Syntax: (#{ALLOWED_FILTERKEYS.join("|")}):value[,value2]."
|
10
|
+
end
|
11
|
+
|
12
|
+
key, matchers = expr.split(":")
|
13
|
+
@key = key.to_sym
|
14
|
+
@matchers = matchers.split(",").map { /#{_1}/i }
|
15
|
+
end
|
16
|
+
|
17
|
+
def match?(headers, row)
|
18
|
+
return false unless row[3]
|
19
|
+
return false unless row[3].match?(/CVAR/)
|
20
|
+
return false unless headers.include?(@key)
|
21
|
+
|
22
|
+
matchers.any? { row[headers.index(@key)].match?(_1) }
|
23
|
+
end
|
24
|
+
|
25
|
+
def to_s = "<Filter #{key}:#{matchers.join(",")}"
|
26
|
+
end
|
27
|
+
end
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dcm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonas Mueller
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-11-
|
11
|
+
date: 2024-11-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: automotive-ecu
|
@@ -84,6 +84,7 @@ files:
|
|
84
84
|
- lib/list_colorizer.rb
|
85
85
|
- lib/selecta.rb
|
86
86
|
- lib/tempfile_handler.rb
|
87
|
+
- lib/variant_filter.rb
|
87
88
|
- lib/version.rb
|
88
89
|
homepage: https://sr.ht/~muellerj/dcm
|
89
90
|
licenses:
|