junoser 0.3.6 → 0.3.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aad8f66767a6bbd785c15d36e318d8ba367ccb6736d3fb8059f181b3abfde8fe
4
- data.tar.gz: 0e146503ef7ce0cdb38b06af0ed0a3424267a08f012523d999f74e9ff182d3fa
3
+ metadata.gz: d9032031b1b9337962f14983300d1f8df49b50d25fa74ee4682326e707e65d09
4
+ data.tar.gz: 206444746921cd0c0ee08dc51ea901ae1a31ff5ff41597949b0335b2a5cb2d24
5
5
  SHA512:
6
- metadata.gz: 13654e7095a17dae55a8b93d3b3f51b8d384f2559e4e8f9261828260e3bc85a89e007b7e01bcff9e5a33850b04a0188c0d4304f4b27eb3a60d6e5b0b34490e71
7
- data.tar.gz: 153e61af2f23d28918e887db0396cd1886177ff95a90ad38a01ccbdb0ebefd1b6e4f06f4d2d9dd16412363796e9a2c7e3dc6234f93f84e6a8d5c08edf4c3d0db
6
+ metadata.gz: 487c75c7693d9988be1205b80ef034dc3df72618c74895d531d56b94f3edfed813dba103bb2eb31d56f3f56852fcc4b7dc02c2c5daab15d5e8a479ddfa0f76db
7
+ data.tar.gz: 77e5906748293b917c4fdfc9f46d1db4153212109194ac827b9a76ef78158c1e6c7651004fe17dd506f20ea91f652b78abe274d6442a64cfa541f4be3d0f70e2
data/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ ## [0.3.7] - 2019-09-03
2
+
3
+ ### Fixed
4
+
5
+ * "apply-groups" translation between "display set" and structured form
6
+
7
+ ### Added
8
+
9
+ * Support "deactivate ... apply-groups"
10
+
11
+
1
12
  ## [0.3.6] - 2019-08-25
2
13
 
3
14
  ### Fixed
data/Gemfile.lock CHANGED
@@ -1,19 +1,19 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- junoser (0.3.6)
4
+ junoser (0.3.7)
5
5
  parslet
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  mini_portile2 (2.4.0)
11
- nokogiri (1.10.0)
11
+ nokogiri (1.10.4)
12
12
  mini_portile2 (~> 2.4.0)
13
13
  parslet (1.8.2)
14
- power_assert (1.1.3)
14
+ power_assert (1.1.5)
15
15
  rake (10.5.0)
16
- test-unit (3.2.9)
16
+ test-unit (3.3.3)
17
17
  power_assert
18
18
 
19
19
  PLATFORMS
@@ -27,4 +27,4 @@ DEPENDENCIES
27
27
  test-unit
28
28
 
29
29
  BUNDLED WITH
30
- 2.0.1
30
+ 2.0.2
@@ -26,7 +26,7 @@ module Junoser
26
26
  alias << push
27
27
 
28
28
  def deactivate(deactivated_line)
29
- statement, store = matched(deactivated_line)
29
+ statement, store = match(deactivated_line)
30
30
 
31
31
  if statement
32
32
  if statement == deactivated_line
@@ -35,7 +35,7 @@ module Junoser
35
35
  store.deactivate(deactivated_line.sub(/^#{statement} */, ''))
36
36
  end
37
37
  else
38
- statement, store = inverse_matched(deactivated_line)
38
+ statement, store = inverse_match(deactivated_line)
39
39
  if statement
40
40
  store.deactivated = true
41
41
  end
@@ -75,19 +75,19 @@ module Junoser
75
75
  str
76
76
  end
77
77
 
78
- def matched(str)
78
+ def match(str)
79
79
  each do |statement, store|
80
80
  # NOTE: return the first object
81
- return [statement, store] if str =~ /^#{statement}/
81
+ return [statement, store] if str =~ /^#{Regexp.escape(statement)}(\b|$)/
82
82
  end
83
83
 
84
84
  []
85
85
  end
86
86
 
87
- def inverse_matched(str)
87
+ def inverse_match(str)
88
88
  each do |statement, store|
89
89
  # NOTE: return the first object
90
- return [statement, store] if statement =~ /^#{str}/
90
+ return [statement, store] if statement =~ /^#{str}\b/
91
91
  end
92
92
 
93
93
  []
@@ -15,14 +15,29 @@ module Junoser
15
15
  parser = Junoser::Parser.new
16
16
  transform = Junoser::Transformer.new
17
17
 
18
- config = Junoser::Input.new(@input).read.split("\n")
19
- deactivated_lines = config.grep(/^deactivate /).map {|l| l.sub(/^deactivate /, '') }
18
+ config = Junoser::Input.new(@input).read.split("\n").map(&:strip)
19
+ deactivated_lines = []
20
20
 
21
21
  config.each do |line|
22
- next if line =~ /^deactivate /
22
+ # .xsd doesn't include "apply-groups"
23
+ apply_groups = trim_apply_groups(line)
24
+ if line == 'set'
25
+ @config << apply_groups
26
+ next
27
+ end
28
+
29
+ if line =~ /^deactivate *(.*)/
30
+ deactivated_lines << "#$1 #{apply_groups}".strip
31
+ next
32
+ end
23
33
 
24
34
  transformed = transform.apply(parser.parse(line))
25
- raise "ERROR: parse failed" unless transformed.is_a?(String)
35
+ raise "ERROR: Failed to parse \"#{line}\"" unless transformed.is_a?(String)
36
+
37
+ if apply_groups
38
+ transformed << "\n#{apply_groups}"
39
+ end
40
+
26
41
  @config << transformed
27
42
  end
28
43
 
@@ -30,6 +45,13 @@ module Junoser
30
45
 
31
46
  @config.to_s
32
47
  end
48
+
49
+ private
50
+
51
+ def trim_apply_groups(line)
52
+ line.gsub! /\s+(apply-groups\s+.*)/, ''
53
+ return $1
54
+ end
33
55
  end
34
56
  end
35
57
  end
@@ -22,7 +22,8 @@ module Junoser
22
22
  end
23
23
 
24
24
  begin
25
- if line =~ /(.*)\s+apply-groups\s+\S+$/
25
+ # .xsd doesn't include "apply-groups"
26
+ if line =~ /(.*)\s+apply-groups\s+(\S+|\[.*\])$/
26
27
  return $1 == 'set' ? true : parse($1)
27
28
  end
28
29
 
data/lib/junoser/ruler.rb CHANGED
@@ -199,7 +199,8 @@ module Junoser
199
199
  end
200
200
 
201
201
  begin
202
- if line =~ /(.*)\\s+apply-groups\\s+\\S+\$/
202
+ # .xsd doesn't include "apply-groups"
203
+ if line =~ /(.*)\\s+apply-groups\\s+(\\S+|\\[.*\\])$/
203
204
  return \$1 == 'set' ? true : parse(\$1)
204
205
  end
205
206
 
@@ -1,3 +1,3 @@
1
1
  module Junoser
2
- VERSION = "0.3.6"
2
+ VERSION = "0.3.7"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: junoser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shintaro Kojima
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-08-24 00:00:00.000000000 Z
11
+ date: 2019-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parslet