haml_assets 0.0.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.
- data/.gitignore +3 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/README.md +71 -0
- data/Rakefile +1 -0
- data/haml_assets.gemspec +23 -0
- data/lib/haml_assets.rb +6 -0
- data/lib/haml_assets/engine.rb +7 -0
- data/lib/haml_assets/haml_sprockets_engine.rb +47 -0
- data/lib/haml_assets/version.rb +3 -0
- metadata +79 -0
data/.gitignore
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use default@handlebars_assets
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
# Use haml to write your Javascript templates
|
2
|
+
|
3
|
+
*ALPHA*
|
4
|
+
|
5
|
+
Writing Javascript templates for Backbone.js (or other frameworks) in your app? Would you like to use haml and the asset pipeline?
|
6
|
+
|
7
|
+
This gem adds haml templating support to the Rails 3.1 asset pipeline. This gem works with the EJS gem and JST asset engine to make your haml available as a compiled Javascript template.
|
8
|
+
|
9
|
+
## Installing
|
10
|
+
|
11
|
+
Add this to your `Gemfile`
|
12
|
+
|
13
|
+
gem haml_assets
|
14
|
+
gem ejs
|
15
|
+
|
16
|
+
# Using haml for your Javascript templates
|
17
|
+
|
18
|
+
|
19
|
+
## Templates directory
|
20
|
+
|
21
|
+
You should located your templates under `app/assets`; we suggest `app/assets/templates`. In your Javascript manifest file (for example `application.js`), use `require_tree`
|
22
|
+
|
23
|
+
//= require_tree ../templates
|
24
|
+
|
25
|
+
## The template file
|
26
|
+
|
27
|
+
Inside your templates directory, add your template file. The file should be named as follows
|
28
|
+
|
29
|
+
your_template_name.jst.ejs.haml
|
30
|
+
|
31
|
+
The asset pipeline will then generate the actual Javascript asset
|
32
|
+
|
33
|
+
1. Convert your haml to HTML
|
34
|
+
1. Compile the HTML to an EJS Javascript template
|
35
|
+
1. Add the template to the JST global under the templates name
|
36
|
+
|
37
|
+
**Important!** The asset pipeline is not invoking a controller to generate the templates. If you are using existing view templates, you may have to edit templates to remove some references to controller helpers.
|
38
|
+
|
39
|
+
## EJS
|
40
|
+
|
41
|
+
In your template file you can use the EJS delimiters as you would normally. If you want to use them in attributes mark the attribute html_safe.
|
42
|
+
|
43
|
+
= f.text_field :email, class: 'text', value: '<%= email %>'.html_safe
|
44
|
+
|
45
|
+
### Helpers
|
46
|
+
|
47
|
+
All the ActionView and route helpers are available in your template. If you use `form_for` and the related helpers, you should use the *new* object form, even if you are writing an *edit* form, for example
|
48
|
+
|
49
|
+
= form_for :contact, url: "javascript_not_working", html: {:class => :edit_contact, :method => :put} do |f|
|
50
|
+
%p
|
51
|
+
= f.label :name, "Name"
|
52
|
+
= f.text_field :name, class: 'text required', autofocus: true, value: '<%= name %>'.html_safe
|
53
|
+
|
54
|
+
# TODO
|
55
|
+
|
56
|
+
Make `render` available, so you can render a partial.
|
57
|
+
|
58
|
+
# Contributing
|
59
|
+
|
60
|
+
Once you've made your great commits:
|
61
|
+
|
62
|
+
1. Fork
|
63
|
+
1. Create a topic branch - git checkout -b my_branch
|
64
|
+
1. Push to your branch - git push origin my_branch
|
65
|
+
1. Create a Pull Request from your branch
|
66
|
+
1. That's it!
|
67
|
+
|
68
|
+
# Authors
|
69
|
+
|
70
|
+
Les Hill : @leshill
|
71
|
+
Wes Gibbs : @wgibbs
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/haml_assets.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "haml_assets/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "haml_assets"
|
7
|
+
s.version = HamlAssets::VERSION
|
8
|
+
s.authors = ["Les Hill", "Wes Gibbs"]
|
9
|
+
s.email = ["les@infbio.com", "wes@infbio.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{Use Haml with Rails helpers in the asset pipeline}
|
12
|
+
s.description = %q{Use Haml with Rails helpers in the asset pipeline}
|
13
|
+
|
14
|
+
s.rubyforge_project = "haml_assets"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_runtime_dependency "haml"
|
22
|
+
s.add_runtime_dependency "tilt"
|
23
|
+
end
|
data/lib/haml_assets.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'haml'
|
2
|
+
require 'tilt'
|
3
|
+
|
4
|
+
module HamlAssets
|
5
|
+
class HamlSprocketsEngine < Tilt::Template
|
6
|
+
attr_accessor :locals
|
7
|
+
|
8
|
+
def self.default_mime_type
|
9
|
+
'application/javascript'
|
10
|
+
end
|
11
|
+
|
12
|
+
class ViewContext
|
13
|
+
include Rails.application.routes.url_helpers
|
14
|
+
include Rails.application.routes.mounted_helpers
|
15
|
+
include ActionView::Helpers
|
16
|
+
|
17
|
+
attr_accessor :output_buffer
|
18
|
+
|
19
|
+
def protect_against_forgery?
|
20
|
+
false
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def evaluate(scope, locals, &block)
|
25
|
+
self.locals = locals
|
26
|
+
|
27
|
+
begin
|
28
|
+
"" + render_haml
|
29
|
+
rescue Exception => e
|
30
|
+
Rails.logger.debug "ERROR: compiling #{file} RAISED #{e}"
|
31
|
+
Rails.logger.debug "Backtrace: #{e.backtrace.join("\n")}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
protected
|
36
|
+
|
37
|
+
def prepare; end
|
38
|
+
|
39
|
+
def render_haml
|
40
|
+
Haml::Engine.new(data, Haml::Template.options.merge(escape_attrs: false)).render(scope, locals)
|
41
|
+
end
|
42
|
+
|
43
|
+
def scope
|
44
|
+
@scope ||= ViewContext.new
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
metadata
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: haml_assets
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Les Hill
|
9
|
+
- Wes Gibbs
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2011-08-25 00:00:00.000000000Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: haml
|
17
|
+
requirement: &70096504992300 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *70096504992300
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: tilt
|
28
|
+
requirement: &70096504991880 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *70096504991880
|
37
|
+
description: Use Haml with Rails helpers in the asset pipeline
|
38
|
+
email:
|
39
|
+
- les@infbio.com
|
40
|
+
- wes@infbio.com
|
41
|
+
executables: []
|
42
|
+
extensions: []
|
43
|
+
extra_rdoc_files: []
|
44
|
+
files:
|
45
|
+
- .gitignore
|
46
|
+
- .rvmrc
|
47
|
+
- Gemfile
|
48
|
+
- README.md
|
49
|
+
- Rakefile
|
50
|
+
- haml_assets.gemspec
|
51
|
+
- lib/haml_assets.rb
|
52
|
+
- lib/haml_assets/engine.rb
|
53
|
+
- lib/haml_assets/haml_sprockets_engine.rb
|
54
|
+
- lib/haml_assets/version.rb
|
55
|
+
homepage: ''
|
56
|
+
licenses: []
|
57
|
+
post_install_message:
|
58
|
+
rdoc_options: []
|
59
|
+
require_paths:
|
60
|
+
- lib
|
61
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
63
|
+
requirements:
|
64
|
+
- - ! '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ! '>='
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0'
|
73
|
+
requirements: []
|
74
|
+
rubyforge_project: haml_assets
|
75
|
+
rubygems_version: 1.8.6
|
76
|
+
signing_key:
|
77
|
+
specification_version: 3
|
78
|
+
summary: Use Haml with Rails helpers in the asset pipeline
|
79
|
+
test_files: []
|