junoser 0.3.6 → 0.3.7

Sign up to get free protection for your applications and to get access to all the features.
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