hamljsx 0.1 → 0.1.1

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/engine.rb +51 -0
  3. data/lib/hamljsx.rb +3 -36
  4. metadata +2 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aa2b2763cb274fb0bbb3311ccc51ed6a2f357a82
4
- data.tar.gz: 3e26671904156fb077a841ba6571f05e0739272f
3
+ metadata.gz: 21ca603caadeca5ef4fc47f5d0214ec4f388ba81
4
+ data.tar.gz: 7c36a64f4f786b938d6a5cd3a7f01629c57b2c86
5
5
  SHA512:
6
- metadata.gz: 7c0e1abd33a13bbd6972c5b3e437f5dc6331f874f970d602a94410008fd12929c7ff2dce3fbceea0a25a674f5f83d147980bfb95fe491697e1c96f119bb83d01
7
- data.tar.gz: 9c3ce9359180616e5d53a4584e77111c75e0dfe556e2a5f5dcd2d280f3cf8cc8bafb77baac705296147778d1f69495d4e9f57f20dda281d108ff06509e025acf
6
+ metadata.gz: c9294f47207886169265505117fbaf04d9623864c37795950b496215187fca8a8ad07c0e81ab4ad7d42b22dce0d143efd2984cfb10f7cd696e1c28c0bc56cf15
7
+ data.tar.gz: cf342a236a19398fc721bb176315c677d84b832eff80bbefffa4095b25bc67f67365df723e24d04c34420b83764bbcdb1305c596cf530b6de4ef05148f11b521
@@ -0,0 +1,51 @@
1
+ require 'haml'
2
+
3
+ class HamlJsxEngine
4
+ MARKER_START = "(~"
5
+ MARKER_END = "~)"
6
+
7
+ def self.evaluate(data)
8
+ result = ""
9
+ offset = 0
10
+
11
+ while true
12
+ idx_start = data.index(MARKER_START, offset)
13
+ if idx_start
14
+ idx_start += 1
15
+ idx_end = data.index(MARKER_END, idx_start + MARKER_END.length)-1
16
+
17
+ result += data[offset..(idx_start-1)]
18
+ offset = idx_end + MARKER_END.length
19
+
20
+ haml = data[(idx_start + MARKER_START.length)..(idx_end-1)]
21
+
22
+ # Escape { } so they'll survive the HAML render
23
+ haml.gsub!(/\{/,"'{")
24
+ haml.gsub!(/\}/,"}'")
25
+
26
+ # Remove spaces offset
27
+ first_indent = haml.match(/\s*/)[0]
28
+ haml.gsub!(/^#{first_indent}/,"")
29
+
30
+ # Dot optimization
31
+ haml.gsub!(/^(\s*)\.(\(|$)/,'\1%div\2')
32
+
33
+ # Remove comments
34
+ haml.gsub!(/^\s*\/\/.*$/,'')
35
+ haml.gsub!(/\/\*.*?\*\//,'')
36
+
37
+ html = Haml::Engine.new(haml).render
38
+ html.gsub!("class=","className=")
39
+ html.gsub!(/\'{/,"{")
40
+ html.gsub!(/\}\'/,"}")
41
+
42
+ result += html
43
+ else
44
+ result += data[offset..-1]
45
+ break
46
+ end
47
+ end
48
+
49
+ result
50
+ end
51
+ end
@@ -1,48 +1,15 @@
1
1
  require 'tilt'
2
2
  require 'rails'
3
3
 
4
- class HamlJsxTemplate < Tilt::Template
5
- MARKER_START = "(~"
6
- MARKER_END = "~)"
4
+ require 'engine'
7
5
 
6
+ class HamlJsxTemplate < Tilt::Template
8
7
  def prepare
9
8
  Haml::Options.defaults[:format] = :xhtml
10
9
  end
11
10
 
12
11
  def evaluate(context, locals, &block)
13
- result = ""
14
- offset = 0
15
-
16
- while true
17
- idx_start = @data.index(MARKER_START, offset)
18
- if idx_start
19
- idx_start += 1
20
- idx_end = @data.index(MARKER_END, idx_start + MARKER_END.length)-1
21
-
22
- result += @data[offset..(idx_start-1)]
23
- offset = idx_end + MARKER_END.length
24
-
25
- haml = @data[(idx_start + MARKER_START.length)..(idx_end-1)]
26
- haml.gsub!(/\{/,"'{")
27
- haml.gsub!(/\}/,"}'")
28
- first_indent = haml.match(/\s*/)[0]
29
- haml.gsub!(/^#{first_indent}/,"")
30
-
31
- haml.gsub!(/^.$/,"%div")
32
-
33
- html = Haml::Engine.new(haml).render
34
- html.gsub!("class=","className=")
35
- html.gsub!(/\'{/,"{")
36
- html.gsub!(/\}\'/,"}")
37
-
38
- result += html
39
- else
40
- result += @data[offset..-1]
41
- break
42
- end
43
- end
44
-
45
- result
12
+ HamlJsxEngine.evaluate(@data)
46
13
  end
47
14
  end
48
15
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hamljsx
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Hassin
@@ -19,6 +19,7 @@ extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
21
  - lib/hamljsx.rb
22
+ - lib/engine.rb
22
23
  homepage: http://rubygems.org/gems/hamljsx
23
24
  licenses:
24
25
  - license.md