slim 0.8.2 → 0.8.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +10 -4
- data/lib/slim/parser.rb +18 -6
- data/lib/slim/version.rb +1 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -108,7 +108,7 @@ Here's a quick example to demonstrate what a Slim template looks like:
|
|
108
108
|
|
109
109
|
#### `==`
|
110
110
|
|
111
|
-
> Same as the single equal sign, but does not go through the escape_html method.
|
111
|
+
> Same as the single equal sign, but does not go through the `escape_html` method.
|
112
112
|
|
113
113
|
#### `!`
|
114
114
|
|
@@ -118,6 +118,11 @@ Here's a quick example to demonstrate what a Slim template looks like:
|
|
118
118
|
|
119
119
|
> Use the forward slash for ruby code comments - anything after it won't get displayed in the final render.
|
120
120
|
|
121
|
+
#### `/!`
|
122
|
+
|
123
|
+
> Use the forward slash immediately followed by an exclamation mark for html comments (`<!-- -->`).
|
124
|
+
|
125
|
+
|
121
126
|
### Things to know
|
122
127
|
|
123
128
|
#### Standard Ruby syntax after `-` and `=`
|
@@ -253,18 +258,19 @@ Here's a quick example to demonstrate what a Slim template looks like:
|
|
253
258
|
This line will have two spaces in front of it.
|
254
259
|
And so on...
|
255
260
|
|
256
|
-
### Add
|
261
|
+
### Add comments
|
257
262
|
|
258
|
-
Use
|
263
|
+
Use `/` for ruby code comments and `/!` for html comments
|
259
264
|
|
260
265
|
body
|
261
266
|
p
|
262
267
|
/ This line won't get displayed.
|
263
268
|
Neither does this line.
|
269
|
+
/! This will get displayed as html comments.
|
264
270
|
|
265
271
|
The parsed result of the above:
|
266
272
|
|
267
|
-
<body><p
|
273
|
+
<body><p><!--This will get displayed as html comments.--></p></body>
|
268
274
|
|
269
275
|
### Validate Slim syntax
|
270
276
|
|
data/lib/slim/parser.rb
CHANGED
@@ -69,7 +69,7 @@ module Slim
|
|
69
69
|
# Hello
|
70
70
|
# World!
|
71
71
|
#
|
72
|
-
block_indent,
|
72
|
+
block_indent, in_slim_comment, in_html_comment, text_indent = nil, false, false, nil
|
73
73
|
|
74
74
|
str.each_line do |line|
|
75
75
|
lineno += 1
|
@@ -104,10 +104,10 @@ module Slim
|
|
104
104
|
# Handle blocks with multiple lines
|
105
105
|
if block_indent
|
106
106
|
if indent > block_indent
|
107
|
-
# This line happens to be indented deeper (or equal) than the block start character (|, ',
|
107
|
+
# This line happens to be indented deeper (or equal) than the block start character (|, ', /).
|
108
108
|
# This means that it's a part of the block.
|
109
109
|
|
110
|
-
if !
|
110
|
+
if !in_slim_comment
|
111
111
|
# The indentation of first line of the text block determines the text base indentation.
|
112
112
|
newline = text_indent ? "\n" : ''
|
113
113
|
text_indent ||= indent
|
@@ -124,10 +124,15 @@ module Slim
|
|
124
124
|
next
|
125
125
|
end
|
126
126
|
|
127
|
+
# Closes the html comment
|
128
|
+
if in_html_comment
|
129
|
+
stacks.last << [:static, '-->']
|
130
|
+
end
|
131
|
+
|
127
132
|
# It's guaranteed that we're now *not* in a block, because
|
128
133
|
# the indent was less than the block start indent.
|
129
134
|
block_indent = text_indent = nil
|
130
|
-
|
135
|
+
in_slim_comment = in_html_comment = false
|
131
136
|
end
|
132
137
|
|
133
138
|
# If there's more stacks than indents, it means that the previous
|
@@ -173,9 +178,16 @@ module Slim
|
|
173
178
|
stacks << block
|
174
179
|
block_indent = indent
|
175
180
|
|
176
|
-
|
181
|
+
in_slim_comment = line[0] == ?/ && line[1] != ?!
|
182
|
+
in_html_comment = line[0] == ?/ && line[1] == ?! && line.slice!(0)
|
177
183
|
line.slice!(0)
|
178
|
-
|
184
|
+
|
185
|
+
# We're entering a block of html comments, so let's add an opening tag
|
186
|
+
if in_html_comment
|
187
|
+
block << [:static, '<!--']
|
188
|
+
end
|
189
|
+
|
190
|
+
if !in_slim_comment && !line.strip.empty?
|
179
191
|
block << [:slim, :text, line.sub(/^( )/, '')]
|
180
192
|
text_indent = block_indent + ($1 ? 2 : 1)
|
181
193
|
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
|
- 8
|
8
|
-
-
|
9
|
-
version: 0.8.
|
8
|
+
- 3
|
9
|
+
version: 0.8.3
|
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-12-
|
19
|
+
date: 2010-12-23 00:00:00 +11:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|