dcm 0.0.18 → 0.0.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/lib/cli.rb +26 -3
  3. data/lib/codinginfo.rb +13 -7
  4. data/lib/version.rb +1 -1
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3aaa1587b03304465c420597c49eb4e1f2da31b398179619a369a661e132f403
4
- data.tar.gz: 7f50432f400c44d7df6811be4824074e5e3b4ddd6ba093bf56228d2844365719
3
+ metadata.gz: 4d628a829c6685c8e7a0912aab7fbbe5e816c6a20ad68cc2f1d49373bc565d62
4
+ data.tar.gz: dee9ecd34e9c2ae2cb0349ecbcb2ca90b265bf1dffd0204801d0e936fe7e8814
5
5
  SHA512:
6
- metadata.gz: 4c30e958e78c5a792876bd5cd82efa5203e1aa68c743f7ea3c6cb5adda5df6de955d2b4005c4ebcf02fa5759c1383260118e64db93f38c6653cc046257e557bc
7
- data.tar.gz: 8e6c1b9898ddfa1aeaee8ac0d714ef1a25667441f9b46870c41da349dbd58826c6afc28415cecbb16ebcf9b9b50d341e2b9c2c472d0c6904a1b1117583ab8062
6
+ metadata.gz: 66300d2112c0ee4b0f71f479b0aae344ecd1955d21570890ee889ce1831fe3655649b427619bb07e0826c78f8b38007f60752023cb9d5be31d894963660546fe
7
+ data.tar.gz: 8a518059bd41715dad48f32dbf963f2bd6c2ac3e7ab1a906b01cb392e8b6e0d0f32859f5fc97c8c482b40fe9b9658095a66bbbb6166b9677ad78c71cb083247f
data/lib/cli.rb CHANGED
@@ -19,6 +19,17 @@ module Dcm
19
19
 
20
20
  class CLI < Thor
21
21
 
22
+ check_unknown_options!
23
+
24
+ def help
25
+ super
26
+ puts <<~EOS
27
+ Options:
28
+ FILTER may be any of the following keys: #{VariantFilter::ALLOWED_FILTERKEYS.join(", ")}
29
+ and should have the format key:value
30
+ EOS
31
+ end
32
+
22
33
  desc "show FILE", "Show all labels in FILE"
23
34
  option :oneline, type: :boolean, aliases: ["-l"]
24
35
  def show(file=nil)
@@ -26,7 +37,7 @@ module Dcm
26
37
  end
27
38
 
28
39
  desc "new [SPEC]", "Create a new dcm from scratch"
29
- option :indented, aliases: ["-i"], type: :boolean, default: false
40
+ option :indented, aliases: ["-i"], type: :boolean, default: false
30
41
  def new(*spec)
31
42
  list = parse_spec(spec)
32
43
  puts list.to_dcm(option[:indented])
@@ -43,18 +54,30 @@ module Dcm
43
54
 
44
55
  desc "creta2begu FILTER CODING FILE", "Convert a hierarchical DCM to a flat DCM"
45
56
  def creta2begu(expr, codingpath, file)
57
+ filter = VariantFilter.new(expr)
46
58
  list = parse_file(file)
47
59
 
48
- puts Codinginfo.new(codingpath, VariantFilter.new(expr))
60
+ puts Codinginfo.new(codingpath, filter)
49
61
  .flatten_list(list)
50
62
  .to_dcm
51
63
  end
52
64
 
65
+ desc "creta2filt FILTER CODING FILE", "Filter a hierarchical DCM"
66
+ def creta2filt(expr, codingpath, file)
67
+ filter = VariantFilter.new(expr)
68
+ list = parse_file(file)
69
+
70
+ puts Codinginfo.new(codingpath, filter)
71
+ .filter_list(list)
72
+ .to_dcm
73
+ end
74
+
53
75
  desc "begu2creta FILTER CODING FILE", "Convert a flat DCM to a hierarchical DCM"
54
76
  def begu2creta(expr, codingpath, file)
77
+ filter = VariantFilter.new(expr)
55
78
  list = parse_file(file)
56
79
 
57
- puts Codinginfo.new(codingpath, VariantFilter.new(expr))
80
+ puts Codinginfo.new(codingpath, filter)
58
81
  .unflatten_list(list)
59
82
  .to_dcm
60
83
  end
data/lib/codinginfo.rb CHANGED
@@ -18,7 +18,7 @@ class Codinginfo
18
18
  @assignments = []
19
19
  end
20
20
 
21
- def match?(assignments, label)
21
+ def match?(label)
22
22
  # assignments
23
23
  # .values
24
24
  # .select { _1.name == name }
@@ -31,7 +31,7 @@ class Codinginfo
31
31
  if package
32
32
  [name, package, value].join("_") + "."
33
33
  else
34
- /^#{name}_([A-Za-z]+_)?#{value}\./
34
+ /^#{name}_([A-Za-z0-9]+_)?#{value}\./
35
35
  end
36
36
  end
37
37
 
@@ -59,6 +59,10 @@ class Codinginfo
59
59
  .map { Cvar.new(name: _1, value: _2.to_i) }
60
60
  end
61
61
 
62
+ def has_matching_cvar?(label)
63
+ cvars.any? { _1.match?(label) }
64
+ end
65
+
62
66
  def description = @properties[:swfk_id]
63
67
  end
64
68
 
@@ -132,11 +136,17 @@ class Codinginfo
132
136
 
133
137
  def flatten_list(list)
134
138
  list
135
- .select { !cvar_coded?(_1) || has_matching_cvar?(_1) }
139
+ .select { !cvar_coded?(_1) || variant.has_matching_cvar?(_1) }
136
140
  .map_int { _1.with(name: remove_cvar_prefix(_1.name)) }
137
141
  .with(headers: variants_description)
138
142
  end
139
143
 
144
+ def filter_list(list)
145
+ list
146
+ .select { |label| !cvar_coded?(label) || @variants.any? { _1.has_matching_cvar?(label) } }
147
+ .with(headers: variants_description)
148
+ end
149
+
140
150
  def cvar_coded?(label)
141
151
  label.name.match?(CVAR_PREFIX_REGEXP)
142
152
  end
@@ -145,10 +155,6 @@ class Codinginfo
145
155
  @assignments.key?(label.name)
146
156
  end
147
157
 
148
- def has_matching_cvar?(label)
149
- variant.cvars.any? { _1.match?(@assignments, label) }
150
- end
151
-
152
158
  def add_cvar_prefix(name, variant)
153
159
  variant
154
160
  .cvars
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Dcm
2
- VERSION = "0.0.18"
2
+ VERSION = "0.0.21"
3
3
  end
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.18
4
+ version: 0.0.21
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-12-10 00:00:00.000000000 Z
11
+ date: 2024-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: automotive-ecu