haml_assets 0.1.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.rvmrc +1 -1
- data/CHANGELOG.md +7 -0
- data/Gemfile.lock +1 -1
- data/LICENSE +20 -0
- data/README.md +29 -14
- data/lib/haml_assets/haml_sprockets_engine.rb +29 -8
- data/lib/haml_assets/version.rb +1 -1
- data/spec/render_spec.rb +25 -0
- metadata +47 -16
data/.rvmrc
CHANGED
@@ -1 +1 @@
|
|
1
|
-
rvm use default@
|
1
|
+
rvm use default@haml_assets
|
data/CHANGELOG.md
ADDED
data/Gemfile.lock
CHANGED
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011-2012 Care Zone, Inc.
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,12 +1,9 @@
|
|
1
|
-
|
2
|
-
your gemfile.
|
3
|
-
|
4
|
-
# Use `haml` to write your JavaScript templates in the asset pipeline
|
1
|
+
# Haml for JavaScript templates with the asset pipeline
|
5
2
|
|
6
3
|
Writing JavaScript templates for Backbone.js (or other frameworks) in your app?
|
7
4
|
Would you like to use `haml` in the asset pipeline?
|
8
5
|
|
9
|
-
This gem adds `haml` support to the Rails 3.1 asset pipeline. You will also
|
6
|
+
This gem adds `haml` support to the Rails 3.1+ asset pipeline. You will also
|
10
7
|
need a gem that creates a compiled JavaScript template like `hogan_assets` or
|
11
8
|
`handlebars_assets` as well.
|
12
9
|
|
@@ -16,9 +13,14 @@ Add this to your `Gemfile`
|
|
16
13
|
|
17
14
|
gem 'haml_assets'
|
18
15
|
|
19
|
-
|
16
|
+
### Upgrading from 0.0.x
|
17
|
+
|
18
|
+
`haml_assets` now works with the `haml` gem. Please update your gemfile to only
|
19
|
+
require `haml_assets.`.
|
20
20
|
|
21
|
-
##
|
21
|
+
## Writing your JavaScript templates
|
22
|
+
|
23
|
+
### Templates directory
|
22
24
|
|
23
25
|
You should located your templates under `app/assets`; we suggest
|
24
26
|
`app/assets/templates`. In your JavaScript manifest file (for example
|
@@ -26,7 +28,7 @@ You should located your templates under `app/assets`; we suggest
|
|
26
28
|
|
27
29
|
//= require_tree ../templates
|
28
30
|
|
29
|
-
|
31
|
+
### The template file
|
30
32
|
|
31
33
|
Inside your templates directory, add your template file. The file should be
|
32
34
|
named as follows
|
@@ -52,11 +54,19 @@ if you are writing an *edit* template, for example
|
|
52
54
|
= f.label :name, "Name"
|
53
55
|
= f.text_field :name, class: 'text required', autofocus: true, value: '{{name}}'
|
54
56
|
|
55
|
-
|
57
|
+
## Rendering partials
|
58
|
+
|
59
|
+
You can render partials within your views. Because this is hacked in, you can
|
60
|
+
nest your partials as normal, but they must have a recognized format such as
|
61
|
+
`html`. For example
|
56
62
|
|
57
|
-
|
63
|
+
shared/_timestamps.html.haml
|
58
64
|
|
59
|
-
|
65
|
+
A partial will become a part of whatever template you are rendering, so make
|
66
|
+
sure that you are generating the correct markup. For example, do not include an
|
67
|
+
embedded coffeescript partial inside an embedded javascript template.
|
68
|
+
|
69
|
+
## Contributing
|
60
70
|
|
61
71
|
Once you've made your great commits:
|
62
72
|
|
@@ -66,7 +76,12 @@ Once you've made your great commits:
|
|
66
76
|
1. Create a Pull Request from your branch
|
67
77
|
1. That's it!
|
68
78
|
|
69
|
-
|
79
|
+
## Authors
|
80
|
+
|
81
|
+
* Les Hill : @leshill
|
82
|
+
* Wes Gibbs : @wgibbs
|
83
|
+
|
84
|
+
## Contributors
|
70
85
|
|
71
|
-
|
72
|
-
|
86
|
+
* Eugene Pimenov (@libc) : Rendering partials
|
87
|
+
* Raphael Randschau (@nicolai86) : Render partials
|
@@ -7,8 +7,33 @@ module HamlAssets
|
|
7
7
|
'application/javascript'
|
8
8
|
end
|
9
9
|
|
10
|
+
class LookupContext < ActionView::LookupContext
|
11
|
+
def initialize(haml_context, path)
|
12
|
+
super(path)
|
13
|
+
@view_context = haml_context
|
14
|
+
end
|
15
|
+
|
16
|
+
def find_template(*args)
|
17
|
+
super.tap do |r|
|
18
|
+
@view_context.depend_on(r.identifier)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
10
23
|
module ViewContext
|
11
|
-
attr_accessor :output_buffer
|
24
|
+
attr_accessor :output_buffer, :_view_renderer, :_lookup_context
|
25
|
+
|
26
|
+
def view_renderer
|
27
|
+
@_view_renderer ||= ActionView::Renderer.new(lookup_context)
|
28
|
+
end
|
29
|
+
|
30
|
+
def environment_paths
|
31
|
+
environment.paths.to_a
|
32
|
+
end
|
33
|
+
|
34
|
+
def lookup_context
|
35
|
+
@_lookup_context ||= LookupContext.new(self, environment_paths)
|
36
|
+
end
|
12
37
|
|
13
38
|
def output_buffer_with_haml
|
14
39
|
return haml_buffer.buffer if is_haml?
|
@@ -65,14 +90,10 @@ module HamlAssets
|
|
65
90
|
Haml::Engine.new(data, Haml::Template.options.merge(:escape_attrs => false)).render(context, locals)
|
66
91
|
end
|
67
92
|
|
68
|
-
# The Sprockets context is shared among all the processors, give haml its
|
69
|
-
# own context
|
70
93
|
def view_context(scope)
|
71
|
-
@view_context ||=
|
72
|
-
|
73
|
-
|
74
|
-
scope.logical_path.to_s,
|
75
|
-
scope.pathname).tap { |ctx| ctx.class.send(:include, ViewContext) }
|
94
|
+
@view_context ||= scope.tap do |s|
|
95
|
+
s.singleton_class.instance_eval { include HamlAssets::HamlSprocketsEngine::ViewContext }
|
96
|
+
end
|
76
97
|
end
|
77
98
|
end
|
78
99
|
end
|
data/lib/haml_assets/version.rb
CHANGED
data/spec/render_spec.rb
CHANGED
@@ -1,7 +1,32 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe HamlAssets do
|
4
|
+
|
4
5
|
it "should have the proper format" do
|
5
6
|
RailsApp::Application.assets['link_to.jst.ejs.haml'].to_s.should == "(function() {\n this.JST || (this.JST = {});\n this.JST[\"link_to\"] = function(obj){var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('');}return __p.join('');};\n}).call(this);\n"
|
6
7
|
end
|
8
|
+
|
9
|
+
context 'rendering' do
|
10
|
+
let(:path) { 'app/assets/templates/quotes.haml' }
|
11
|
+
|
12
|
+
it "quoted attributes" do
|
13
|
+
template = HamlAssets::HamlSprocketsEngine.new(path) { %Q(%div{data:{bind:'attr: { "data-something": someValue }'}}) }
|
14
|
+
template.send(:render_haml, Object.new, {}).strip.should eq(%Q(<div data-bind='attr: { "data-something": someValue }'></div>))
|
15
|
+
end
|
16
|
+
|
17
|
+
it "renders with a partial" do
|
18
|
+
template = HamlAssets::HamlSprocketsEngine.new('app/assets/templates/with_partial.haml') { %Q(%div= render 'partial') }
|
19
|
+
partial = stub(identifier: 'identifier', render: 'partial')
|
20
|
+
|
21
|
+
HamlAssets::HamlSprocketsEngine::LookupContext.any_instance.should_receive(:find_template).and_return(partial)
|
22
|
+
|
23
|
+
context = Class.new do
|
24
|
+
include HamlAssets::HamlSprocketsEngine::ViewContext
|
25
|
+
end.new
|
26
|
+
|
27
|
+
context.stub(environment_paths: [])
|
28
|
+
|
29
|
+
template.send(:render_haml, context, {}).strip.should eq(%Q(<div>partial</div>))
|
30
|
+
end
|
31
|
+
end
|
7
32
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: haml_assets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-10-08 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: haml
|
17
|
-
requirement:
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,15 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements:
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '0'
|
26
31
|
- !ruby/object:Gem::Dependency
|
27
32
|
name: tilt
|
28
|
-
requirement:
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
29
34
|
none: false
|
30
35
|
requirements:
|
31
36
|
- - ! '>='
|
@@ -33,10 +38,15 @@ dependencies:
|
|
33
38
|
version: '0'
|
34
39
|
type: :runtime
|
35
40
|
prerelease: false
|
36
|
-
version_requirements:
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
37
47
|
- !ruby/object:Gem::Dependency
|
38
48
|
name: rails
|
39
|
-
requirement:
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
40
50
|
none: false
|
41
51
|
requirements:
|
42
52
|
- - ~>
|
@@ -44,10 +54,15 @@ dependencies:
|
|
44
54
|
version: 3.1.0
|
45
55
|
type: :development
|
46
56
|
prerelease: false
|
47
|
-
version_requirements:
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 3.1.0
|
48
63
|
- !ruby/object:Gem::Dependency
|
49
64
|
name: rspec
|
50
|
-
requirement:
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
51
66
|
none: false
|
52
67
|
requirements:
|
53
68
|
- - ! '>='
|
@@ -55,10 +70,15 @@ dependencies:
|
|
55
70
|
version: '0'
|
56
71
|
type: :development
|
57
72
|
prerelease: false
|
58
|
-
version_requirements:
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
59
79
|
- !ruby/object:Gem::Dependency
|
60
80
|
name: rspec-rails
|
61
|
-
requirement:
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
62
82
|
none: false
|
63
83
|
requirements:
|
64
84
|
- - ! '>='
|
@@ -66,10 +86,15 @@ dependencies:
|
|
66
86
|
version: '0'
|
67
87
|
type: :development
|
68
88
|
prerelease: false
|
69
|
-
version_requirements:
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
70
95
|
- !ruby/object:Gem::Dependency
|
71
96
|
name: ejs
|
72
|
-
requirement:
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
73
98
|
none: false
|
74
99
|
requirements:
|
75
100
|
- - ! '>='
|
@@ -77,7 +102,12 @@ dependencies:
|
|
77
102
|
version: '0'
|
78
103
|
type: :development
|
79
104
|
prerelease: false
|
80
|
-
version_requirements:
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
81
111
|
description: Use Haml with Rails helpers in the asset pipeline
|
82
112
|
email:
|
83
113
|
- les@infbio.com
|
@@ -89,8 +119,10 @@ files:
|
|
89
119
|
- .gitignore
|
90
120
|
- .rspec
|
91
121
|
- .rvmrc
|
122
|
+
- CHANGELOG.md
|
92
123
|
- Gemfile
|
93
124
|
- Gemfile.lock
|
125
|
+
- LICENSE
|
94
126
|
- README.md
|
95
127
|
- Rakefile
|
96
128
|
- haml_assets.gemspec
|
@@ -135,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
167
|
version: '0'
|
136
168
|
requirements: []
|
137
169
|
rubyforge_project: haml_assets
|
138
|
-
rubygems_version: 1.8.
|
170
|
+
rubygems_version: 1.8.24
|
139
171
|
signing_key:
|
140
172
|
specification_version: 3
|
141
173
|
summary: Use Haml with Rails helpers in the asset pipeline
|
@@ -157,4 +189,3 @@ test_files:
|
|
157
189
|
- spec/rails_app/script/rails
|
158
190
|
- spec/render_spec.rb
|
159
191
|
- spec/spec_helper.rb
|
160
|
-
has_rdoc:
|