poe-css 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +186 -0
  4. data/.ruby-version +1 -0
  5. data/CONTRIBUTING.md +85 -0
  6. data/Gemfile +5 -0
  7. data/Gemfile.lock +105 -0
  8. data/LICENSE.txt +22 -0
  9. data/README.md +275 -0
  10. data/Rakefile +10 -0
  11. data/bin/poe-css +14 -0
  12. data/demo/Gemfile +11 -0
  13. data/demo/Gemfile.lock +45 -0
  14. data/demo/app.rb +21 -0
  15. data/demo/views/index.haml +105 -0
  16. data/lib/dependencies.rb +11 -0
  17. data/lib/poe-css.rb +253 -0
  18. data/lib/poe-css/generator.rb +108 -0
  19. data/lib/poe-css/parser.rb +177 -0
  20. data/lib/poe-css/preprocessor.rb +186 -0
  21. data/lib/poe-css/simplifier.rb +201 -0
  22. data/lib/poe-css/version.rb +5 -0
  23. data/poe-css.gemspec +32 -0
  24. data/tests/poecss/all-clauses-1.output +23 -0
  25. data/tests/poecss/all-clauses-1.poecss +24 -0
  26. data/tests/poecss/alternation-1.output +8 -0
  27. data/tests/poecss/alternation-1.poecss +4 -0
  28. data/tests/poecss/nesting-1.output +8 -0
  29. data/tests/poecss/nesting-1.poecss +8 -0
  30. data/tests/poecss/nesting-2.output +30 -0
  31. data/tests/poecss/nesting-2.poecss +23 -0
  32. data/tests/poecss/nesting-3.output +15 -0
  33. data/tests/poecss/nesting-3.poecss +15 -0
  34. data/tests/poecss/nesting-4.output +14 -0
  35. data/tests/poecss/nesting-4.poecss +13 -0
  36. data/tests/poecss/performance-1.output +3 -0
  37. data/tests/poecss/performance-1.poecss +59 -0
  38. data/tests/poecss/performance-2.output +60 -0
  39. data/tests/poecss/performance-2.poecss +75 -0
  40. data/tests/poecss/rule-ordering-1.output +25 -0
  41. data/tests/poecss/rule-ordering-1.poecss +30 -0
  42. data/tests/poecss/rule-ordering-2.output +3 -0
  43. data/tests/poecss/rule-ordering-2.poecss +29 -0
  44. data/tests/poecss/rule-ordering-3.output +30 -0
  45. data/tests/poecss/rule-ordering-3.poecss +29 -0
  46. data/tests/poecss/rule-ordering-4.output +20 -0
  47. data/tests/poecss/rule-ordering-4.poecss +30 -0
  48. data/tests/poecss/rule-ordering-5.output +8 -0
  49. data/tests/poecss/rule-ordering-5.poecss +9 -0
  50. data/tests/poecss/rule-ordering-6.output +7 -0
  51. data/tests/poecss/rule-ordering-6.poecss +14 -0
  52. data/tests/poecss/simple-1.output +7 -0
  53. data/tests/poecss/simple-1.poecss +8 -0
  54. data/tests/poecss/simplification-1.output +6 -0
  55. data/tests/poecss/simplification-1.poecss +7 -0
  56. data/tests/poecss/simplification-2.output +6 -0
  57. data/tests/poecss/simplification-2.poecss +8 -0
  58. data/tests/poecss/simplification-3.output +2 -0
  59. data/tests/poecss/simplification-3.poecss +3 -0
  60. data/tests/poecss/simplification-4.output +3 -0
  61. data/tests/poecss/simplification-4.poecss +4 -0
  62. data/tests/poecss/simplification-5.output +3 -0
  63. data/tests/poecss/simplification-5.poecss +8 -0
  64. data/tests/poecss/simplification-6.output +2 -0
  65. data/tests/poecss/simplification-6.poecss +4 -0
  66. data/tests/preprocessor/arity-mismatch-1.error.preprocessor +4 -0
  67. data/tests/preprocessor/arity-mismatch-2.error.preprocessor +4 -0
  68. data/tests/preprocessor/complex.output +20 -0
  69. data/tests/preprocessor/complex.preprocessor +19 -0
  70. data/tests/preprocessor/empty.output +0 -0
  71. data/tests/preprocessor/empty.preprocessor +0 -0
  72. data/tests/preprocessor/macro-newlines.output +5 -0
  73. data/tests/preprocessor/macro-newlines.preprocessor +9 -0
  74. data/tests/preprocessor/macro.output +3 -0
  75. data/tests/preprocessor/macro.preprocessor +7 -0
  76. data/tests/preprocessor/missing-identifier-1.error.preprocessor +1 -0
  77. data/tests/preprocessor/missing-identifier-2.error.preprocessor +1 -0
  78. data/tests/preprocessor/normal-newlines.output +2 -0
  79. data/tests/preprocessor/normal-newlines.preprocessor +2 -0
  80. data/tests/preprocessor/parse-error-1.error.preprocessor +1 -0
  81. data/tests/preprocessor/parse-error-2.error.preprocessor +1 -0
  82. data/tests/preprocessor/parse-error-3.error.preprocessor +4 -0
  83. data/tests/preprocessor/simple.output +1 -0
  84. data/tests/preprocessor/simple.preprocessor +3 -0
  85. data/tests/run-all-tests.rb +60 -0
  86. data/tests/unit/simplify-bounds-test.rb +57 -0
  87. data/tests/unit/stricter-query-test.rb +24 -0
  88. metadata +292 -0
@@ -0,0 +1,7 @@
1
+ Show
2
+ Rarity = Unique
3
+ SetTextColor 255 0 0 255
4
+
5
+ Show
6
+ ItemLevel >= 25
7
+
@@ -0,0 +1,8 @@
1
+ ItemLevel >= 25 {
2
+ Show
3
+ }
4
+
5
+ Rarity Unique {
6
+ Show
7
+ SetTextColor rgb(255, 0, 0)
8
+ }
@@ -0,0 +1,6 @@
1
+ Hide
2
+ ItemLevel > 25
3
+
4
+ Show
5
+ ItemLevel < 25
6
+
@@ -0,0 +1,7 @@
1
+ ItemLevel < 25 {
2
+ Show
3
+ }
4
+
5
+ ItemLevel > 25 {
6
+ Hide
7
+ }
@@ -0,0 +1,6 @@
1
+ Hide
2
+ Identified False
3
+
4
+ Show
5
+ Identified True
6
+
@@ -0,0 +1,8 @@
1
+ Identified {
2
+ Show
3
+ }
4
+
5
+ Identified False {
6
+ Hide
7
+ }
8
+
@@ -0,0 +1,2 @@
1
+ Show
2
+ ItemLevel >= 26
@@ -0,0 +1,3 @@
1
+ ItemLevel >= 25, ItemLevel >= 26 {
2
+ Show
3
+ }
@@ -0,0 +1,3 @@
1
+ Show
2
+ Class "A" "B"
3
+ SetFontSize 13
@@ -0,0 +1,4 @@
1
+ Class A B, Class A B C {
2
+ Show
3
+ SetFontSize 13
4
+ }
@@ -0,0 +1,3 @@
1
+ Show
2
+ Class "A"
3
+ SetFontSize 13
@@ -0,0 +1,8 @@
1
+ Class A {
2
+ Show
3
+
4
+ Class A {
5
+ Show
6
+ SetFontSize 13
7
+ }
8
+ }
@@ -0,0 +1,2 @@
1
+ Show
2
+ ItemLevel >= 25
@@ -0,0 +1,4 @@
1
+ ItemLevel >= 25 {
2
+ Hide
3
+ Show
4
+ }
@@ -0,0 +1,4 @@
1
+ @macro(@a) {
2
+ }
3
+
4
+ @macro()
@@ -0,0 +1,4 @@
1
+ @macro(@a) {
2
+ }
3
+
4
+ @macro(1, 2)
@@ -0,0 +1,20 @@
1
+ first invocation:
2
+
3
+ first: 5
4
+ second: this is a string
5
+ third: omg
6
+
7
+
8
+ second invocation:
9
+
10
+ first: this is a string
11
+ second: this is a string
12
+ third: omg
13
+
14
+
15
+ third invocation:
16
+
17
+ first: omg
18
+ second: this is a string
19
+ third: omg
20
+
@@ -0,0 +1,19 @@
1
+ @1cool_identifIer_1: 5
2
+ @b_: this is a string
3
+ @crazyIdentifier4: omg
4
+ @another-crazy-identifier: omg
5
+
6
+ @my_macro(@1cool_identifIer_1) {
7
+ first: @1cool_identifIer_1
8
+ second: @b_
9
+ third: @crazyIdentifier4
10
+ }
11
+
12
+ first invocation:
13
+ @my_macro(@1cool_identifIer_1)
14
+
15
+ second invocation:
16
+ @my_macro(@b_)
17
+
18
+ third invocation:
19
+ @my_macro(@another-crazy-identifier)
File without changes
File without changes
@@ -0,0 +1,5 @@
1
+ hello 1 hello
2
+
3
+ hello
4
+ 1
5
+ hello
@@ -0,0 +1,9 @@
1
+ @test() { 1 }
2
+
3
+ hello @test() hello
4
+
5
+ @test2() {
6
+ 1
7
+ }
8
+
9
+ hello@test2()hello
@@ -0,0 +1,3 @@
1
+ 1
2
+ 2
3
+ 3
@@ -0,0 +1,7 @@
1
+ @expand(@a, @b, @c) {
2
+ @a
3
+ @b
4
+ @c
5
+ }
6
+
7
+ @expand(1, 2, 3)
@@ -0,0 +1,2 @@
1
+ hello
2
+ just a code
@@ -0,0 +1,2 @@
1
+ hello
2
+ just a code
@@ -0,0 +1 @@
1
+ @create_macro() {
@@ -0,0 +1,4 @@
1
+ @create_macro() {
2
+ }
3
+
4
+ @create_macro(
@@ -0,0 +1,3 @@
1
+ @a: 5
2
+
3
+ @a
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'minitest'
4
+ require 'minitest/autorun'
5
+ require 'minitest/reporters'
6
+
7
+ require_relative '../lib/dependencies'
8
+
9
+ Dir.glob('unit/**/*-test.rb').each do |t|
10
+ require_relative t
11
+ end
12
+
13
+ TEST_FILES = Dir.glob('**/*.{preprocessor,poecss}').map { |input_file|
14
+ ext = File.extname(input_file)
15
+ expected_to_error = !!File.basename(input_file, ext)[/\.error$/]
16
+ output_file =
17
+ begin
18
+ f = File.join(File.dirname(input_file), File.basename(input_file, ext) + '.output')
19
+
20
+ if !File.exist?(f) && !expected_to_error
21
+ raise "Couldn't find output file #{f} for input file #{input_file}."
22
+ end
23
+
24
+ f
25
+ end
26
+
27
+ [
28
+ input_file,
29
+ output_file,
30
+ "test_#{input_file.gsub(/[^a-zA-Z_0-9]/, '_')}".to_sym,
31
+ preprocessor: ext == '.preprocessor',
32
+ expected_to_error: expected_to_error
33
+ ]
34
+ }
35
+
36
+ duplicate_test_name = TEST_FILES.group_by { |_, _, n| n }.find { |_, v| v.length > 1 }&.first
37
+ raise "Duplicate test name: #{duplicate_test_name}." if duplicate_test_name
38
+
39
+ class Tests < Minitest::Test
40
+ TEST_FILES.each do |input_file, output_file, test_name, options|
41
+ define_method(test_name) do
42
+ input = File.read(input_file)
43
+
44
+ get_output = proc {
45
+ if options[:preprocessor]
46
+ input_without_comments = input.split("\n").map { |l| l.gsub(/#.*$/, '') }.join("\n")
47
+ POECSS::Preprocessor.compile(input_without_comments)
48
+ else
49
+ POECSS.compile(input)
50
+ end
51
+ }
52
+
53
+ if options[:expected_to_error]
54
+ assert_raises(&get_output)
55
+ else
56
+ assert_equal File.read(output_file).strip, get_output.call.strip
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'minitest'
4
+ require 'minitest/autorun'
5
+
6
+ require_relative '../../lib/dependencies'
7
+
8
+ class SimplifyBoundsTest < Minitest::Test
9
+ def simplify_bounds(input)
10
+ parsed_input = input.split(',').map(&:strip).map { |bound|
11
+ op, num = bound.split(' ').map(&:chomp)
12
+ [ op, num.to_i ]
13
+ }
14
+
15
+ POECSS::Simplifier.send(:simplify_bounds, parsed_input)
16
+ end
17
+
18
+ def test_simplify_bounds
19
+ assert_nil simplify_bounds('>= 25, < 25')
20
+ assert_nil simplify_bounds('> 25, < 25')
21
+ assert_nil simplify_bounds('> 26, < 25')
22
+ assert_nil simplify_bounds('> 26, > 25, < 25')
23
+ assert_nil simplify_bounds('>= 25, <= 26, = 30')
24
+ assert_nil simplify_bounds('>= 25, < 26, = 26')
25
+
26
+ assert_equal [ [ '=', 25 ] ], simplify_bounds('>= 25, <= 25')
27
+ assert_equal [ [ '=', 25 ] ], simplify_bounds('>= 25, <= 26, = 25')
28
+
29
+ assert_equal [ [ '>', 25 ] ], simplify_bounds('> 25, > 25')
30
+ assert_equal [ [ '>', 25 ] ], simplify_bounds('> 25, > 24')
31
+ assert_equal [ [ '>', 26 ] ], simplify_bounds('> 25, > 26')
32
+ assert_equal [ [ '>', 25 ] ], simplify_bounds('> 25, >= 25')
33
+ assert_equal [ [ '>', 25 ] ], simplify_bounds('>= 25, > 25')
34
+
35
+ assert_equal [ [ '>=', 26 ] ], simplify_bounds('> 25, >= 26')
36
+ assert_equal [ [ '>=', 28 ] ], simplify_bounds('>= 28, >= 26')
37
+ assert_equal [ [ '>', 28 ] ], simplify_bounds('> 28, >= 26')
38
+
39
+ assert_equal [ [ '<', 25 ] ], simplify_bounds('< 25, < 25')
40
+ assert_equal [ [ '<', 24 ] ], simplify_bounds('< 25, < 24')
41
+ assert_equal [ [ '<', 25 ] ], simplify_bounds('< 25, < 26')
42
+ assert_equal [ [ '<', 25 ] ], simplify_bounds('< 25, <= 25')
43
+ assert_equal [ [ '<', 25 ] ], simplify_bounds('<= 25, < 25')
44
+
45
+ assert_equal [ [ '<', 25 ] ], simplify_bounds('< 25, <= 26')
46
+ assert_equal [ [ '<=', 26 ] ], simplify_bounds('<= 28, <= 26')
47
+ assert_equal [ [ '>', 28 ] ], simplify_bounds('> 28, >= 26')
48
+
49
+ assert_equal [ [ '>', 20 ], [ '<', 25 ] ], simplify_bounds('< 25, <= 26, > 20')
50
+ assert_equal [ [ '>', 21 ], [ '<', 25 ] ], simplify_bounds('< 25, <= 26, > 21, > 20')
51
+ assert_equal [ [ '>', 23 ], [ '<=', 26 ] ], simplify_bounds('<= 28, <= 26, > 23, > 20')
52
+
53
+ assert_equal [ [ '>=', 20 ], [ '<', 25 ] ], simplify_bounds('< 25, <= 26, >= 20')
54
+ assert_equal [ [ '>=', 21 ], [ '<', 25 ] ], simplify_bounds('< 25, <= 26, >= 21, >= 20')
55
+ assert_equal [ [ '>', 23 ], [ '<=', 26 ] ], simplify_bounds('<= 28, <= 26, > 23, >= 20')
56
+ end
57
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'minitest'
4
+ require 'minitest/autorun'
5
+
6
+ require_relative '../../lib/dependencies'
7
+
8
+ class StricterQueryTest < Minitest::Test
9
+ def stricter_query?(a, b)
10
+ POECSS::Simplifier.send(:stricter_query?, a, b)
11
+ end
12
+
13
+ def test_is_stricter_query
14
+ assert stricter_query?(%w[alice bob carol], %w[alice bob carol])
15
+ assert stricter_query?(%w[alice bob carol], %w[alic bo carol])
16
+ assert stricter_query?(%w[alice bob carol], %w[alic bo caro])
17
+ refute stricter_query?(%w[alice bob carol], %w[alic bo carolf])
18
+
19
+ refute stricter_query?(%w[alice bob carol], %w[alic bo])
20
+ assert stricter_query?(%w[alice], %w[alic bo])
21
+ assert stricter_query?(%w[alice bob b], %w[alic b])
22
+ refute stricter_query?(%w[a b c], %w[a b])
23
+ end
24
+ end
metadata ADDED
@@ -0,0 +1,292 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: poe-css
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Alex Quach
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-01-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: parslet
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.14'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.14'
41
+ - !ruby/object:Gem::Dependency
42
+ name: irbtools
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest-reporters
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '10.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '10.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: A better way to write item filters for Path of Exile.
112
+ email:
113
+ - alexhquach@gmail.com
114
+ executables:
115
+ - poe-css
116
+ extensions: []
117
+ extra_rdoc_files: []
118
+ files:
119
+ - ".gitignore"
120
+ - ".rubocop.yml"
121
+ - ".ruby-version"
122
+ - CONTRIBUTING.md
123
+ - Gemfile
124
+ - Gemfile.lock
125
+ - LICENSE.txt
126
+ - README.md
127
+ - Rakefile
128
+ - bin/poe-css
129
+ - demo/Gemfile
130
+ - demo/Gemfile.lock
131
+ - demo/app.rb
132
+ - demo/views/index.haml
133
+ - lib/dependencies.rb
134
+ - lib/poe-css.rb
135
+ - lib/poe-css/generator.rb
136
+ - lib/poe-css/parser.rb
137
+ - lib/poe-css/preprocessor.rb
138
+ - lib/poe-css/simplifier.rb
139
+ - lib/poe-css/version.rb
140
+ - poe-css.gemspec
141
+ - tests/poecss/all-clauses-1.output
142
+ - tests/poecss/all-clauses-1.poecss
143
+ - tests/poecss/alternation-1.output
144
+ - tests/poecss/alternation-1.poecss
145
+ - tests/poecss/nesting-1.output
146
+ - tests/poecss/nesting-1.poecss
147
+ - tests/poecss/nesting-2.output
148
+ - tests/poecss/nesting-2.poecss
149
+ - tests/poecss/nesting-3.output
150
+ - tests/poecss/nesting-3.poecss
151
+ - tests/poecss/nesting-4.output
152
+ - tests/poecss/nesting-4.poecss
153
+ - tests/poecss/performance-1.output
154
+ - tests/poecss/performance-1.poecss
155
+ - tests/poecss/performance-2.output
156
+ - tests/poecss/performance-2.poecss
157
+ - tests/poecss/rule-ordering-1.output
158
+ - tests/poecss/rule-ordering-1.poecss
159
+ - tests/poecss/rule-ordering-2.output
160
+ - tests/poecss/rule-ordering-2.poecss
161
+ - tests/poecss/rule-ordering-3.output
162
+ - tests/poecss/rule-ordering-3.poecss
163
+ - tests/poecss/rule-ordering-4.output
164
+ - tests/poecss/rule-ordering-4.poecss
165
+ - tests/poecss/rule-ordering-5.output
166
+ - tests/poecss/rule-ordering-5.poecss
167
+ - tests/poecss/rule-ordering-6.output
168
+ - tests/poecss/rule-ordering-6.poecss
169
+ - tests/poecss/simple-1.output
170
+ - tests/poecss/simple-1.poecss
171
+ - tests/poecss/simplification-1.output
172
+ - tests/poecss/simplification-1.poecss
173
+ - tests/poecss/simplification-2.output
174
+ - tests/poecss/simplification-2.poecss
175
+ - tests/poecss/simplification-3.output
176
+ - tests/poecss/simplification-3.poecss
177
+ - tests/poecss/simplification-4.output
178
+ - tests/poecss/simplification-4.poecss
179
+ - tests/poecss/simplification-5.output
180
+ - tests/poecss/simplification-5.poecss
181
+ - tests/poecss/simplification-6.output
182
+ - tests/poecss/simplification-6.poecss
183
+ - tests/preprocessor/arity-mismatch-1.error.preprocessor
184
+ - tests/preprocessor/arity-mismatch-2.error.preprocessor
185
+ - tests/preprocessor/complex.output
186
+ - tests/preprocessor/complex.preprocessor
187
+ - tests/preprocessor/empty.output
188
+ - tests/preprocessor/empty.preprocessor
189
+ - tests/preprocessor/macro-newlines.output
190
+ - tests/preprocessor/macro-newlines.preprocessor
191
+ - tests/preprocessor/macro.output
192
+ - tests/preprocessor/macro.preprocessor
193
+ - tests/preprocessor/missing-identifier-1.error.preprocessor
194
+ - tests/preprocessor/missing-identifier-2.error.preprocessor
195
+ - tests/preprocessor/normal-newlines.output
196
+ - tests/preprocessor/normal-newlines.preprocessor
197
+ - tests/preprocessor/parse-error-1.error.preprocessor
198
+ - tests/preprocessor/parse-error-2.error.preprocessor
199
+ - tests/preprocessor/parse-error-3.error.preprocessor
200
+ - tests/preprocessor/simple.output
201
+ - tests/preprocessor/simple.preprocessor
202
+ - tests/run-all-tests.rb
203
+ - tests/unit/simplify-bounds-test.rb
204
+ - tests/unit/stricter-query-test.rb
205
+ homepage: ''
206
+ licenses: []
207
+ metadata: {}
208
+ post_install_message:
209
+ rdoc_options: []
210
+ require_paths:
211
+ - lib
212
+ required_ruby_version: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ required_rubygems_version: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - ">="
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ requirements: []
223
+ rubyforge_project:
224
+ rubygems_version: 2.6.13
225
+ signing_key:
226
+ specification_version: 4
227
+ summary: A better way to write item filters for Path of Exile.
228
+ test_files:
229
+ - tests/poecss/all-clauses-1.output
230
+ - tests/poecss/all-clauses-1.poecss
231
+ - tests/poecss/alternation-1.output
232
+ - tests/poecss/alternation-1.poecss
233
+ - tests/poecss/nesting-1.output
234
+ - tests/poecss/nesting-1.poecss
235
+ - tests/poecss/nesting-2.output
236
+ - tests/poecss/nesting-2.poecss
237
+ - tests/poecss/nesting-3.output
238
+ - tests/poecss/nesting-3.poecss
239
+ - tests/poecss/nesting-4.output
240
+ - tests/poecss/nesting-4.poecss
241
+ - tests/poecss/performance-1.output
242
+ - tests/poecss/performance-1.poecss
243
+ - tests/poecss/performance-2.output
244
+ - tests/poecss/performance-2.poecss
245
+ - tests/poecss/rule-ordering-1.output
246
+ - tests/poecss/rule-ordering-1.poecss
247
+ - tests/poecss/rule-ordering-2.output
248
+ - tests/poecss/rule-ordering-2.poecss
249
+ - tests/poecss/rule-ordering-3.output
250
+ - tests/poecss/rule-ordering-3.poecss
251
+ - tests/poecss/rule-ordering-4.output
252
+ - tests/poecss/rule-ordering-4.poecss
253
+ - tests/poecss/rule-ordering-5.output
254
+ - tests/poecss/rule-ordering-5.poecss
255
+ - tests/poecss/rule-ordering-6.output
256
+ - tests/poecss/rule-ordering-6.poecss
257
+ - tests/poecss/simple-1.output
258
+ - tests/poecss/simple-1.poecss
259
+ - tests/poecss/simplification-1.output
260
+ - tests/poecss/simplification-1.poecss
261
+ - tests/poecss/simplification-2.output
262
+ - tests/poecss/simplification-2.poecss
263
+ - tests/poecss/simplification-3.output
264
+ - tests/poecss/simplification-3.poecss
265
+ - tests/poecss/simplification-4.output
266
+ - tests/poecss/simplification-4.poecss
267
+ - tests/poecss/simplification-5.output
268
+ - tests/poecss/simplification-5.poecss
269
+ - tests/poecss/simplification-6.output
270
+ - tests/poecss/simplification-6.poecss
271
+ - tests/preprocessor/arity-mismatch-1.error.preprocessor
272
+ - tests/preprocessor/arity-mismatch-2.error.preprocessor
273
+ - tests/preprocessor/complex.output
274
+ - tests/preprocessor/complex.preprocessor
275
+ - tests/preprocessor/empty.output
276
+ - tests/preprocessor/empty.preprocessor
277
+ - tests/preprocessor/macro-newlines.output
278
+ - tests/preprocessor/macro-newlines.preprocessor
279
+ - tests/preprocessor/macro.output
280
+ - tests/preprocessor/macro.preprocessor
281
+ - tests/preprocessor/missing-identifier-1.error.preprocessor
282
+ - tests/preprocessor/missing-identifier-2.error.preprocessor
283
+ - tests/preprocessor/normal-newlines.output
284
+ - tests/preprocessor/normal-newlines.preprocessor
285
+ - tests/preprocessor/parse-error-1.error.preprocessor
286
+ - tests/preprocessor/parse-error-2.error.preprocessor
287
+ - tests/preprocessor/parse-error-3.error.preprocessor
288
+ - tests/preprocessor/simple.output
289
+ - tests/preprocessor/simple.preprocessor
290
+ - tests/run-all-tests.rb
291
+ - tests/unit/simplify-bounds-test.rb
292
+ - tests/unit/stricter-query-test.rb