dcm 0.0.18 → 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 +12 -6
  4. data/lib/version.rb +1 -1
  5. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3aaa1587b03304465c420597c49eb4e1f2da31b398179619a369a661e132f403
4
- data.tar.gz: 7f50432f400c44d7df6811be4824074e5e3b4ddd6ba093bf56228d2844365719
3
+ metadata.gz: ff41f6d733e28eebf919406315f8a48dad52e1ca0e0125596198f03cbc18ce49
4
+ data.tar.gz: 4975ccbbe1e3b4dbaff474e8001cefe68ebe064c6b6ed38e3c232cc8f2c96d2a
5
5
  SHA512:
6
- metadata.gz: 4c30e958e78c5a792876bd5cd82efa5203e1aa68c743f7ea3c6cb5adda5df6de955d2b4005c4ebcf02fa5759c1383260118e64db93f38c6653cc046257e557bc
7
- data.tar.gz: 8e6c1b9898ddfa1aeaee8ac0d714ef1a25667441f9b46870c41da349dbd58826c6afc28415cecbb16ebcf9b9b50d341e2b9c2c472d0c6904a1b1117583ab8062
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
@@ -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 }
@@ -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.20"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
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.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonas Mueller