slim 0.6.1 → 0.7.0.beta.2
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.
- data/.gitignore +8 -0
- data/Gemfile +1 -6
- data/Gemfile.lock +20 -16
- data/README.md +137 -90
- data/Rakefile +9 -37
- data/benchmarks/run.rb +63 -0
- data/benchmarks/src/complex.erb +23 -0
- data/benchmarks/src/complex.haml +18 -0
- data/benchmarks/src/complex.slim +18 -0
- data/benchmarks/src/complex_view.rb +17 -0
- data/lib/slim.rb +15 -11
- data/lib/slim/compiler.rb +71 -137
- data/lib/slim/embedded_engine.rb +108 -0
- data/lib/slim/end_inserter.rb +57 -0
- data/lib/slim/engine.rb +16 -14
- data/lib/slim/filter.rb +44 -0
- data/lib/slim/helpers.rb +37 -0
- data/lib/slim/parser.rb +355 -0
- data/lib/slim/rails.rb +2 -2
- data/lib/slim/template.rb +18 -0
- data/lib/slim/version.rb +3 -0
- data/slim.gemspec +26 -66
- data/test/helper.rb +32 -4
- data/test/slim/test_code_blocks.rb +33 -0
- data/test/slim/test_code_escaping.rb +69 -0
- data/test/slim/test_code_evaluation.rb +199 -0
- data/test/slim/test_code_helpers.rb +12 -0
- data/test/slim/test_code_output.rb +116 -0
- data/test/slim/test_code_structure.rb +84 -0
- data/test/slim/test_embedded_engines.rb +55 -0
- data/test/slim/test_html_escaping.rb +32 -0
- data/test/slim/test_html_structure.rb +181 -0
- data/test/slim/test_parser_errors.rb +98 -0
- data/test/slim/test_slim_template.rb +128 -0
- data/vim/slim.vim +33 -0
- data/vim/test.slim +27 -0
- metadata +127 -34
- data/lib/slim/optimizer.rb +0 -70
- data/readme.html +0 -159
- data/test/slim/test_compiler.rb +0 -389
- data/test/slim/test_engine.rb +0 -458
- data/test/test_slim.rb +0 -4
@@ -0,0 +1,98 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestParserErrors < TestSlim
|
4
|
+
def test_unexpected_indentation
|
5
|
+
source = %q{
|
6
|
+
p Indent 0
|
7
|
+
div Invalid
|
8
|
+
}
|
9
|
+
|
10
|
+
assert_syntax_error "Unexpected indentation\n Line 3\n div Invalid\n ^\n ", source
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_unexpected_text_indentation
|
14
|
+
source = %q{
|
15
|
+
p
|
16
|
+
| text block
|
17
|
+
text
|
18
|
+
}
|
19
|
+
|
20
|
+
assert_syntax_error "Unexpected text indentation\n Line 4\n text\n ^\n ", source
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_malformed_indentation
|
24
|
+
source = %q{
|
25
|
+
p
|
26
|
+
div Valid
|
27
|
+
div Invalid
|
28
|
+
}
|
29
|
+
|
30
|
+
assert_syntax_error "Malformed indentation\n Line 4\n div Invalid\n ^\n ", source
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_unknown_line_indicator
|
34
|
+
source = %q{
|
35
|
+
p
|
36
|
+
div Valid
|
37
|
+
.valid
|
38
|
+
#valid
|
39
|
+
?invalid
|
40
|
+
}
|
41
|
+
|
42
|
+
assert_syntax_error "Unknown line indicator\n Line 6\n ?invalid\n ^\n ", source
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_expected_closing_delimiter
|
46
|
+
source = %q{
|
47
|
+
p
|
48
|
+
img(src="img.jpg" title={title}
|
49
|
+
}
|
50
|
+
|
51
|
+
assert_syntax_error "Expected closing attribute delimiter )\n Line 3\n img(src=\"img.jpg\" title={title}\n ^\n ", source
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_expected_closing_delimiter
|
55
|
+
source = %q{
|
56
|
+
p
|
57
|
+
img src=[hash[1] + hash[2]
|
58
|
+
}
|
59
|
+
|
60
|
+
assert_syntax_error "Expected closing attribute delimiter ]\n Line 3\n img src=[hash[1] + hash[2]\n ^\n ", source
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_unexpected_closing
|
64
|
+
source = %q{
|
65
|
+
p
|
66
|
+
img src=(1+1)]
|
67
|
+
}
|
68
|
+
|
69
|
+
assert_syntax_error "Unexpected closing ]\n Line 3\n img src=(1+1)]\n ^\n ", source
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_invalid_empty_attribute
|
73
|
+
source = %q{
|
74
|
+
p
|
75
|
+
img{src= }
|
76
|
+
}
|
77
|
+
|
78
|
+
assert_syntax_error "Invalid empty attribute\n Line 3\n img{src= }\n ^\n ", source
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_invalid_empty_attribute2
|
82
|
+
source = %q{
|
83
|
+
p
|
84
|
+
img{src=}
|
85
|
+
}
|
86
|
+
|
87
|
+
assert_syntax_error "Invalid empty attribute\n Line 3\n img{src=}\n ^\n ", source
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_invalid_empty_attribute3
|
91
|
+
source = %q{
|
92
|
+
p
|
93
|
+
img src=
|
94
|
+
}
|
95
|
+
|
96
|
+
assert_syntax_error "Invalid empty attribute\n Line 3\n img src=\n ^\n ", source
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,128 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class ::MockError < NameError
|
4
|
+
end
|
5
|
+
|
6
|
+
class TestSlimTemplate < MiniTest::Unit::TestCase
|
7
|
+
class Scope
|
8
|
+
include Tilt::CompileSite
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_registered_extension
|
12
|
+
assert_equal Slim::Template, Tilt['test.slim']
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_preparing_and_evaluating
|
16
|
+
template = Slim::Template.new { |t| "p Hello World!\n" }
|
17
|
+
assert_equal "<p>Hello World!</p>", template.render
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_passing_locals
|
21
|
+
template = Slim::Template.new { "p = 'Hey ' + name + '!'\n" }
|
22
|
+
assert_equal "<p>Hey Joe!</p>", template.render(Object.new, :name => 'Joe')
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_evaluating_in_an_object_scope
|
26
|
+
template = Slim::Template.new { "p = 'Hey ' + @name + '!'\n" }
|
27
|
+
scope = Object.new
|
28
|
+
scope.instance_variable_set :@name, 'Joe'
|
29
|
+
assert_equal "<p>Hey Joe!</p>", template.render(scope)
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_passing_a_block_for_yield
|
33
|
+
template = Slim::Template.new { "p = 'Hey ' + yield + '!'\n" }
|
34
|
+
assert_equal "<p>Hey Joe!</p>", template.render { 'Joe' }
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_backtrace_file_and_line_reporting_without_locals
|
38
|
+
data = File.read(__FILE__).split("\n__END__\n").last
|
39
|
+
fail unless data[0] == ?h
|
40
|
+
template = Slim::Template.new('test.slim', 10) { data }
|
41
|
+
begin
|
42
|
+
template.render
|
43
|
+
fail 'should have raised an exception'
|
44
|
+
rescue => boom
|
45
|
+
assert_kind_of NameError, boom
|
46
|
+
line = boom.backtrace.first
|
47
|
+
assert_equal 'test.slim', line.split(":").first
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_backtrace_file_and_line_reporting_with_locals
|
52
|
+
data = File.read(__FILE__).split("\n__END__\n").last
|
53
|
+
fail unless data[0] == ?h
|
54
|
+
template = Slim::Template.new('test.slim') { data }
|
55
|
+
begin
|
56
|
+
res = template.render(Object.new, :name => 'Joe', :foo => 'bar')
|
57
|
+
rescue => boom
|
58
|
+
assert_kind_of MockError, boom
|
59
|
+
line = boom.backtrace.first
|
60
|
+
assert_equal 'test.slim', line.split(":").first
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_compiling_template_source_to_a_method
|
65
|
+
template = Slim::Template.new { |t| "Hello World!" }
|
66
|
+
template.render(Scope.new)
|
67
|
+
method_name = template.send(:compiled_method_name, [])
|
68
|
+
method_name = method_name.to_sym if Symbol === Kernel.methods.first
|
69
|
+
assert Tilt::CompileSite.instance_methods.include?(method_name),
|
70
|
+
"CompileSite.instance_methods.include?(#{method_name.inspect})"
|
71
|
+
assert Scope.new.respond_to?(method_name),
|
72
|
+
"scope.respond_to?(#{method_name.inspect})"
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
def test_passing_locals
|
77
|
+
template = Slim::Template.new { "p = 'Hey ' + name + '!'\n" }
|
78
|
+
assert_equal "<p>Hey Joe!</p>", template.render(Scope.new, :name => 'Joe')
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_evaluating_in_an_object_scope
|
82
|
+
template = Slim::Template.new { "p = 'Hey ' + @name + '!'\n" }
|
83
|
+
scope = Scope.new
|
84
|
+
scope.instance_variable_set :@name, 'Joe'
|
85
|
+
assert_equal "<p>Hey Joe!</p>", template.render(scope)
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_passing_a_block_for_yield
|
89
|
+
template = Slim::Template.new { "p = 'Hey ' + yield + '!'\n" }
|
90
|
+
assert_equal "<p>Hey Joe!</p>", template.render(Scope.new) { 'Joe' }
|
91
|
+
end
|
92
|
+
|
93
|
+
def backtrace_file_and_line_reporting_without_locals
|
94
|
+
data = File.read(__FILE__).split("\n__END__\n").last
|
95
|
+
fail unless data[0] == ?h
|
96
|
+
template = Slim::Template.new('test.slim', 10) { data }
|
97
|
+
begin
|
98
|
+
template.render(Scope.new)
|
99
|
+
fail 'should have raised an exception'
|
100
|
+
rescue => boom
|
101
|
+
assert_kind_of NameError, boom
|
102
|
+
line = boom.backtrace.first
|
103
|
+
assert_equal 'test.slim', line.split(":").first
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_backtrace_file_and_line_reporting_with_locals
|
108
|
+
data = File.read(__FILE__).split("\n__END__\n").last
|
109
|
+
fail unless data[0] == ?h
|
110
|
+
template = Slim::Template.new('test.slim') { data }
|
111
|
+
begin
|
112
|
+
res = template.render(Scope.new, :name => 'Joe', :foo => 'bar')
|
113
|
+
rescue => boom
|
114
|
+
assert_kind_of MockError, boom
|
115
|
+
line = boom.backtrace.first
|
116
|
+
assert_equal 'test.slim', line.split(":").first
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
__END__
|
122
|
+
html
|
123
|
+
body
|
124
|
+
h1 = "Hey #{name}"
|
125
|
+
|
126
|
+
= raise MockError
|
127
|
+
|
128
|
+
p we never get here
|
data/vim/slim.vim
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
" Vim syntax file
|
2
|
+
" Language: Slim
|
3
|
+
" Maintainer: Andrew Stone <andy@stonean.com>
|
4
|
+
" Version: 1
|
5
|
+
" Last Change: 2010 Sep 25
|
6
|
+
" TODO: Feedback is welcomed.
|
7
|
+
|
8
|
+
" Quit when a syntax file is already loaded.
|
9
|
+
if exists("b:current_syntax")
|
10
|
+
finish
|
11
|
+
endif
|
12
|
+
|
13
|
+
if !exists("main_syntax")
|
14
|
+
let main_syntax = 'slim'
|
15
|
+
endif
|
16
|
+
|
17
|
+
" Allows a per line syntax evaluation.
|
18
|
+
let b:ruby_no_expensive = 1
|
19
|
+
|
20
|
+
" Include Ruby syntax highlighting
|
21
|
+
syn include @slimRuby syntax/ruby.vim
|
22
|
+
|
23
|
+
" Include HTML
|
24
|
+
runtime! syntax/html.vim
|
25
|
+
unlet! b:current_syntax
|
26
|
+
|
27
|
+
syntax region slimHtml start="^\s*[^-=]\w" end="$" contains=htmlTagName, htmlArg, htmlString
|
28
|
+
|
29
|
+
syntax region slimControl start="-" end="$" contains=@slimRuby keepend
|
30
|
+
syntax region slimOutput start=".*=\s" end="$" contains=@slimRuby keepend
|
31
|
+
|
32
|
+
|
33
|
+
let b:current_syntax = "slim"
|
data/vim/test.slim
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
! doctype html
|
2
|
+
head
|
3
|
+
title Slim Vim Test
|
4
|
+
meta name="keywords" content="slim, vim, syntax"
|
5
|
+
body
|
6
|
+
h1 = @page_title
|
7
|
+
p id="notice"
|
8
|
+
'
|
9
|
+
Welcome to the the syntax test. This file is to excercise the various markup.
|
10
|
+
|
11
|
+
- unless @users.empty?
|
12
|
+
table
|
13
|
+
- for user in users do
|
14
|
+
tr
|
15
|
+
td = user.name
|
16
|
+
- else
|
17
|
+
p There are no users.
|
18
|
+
|
19
|
+
script type="text/javascript"
|
20
|
+
'
|
21
|
+
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
22
|
+
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
23
|
+
|
24
|
+
script type="text/javascript"
|
25
|
+
'
|
26
|
+
var pageTracker = _gat._getTracker("UA-12345678-9");
|
27
|
+
pageTracker._trackPageview();
|
metadata
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slim
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
4
|
+
prerelease: true
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
|
7
|
+
- 7
|
8
|
+
- 0
|
9
|
+
- beta
|
10
|
+
- 2
|
11
|
+
version: 0.7.0.beta.2
|
10
12
|
platform: ruby
|
11
13
|
authors:
|
12
14
|
- Andrew Stone
|
@@ -15,11 +17,12 @@ autorequire:
|
|
15
17
|
bindir: bin
|
16
18
|
cert_chain: []
|
17
19
|
|
18
|
-
date: 2010-10-
|
20
|
+
date: 2010-10-22 00:00:00 -04:00
|
19
21
|
default_executable:
|
20
22
|
dependencies:
|
21
23
|
- !ruby/object:Gem::Dependency
|
22
24
|
name: escape_utils
|
25
|
+
prerelease: false
|
23
26
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
27
|
none: false
|
25
28
|
requirements:
|
@@ -27,26 +30,59 @@ dependencies:
|
|
27
30
|
- !ruby/object:Gem::Version
|
28
31
|
segments:
|
29
32
|
- 0
|
30
|
-
|
33
|
+
- 1
|
34
|
+
- 9
|
35
|
+
version: 0.1.9
|
31
36
|
type: :runtime
|
32
|
-
prerelease: false
|
33
37
|
version_requirements: *id001
|
34
38
|
- !ruby/object:Gem::Dependency
|
35
|
-
name:
|
39
|
+
name: temple
|
40
|
+
prerelease: false
|
36
41
|
requirement: &id002 !ruby/object:Gem::Requirement
|
37
42
|
none: false
|
38
43
|
requirements:
|
39
|
-
- -
|
44
|
+
- - ~>
|
40
45
|
- !ruby/object:Gem::Version
|
41
46
|
segments:
|
42
47
|
- 0
|
43
|
-
|
44
|
-
|
45
|
-
|
48
|
+
- 1
|
49
|
+
- 2
|
50
|
+
version: 0.1.2
|
51
|
+
type: :runtime
|
46
52
|
version_requirements: *id002
|
47
53
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
54
|
+
name: tilt
|
55
|
+
prerelease: false
|
49
56
|
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
segments:
|
62
|
+
- 1
|
63
|
+
- 1
|
64
|
+
version: "1.1"
|
65
|
+
type: :runtime
|
66
|
+
version_requirements: *id003
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: rake
|
69
|
+
prerelease: false
|
70
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
- 8
|
78
|
+
- 7
|
79
|
+
version: 0.8.7
|
80
|
+
type: :development
|
81
|
+
version_requirements: *id004
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: haml
|
84
|
+
prerelease: false
|
85
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
50
86
|
none: false
|
51
87
|
requirements:
|
52
88
|
- - ">="
|
@@ -55,11 +91,24 @@ dependencies:
|
|
55
91
|
- 0
|
56
92
|
version: "0"
|
57
93
|
type: :development
|
94
|
+
version_requirements: *id005
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: erubis
|
58
97
|
prerelease: false
|
59
|
-
|
98
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
segments:
|
104
|
+
- 0
|
105
|
+
version: "0"
|
106
|
+
type: :development
|
107
|
+
version_requirements: *id006
|
60
108
|
- !ruby/object:Gem::Dependency
|
61
|
-
name:
|
62
|
-
|
109
|
+
name: minitest
|
110
|
+
prerelease: false
|
111
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
63
112
|
none: false
|
64
113
|
requirements:
|
65
114
|
- - ">="
|
@@ -68,11 +117,24 @@ dependencies:
|
|
68
117
|
- 0
|
69
118
|
version: "0"
|
70
119
|
type: :development
|
120
|
+
version_requirements: *id007
|
121
|
+
- !ruby/object:Gem::Dependency
|
122
|
+
name: rcov
|
71
123
|
prerelease: false
|
72
|
-
|
124
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
125
|
+
none: false
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
segments:
|
130
|
+
- 0
|
131
|
+
version: "0"
|
132
|
+
type: :development
|
133
|
+
version_requirements: *id008
|
73
134
|
- !ruby/object:Gem::Dependency
|
74
|
-
name:
|
75
|
-
|
135
|
+
name: rdiscount
|
136
|
+
prerelease: false
|
137
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
76
138
|
none: false
|
77
139
|
requirements:
|
78
140
|
- - ">="
|
@@ -81,8 +143,20 @@ dependencies:
|
|
81
143
|
- 0
|
82
144
|
version: "0"
|
83
145
|
type: :development
|
146
|
+
version_requirements: *id009
|
147
|
+
- !ruby/object:Gem::Dependency
|
148
|
+
name: liquid
|
84
149
|
prerelease: false
|
85
|
-
|
150
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
151
|
+
none: false
|
152
|
+
requirements:
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
segments:
|
156
|
+
- 0
|
157
|
+
version: "0"
|
158
|
+
type: :development
|
159
|
+
version_requirements: *id010
|
86
160
|
description: Slim is a template language whose goal is reduce the syntax to the essential parts without becoming cryptic.
|
87
161
|
email:
|
88
162
|
- andy@stonean.com
|
@@ -94,21 +168,42 @@ extensions: []
|
|
94
168
|
extra_rdoc_files:
|
95
169
|
- README.md
|
96
170
|
files:
|
171
|
+
- .gitignore
|
97
172
|
- Gemfile
|
98
173
|
- Gemfile.lock
|
99
174
|
- README.md
|
100
175
|
- Rakefile
|
176
|
+
- benchmarks/run.rb
|
177
|
+
- benchmarks/src/complex.erb
|
178
|
+
- benchmarks/src/complex.haml
|
179
|
+
- benchmarks/src/complex.slim
|
180
|
+
- benchmarks/src/complex_view.rb
|
101
181
|
- lib/slim.rb
|
102
182
|
- lib/slim/compiler.rb
|
183
|
+
- lib/slim/embedded_engine.rb
|
184
|
+
- lib/slim/end_inserter.rb
|
103
185
|
- lib/slim/engine.rb
|
104
|
-
- lib/slim/
|
186
|
+
- lib/slim/filter.rb
|
187
|
+
- lib/slim/helpers.rb
|
188
|
+
- lib/slim/parser.rb
|
105
189
|
- lib/slim/rails.rb
|
106
|
-
-
|
190
|
+
- lib/slim/template.rb
|
191
|
+
- lib/slim/version.rb
|
107
192
|
- slim.gemspec
|
108
193
|
- test/helper.rb
|
109
|
-
- test/slim/
|
110
|
-
- test/slim/
|
111
|
-
- test/
|
194
|
+
- test/slim/test_code_blocks.rb
|
195
|
+
- test/slim/test_code_escaping.rb
|
196
|
+
- test/slim/test_code_evaluation.rb
|
197
|
+
- test/slim/test_code_helpers.rb
|
198
|
+
- test/slim/test_code_output.rb
|
199
|
+
- test/slim/test_code_structure.rb
|
200
|
+
- test/slim/test_embedded_engines.rb
|
201
|
+
- test/slim/test_html_escaping.rb
|
202
|
+
- test/slim/test_html_structure.rb
|
203
|
+
- test/slim/test_parser_errors.rb
|
204
|
+
- test/slim/test_slim_template.rb
|
205
|
+
- vim/slim.vim
|
206
|
+
- vim/test.slim
|
112
207
|
has_rdoc: true
|
113
208
|
homepage: http://github.com/stonean/slim
|
114
209
|
licenses: []
|
@@ -123,18 +218,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
123
218
|
requirements:
|
124
219
|
- - ">="
|
125
220
|
- !ruby/object:Gem::Version
|
126
|
-
hash: -160104932492896005
|
127
221
|
segments:
|
128
222
|
- 0
|
129
223
|
version: "0"
|
130
224
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
225
|
none: false
|
132
226
|
requirements:
|
133
|
-
- - "
|
227
|
+
- - ">"
|
134
228
|
- !ruby/object:Gem::Version
|
135
229
|
segments:
|
136
|
-
-
|
137
|
-
|
230
|
+
- 1
|
231
|
+
- 3
|
232
|
+
- 1
|
233
|
+
version: 1.3.1
|
138
234
|
requirements: []
|
139
235
|
|
140
236
|
rubyforge_project: slim
|
@@ -142,8 +238,5 @@ rubygems_version: 1.3.7
|
|
142
238
|
signing_key:
|
143
239
|
specification_version: 3
|
144
240
|
summary: Slim is a template language.
|
145
|
-
test_files:
|
146
|
-
|
147
|
-
- test/test_slim.rb
|
148
|
-
- test/slim/test_engine.rb
|
149
|
-
- test/slim/test_compiler.rb
|
241
|
+
test_files: []
|
242
|
+
|