slim 0.7.3 → 0.7.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +7 -7
- data/lib/slim.rb +0 -5
- data/lib/slim/command.rb +1 -1
- data/lib/slim/compiler.rb +0 -3
- data/lib/slim/embedded_engine.rb +6 -7
- data/lib/slim/engine.rb +5 -4
- data/lib/slim/parser.rb +5 -5
- data/lib/slim/rails.rb +3 -1
- data/lib/slim/version.rb +1 -1
- metadata +10 -50
- data/.gitignore +0 -8
- data/Gemfile +0 -3
- data/Gemfile.lock +0 -38
- data/Rakefile +0 -47
- data/benchmarks/run.rb +0 -96
- data/benchmarks/src/complex.erb +0 -23
- data/benchmarks/src/complex.haml +0 -18
- data/benchmarks/src/complex.slim +0 -18
- data/benchmarks/src/complex_view.rb +0 -17
- data/extra/slim-mode.el +0 -409
- data/extra/slim.vim +0 -60
- data/extra/test.slim +0 -48
- data/slim.gemspec +0 -34
- data/test/helper.rb +0 -114
- data/test/slim/test_code_blocks.rb +0 -68
- data/test/slim/test_code_escaping.rb +0 -69
- data/test/slim/test_code_evaluation.rb +0 -221
- data/test/slim/test_code_output.rb +0 -124
- data/test/slim/test_code_structure.rb +0 -95
- data/test/slim/test_embedded_engines.rb +0 -65
- data/test/slim/test_html_escaping.rb +0 -32
- data/test/slim/test_html_structure.rb +0 -251
- data/test/slim/test_parser_errors.rb +0 -107
- data/test/slim/test_rails.rb +0 -78
- data/test/slim/test_ruby_errors.rb +0 -144
- data/test/slim/test_sections.rb +0 -74
- data/test/slim/test_slim_template.rb +0 -128
data/README.md
CHANGED
@@ -29,7 +29,7 @@ Install Slim as a gem:
|
|
29
29
|
|
30
30
|
Include Slim in your Gemfile:
|
31
31
|
|
32
|
-
gem 'slim', require
|
32
|
+
gem 'slim', :require => 'slim/rails'
|
33
33
|
|
34
34
|
That's it! Now, just use the .slim extension and you're good to go.
|
35
35
|
|
@@ -76,7 +76,7 @@ Here's a quick example to demonstrate what a Slim template looks like:
|
|
76
76
|
#footer
|
77
77
|
| Copyright © 2010 Andrew Stone
|
78
78
|
|
79
|
-
= render
|
79
|
+
= render 'tracking_code'
|
80
80
|
|
81
81
|
script
|
82
82
|
| $(content).do_something();
|
@@ -90,9 +90,9 @@ Here's a quick example to demonstrate what a Slim template looks like:
|
|
90
90
|
|
91
91
|
> The pipe tells Slim to just copy the line. It essentially escapes any processing.
|
92
92
|
|
93
|
-
####
|
93
|
+
#### `'`
|
94
94
|
|
95
|
-
>
|
95
|
+
> The single quote tells Slim to copy the line (similar to |), but makes sure that a single trailing space is appended.
|
96
96
|
|
97
97
|
#### `-`
|
98
98
|
|
@@ -120,7 +120,7 @@ Here's a quick example to demonstrate what a Slim template looks like:
|
|
120
120
|
`end` is forbidden behind `-`. Blocks are defined only by indentation.
|
121
121
|
|
122
122
|
#### Can put content on same line or nest it.
|
123
|
-
If you nest content (e.g. put it on the next line), start the line with a pipe (`|`) or a
|
123
|
+
If you nest content (e.g. put it on the next line), start the line with a pipe (`|`) or a single quote (`` ' ``).
|
124
124
|
|
125
125
|
#### Indentation matters, but it's not as strict as Haml.
|
126
126
|
If you want to first indent 2 spaces, then 5 spaces, it's your choice. To nest markup you only need to indent by one space, the rest is gravy.
|
@@ -226,7 +226,7 @@ Here's a quick example to demonstrate what a Slim template looks like:
|
|
226
226
|
|
227
227
|
### Treat multiple lines of code as text that should bypass parsing
|
228
228
|
|
229
|
-
Use a pipe (`|`) or
|
229
|
+
Use a pipe (`|`) or single quote (`` ' ``) to start the escape.
|
230
230
|
Each following line that is indented greater than
|
231
231
|
the backtick is copied over.
|
232
232
|
|
@@ -297,7 +297,7 @@ Here's a quick example to demonstrate what a Slim template looks like:
|
|
297
297
|
[Google Group](http://groups.google.com/group/slim-template)
|
298
298
|
|
299
299
|
## Slim related projects
|
300
|
-
|
300
|
+
|
301
301
|
* [Textmate bundle](http://github.com/fredwu/ruby-slim-textmate-bundle)
|
302
302
|
* [Rails 3 Generators](http://github.com/leogalmeida/slim-rails)
|
303
303
|
* [Slim for Clojure](http://github.com/chaslemley/slim.clj)
|
data/lib/slim.rb
CHANGED
data/lib/slim/command.rb
CHANGED
data/lib/slim/compiler.rb
CHANGED
data/lib/slim/embedded_engine.rb
CHANGED
@@ -14,17 +14,16 @@ module Slim
|
|
14
14
|
engine.dup
|
15
15
|
end
|
16
16
|
|
17
|
-
def on_slim_embedded(
|
18
|
-
EmbeddedEngine[
|
17
|
+
def on_slim_embedded(name, *body)
|
18
|
+
engine = EmbeddedEngine[name]
|
19
|
+
raise "Embedded engine #{name} is disabled" if (options[:enable_engines] && !options[:enable_engines].include?(name)) ||
|
20
|
+
(options[:disable_engines] && options[:disable_engines].include?(name))
|
21
|
+
engine.on_slim_embedded(name, *body)
|
19
22
|
end
|
20
23
|
|
21
24
|
def collect_text(body)
|
22
25
|
body.inject('') do |text, exp|
|
23
|
-
if exp[0] == :slim && exp[1] == :text
|
24
|
-
text << exp[2]
|
25
|
-
elsif exp[0] == :newline
|
26
|
-
text << "\n"
|
27
|
-
end
|
26
|
+
text << exp[2] if exp[0] == :slim && exp[1] == :text
|
28
27
|
text
|
29
28
|
end
|
30
29
|
end
|
data/lib/slim/engine.rb
CHANGED
@@ -10,10 +10,11 @@ module Slim
|
|
10
10
|
set_default_options :pretty => false,
|
11
11
|
:attr_wrapper => '"',
|
12
12
|
:format => :html5,
|
13
|
-
:id_delimiter => nil
|
13
|
+
:id_delimiter => nil,
|
14
|
+
:generator => Temple::Generators::ArrayBuffer
|
14
15
|
|
15
|
-
use Slim::Parser, :file
|
16
|
-
use Slim::EmbeddedEngine
|
16
|
+
use Slim::Parser, :file, :tabsize
|
17
|
+
use Slim::EmbeddedEngine, :enable_engines, :disable_engines
|
17
18
|
use Slim::Interpolation
|
18
19
|
use Slim::Sections, :sections, :dictionary, :dictionary_access
|
19
20
|
use Slim::EndInserter
|
@@ -23,6 +24,6 @@ module Slim
|
|
23
24
|
filter :MultiFlattener
|
24
25
|
filter :StaticMerger
|
25
26
|
filter :DynamicInliner
|
26
|
-
generator
|
27
|
+
chain << proc {|options| options[:generator].new }
|
27
28
|
end
|
28
29
|
end
|
data/lib/slim/parser.rb
CHANGED
@@ -109,6 +109,7 @@ module Slim
|
|
109
109
|
|
110
110
|
if !in_comment
|
111
111
|
# The indentation of first line of the text block determines the text base indentation.
|
112
|
+
newline = text_indent ? "\n" : ''
|
112
113
|
text_indent ||= indent
|
113
114
|
|
114
115
|
# The text block lines must be at least indented as deep as the first line.
|
@@ -116,8 +117,7 @@ module Slim
|
|
116
117
|
syntax_error! 'Unexpected text indentation', line, lineno if offset < 0
|
117
118
|
|
118
119
|
# Generate the additional spaces in front.
|
119
|
-
|
120
|
-
stacks.last << [:slim, :text, i + line]
|
120
|
+
stacks.last << [:slim, :text, newline + (' ' * offset) + line]
|
121
121
|
end
|
122
122
|
|
123
123
|
stacks.last << [:newline]
|
@@ -163,13 +163,13 @@ module Slim
|
|
163
163
|
end
|
164
164
|
|
165
165
|
case line[0]
|
166
|
-
when ?|, ?',
|
166
|
+
when ?|, ?', ?/
|
167
167
|
# Found a block.
|
168
168
|
|
169
169
|
# We're now expecting the next line to be indented, so we'll need
|
170
170
|
# to push a block to the stack.
|
171
171
|
block = [:multi]
|
172
|
-
stacks.last << block
|
172
|
+
stacks.last << (line[0] == ?' ? [:multi, block, [:slim, :text, ' ']] : block)
|
173
173
|
stacks << block
|
174
174
|
block_indent = indent
|
175
175
|
|
@@ -187,7 +187,7 @@ module Slim
|
|
187
187
|
stacks.last << [:slim, :control, broken_line, block]
|
188
188
|
stacks << block
|
189
189
|
when ?=
|
190
|
-
# Found
|
190
|
+
# Found an output block.
|
191
191
|
# We expect the line to be broken or the next line to be indented.
|
192
192
|
block = [:multi]
|
193
193
|
escape = line[1] != ?=
|
data/lib/slim/rails.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require 'slim'
|
2
2
|
|
3
|
+
Slim::Engine.default_options[:generator] = Temple::Generators::RailsOutputBuffer
|
4
|
+
|
3
5
|
module ActionView
|
4
6
|
module TemplateHandlers
|
5
7
|
raise "Slim supports only Rails 3.x and greater, your Rails version is #{Rails::VERSION::STRING}" if Rails::VERSION::MAJOR < 3
|
@@ -16,7 +18,7 @@ module ActionView
|
|
16
18
|
else
|
17
19
|
# Slim handler for Rails 3.1 and greater
|
18
20
|
class SlimHandler
|
19
|
-
def call(template)
|
21
|
+
def self.call(template)
|
20
22
|
Slim::Engine.new.compile(template.source)
|
21
23
|
end
|
22
24
|
end
|
data/lib/slim/version.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 7
|
8
|
-
-
|
9
|
-
version: 0.7.
|
8
|
+
- 4
|
9
|
+
version: 0.7.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Andrew Stone
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-11-
|
19
|
+
date: 2010-11-22 00:00:00 -05:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -30,8 +30,8 @@ dependencies:
|
|
30
30
|
segments:
|
31
31
|
- 0
|
32
32
|
- 1
|
33
|
-
-
|
34
|
-
version: 0.1.
|
33
|
+
- 6
|
34
|
+
version: 0.1.6
|
35
35
|
type: :runtime
|
36
36
|
version_requirements: *id001
|
37
37
|
- !ruby/object:Gem::Dependency
|
@@ -77,7 +77,7 @@ dependencies:
|
|
77
77
|
type: :development
|
78
78
|
version_requirements: *id004
|
79
79
|
- !ruby/object:Gem::Dependency
|
80
|
-
name:
|
80
|
+
name: minitest
|
81
81
|
prerelease: false
|
82
82
|
requirement: &id005 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
@@ -90,7 +90,7 @@ dependencies:
|
|
90
90
|
type: :development
|
91
91
|
version_requirements: *id005
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
|
-
name:
|
93
|
+
name: rcov
|
94
94
|
prerelease: false
|
95
95
|
requirement: &id006 !ruby/object:Gem::Requirement
|
96
96
|
none: false
|
@@ -103,7 +103,7 @@ dependencies:
|
|
103
103
|
type: :development
|
104
104
|
version_requirements: *id006
|
105
105
|
- !ruby/object:Gem::Dependency
|
106
|
-
name:
|
106
|
+
name: rdiscount
|
107
107
|
prerelease: false
|
108
108
|
requirement: &id007 !ruby/object:Gem::Requirement
|
109
109
|
none: false
|
@@ -116,7 +116,7 @@ dependencies:
|
|
116
116
|
type: :development
|
117
117
|
version_requirements: *id007
|
118
118
|
- !ruby/object:Gem::Dependency
|
119
|
-
name:
|
119
|
+
name: liquid
|
120
120
|
prerelease: false
|
121
121
|
requirement: &id008 !ruby/object:Gem::Requirement
|
122
122
|
none: false
|
@@ -129,7 +129,7 @@ dependencies:
|
|
129
129
|
type: :development
|
130
130
|
version_requirements: *id008
|
131
131
|
- !ruby/object:Gem::Dependency
|
132
|
-
name:
|
132
|
+
name: yard
|
133
133
|
prerelease: false
|
134
134
|
requirement: &id009 !ruby/object:Gem::Requirement
|
135
135
|
none: false
|
@@ -141,19 +141,6 @@ dependencies:
|
|
141
141
|
version: "0"
|
142
142
|
type: :development
|
143
143
|
version_requirements: *id009
|
144
|
-
- !ruby/object:Gem::Dependency
|
145
|
-
name: yard
|
146
|
-
prerelease: false
|
147
|
-
requirement: &id010 !ruby/object:Gem::Requirement
|
148
|
-
none: false
|
149
|
-
requirements:
|
150
|
-
- - ">="
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
segments:
|
153
|
-
- 0
|
154
|
-
version: "0"
|
155
|
-
type: :development
|
156
|
-
version_requirements: *id010
|
157
144
|
description: Slim is a template language whose goal is reduce the syntax to the essential parts without becoming cryptic.
|
158
145
|
email:
|
159
146
|
- andy@stonean.com
|
@@ -166,20 +153,8 @@ extensions: []
|
|
166
153
|
extra_rdoc_files:
|
167
154
|
- README.md
|
168
155
|
files:
|
169
|
-
- .gitignore
|
170
|
-
- Gemfile
|
171
|
-
- Gemfile.lock
|
172
156
|
- README.md
|
173
|
-
- Rakefile
|
174
|
-
- benchmarks/run.rb
|
175
|
-
- benchmarks/src/complex.erb
|
176
|
-
- benchmarks/src/complex.haml
|
177
|
-
- benchmarks/src/complex.slim
|
178
|
-
- benchmarks/src/complex_view.rb
|
179
157
|
- bin/slim
|
180
|
-
- extra/slim-mode.el
|
181
|
-
- extra/slim.vim
|
182
|
-
- extra/test.slim
|
183
158
|
- lib/slim.rb
|
184
159
|
- lib/slim/command.rb
|
185
160
|
- lib/slim/compiler.rb
|
@@ -193,21 +168,6 @@ files:
|
|
193
168
|
- lib/slim/sections.rb
|
194
169
|
- lib/slim/template.rb
|
195
170
|
- lib/slim/version.rb
|
196
|
-
- slim.gemspec
|
197
|
-
- test/helper.rb
|
198
|
-
- test/slim/test_code_blocks.rb
|
199
|
-
- test/slim/test_code_escaping.rb
|
200
|
-
- test/slim/test_code_evaluation.rb
|
201
|
-
- test/slim/test_code_output.rb
|
202
|
-
- test/slim/test_code_structure.rb
|
203
|
-
- test/slim/test_embedded_engines.rb
|
204
|
-
- test/slim/test_html_escaping.rb
|
205
|
-
- test/slim/test_html_structure.rb
|
206
|
-
- test/slim/test_parser_errors.rb
|
207
|
-
- test/slim/test_rails.rb
|
208
|
-
- test/slim/test_ruby_errors.rb
|
209
|
-
- test/slim/test_sections.rb
|
210
|
-
- test/slim/test_slim_template.rb
|
211
171
|
has_rdoc: true
|
212
172
|
homepage: http://github.com/stonean/slim
|
213
173
|
licenses: []
|
data/.gitignore
DELETED
data/Gemfile
DELETED
data/Gemfile.lock
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
slim (0.7.2)
|
5
|
-
temple (~> 0.1.5)
|
6
|
-
tilt (~> 1.1)
|
7
|
-
|
8
|
-
GEM
|
9
|
-
remote: http://rubygems.org/
|
10
|
-
specs:
|
11
|
-
abstract (1.0.0)
|
12
|
-
erubis (2.6.6)
|
13
|
-
abstract (>= 1.0.0)
|
14
|
-
haml (3.0.22)
|
15
|
-
liquid (2.2.2)
|
16
|
-
minitest (1.7.2)
|
17
|
-
rake (0.8.7)
|
18
|
-
rcov (0.9.9)
|
19
|
-
rdiscount (1.6.5)
|
20
|
-
temple (0.1.5)
|
21
|
-
tilt (1.1)
|
22
|
-
yard (0.6.1)
|
23
|
-
|
24
|
-
PLATFORMS
|
25
|
-
ruby
|
26
|
-
|
27
|
-
DEPENDENCIES
|
28
|
-
erubis
|
29
|
-
haml
|
30
|
-
liquid
|
31
|
-
minitest
|
32
|
-
rake (>= 0.8.7)
|
33
|
-
rcov
|
34
|
-
rdiscount
|
35
|
-
slim!
|
36
|
-
temple (~> 0.1.5)
|
37
|
-
tilt (~> 1.1)
|
38
|
-
yard
|
data/Rakefile
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
begin
|
2
|
-
require 'bundler'
|
3
|
-
Bundler::GemHelper.install_tasks
|
4
|
-
rescue Exception => e
|
5
|
-
end
|
6
|
-
|
7
|
-
require 'rake/testtask'
|
8
|
-
|
9
|
-
desc 'Run Slim benchmarks! (Default :iterations is 1000)'
|
10
|
-
task :bench, :iterations, :slow do |t, args|
|
11
|
-
ruby("benchmarks/run.rb #{args[:slow]} #{args[:iterations]}")
|
12
|
-
end
|
13
|
-
|
14
|
-
Rake::TestTask.new(:test) do |t|
|
15
|
-
t.libs << 'lib' << 'test'
|
16
|
-
t.pattern = 'test/**/test_*.rb'
|
17
|
-
t.verbose = true
|
18
|
-
end
|
19
|
-
|
20
|
-
begin
|
21
|
-
require 'rcov/rcovtask'
|
22
|
-
Rcov::RcovTask.new do |t|
|
23
|
-
t.libs << 'lib' << 'test'
|
24
|
-
t.pattern = 'test/**/test_*.rb'
|
25
|
-
t.verbose = true
|
26
|
-
end
|
27
|
-
rescue LoadError
|
28
|
-
task :rcov do
|
29
|
-
abort "RCov is not available. In order to run rcov, you must: gem install rcov"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
begin
|
34
|
-
require 'yard'
|
35
|
-
YARD::Rake::YardocTask.new do |t|
|
36
|
-
t.files = %w(lib/**/*.rb)
|
37
|
-
end
|
38
|
-
rescue LoadError
|
39
|
-
task :yard do
|
40
|
-
abort "YARD is not available. In order to run yard, you must: gem install yard"
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
desc "Generate Documentation"
|
45
|
-
task :doc => :yard
|
46
|
-
|
47
|
-
task :default => 'test'
|
data/benchmarks/run.rb
DELETED
@@ -1,96 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'), File.join(File.dirname(__FILE__), 'src'))
|
4
|
-
|
5
|
-
require 'slim'
|
6
|
-
require 'complex_view'
|
7
|
-
|
8
|
-
require 'benchmark'
|
9
|
-
require 'ostruct'
|
10
|
-
require 'erubis'
|
11
|
-
require 'erb'
|
12
|
-
require 'haml'
|
13
|
-
|
14
|
-
class SlimBenchmarks
|
15
|
-
def initialize(slow, iterations)
|
16
|
-
@iterations = (iterations || 1000).to_i
|
17
|
-
@benches = []
|
18
|
-
|
19
|
-
tpl_erb = File.read(File.dirname(__FILE__) + '/src/complex.erb')
|
20
|
-
tpl_haml = File.read(File.dirname(__FILE__) + '/src/complex.haml')
|
21
|
-
tpl_slim = File.read(File.dirname(__FILE__) + '/src/complex.slim')
|
22
|
-
|
23
|
-
view = ComplexView.new
|
24
|
-
eview = OpenStruct.new(:header => view.header, :item => view.item).instance_eval{ binding }
|
25
|
-
|
26
|
-
erb = ERB.new(tpl_erb)
|
27
|
-
erubis = Erubis::Eruby.new(tpl_erb)
|
28
|
-
fast_erubis = Erubis::FastEruby.new(tpl_erb)
|
29
|
-
haml = Haml::Engine.new(tpl_haml, :format => :html5)
|
30
|
-
haml_ugly = Haml::Engine.new(tpl_haml, :format => :html5, :ugly => true)
|
31
|
-
slim = Slim::Template.new { tpl_slim }
|
32
|
-
|
33
|
-
haml.def_method(view, :run_haml)
|
34
|
-
haml_ugly.def_method(view, :run_haml_ugly)
|
35
|
-
view.instance_eval %{
|
36
|
-
def run_erb; #{erb.src}; end
|
37
|
-
def run_erubis; #{erubis.src}; end
|
38
|
-
def run_fast_erubis; #{fast_erubis.src}; end
|
39
|
-
def run_slim; #{slim.precompiled_template}; end
|
40
|
-
}
|
41
|
-
|
42
|
-
if slow
|
43
|
-
bench('erb (1)') { ERB.new(tpl_erb).result(eview) }
|
44
|
-
bench('erubis (1)') { Erubis::Eruby.new(tpl_erb).result(eview) }
|
45
|
-
bench('fast erubis (1)') { Erubis::Eruby.new(tpl_erb).result(eview) }
|
46
|
-
bench('slim (1)') { Slim::Template.new { tpl_slim }.render(view) }
|
47
|
-
bench('haml (1)') { Haml::Engine.new(tpl_haml, :format => :html5).render(view) }
|
48
|
-
bench('haml ugly (1)') { Haml::Engine.new(tpl_haml, :format => :html5, :ugly => true).render(view) }
|
49
|
-
end
|
50
|
-
|
51
|
-
bench('erb (2)') { erb.result(eview) }
|
52
|
-
bench('erubis (2)') { erubis.result(eview) }
|
53
|
-
bench('fast (2)') { fast_erubis.result(eview) }
|
54
|
-
bench('slim (2)') { slim.render(view) }
|
55
|
-
bench('haml (2)') { haml.render(view) }
|
56
|
-
bench('haml (2)') { haml_ugly.render(view) }
|
57
|
-
|
58
|
-
bench('erb (3)') { view.run_erb }
|
59
|
-
bench('erubis (3)') { view.run_erubis }
|
60
|
-
bench('fast erubis (3)') { view.run_fast_erubis }
|
61
|
-
bench('slim (3)') { view.run_slim }
|
62
|
-
bench('haml (3)') { view.run_haml }
|
63
|
-
bench('haml ugly (3)') { view.run_haml_ugly }
|
64
|
-
end
|
65
|
-
|
66
|
-
def run
|
67
|
-
puts "#{@iterations} Iterations"
|
68
|
-
Benchmark.bmbm do |x|
|
69
|
-
@benches.each do |name, block|
|
70
|
-
x.report name.to_s do
|
71
|
-
@iterations.to_i.times { block.call }
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
puts "
|
76
|
-
1. Uncached benchmark. Template is parsed every time.
|
77
|
-
Activate this benchmark with slow=1.
|
78
|
-
|
79
|
-
2. Cached benchmark. Template is parsed before the benchmark.
|
80
|
-
The ruby code generated by the template engine might be evaluated every time.
|
81
|
-
This benchmark uses the standard API of the template engine.
|
82
|
-
|
83
|
-
3. Compiled benchmark. Template is parsed before the benchmark and
|
84
|
-
generated ruby code is compiled into a method.
|
85
|
-
This is the fastest evaluation strategy because it benchmarks
|
86
|
-
pure execution speed of the generated ruby code.
|
87
|
-
|
88
|
-
"
|
89
|
-
end
|
90
|
-
|
91
|
-
def bench(name, &block)
|
92
|
-
@benches.push([name, block])
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
SlimBenchmarks.new(ARGV[0], ARGV[1]).run
|