slim 1.2.2 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  module Slim
2
2
  # Slim version string
3
3
  # @api public
4
- VERSION = '1.2.2'
4
+ VERSION = '1.3.0'
5
5
  end
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = %w(lib)
21
21
 
22
- s.add_runtime_dependency('temple', ['~> 0.4.0'])
22
+ s.add_runtime_dependency('temple', ['~> 0.4.1'])
23
23
  s.add_runtime_dependency('tilt', ['~> 1.3.3'])
24
24
 
25
25
  s.add_development_dependency('rake', ['>= 0.8.7'])
@@ -1,6 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'rubygems'
4
3
  require 'minitest/unit'
5
4
  require 'slim'
6
5
  require 'slim/grammar'
@@ -16,10 +15,6 @@ class TestSlim < MiniTest::Unit::TestCase
16
15
  @env = Env.new
17
16
  end
18
17
 
19
- def teardown
20
- Slim::Sections.set_default_options(:dictionary_access => :wrapped)
21
- end
22
-
23
18
  def render(source, options = {}, &block)
24
19
  Slim::Template.new(options[:file], options) { source }.render(options[:scope] || @env, &block)
25
20
  end
@@ -1,15 +1,8 @@
1
1
  require 'helper'
2
+ require 'slim/logic_less'
2
3
 
3
4
  class TestSlimLogicLess < TestSlim
4
- def setup
5
- Slim::Sections.set_default_options(:dictionary_access => :symbol)
6
- end
7
-
8
- def teardown
9
- Slim::Sections.set_default_options(:dictionary => 'self')
10
- end
11
-
12
- def test_sections
5
+ def test_symbol_access
13
6
  source = %q{
14
7
  p
15
8
  - person
@@ -23,10 +16,10 @@ p
23
16
  ]
24
17
  }
25
18
 
26
- assert_html '<p><div class="name">Joe</div><div class="name">Jack</div></p>', source, :scope => hash, :sections => true
19
+ assert_html '<p><div class="name">Joe</div><div class="name">Jack</div></p>', source, :scope => hash, :dictionary_access => :symbol
27
20
  end
28
21
 
29
- def test_sections_string_access
22
+ def test_string_access
30
23
  source = %q{
31
24
  p
32
25
  - person
@@ -40,7 +33,7 @@ p
40
33
  ]
41
34
  }
42
35
 
43
- assert_html '<p><div class="name">Joe</div><div class="name">Jack</div></p>', source, :scope => hash, :sections => true, :dictionary_access => :string
36
+ assert_html '<p><div class="name">Joe</div><div class="name">Jack</div></p>', source, :scope => hash, :dictionary_access => :string
44
37
  end
45
38
 
46
39
  def test_flag_section
@@ -61,7 +54,7 @@ p
61
54
  ]
62
55
  }
63
56
 
64
- assert_html '<p><div class="name">Joe</div><div class="name">Jack</div>shown</p>', source, :scope => hash, :sections => true
57
+ assert_html '<p><div class="name">Joe</div><div class="name">Jack</div>shown</p>', source, :scope => hash
65
58
  end
66
59
 
67
60
  def test_inverted_section
@@ -77,7 +70,7 @@ p
77
70
 
78
71
  hash = {}
79
72
 
80
- assert_html '<p>No person No person 2</p>', source, :scope => hash, :sections => true
73
+ assert_html '<p>No person No person 2</p>', source, :scope => hash
81
74
  end
82
75
 
83
76
  def test_output_with_content
@@ -85,6 +78,14 @@ p
85
78
  p = method_with_block do
86
79
  block
87
80
  }
88
- assert_runtime_error 'Output statements with content are forbidden in sections mode', source, :sections => true
81
+ assert_runtime_error 'Output statements with content are forbidden in logic less mode', source
82
+ end
83
+
84
+ def test_escaped_interpolation
85
+ source = %q{
86
+ p text with \#{123} test
87
+ }
88
+
89
+ assert_html '<p>text with #{123} test</p>', source
89
90
  end
90
91
  end
@@ -1,22 +1,14 @@
1
1
  require 'helper'
2
-
2
+ require 'slim/logic_less'
3
3
 
4
4
  class TestSlimWrapper < TestSlim
5
- def setup
6
- Slim::Sections.set_default_options(:dictionary => 'ViewEnv.new')
7
- end
8
-
9
- def teardown
10
- Slim::Sections.set_default_options(:dictionary => 'self')
11
- end
12
-
13
5
  def test_sections
14
6
  source = %q{
15
7
  p
16
8
  - person
17
9
  .name = name
18
10
  }
19
- assert_html '<p><div class="name">Joe</div><div class="name">Jack</div></p>', source, :sections => true
11
+ assert_html '<p><div class="name">Joe</div><div class="name">Jack</div></p>', source, :sections => true, :dictionary => 'ViewEnv.new'
20
12
  end
21
13
 
22
14
  def test_with_array
@@ -26,14 +18,14 @@ ul
26
18
  li = name
27
19
  li = city
28
20
  }
29
- assert_html '<ul><li>Andy</li><li>Atlanta</li><li>Fred</li><li>Melbourne</li><li>Daniel</li><li>Karlsruhe</li></ul>', source, :sections => true
21
+ assert_html '<ul><li>Andy</li><li>Atlanta</li><li>Fred</li><li>Melbourne</li><li>Daniel</li><li>Karlsruhe</li></ul>', source, :sections => true, :dictionary => 'ViewEnv.new'
30
22
  end
31
23
 
32
24
  def test_method
33
25
  source = %q{
34
26
  a href=output_number Link
35
27
  }
36
- assert_html '<a href="1337">Link</a>', source, :sections => true
28
+ assert_html '<a href="1337">Link</a>', source, :sections => true, :dictionary => 'ViewEnv.new'
37
29
  end
38
30
 
39
31
  end
@@ -1,6 +1,12 @@
1
1
  require 'helper'
2
2
 
3
3
  class TestSlimEncoding < TestSlim
4
+ def test_windows_crlf
5
+ source = "a href='#' something\r\nbr\r\na href='#' others\r\n"
6
+ result = "<a href=\"#\">something</a><br /><a href=\"#\">others</a>"
7
+ assert_html result, source
8
+ end
9
+
4
10
  def test_binary
5
11
  source = "| \xFF\xFF"
6
12
  result = "\xFF\xFF"
@@ -7,6 +7,10 @@ class TestSlimTemplate < TestSlim
7
7
  class Scope
8
8
  end
9
9
 
10
+ def test_default_mime_type
11
+ assert_equal 'text/html', Slim::Template.default_mime_type
12
+ end
13
+
10
14
  def test_registered_extension
11
15
  assert_equal Slim::Template, Tilt['test.slim']
12
16
  end
@@ -0,0 +1,64 @@
1
+ require 'helper'
2
+ require 'slim/translator'
3
+
4
+ class TestSlimTranslator < TestSlim
5
+ def setup
6
+ super
7
+ Slim::Engine.set_default_options :tr => true, :tr_fn => 'TestSlimTranslator.tr'
8
+ end
9
+
10
+ def self.tr(s)
11
+ s.upcase
12
+ end
13
+
14
+ def self.tr_reverse(s)
15
+ s.reverse.gsub(/(\d+)%/, '%\1')
16
+ end
17
+
18
+ def test_no_translation_of_embedded
19
+ source = %q{
20
+ markdown:
21
+ #Header
22
+ Hello from #{"Markdown!"}
23
+
24
+ #{1+2}
25
+
26
+ * one
27
+ * two
28
+ }
29
+ assert_html "<h1 id=\"header\">Header</h1>\n<p>Hello from Markdown!</p>\n\n<p>3</p>\n\n<ul>\n <li>one</li>\n <li>two</li>\n</ul>\n", source, :tr_mode => :dynamic
30
+ assert_html "<h1 id=\"header\">Header</h1>\n<p>Hello from Markdown!</p>\n\n<p>3</p>\n\n<ul>\n <li>one</li>\n <li>two</li>\n</ul>\n", source, :tr_mode => :static
31
+ end
32
+
33
+ def test_no_translation_of_attrs
34
+ source = %q{
35
+ ' this is
36
+ a link to
37
+ a href="link" page
38
+ }
39
+
40
+ assert_html "THIS IS\nA LINK TO <a href=\"link\">PAGE</a>", source, :tr_mode => :dynamic
41
+ assert_html "THIS IS\nA LINK TO <a href=\"link\">PAGE</a>", source, :tr_mode => :static
42
+ end
43
+
44
+ def test_translation_and_interpolation
45
+ source = %q{
46
+ p translate #{hello_world} this
47
+ second line
48
+ third #{1+2} line
49
+ }
50
+
51
+ assert_html "<p>translate Hello World from @env this\nsecond line\nthird 3 line</p>", source, :tr => false
52
+ assert_html "<p>TRANSLATE Hello World from @env THIS\nSECOND LINE\nTHIRD 3 LINE</p>", source, :tr_mode => :dynamic
53
+ assert_html "<p>TRANSLATE Hello World from @env THIS\nSECOND LINE\nTHIRD 3 LINE</p>", source, :tr_mode => :static
54
+ end
55
+
56
+ def test_translation_reverse
57
+ source = %q{
58
+ ' alpha #{1} beta #{2} gamma #{3}
59
+ }
60
+
61
+ assert_html "3 ammag 2 ateb 1 ahpla ", source, :tr_mode => :dynamic, :tr_fn => 'TestSlimTranslator.tr_reverse'
62
+ assert_html "3 ammag 2 ateb 1 ahpla ", source, :tr_mode => :static, :tr_fn => 'TestSlimTranslator.tr_reverse'
63
+ end
64
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slim
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,22 +11,27 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-06-21 00:00:00.000000000 Z
14
+ date: 2012-09-04 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: temple
18
- requirement: &19629360 !ruby/object:Gem::Requirement
18
+ requirement: !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ~>
22
22
  - !ruby/object:Gem::Version
23
- version: 0.4.0
23
+ version: 0.4.1
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *19629360
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ~>
30
+ - !ruby/object:Gem::Version
31
+ version: 0.4.1
27
32
  - !ruby/object:Gem::Dependency
28
33
  name: tilt
29
- requirement: &19628360 !ruby/object:Gem::Requirement
34
+ requirement: !ruby/object:Gem::Requirement
30
35
  none: false
31
36
  requirements:
32
37
  - - ~>
@@ -34,10 +39,15 @@ dependencies:
34
39
  version: 1.3.3
35
40
  type: :runtime
36
41
  prerelease: false
37
- version_requirements: *19628360
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 1.3.3
38
48
  - !ruby/object:Gem::Dependency
39
49
  name: rake
40
- requirement: &19627580 !ruby/object:Gem::Requirement
50
+ requirement: !ruby/object:Gem::Requirement
41
51
  none: false
42
52
  requirements:
43
53
  - - ! '>='
@@ -45,10 +55,15 @@ dependencies:
45
55
  version: 0.8.7
46
56
  type: :development
47
57
  prerelease: false
48
- version_requirements: *19627580
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: 0.8.7
49
64
  - !ruby/object:Gem::Dependency
50
65
  name: sass
51
- requirement: &19626760 !ruby/object:Gem::Requirement
66
+ requirement: !ruby/object:Gem::Requirement
52
67
  none: false
53
68
  requirements:
54
69
  - - ! '>='
@@ -56,10 +71,15 @@ dependencies:
56
71
  version: 3.1.0
57
72
  type: :development
58
73
  prerelease: false
59
- version_requirements: *19626760
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: 3.1.0
60
80
  - !ruby/object:Gem::Dependency
61
81
  name: minitest
62
- requirement: &19626240 !ruby/object:Gem::Requirement
82
+ requirement: !ruby/object:Gem::Requirement
63
83
  none: false
64
84
  requirements:
65
85
  - - ! '>='
@@ -67,10 +87,15 @@ dependencies:
67
87
  version: '0'
68
88
  type: :development
69
89
  prerelease: false
70
- version_requirements: *19626240
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
71
96
  - !ruby/object:Gem::Dependency
72
97
  name: kramdown
73
- requirement: &19625720 !ruby/object:Gem::Requirement
98
+ requirement: !ruby/object:Gem::Requirement
74
99
  none: false
75
100
  requirements:
76
101
  - - ! '>='
@@ -78,10 +103,15 @@ dependencies:
78
103
  version: '0'
79
104
  type: :development
80
105
  prerelease: false
81
- version_requirements: *19625720
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
82
112
  - !ruby/object:Gem::Dependency
83
113
  name: creole
84
- requirement: &19625040 !ruby/object:Gem::Requirement
114
+ requirement: !ruby/object:Gem::Requirement
85
115
  none: false
86
116
  requirements:
87
117
  - - ! '>='
@@ -89,10 +119,15 @@ dependencies:
89
119
  version: '0'
90
120
  type: :development
91
121
  prerelease: false
92
- version_requirements: *19625040
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ none: false
124
+ requirements:
125
+ - - ! '>='
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
93
128
  - !ruby/object:Gem::Dependency
94
129
  name: builder
95
- requirement: &19624240 !ruby/object:Gem::Requirement
130
+ requirement: !ruby/object:Gem::Requirement
96
131
  none: false
97
132
  requirements:
98
133
  - - ! '>='
@@ -100,7 +135,12 @@ dependencies:
100
135
  version: '0'
101
136
  type: :development
102
137
  prerelease: false
103
- version_requirements: *19624240
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ none: false
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
104
144
  description: Slim is a template language whose goal is reduce the syntax to the essential
105
145
  parts without becoming cryptic.
106
146
  email:
@@ -128,6 +168,7 @@ files:
128
168
  - benchmarks/profile-parser.rb
129
169
  - benchmarks/profile-render.rb
130
170
  - benchmarks/run-benchmarks.rb
171
+ - benchmarks/run-diffbench.rb
131
172
  - benchmarks/view.erb
132
173
  - benchmarks/view.haml
133
174
  - benchmarks/view.slim
@@ -141,11 +182,13 @@ files:
141
182
  - lib/slim/filter.rb
142
183
  - lib/slim/grammar.rb
143
184
  - lib/slim/interpolation.rb
185
+ - lib/slim/logic_less.rb
186
+ - lib/slim/logic_less/filter.rb
187
+ - lib/slim/logic_less/wrapper.rb
144
188
  - lib/slim/parser.rb
145
- - lib/slim/sections.rb
146
189
  - lib/slim/template.rb
190
+ - lib/slim/translator.rb
147
191
  - lib/slim/version.rb
148
- - lib/slim/wrapper.rb
149
192
  - slim.gemspec
150
193
  - test/rails/Rakefile
151
194
  - test/rails/app/controllers/application_controller.rb
@@ -188,6 +231,8 @@ files:
188
231
  - test/rails/test/helper.rb
189
232
  - test/rails/test/test_slim.rb
190
233
  - test/slim/helper.rb
234
+ - test/slim/logic_less/test_logic_less.rb
235
+ - test/slim/logic_less/test_wrapper.rb
191
236
  - test/slim/test_chain_manipulation.rb
192
237
  - test/slim/test_code_blocks.rb
193
238
  - test/slim/test_code_escaping.rb
@@ -201,10 +246,9 @@ files:
201
246
  - test/slim/test_parser_errors.rb
202
247
  - test/slim/test_pretty.rb
203
248
  - test/slim/test_ruby_errors.rb
204
- - test/slim/test_sections.rb
205
249
  - test/slim/test_slim_template.rb
206
250
  - test/slim/test_text_interpolation.rb
207
- - test/slim/test_wrapper.rb
251
+ - test/slim/translator/test_translator.rb
208
252
  homepage: http://slim-lang.com/
209
253
  licenses: []
210
254
  post_install_message:
@@ -226,8 +270,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
226
270
  version: '0'
227
271
  requirements: []
228
272
  rubyforge_project: slim
229
- rubygems_version: 1.8.15
273
+ rubygems_version: 1.8.24
230
274
  signing_key:
231
275
  specification_version: 3
232
276
  summary: Slim is a template language.
233
277
  test_files: []
278
+ has_rdoc: