dcm 0.0.17 → 0.0.20

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 +30 -11
  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: 178c96d7543921916d9ce230357dcde49fae0c99d6cd6f7893ea340e24cbb169
4
- data.tar.gz: 193d267c359f51cb7ac48a15478916c4760118918941eb0721fa7bda4797c7a0
3
+ metadata.gz: ff41f6d733e28eebf919406315f8a48dad52e1ca0e0125596198f03cbc18ce49
4
+ data.tar.gz: 4975ccbbe1e3b4dbaff474e8001cefe68ebe064c6b6ed38e3c232cc8f2c96d2a
5
5
  SHA512:
6
- metadata.gz: be1e020c36af16f739a0a964ec4e294f496af0430380654d15127a691032e50a3065c72529eb4d0e3c2ab4062012c14956be0c77030a6e3aa768050897c9d261
7
- data.tar.gz: 3dd9027dfc17a483c9df7c7b99607142e86cc85c7767e58f2a2c759183ec1ac46cc1a6439962450f2f7b60ec0ff0cb92cd082c0a8ff92595010282a0af86a767
6
+ metadata.gz: f69c854cdb29bb6961c4c66b33a05e94a449a094618b9299e5dcc8116de1526185c248c2490797e83c5410bd9f3842593de5f91e0c7f9068ef93dedfc6346072
7
+ data.tar.gz: 6fd9a37661dbfbeaaf56dcca87f4eb4ea7abeb56c3ffd0e2864e07aa3f34f5ea732740e1cb5f7fa22638f85a08bb4519cc2b8c9981fe24cbe3fede11590c7a88
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
@@ -10,16 +10,29 @@ class Codinginfo
10
10
  # the package and value can be merged
11
11
 
12
12
  attr_reader :name, :value, :package
13
+ attr_accessor :assignments
13
14
  def initialize(name:, package: nil, value: nil)
14
- @name = name
15
- @package = package
16
- @value = value
15
+ @name = name
16
+ @package = package
17
+ @value = value
18
+ @assignments = []
17
19
  end
18
20
 
19
- def label_prefix
20
- return /^#{name}_(\w+_)?#{value}\./ if package.nil?
21
+ def match?(label)
22
+ # assignments
23
+ # .values
24
+ # .select { _1.name == name }
25
+ # .map { combine(_1) }
26
+ # .any? { label.name.match?(_1.label_prefix) }
27
+ label.name.match?(label_prefix)
28
+ end
21
29
 
22
- [name, package, value].join("_") + "."
30
+ def label_prefix
31
+ if package
32
+ [name, package, value].join("_") + "."
33
+ else
34
+ /^#{name}_([A-Za-z]+_)?#{value}\./
35
+ end
23
36
  end
24
37
 
25
38
  def to_s = "#{name}=#{value}"
@@ -46,6 +59,10 @@ class Codinginfo
46
59
  .map { Cvar.new(name: _1, value: _2.to_i) }
47
60
  end
48
61
 
62
+ def has_matching_cvar?(label)
63
+ cvars.any? { _1.match?(label) }
64
+ end
65
+
49
66
  def description = @properties[:swfk_id]
50
67
  end
51
68
 
@@ -119,11 +136,17 @@ class Codinginfo
119
136
 
120
137
  def flatten_list(list)
121
138
  list
122
- .select { !cvar_coded?(_1) || has_matching_cvar?(_1) }
139
+ .select { !cvar_coded?(_1) || variant.has_matching_cvar?(_1) }
123
140
  .map_int { _1.with(name: remove_cvar_prefix(_1.name)) }
124
141
  .with(headers: variants_description)
125
142
  end
126
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
+
127
150
  def cvar_coded?(label)
128
151
  label.name.match?(CVAR_PREFIX_REGEXP)
129
152
  end
@@ -132,10 +155,6 @@ class Codinginfo
132
155
  @assignments.key?(label.name)
133
156
  end
134
157
 
135
- def has_matching_cvar?(label)
136
- variant.cvars.any? { label.name.match?(_1.label_prefix) }
137
- end
138
-
139
158
  def add_cvar_prefix(name, variant)
140
159
  variant
141
160
  .cvars
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Dcm
2
- VERSION = "0.0.17"
2
+ VERSION = "0.0.20"
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.17
4
+ version: 0.0.20
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-05 00:00:00.000000000 Z
11
+ date: 2024-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: automotive-ecu