hamljsx 0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/hamljsx.rb +53 -0
- metadata +46 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: aa2b2763cb274fb0bbb3311ccc51ed6a2f357a82
|
4
|
+
data.tar.gz: 3e26671904156fb077a841ba6571f05e0739272f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7c0e1abd33a13bbd6972c5b3e437f5dc6331f874f970d602a94410008fd12929c7ff2dce3fbceea0a25a674f5f83d147980bfb95fe491697e1c96f119bb83d01
|
7
|
+
data.tar.gz: 9c3ce9359180616e5d53a4584e77111c75e0dfe556e2a5f5dcd2d280f3cf8cc8bafb77baac705296147778d1f69495d4e9f57f20dda281d108ff06509e025acf
|
data/lib/hamljsx.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'tilt'
|
2
|
+
require 'rails'
|
3
|
+
|
4
|
+
class HamlJsxTemplate < Tilt::Template
|
5
|
+
MARKER_START = "(~"
|
6
|
+
MARKER_END = "~)"
|
7
|
+
|
8
|
+
def prepare
|
9
|
+
Haml::Options.defaults[:format] = :xhtml
|
10
|
+
end
|
11
|
+
|
12
|
+
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
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
class HamlJsx < Rails::Railtie
|
50
|
+
initializer "hamljsx.add_template" do
|
51
|
+
Rails.application.assets.register_engine '.haml', HamlJsxTemplate
|
52
|
+
end
|
53
|
+
end
|
metadata
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: hamljsx
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Dan Hassin
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-12-30 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Inline Haml in JSX just like HTML, using (~ and ~) delimeters. Rather
|
14
|
+
limited still.
|
15
|
+
email:
|
16
|
+
- danhassin@mac.com
|
17
|
+
executables: []
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- lib/hamljsx.rb
|
22
|
+
homepage: http://rubygems.org/gems/hamljsx
|
23
|
+
licenses:
|
24
|
+
- license.md
|
25
|
+
metadata: {}
|
26
|
+
post_install_message:
|
27
|
+
rdoc_options: []
|
28
|
+
require_paths:
|
29
|
+
- lib
|
30
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - '>='
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
requirements: []
|
41
|
+
rubyforge_project:
|
42
|
+
rubygems_version: 2.0.6
|
43
|
+
signing_key:
|
44
|
+
specification_version: 4
|
45
|
+
summary: Use Haml with JSX!
|
46
|
+
test_files: []
|