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.
- checksums.yaml +4 -4
- data/lib/cli.rb +26 -3
- data/lib/codinginfo.rb +12 -6
- data/lib/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ff41f6d733e28eebf919406315f8a48dad52e1ca0e0125596198f03cbc18ce49
|
|
4
|
+
data.tar.gz: 4975ccbbe1e3b4dbaff474e8001cefe68ebe064c6b6ed38e3c232cc8f2c96d2a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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,
|
|
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,
|
|
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,
|
|
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?(
|
|
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