dcm 0.0.18 → 0.0.20

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.
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