temple 0.8.2 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/workflows/test.yml +40 -0
- data/CHANGES +13 -1
- data/Rakefile +1 -0
- data/lib/temple/filters/ambles.rb +21 -0
- data/lib/temple/filters/string_splitter.rb +11 -0
- data/lib/temple/generator.rb +1 -1
- data/lib/temple/generators/rails_output_buffer.rb +2 -6
- data/lib/temple/mixins/grammar_dsl.rb +2 -1
- data/lib/temple/templates/rails.rb +4 -0
- data/lib/temple/templates/tilt.rb +1 -9
- data/lib/temple/utils.rb +2 -14
- data/lib/temple/version.rb +1 -1
- data/lib/temple.rb +1 -0
- data/temple.gemspec +2 -2
- data/test/filters/test_string_splitter.rb +29 -3
- data/test/helper.rb +2 -2
- data/test/test_erb.rb +5 -5
- data/test/test_generator.rb +4 -4
- metadata +8 -33
- data/.travis.yml +0 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 527609e09539e1854fc16e48ac864d23ce89584ec8c0cb3f3cf1f4ee4d6e8101
|
4
|
+
data.tar.gz: eee6b6dd3a38dde73365469c10b5cf7f8b6a35dd6797268b104e50cef27b4863
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17e8c7410950492aa3fdc41cb91f1ad40613324a411d77fcded2667ecb6ac137956e4bee64a9d0b038bb7cd9dc1098ae9e095ca59ba2a4a370e7a7a3cd62a4bd
|
7
|
+
data.tar.gz: 317d066d2e989072f0182d688845691573a74a31a7365883534c66571986bc2f0503df0a6a389d086cfba1eb0da69734a751a91691efa49772ebfb7a6c58f1b2
|
@@ -0,0 +1,40 @@
|
|
1
|
+
name: test
|
2
|
+
on:
|
3
|
+
push:
|
4
|
+
branches:
|
5
|
+
- master
|
6
|
+
pull_request:
|
7
|
+
types:
|
8
|
+
- opened
|
9
|
+
- synchronize
|
10
|
+
- reopened
|
11
|
+
schedule:
|
12
|
+
- cron: "00 15 * * *"
|
13
|
+
jobs:
|
14
|
+
test:
|
15
|
+
runs-on: ubuntu-latest
|
16
|
+
strategy:
|
17
|
+
fail-fast: false
|
18
|
+
matrix:
|
19
|
+
ruby:
|
20
|
+
- '2.5'
|
21
|
+
- '2.6'
|
22
|
+
- '2.7'
|
23
|
+
- '3.0'
|
24
|
+
- '3.1'
|
25
|
+
- jruby
|
26
|
+
- truffleruby-head
|
27
|
+
steps:
|
28
|
+
- uses: actions/checkout@v2
|
29
|
+
- name: Set up Ruby
|
30
|
+
uses: ruby/setup-ruby@v1
|
31
|
+
with:
|
32
|
+
ruby-version: ${{ matrix.ruby }}
|
33
|
+
- uses: actions/cache@v2
|
34
|
+
with:
|
35
|
+
path: vendor/bundle
|
36
|
+
key: ${{ runner.os }}-${{ matrix.ruby }}-gems-${{ hashFiles('**/Gemfile.lock') }}
|
37
|
+
restore-keys: ${{ runner.os }}-gems-
|
38
|
+
- name: bundle install
|
39
|
+
run: bundle config path vendor/bundle && bundle install -j$(nproc) --retry 3
|
40
|
+
- run: bundle exec rake test
|
data/CHANGES
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
0.9.0
|
2
|
+
|
3
|
+
* Require Ruby 2.5+ (#131)
|
4
|
+
* Change default :capture_generator to self (#113)
|
5
|
+
* Improve compatibility with Rails 7.1 (#135)
|
6
|
+
* Support Rails 6.1's annotate_rendered_view_with_filenames
|
7
|
+
with Temple::Filters::Ambles (#134)
|
8
|
+
* Fix a crash in StringSplitter filter (#138)
|
9
|
+
* Fix a warning by Object#=~ since Ruby 2.6 (#129)
|
10
|
+
* Fix deprecated Tilt template mime type (#108)
|
11
|
+
* Stop using deprecated EscapeUtils from Temple::Utils (#136)
|
12
|
+
|
1
13
|
0.8.2
|
2
14
|
|
3
15
|
* Support TruffleRuby in Temple::Filters::StaticAnalyzer (#127)
|
@@ -16,7 +28,7 @@
|
|
16
28
|
|
17
29
|
0.7.8
|
18
30
|
|
19
|
-
* Fix
|
31
|
+
* Fix a warning in StaticAnalyzer
|
20
32
|
|
21
33
|
0.7.7
|
22
34
|
|
data/Rakefile
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
module Temple
|
2
|
+
module Filters
|
3
|
+
class Ambles < Filter
|
4
|
+
define_options :preamble, :postamble
|
5
|
+
|
6
|
+
def initialize(*)
|
7
|
+
super
|
8
|
+
@preamble = options[:preamble]
|
9
|
+
@postamble = options[:postamble]
|
10
|
+
end
|
11
|
+
|
12
|
+
def call(ast)
|
13
|
+
ret = [:multi]
|
14
|
+
ret << [:static, @preamble] if @preamble
|
15
|
+
ret << ast
|
16
|
+
ret << [:static, @postamble] if @postamble
|
17
|
+
ret
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -46,6 +46,7 @@ module Temple
|
|
46
46
|
|
47
47
|
case type
|
48
48
|
when :on_tstring_content
|
49
|
+
beg_str, end_str = escape_quotes(beg_str, end_str)
|
49
50
|
exps << [:static, eval("#{beg_str}#{str}#{end_str}").to_s]
|
50
51
|
when :on_embexpr_beg
|
51
52
|
embedded = shift_balanced_embexpr(tokens)
|
@@ -54,6 +55,16 @@ module Temple
|
|
54
55
|
end
|
55
56
|
end
|
56
57
|
|
58
|
+
# Some quotes are split-unsafe. Replace such quotes with null characters.
|
59
|
+
def escape_quotes(beg_str, end_str)
|
60
|
+
case [beg_str[-1], end_str]
|
61
|
+
when ['(', ')'], ['[', ']'], ['{', '}']
|
62
|
+
[beg_str.sub(/.\z/) { "\0" }, "\0"]
|
63
|
+
else
|
64
|
+
[beg_str, end_str]
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
57
68
|
def shift_balanced_embexpr(tokens)
|
58
69
|
String.new.tap do |embedded|
|
59
70
|
embexpr_open = 1
|
data/lib/temple/generator.rb
CHANGED
@@ -10,7 +10,7 @@ module Temple
|
|
10
10
|
# @api public
|
11
11
|
class RailsOutputBuffer < StringBuffer
|
12
12
|
define_options :streaming,
|
13
|
-
buffer_class: '
|
13
|
+
buffer_class: 'ActionView::OutputBuffer',
|
14
14
|
buffer: '@output_buffer',
|
15
15
|
# output_buffer is needed for Rails 3.1 Streaming support
|
16
16
|
capture_generator: RailsOutputBuffer
|
@@ -20,11 +20,7 @@ module Temple
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def create_buffer
|
23
|
-
|
24
|
-
"#{buffer} = output_buffer || #{options[:buffer_class]}.new"
|
25
|
-
else
|
26
|
-
"#{buffer} = #{options[:buffer_class]}.new"
|
27
|
-
end
|
23
|
+
"#{buffer} = output_buffer || #{options[:buffer_class]}.new"
|
28
24
|
end
|
29
25
|
|
30
26
|
def concat(str)
|
@@ -143,7 +143,8 @@ module Temple
|
|
143
143
|
start = Or.new(self)
|
144
144
|
curr = [start]
|
145
145
|
rule.each do |elem|
|
146
|
-
|
146
|
+
case elem
|
147
|
+
when /^(.*)(\*|\?|\+)$/
|
147
148
|
elem = Element.new(self, const_get($1))
|
148
149
|
curr.each {|c| c << elem }
|
149
150
|
elem << elem if $2 != '?'
|
@@ -5,6 +5,10 @@ module Temple
|
|
5
5
|
|
6
6
|
def call(template, source = nil)
|
7
7
|
opts = {}.update(self.class.options).update(file: template.identifier)
|
8
|
+
if ActionView::Base.try(:annotate_rendered_view_with_filenames) && template.format == :html
|
9
|
+
opts[:preamble] = "<!-- BEGIN #{template.short_identifier} -->\n"
|
10
|
+
opts[:postamble] = "<!-- END #{template.short_identifier} -->\n"
|
11
|
+
end
|
8
12
|
self.class.compile((source || template.source), opts)
|
9
13
|
end
|
10
14
|
|
@@ -7,14 +7,6 @@ module Temple
|
|
7
7
|
|
8
8
|
define_options mime_type: 'text/html'
|
9
9
|
|
10
|
-
def self.default_mime_type
|
11
|
-
options[:mime_type]
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.default_mime_type=(mime_type)
|
15
|
-
options[:mime_type] = mime_type
|
16
|
-
end
|
17
|
-
|
18
10
|
# Prepare Temple template
|
19
11
|
#
|
20
12
|
# Called immediately after template data is loaded.
|
@@ -22,7 +14,7 @@ module Temple
|
|
22
14
|
# @return [void]
|
23
15
|
def prepare
|
24
16
|
opts = {}.update(self.class.options).update(options).update(file: eval_file)
|
25
|
-
opts.delete(:mime_type)
|
17
|
+
metadata[:mime_type] = opts.delete(:mime_type)
|
26
18
|
if opts.include?(:outvar)
|
27
19
|
opts[:buffer] = opts.delete(:outvar)
|
28
20
|
opts[:save_buffer] = true
|
data/lib/temple/utils.rb
CHANGED
@@ -1,10 +1,6 @@
|
|
1
1
|
begin
|
2
|
-
require '
|
2
|
+
require 'cgi/escape'
|
3
3
|
rescue LoadError
|
4
|
-
begin
|
5
|
-
require 'cgi/escape'
|
6
|
-
rescue LoadError
|
7
|
-
end
|
8
4
|
end
|
9
5
|
|
10
6
|
module Temple
|
@@ -21,15 +17,7 @@ module Temple
|
|
21
17
|
html.html_safe? ? html : escape_html(html)
|
22
18
|
end
|
23
19
|
|
24
|
-
if defined?(
|
25
|
-
# Returns an escaped copy of `html`.
|
26
|
-
#
|
27
|
-
# @param html [String] The string to escape
|
28
|
-
# @return [String] The escaped string
|
29
|
-
def escape_html(html)
|
30
|
-
EscapeUtils.escape_html(html.to_s, false)
|
31
|
-
end
|
32
|
-
elsif defined?(CGI.escapeHTML)
|
20
|
+
if defined?(CGI.escapeHTML)
|
33
21
|
# Returns an escaped copy of `html`.
|
34
22
|
#
|
35
23
|
# @param html [String] The string to escape
|
data/lib/temple/version.rb
CHANGED
data/lib/temple.rb
CHANGED
data/temple.gemspec
CHANGED
@@ -18,12 +18,12 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
19
|
s.license = 'MIT'
|
20
20
|
|
21
|
-
s.required_ruby_version = '>=
|
21
|
+
s.required_ruby_version = '>= 2.5.0'
|
22
22
|
|
23
23
|
# Tilt is only development dependency because most parts of Temple
|
24
24
|
# can be used without it.
|
25
25
|
s.add_development_dependency('tilt')
|
26
26
|
s.add_development_dependency('bacon')
|
27
27
|
s.add_development_dependency('rake')
|
28
|
-
s.add_development_dependency('
|
28
|
+
s.add_development_dependency('erubi')
|
29
29
|
end
|
@@ -10,9 +10,30 @@ if defined?(Ripper) && RUBY_VERSION >= "2.0.0"
|
|
10
10
|
@filter = Temple::Filters::StringSplitter.new
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
{
|
14
|
+
%q|''| => [:multi],
|
15
|
+
%q|""| => [:multi],
|
16
|
+
%q|"hello"| => [:multi, [:static, 'hello']],
|
17
|
+
%q|"hello #{}world"| => [:multi, [:static, 'hello '], [:static, 'world']],
|
18
|
+
%q|"#{hello}"| => [:multi, [:dynamic, 'hello']],
|
19
|
+
%q|"nya#{123}"| => [:multi, [:static, 'nya'], [:dynamic, '123']],
|
20
|
+
%q|"#{()}()"| => [:multi, [:dynamic, '()'], [:static, '()']],
|
21
|
+
%q|" #{ " #{ '#{}' } " }"| => [:multi, [:static, ' '], [:multi, [:static, ' '], [:multi, [:static, '#{}']], [:static, ' ']]],
|
22
|
+
%q|%Q[a#{b}c#{d}e]| => [:multi, [:static, 'a'], [:dynamic, 'b'], [:static, 'c'], [:dynamic, 'd'], [:static, 'e']],
|
23
|
+
%q|%q[a#{b}c#{d}e]| => [:multi, [:static, 'a#{b}c#{d}e']],
|
24
|
+
%q|"\#{}#{123}"| => [:multi, [:static, '#{}'], [:dynamic, '123']],
|
25
|
+
%q|"#{ '}' }"| => [:multi, [:multi, [:static, '}']]],
|
26
|
+
%q| "a" # hello | => [:multi, [:static, 'a']],
|
27
|
+
%q|"\""| => [:multi, [:static, '"']],
|
28
|
+
%q|"\\\\\\""| => [:multi, [:static, '\\"']],
|
29
|
+
%q|'\"'| => [:multi, [:static, '\"']],
|
30
|
+
%q|'\\\"'| => [:multi, [:static, '\\"']],
|
31
|
+
%q|"static#{dynamic}"| => [:multi, [:static, 'static'], [:dynamic, 'dynamic']],
|
32
|
+
}.each do |code, expected|
|
33
|
+
it "should split #{code}" do
|
34
|
+
actual = @filter.call([:dynamic, code])
|
35
|
+
actual.should.equal expected
|
36
|
+
end
|
16
37
|
end
|
17
38
|
|
18
39
|
describe '.compile' do
|
@@ -20,6 +41,11 @@ if defined?(Ripper) && RUBY_VERSION >= "2.0.0"
|
|
20
41
|
lambda { Temple::Filters::StringSplitter.compile('1') }.
|
21
42
|
should.raise(Temple::FilterError)
|
22
43
|
end
|
44
|
+
|
45
|
+
it 'should compile strings quoted with parenthesis' do
|
46
|
+
tokens = Temple::Filters::StringSplitter.compile('%Q(href("#{1 + 1}");)')
|
47
|
+
tokens.should.equal [[:static, "href(\""], [:dynamic, "1 + 1"], [:static, "\");"]]
|
48
|
+
end
|
23
49
|
end
|
24
50
|
end
|
25
51
|
end
|
data/test/helper.rb
CHANGED
@@ -20,8 +20,8 @@ module TestHelper
|
|
20
20
|
Temple::ERB::Template.new(options) { src }.render
|
21
21
|
end
|
22
22
|
|
23
|
-
def
|
24
|
-
Tilt::
|
23
|
+
def erubi(src, options = {})
|
24
|
+
Tilt::ErubiTemplate.new(options) { src }.render
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
data/test/test_erb.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'helper'
|
2
|
-
require 'tilt/
|
2
|
+
require 'tilt/erubi'
|
3
3
|
|
4
4
|
describe Temple::ERB::Engine do
|
5
5
|
it 'should compile erb' do
|
@@ -11,7 +11,7 @@ describe Temple::ERB::Engine do
|
|
11
11
|
<% end %>
|
12
12
|
}
|
13
13
|
|
14
|
-
erb(src).should.equal
|
14
|
+
erb(src).should.equal erubi(src)
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'should recognize comments' do
|
@@ -20,7 +20,7 @@ hello
|
|
20
20
|
<%# comment -- ignored -- useful in testing %>
|
21
21
|
world}
|
22
22
|
|
23
|
-
erb(src).should.equal
|
23
|
+
erb(src).should.equal erubi(src)
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'should recognize <%% and %%>' do
|
@@ -55,7 +55,7 @@ world}
|
|
55
55
|
<% end %>
|
56
56
|
}
|
57
57
|
|
58
|
-
erb(src, trim: true).should.equal
|
59
|
-
erb(src, trim: false).should.equal
|
58
|
+
erb(src, trim: true).should.equal erubi(src, trim: true)
|
59
|
+
erb(src, trim: false).should.equal erubi(src, trim: false)
|
60
60
|
end
|
61
61
|
end
|
data/test/test_generator.rb
CHANGED
@@ -143,16 +143,16 @@ end
|
|
143
143
|
describe Temple::Generators::RailsOutputBuffer do
|
144
144
|
it 'should compile simple expressions' do
|
145
145
|
gen = Temple::Generators::RailsOutputBuffer.new(freeze_static: false)
|
146
|
-
gen.call([:static, 'test']).should.equal '@output_buffer =
|
146
|
+
gen.call([:static, 'test']).should.equal '@output_buffer = output_buffer || ActionView::OutputBuffer.new; ' +
|
147
147
|
'@output_buffer.safe_concat(("test")); @output_buffer'
|
148
|
-
gen.call([:dynamic, 'test']).should.equal '@output_buffer =
|
148
|
+
gen.call([:dynamic, 'test']).should.equal '@output_buffer = output_buffer || ActionView::OutputBuffer.new; ' +
|
149
149
|
'@output_buffer.safe_concat(((test).to_s)); @output_buffer'
|
150
|
-
gen.call([:code, 'test']).should.equal '@output_buffer =
|
150
|
+
gen.call([:code, 'test']).should.equal '@output_buffer = output_buffer || ActionView::OutputBuffer.new; ' +
|
151
151
|
'test; @output_buffer'
|
152
152
|
end
|
153
153
|
|
154
154
|
it 'should freeze static' do
|
155
155
|
gen = Temple::Generators::RailsOutputBuffer.new(freeze_static: true)
|
156
|
-
gen.call([:static, 'test']).should.equal '@output_buffer =
|
156
|
+
gen.call([:static, 'test']).should.equal '@output_buffer = output_buffer || ActionView::OutputBuffer.new; @output_buffer.safe_concat(("test".freeze)); @output_buffer'
|
157
157
|
end
|
158
158
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: temple
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Magnus Holm
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-10-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: tilt
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
57
|
+
name: erubi
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - ">="
|
@@ -75,8 +75,8 @@ executables: []
|
|
75
75
|
extensions: []
|
76
76
|
extra_rdoc_files: []
|
77
77
|
files:
|
78
|
+
- ".github/workflows/test.yml"
|
78
79
|
- ".gitignore"
|
79
|
-
- ".travis.yml"
|
80
80
|
- ".yardopts"
|
81
81
|
- CHANGES
|
82
82
|
- EXPRESSIONS.md
|
@@ -92,6 +92,7 @@ files:
|
|
92
92
|
- lib/temple/erb/trimming.rb
|
93
93
|
- lib/temple/exceptions.rb
|
94
94
|
- lib/temple/filter.rb
|
95
|
+
- lib/temple/filters/ambles.rb
|
95
96
|
- lib/temple/filters/code_merger.rb
|
96
97
|
- lib/temple/filters/control_flow.rb
|
97
98
|
- lib/temple/filters/dynamic_inliner.rb
|
@@ -170,41 +171,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
170
171
|
requirements:
|
171
172
|
- - ">="
|
172
173
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
174
|
+
version: 2.5.0
|
174
175
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
175
176
|
requirements:
|
176
177
|
- - ">="
|
177
178
|
- !ruby/object:Gem::Version
|
178
179
|
version: '0'
|
179
180
|
requirements: []
|
180
|
-
|
181
|
-
rubygems_version: 2.6.11
|
181
|
+
rubygems_version: 3.3.7
|
182
182
|
signing_key:
|
183
183
|
specification_version: 4
|
184
184
|
summary: Template compilation framework in Ruby
|
185
|
-
test_files:
|
186
|
-
- test/filters/test_code_merger.rb
|
187
|
-
- test/filters/test_control_flow.rb
|
188
|
-
- test/filters/test_dynamic_inliner.rb
|
189
|
-
- test/filters/test_eraser.rb
|
190
|
-
- test/filters/test_escapable.rb
|
191
|
-
- test/filters/test_multi_flattener.rb
|
192
|
-
- test/filters/test_static_analyzer.rb
|
193
|
-
- test/filters/test_static_merger.rb
|
194
|
-
- test/filters/test_string_splitter.rb
|
195
|
-
- test/helper.rb
|
196
|
-
- test/html/test_attribute_merger.rb
|
197
|
-
- test/html/test_attribute_remover.rb
|
198
|
-
- test/html/test_attribute_sorter.rb
|
199
|
-
- test/html/test_fast.rb
|
200
|
-
- test/html/test_pretty.rb
|
201
|
-
- test/mixins/test_dispatcher.rb
|
202
|
-
- test/mixins/test_grammar_dsl.rb
|
203
|
-
- test/test_engine.rb
|
204
|
-
- test/test_erb.rb
|
205
|
-
- test/test_filter.rb
|
206
|
-
- test/test_generator.rb
|
207
|
-
- test/test_grammar.rb
|
208
|
-
- test/test_map.rb
|
209
|
-
- test/test_static_analyzer.rb
|
210
|
-
- test/test_utils.rb
|
185
|
+
test_files: []
|
data/.travis.yml
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
dist: trusty
|
3
|
-
|
4
|
-
cache: bundler
|
5
|
-
|
6
|
-
rvm:
|
7
|
-
- 1.9.3
|
8
|
-
- 2.0.0
|
9
|
-
- 2.1.10
|
10
|
-
- 2.2.6
|
11
|
-
- 2.3.3
|
12
|
-
- ruby-head
|
13
|
-
- jruby-19mode
|
14
|
-
- rbx-3
|
15
|
-
|
16
|
-
sudo: false
|
17
|
-
|
18
|
-
env:
|
19
|
-
- ESCAPE_UTILS=1
|
20
|
-
- ""
|
21
|
-
|
22
|
-
matrix:
|
23
|
-
allow_failures:
|
24
|
-
- rvm: ruby-head
|
25
|
-
- rvm: rbx-3
|
26
|
-
exclude:
|
27
|
-
- rvm: jruby-19mode
|
28
|
-
env: ESCAPE_UTILS=1
|
29
|
-
- rvm: rbx-3
|
30
|
-
env: ESCAPE_UTILS=1
|