hamlet 0.4.1 → 0.4.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.
@@ -4,7 +4,7 @@ require 'date'
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = 'hamlet'
7
- s.version = '0.4.1'
7
+ s.version = '0.4.2'
8
8
  s.date = Date.today.to_s
9
9
  s.authors = ['Greg Weber']
10
10
  s.email = ['greg@gregweber.info']
@@ -95,11 +95,6 @@ module Hamlet
95
95
  end
96
96
 
97
97
  def parse_line_indicators
98
- if @needs_space and not @line[0] == '>'
99
- @stacks.last << [:slim, :interpolate, "\n" ]
100
- @stacks.last << [:newline]
101
- end
102
- @needs_space = false
103
98
  case @line[0]
104
99
  when '-' # code block.
105
100
  block = [:multi]
@@ -107,6 +102,7 @@ module Hamlet
107
102
  @stacks.last << [:slim, :control, parse_broken_line, block]
108
103
  @stacks << block
109
104
  when '=' # output block.
105
+ @needs_space = true
110
106
  @line =~ /\A=(=?)('?)/
111
107
  @line = $'
112
108
  block = [:multi]
@@ -114,16 +110,24 @@ module Hamlet
114
110
  @stacks.last << [:static, ' '] unless $2.empty?
115
111
  @stacks << block
116
112
  when '<'
113
+ if @needs_space && !(@line[0] == '>')
114
+ @stacks.last << [:slim, :interpolate, "\n" ]
115
+ @stacks.last << [:newline]
116
+ end
117
+ @needs_space = false
117
118
  case @line
118
119
  when /\A<(\w+):\s*\Z/ # Embedded template. It is treated as block.
120
+ @needs_space = false
119
121
  block = [:multi]
120
122
  @stacks.last << [:newline] << [:slim, :embedded, $1, block]
121
123
  @stacks << block
122
124
  parse_text_block(nil, :from_embedded)
123
125
  return # Don't append newline, this has already been done before
124
126
  when /\A<([#\.]|\w[:\w-]*)/ # HTML tag.
127
+ @needs_space = false
125
128
  parse_tag($1)
126
129
  when /\A<!--( ?)(.*)\Z/ # HTML comment
130
+ @needs_space = false
127
131
  block = [:multi]
128
132
  @stacks.last << [:html, :comment, block]
129
133
  @stacks << block
@@ -131,11 +135,21 @@ module Hamlet
131
135
  parse_text_block($2.empty? ? nil : @indents.last + $1.size + 2)
132
136
  end
133
137
  else
134
- if @line =~ %r!\A#\[\s*(.*?)\s*\]\s*\Z! # HTML conditional comment
135
- block = [:multi]
136
- @stacks.last << [:slim, :condcomment, $1, block]
137
- @stacks << block
138
+ if @line[0] == '#' and @line[1] != '{'
139
+ @needs_space = false
140
+ if @line =~ %r!\A#\[\s*(.*?)\s*\]\s*\Z! # HTML conditional comment
141
+ block = [:multi]
142
+ @stacks.last << [:slim, :condcomment, $1, block]
143
+ @stacks << block
144
+ else
145
+ # otherwise the entire line is commented - ignore
146
+ end
138
147
  else
148
+ if @needs_space and not @line[0] == '>'
149
+ @stacks.last << [:slim, :interpolate, "\n" ]
150
+ @stacks.last << [:newline]
151
+ end
152
+ @needs_space = true
139
153
  push_text
140
154
  end
141
155
  end
@@ -143,7 +157,6 @@ module Hamlet
143
157
  end
144
158
 
145
159
  def push_text
146
- @needs_space = true
147
160
  if @line[0] == '>'
148
161
  @line.slice!(0)
149
162
  end
@@ -22,7 +22,7 @@ class TestSlimCodeStructure < TestSlim
22
22
  <p>The second paragraph
23
23
  }
24
24
 
25
- assert_html '<div><p>The first paragraph</p><p>The second paragraph</p></div>', source
25
+ assert_html "<div><p>The first paragraph</p>\n<p>The second paragraph</p></div>", source
26
26
  end
27
27
 
28
28
  def test_render_with_parameterized_conditional
@@ -33,7 +33,6 @@ class TestSlimCodeStructure < TestSlim
33
33
  - else
34
34
  <p>The second paragraph
35
35
  }
36
-
37
36
  assert_html '<div><p>The second paragraph</p></div>', source
38
37
  end
39
38
 
@@ -46,7 +45,7 @@ class TestSlimCodeStructure < TestSlim
46
45
  = var
47
46
  }
48
47
 
49
- assert_html '<div><p>The first paragraph</p>42</div>', source
48
+ assert_html "<div><p>The first paragraph</p>\n42</div>", source
50
49
  end
51
50
 
52
51
  def test_render_with_inline_condition
@@ -65,7 +64,7 @@ class TestSlimCodeStructure < TestSlim
65
64
  1
66
65
  - when 42
67
66
  42
68
- > is the answer
67
+ > is the answer
69
68
  }
70
69
 
71
70
  assert_html '<p>42 is the answer</p>', source
@@ -79,7 +78,7 @@ class TestSlimCodeStructure < TestSlim
79
78
  <p>World
80
79
  }
81
80
 
82
- assert_html '<p>Hello</p><p>World</p>', source
81
+ assert_html "<p>Hello</p>\n<p>World</p>", source
83
82
  end
84
83
 
85
84
  def test_render_with_yield
@@ -26,7 +26,7 @@ class TestSlimTextInterpolation < TestSlim
26
26
  >A message from the compiler: #{hello_world}
27
27
  }
28
28
 
29
- assert_html '<p>Hello World from @env with "quotes"</p><p>A message from the compiler: Hello World from @env</p>', source
29
+ assert_html "<p>Hello World from @env with \"quotes\"</p>\n<p>A message from the compiler: Hello World from @env</p>", source
30
30
  end
31
31
 
32
32
  def test_interpolation_in_tag
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hamlet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-10-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: slim
16
- requirement: &3486060 !ruby/object:Gem::Requirement
16
+ requirement: &3510300 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *3486060
24
+ version_requirements: *3510300
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &3484800 !ruby/object:Gem::Requirement
27
+ requirement: &3485740 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.8.7
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *3484800
35
+ version_requirements: *3485740
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: sass
38
- requirement: &3482880 !ruby/object:Gem::Requirement
38
+ requirement: &3484820 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 3.1.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *3482880
46
+ version_requirements: *3484820
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: minitest
49
- requirement: &3481440 !ruby/object:Gem::Requirement
49
+ requirement: &3483240 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *3481440
57
+ version_requirements: *3483240
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: kramdown
60
- requirement: &3480460 !ruby/object:Gem::Requirement
60
+ requirement: &3481080 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *3480460
68
+ version_requirements: *3481080
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: yard
71
- requirement: &3442220 !ruby/object:Gem::Requirement
71
+ requirement: &3480000 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *3442220
79
+ version_requirements: *3480000
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: creole
82
- requirement: &3441000 !ruby/object:Gem::Requirement
82
+ requirement: &3441840 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *3441000
90
+ version_requirements: *3441840
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: builder
93
- requirement: &3439960 !ruby/object:Gem::Requirement
93
+ requirement: &3440200 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *3439960
101
+ version_requirements: *3440200
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: pry
104
- requirement: &3439320 !ruby/object:Gem::Requirement
104
+ requirement: &3439100 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *3439320
112
+ version_requirements: *3439100
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: ruby-debug19
115
- requirement: &3438520 !ruby/object:Gem::Requirement
115
+ requirement: &3437320 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *3438520
123
+ version_requirements: *3437320
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: rcov
126
- requirement: &3435820 !ruby/object:Gem::Requirement
126
+ requirement: &3434540 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ! '>='
@@ -131,7 +131,7 @@ dependencies:
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *3435820
134
+ version_requirements: *3434540
135
135
  description: Hamlet is a template language whose goal is reduce HTML syntax to the
136
136
  essential parts.
137
137
  email: