trenni 3.6.1 → 3.7.0

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: 3ed121951aae78b890d97e69aa17a78641ba3420095d58aae07ac7b2222f2ec4
4
- data.tar.gz: af24daf72a44f100cbb775d6a23c0694a617fdaab8b65eca1a30e9ae692e2c3b
3
+ metadata.gz: e5137222fc49006a71dbcc1b9730dba3ff670660df9502bdae43db6d242d25a7
4
+ data.tar.gz: 47494cf08dfb486a74c3efd236419f02638f3bd1b593446acd1f26fbd1d87870
5
5
  SHA512:
6
- metadata.gz: c4458fa6a04b8a8e82715e89fa2125c9647f55d06f308751b36b55babbc99e60a29639c9fb161bb5aa7bd33be1c09f4663ddb76f2d4228cb68e8d5210ef1b073
7
- data.tar.gz: 18e2d54b3e596716bc8b09bb8f1de2379e454b6159be086729b4e578ffc86b286269b7210715cc68506ccf5a00ac00f22f42a9180711814758dfe84e84855f41
6
+ metadata.gz: 501b5b7fc01eb1da1650c4d32dc296998b428b0919f904b195da5b2f2c53ccd40fcf2bad16f43291d833293987e5fda43adfbdfc21834f97273ee2e460575622
7
+ data.tar.gz: 9e7f6a39cf968a59a553c4209644c50a1b69cde60cb99abf437ad662395f9c4e488fa6d20aefdf61c29e0aec90ca879cdbf29c7fe19e90b9cf8ff4eb9d7274f4
@@ -1,29 +1,23 @@
1
1
  language: ruby
2
- sudo: false
3
-
4
- before_install:
5
- - gem update --system
6
- - gem install bundler
2
+ cache: bundler
7
3
 
8
4
  before_script:
9
- - sh -c "cd ext && rake compile"
10
-
11
- rvm:
12
- - 2.1
13
- - 2.2
14
- - 2.3
15
- - 2.4
16
- - 2.5
17
- - 2.6
18
- - ruby-head
19
- - jruby-head
20
- - rbx-2
5
+ - sh -c "cd ext && bundle exec rake compile"
21
6
 
22
- env:
23
- - COVERAGE=true
24
- - COVERAGE=true TRENNI_PREFER_FALLBACK=y
25
7
  matrix:
8
+ include:
9
+ - rvm: 2.3
10
+ - rvm: 2.4
11
+ - rvm: 2.5
12
+ - rvm: 2.6
13
+ - rvm: 2.6
14
+ env: TRENNI_PREFER_FALLBACK=y
15
+ - rvm: 2.6
16
+ env: COVERAGE=Summary
17
+ - rvm: ruby-head
18
+ - rvm: jruby-head
19
+ - rvm: truffleruby
26
20
  allow_failures:
27
- - rvm: "rbx-2"
21
+ - rvm: "truffleruby"
28
22
  - rvm: "ruby-head"
29
23
  - rvm: "jruby-head"
data/Gemfile CHANGED
@@ -5,9 +5,7 @@ gemspec
5
5
 
6
6
  group :development do
7
7
  gem 'pry'
8
-
9
8
  gem "rake-compiler"
10
-
11
9
  gem "ruby-beautify"
12
10
  end
13
11
 
@@ -15,8 +13,7 @@ group :test do
15
13
  gem 'ruby-prof', platforms: [:mri]
16
14
  gem "benchmark-ips"
17
15
 
18
- gem 'simplecov'
19
- gem 'coveralls', require: false
16
+ gem 'covered'
20
17
 
21
18
  # For comparisons:
22
19
  gem "nokogiri"
@@ -95,8 +95,9 @@ module Trenni
95
95
  self.new(FileBuffer.new(path), *args).freeze
96
96
  end
97
97
 
98
- def initialize(buffer)
98
+ def initialize(buffer, binding: TOPLEVEL_BINDING)
99
99
  @buffer = buffer
100
+ @binding = binding
100
101
  end
101
102
 
102
103
  def freeze
@@ -119,7 +120,7 @@ module Trenni
119
120
  Buffer.new(to_string(scope), path: @buffer.path)
120
121
  end
121
122
 
122
- def to_proc(scope = binding)
123
+ def to_proc(scope = @binding.dup)
123
124
  @compiled_proc ||= eval("proc{|#{OUT}|;#{code}}", scope, @buffer.path).freeze
124
125
  end
125
126
 
@@ -150,7 +151,7 @@ module Trenni
150
151
  class Assembler < Template::Assembler
151
152
  # Output a string interpolation.
152
153
  def expression(text)
153
- @code << "Markup.append(#{OUT},(#{text}));"
154
+ @code << "Trenni::Markup.append(#{OUT},(#{text}));"
154
155
  end
155
156
  end
156
157
 
@@ -19,5 +19,5 @@
19
19
  # THE SOFTWARE.
20
20
 
21
21
  module Trenni
22
- VERSION = "3.6.1"
22
+ VERSION = "3.7.0"
23
23
  end
@@ -1,23 +1,6 @@
1
1
 
2
- if ENV['COVERAGE']
3
- begin
4
- require 'simplecov'
5
-
6
- SimpleCov.start do
7
- add_filter "/spec/"
8
- end
9
-
10
- if ENV['TRAVIS']
11
- require 'coveralls'
12
- Coveralls.wear!
13
- end
14
- rescue LoadError
15
- warn "Could not load simplecov: #{$!}"
16
- end
17
- end
18
-
19
- require "bundler/setup"
20
- require "trenni"
2
+ require 'covered/rspec'
3
+ require 'trenni'
21
4
 
22
5
  begin
23
6
  require 'ruby-prof'
@@ -25,89 +25,108 @@ require 'trenni/parsers'
25
25
  require 'benchmark'
26
26
 
27
27
  RSpec.describe Trenni::Template do
28
- let(:template_path) {File.expand_path('corpus/large.xhtml', __dir__)}
29
- let(:template) {Trenni::Template.load_file template_path}
30
- let(:output) {template.to_string}
31
-
32
- it "should parse xhtml template and produce identical output" do
33
- expect{output}.to_not raise_error
34
- expect(output).to be == File.read(template_path)
35
- end
36
- end
37
-
38
- RSpec.describe Trenni::Template do
39
- let(:template_path) {File.expand_path('template_spec/lines.trenni', __dir__)}
40
- let(:template) {Trenni::Template.load_file template_path}
41
- let(:code) {template.send(:code)}
42
-
43
- it "should parse xhtml template and produce identical output" do
44
- expect(code.lines[0]).to match(/apple/)
45
- expect(code.lines[5]).to match(/banana/)
46
- end
47
- end
48
-
49
- RSpec.describe Trenni::Template do
50
- let(:template_path) {File.expand_path('template_spec/builder.trenni', __dir__)}
51
- let(:template) {Trenni::Template.load_file template_path}
52
- let(:code) {template.send(:code)}
53
-
54
- it "should capture and output the contents of the block" do
55
- expect(template.to_string).to be == 'Hello World!'
28
+ context 'large.xhtml' do
29
+ let(:template_path) {File.expand_path('corpus/large.xhtml', __dir__)}
30
+ let(:template) {Trenni::Template.load_file template_path}
31
+ let(:output) {template.to_string}
32
+
33
+ it "should parse xhtml template and produce identical output" do
34
+ expect{output}.to_not raise_error
35
+ expect(output).to be == File.read(template_path)
36
+ end
56
37
  end
57
- end
58
-
59
- RSpec.describe Trenni::Template do
60
- let(:capture_template) {Trenni::Template.load_file File.expand_path('template_spec/capture.trenni', __dir__)}
61
38
 
62
- it "should be able to capture output" do
63
- expect(capture_template.to_string).to be == '"TEST TEST TEST\n"'
39
+ context 'lines.trenni' do
40
+ let(:template_path) {File.expand_path('template_spec/lines.trenni', __dir__)}
41
+ let(:template) {Trenni::Template.load_file template_path}
42
+ let(:code) {template.send(:code)}
43
+
44
+ it "should parse xhtml template and produce identical output" do
45
+ expect(code.lines[0]).to match(/apple/)
46
+ expect(code.lines[5]).to match(/banana/)
47
+ end
64
48
  end
65
49
 
66
- it "compiled template should match line numbers" do
67
- code_lines = capture_template.send(:code).lines
50
+ context 'builder.trenni' do
51
+ let(:template_path) {File.expand_path('template_spec/builder.trenni', __dir__)}
52
+ let(:template) {Trenni::Template.load_file template_path}
53
+ let(:code) {template.send(:code)}
68
54
 
69
- expect(code_lines.count).to be == 4
70
- expect(code_lines[3]).to include("inspect")
55
+ it "should capture and output the contents of the block" do
56
+ expect(template.to_string).to be == 'Hello World!'
57
+ end
71
58
  end
72
59
 
73
- let(:buffer_template) {Trenni::Template.load_file File.expand_path('template_spec/buffer.trenni', __dir__)}
74
-
75
- it "should be able to fetch output buffer" do
76
- expect(buffer_template.to_string).to be == 'test'
60
+ context 'capture.trenni' do
61
+ let(:capture_template) {Trenni::Template.load_file File.expand_path('template_spec/capture.trenni', __dir__)}
62
+
63
+ it "should be able to capture output" do
64
+ expect(capture_template.to_string).to be == '"TEST TEST TEST\n"'
65
+ end
66
+
67
+ it "compiled template should match line numbers" do
68
+ code_lines = capture_template.send(:code).lines
69
+
70
+ expect(code_lines.count).to be == 4
71
+ expect(code_lines[3]).to include("inspect")
72
+ end
77
73
  end
78
74
 
79
- let(:nested_template) {Trenni::Template.load_file File.expand_path('template_spec/nested.trenni', __dir__)}
80
-
81
- it "should be able to handle nested interpolations" do
82
- expect(nested_template.to_string).to be == "Hello world!"
75
+ context 'buffer.trenni' do
76
+ let(:buffer_template) {Trenni::Template.load_file File.expand_path('template_spec/buffer.trenni', __dir__)}
77
+
78
+ it "should be able to fetch output buffer" do
79
+ expect(buffer_template.to_string).to be == 'test'
80
+ end
83
81
  end
84
82
 
85
- let(:items) {1..4}
86
-
87
- it "should process list of items" do
88
- buffer = Trenni::Buffer.new('<?r items.each do |item| ?>#{item}<?r end ?>')
89
- template = Trenni::Template.new(buffer)
83
+ context 'nested.trenni' do
84
+ let(:nested_template) {Trenni::Template.load_file File.expand_path('template_spec/nested.trenni', __dir__)}
90
85
 
91
- expect(template.to_string(self)).to be == "1234"
86
+ it "should be able to handle nested interpolations" do
87
+ expect(nested_template.to_string).to be == "Hello world!"
88
+ end
92
89
  end
93
90
 
94
- it "should have correct indentation" do
95
- buffer = Trenni::Buffer.new("\t<?r items.each do |item| ?>\n\t\#{item}\n\t<?r end ?>\n")
96
- template = Trenni::Template.new(buffer)
91
+ context 'items' do
92
+ let(:items) {1..4}
93
+
94
+ it "should process list of items" do
95
+ buffer = Trenni::Buffer.new('<?r items.each do |item| ?>#{item}<?r end ?>')
96
+ template = Trenni::Template.new(buffer)
97
+
98
+ expect(template.to_string(self)).to be == "1234"
99
+ end
97
100
 
98
- expect(template.to_string(self)).to be == "\t1\n\t2\n\t3\n\t4\n"
101
+ it "should have correct indentation" do
102
+ buffer = Trenni::Buffer.new("\t<?r items.each do |item| ?>\n\t\#{item}\n\t<?r end ?>\n")
103
+ template = Trenni::Template.new(buffer)
104
+
105
+ expect(template.to_string(self)).to be == "\t1\n\t2\n\t3\n\t4\n"
106
+ end
99
107
  end
100
108
 
101
- let(:escaped_template) {Trenni::Template.load_file File.expand_path('template_spec/escaped.trenni', __dir__)}
102
-
103
- it "should have the same number of lines as input" do
104
- expect(escaped_template.send(:code).lines.count).to be == 2
109
+ context 'escaped.trenni' do
110
+ let(:escaped_template) {Trenni::Template.load_file File.expand_path('template_spec/escaped.trenni', __dir__)}
111
+
112
+ it "should have the same number of lines as input" do
113
+ expect(escaped_template.send(:code).lines.count).to be == 2
114
+ end
115
+
116
+ it "should process escaped characters" do
117
+ expect(escaped_template.to_string).to be ==
118
+ "This\\nisn't one line.\n" +
119
+ "\\tIndentation is the best."
120
+ end
105
121
  end
106
122
 
107
- it "should process escaped characters" do
108
- expect(escaped_template.to_string).to be ==
109
- "This\\nisn't one line.\n" +
110
- "\\tIndentation is the best."
123
+ context 'scope' do
124
+ it "should use default top-level binding if none provided" do
125
+ buffer = Trenni::Buffer.new('#{Module.nesting.inspect}')
126
+ template = Trenni::Template.new(buffer)
127
+
128
+ expect(template.to_string(self)).to be == "[]"
129
+ end
111
130
  end
112
131
  end
113
132
 
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
27
27
  spec.extensions = %w[ext/Rakefile]
28
28
  spec.add_dependency "rake-compiler"
29
29
 
30
- spec.add_development_dependency "bundler", "~> 1.3"
30
+ spec.add_development_dependency "bundler"
31
31
  spec.add_development_dependency "rspec", "~> 3.4"
32
32
  spec.add_development_dependency "rake"
33
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trenni
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.6.1
4
+ version: 3.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-01 00:00:00.000000000 Z
11
+ date: 2019-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '1.3'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '1.3'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -170,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
170
170
  - !ruby/object:Gem::Version
171
171
  version: '0'
172
172
  requirements: []
173
- rubygems_version: 3.0.2
173
+ rubygems_version: 3.0.4
174
174
  signing_key:
175
175
  specification_version: 4
176
176
  summary: A fast native templating system that compiles directly to Ruby code.