hogan_assets 1.4.0 → 1.5.0
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/CHANGELOG.md +4 -0
- data/Gemfile.lock +10 -1
- data/README.md +4 -0
- data/hogan_assets.gemspec +1 -0
- data/lib/hogan_assets.rb +4 -3
- data/lib/hogan_assets/config.rb +78 -7
- data/lib/hogan_assets/engine.rb +1 -0
- data/lib/hogan_assets/version.rb +1 -1
- data/test/config/hogan_assets.yml +5 -0
- data/test/hogan_assets/config_test.rb +35 -0
- data/test/hogan_assets/tilt_test.rb +1 -12
- data/test/test_helper.rb +16 -3
- metadata +39 -19
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
hogan_assets (1.
|
4
|
+
hogan_assets (1.5.0)
|
5
5
|
execjs (>= 1.2.9)
|
6
6
|
sprockets (>= 2.0.3)
|
7
7
|
tilt (>= 1.3.3)
|
@@ -9,6 +9,14 @@ PATH
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
11
11
|
specs:
|
12
|
+
columnize (0.3.6)
|
13
|
+
debugger (1.3.0)
|
14
|
+
columnize (>= 0.3.1)
|
15
|
+
debugger-linecache (~> 1.1.1)
|
16
|
+
debugger-ruby_core_source (~> 1.1.7)
|
17
|
+
debugger-linecache (1.1.2)
|
18
|
+
debugger-ruby_core_source (>= 1.1.1)
|
19
|
+
debugger-ruby_core_source (1.1.7)
|
12
20
|
execjs (1.4.0)
|
13
21
|
multi_json (~> 1.0)
|
14
22
|
haml (3.1.6)
|
@@ -30,6 +38,7 @@ PLATFORMS
|
|
30
38
|
ruby
|
31
39
|
|
32
40
|
DEPENDENCIES
|
41
|
+
debugger
|
33
42
|
haml
|
34
43
|
hogan_assets!
|
35
44
|
slim
|
data/README.md
CHANGED
@@ -69,6 +69,8 @@ _slimstache_ is the also popular combination of `slim` and `mustache`. Works jus
|
|
69
69
|
|
70
70
|
## Configuration
|
71
71
|
|
72
|
+
You can configure options using either an intializer or with a YAML file (`config/hogan_assets.yml`). See `lib/hogan_assets/config.rb` for details.
|
73
|
+
|
72
74
|
### Lambda Support
|
73
75
|
|
74
76
|
**mustache** lambdas are off by default. (Not sure what that is? Read the [mustache](http://mustache.github.com/mustache.5.html) man page!) If you want them on, set the `lambda_support` option to true. This will include the raw template text as part of the compiled template; each template will be correspondingly larger. *TODO* Should this be on by default?
|
@@ -113,6 +115,7 @@ By default, templates are recognized if they have an extension of `.mustache` (a
|
|
113
115
|
config.template_extensions = %w(mustache hamstache stache)
|
114
116
|
end
|
115
117
|
|
118
|
+
|
116
119
|
## Usage
|
117
120
|
|
118
121
|
Templates are compiled to a global JavaScript object named `HoganTemplates`. To render `pages/person`:
|
@@ -133,6 +136,7 @@ I made this because I <3 **mustache** and want to use it in Rails. Follow me on
|
|
133
136
|
* @adamstrickland (Adam Strickland) : Custom template namespace
|
134
137
|
* @lautis (Ville Lautanala) : haml_options configuration
|
135
138
|
* @sars (Rodion) : slimstache support
|
139
|
+
* @apai4 : YAML configuration
|
136
140
|
|
137
141
|
## Contributing
|
138
142
|
|
data/hogan_assets.gemspec
CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |gem|
|
|
19
19
|
gem.add_runtime_dependency "tilt", ">= 1.3.3"
|
20
20
|
gem.add_runtime_dependency "sprockets", ">= 2.0.3"
|
21
21
|
|
22
|
+
gem.add_development_dependency "debugger"
|
22
23
|
gem.add_development_dependency "haml"
|
23
24
|
gem.add_development_dependency "slim"
|
24
25
|
end
|
data/lib/hogan_assets.rb
CHANGED
@@ -4,13 +4,14 @@ require 'hogan_assets/config'
|
|
4
4
|
module HoganAssets
|
5
5
|
extend Config
|
6
6
|
|
7
|
-
autoload
|
8
|
-
autoload
|
7
|
+
autoload :Hogan, 'hogan_assets/hogan'
|
8
|
+
autoload :Tilt, 'hogan_assets/tilt'
|
9
9
|
|
10
|
-
if defined?
|
10
|
+
if defined? Rails
|
11
11
|
require 'hogan_assets/engine'
|
12
12
|
else
|
13
13
|
require 'sprockets'
|
14
|
+
Config.load_yml! if Config.yml_exists?
|
14
15
|
Config.template_extensions.each do |ext|
|
15
16
|
Sprockets.register_engine ".#{ext}", Tilt
|
16
17
|
end
|
data/lib/hogan_assets/config.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
1
3
|
module HoganAssets
|
2
4
|
# Change config options in an initializer:
|
3
5
|
#
|
@@ -13,31 +15,80 @@ module HoganAssets
|
|
13
15
|
# config.slim_options[:pretty] = false
|
14
16
|
# end
|
15
17
|
#
|
18
|
+
# Or change config options in a YAML file (config/hogan_assets.yml):
|
19
|
+
#
|
20
|
+
# defaults: &defaults
|
21
|
+
# lambda_support: false
|
22
|
+
# path_prefix: 'templates'
|
23
|
+
# template_extensions:
|
24
|
+
# - 'hamstache'
|
25
|
+
# - 'slimstache'
|
26
|
+
# template_namespace: 'JST'
|
27
|
+
# haml_options:
|
28
|
+
# ugly: true
|
29
|
+
# slim_options:
|
30
|
+
# pretty: false
|
31
|
+
# development:
|
32
|
+
# <<: *defaults
|
33
|
+
# test:
|
34
|
+
# <<: *defaults
|
35
|
+
# production:
|
36
|
+
# <<: *defaults
|
37
|
+
#
|
16
38
|
module Config
|
17
39
|
extend self
|
18
40
|
|
19
|
-
attr_writer :lambda_support, :path_prefix, :template_extensions, :template_namespace, :haml_options, :slim_options
|
41
|
+
attr_writer :env, :lambda_support, :path_prefix, :template_extensions, :template_namespace, :haml_options, :slim_options
|
20
42
|
|
21
43
|
def configure
|
22
44
|
yield self
|
23
45
|
end
|
24
46
|
|
47
|
+
def env
|
48
|
+
@env ||= if defined? Rails
|
49
|
+
Rails.env
|
50
|
+
elsif ENV['RACK_ENV']
|
51
|
+
ENV['RACK_ENV']
|
52
|
+
else
|
53
|
+
'development'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
25
57
|
def haml_available?
|
26
58
|
defined? ::Haml::Engine
|
27
59
|
end
|
28
60
|
|
29
|
-
def
|
30
|
-
|
61
|
+
def haml_options
|
62
|
+
@haml_options ||= {}
|
31
63
|
end
|
32
64
|
|
33
65
|
def lambda_support?
|
34
66
|
@lambda_support
|
35
67
|
end
|
36
68
|
|
69
|
+
def load_yml!
|
70
|
+
@lambda_support = yml['lambda_support'] if yml.has_key? 'lambda_support'
|
71
|
+
@path_prefix = yml['path_prefix'] if yml.has_key? 'path_prefix'
|
72
|
+
@template_extensions = yml['template_extensions'] if yml.has_key? 'template_extensions'
|
73
|
+
@template_namespace = yml['template_namespace'] if yml.has_key? 'template_namespace'
|
74
|
+
@haml_options = yml['haml_options'] if yml.has_key? 'haml_options'
|
75
|
+
@slim_options = yml['slim_options'] if yml.has_key? 'slim_options'
|
76
|
+
symbolize(@haml_options) if @haml_options
|
77
|
+
symbolize(@slim_options) if @slim_options
|
78
|
+
end
|
79
|
+
|
37
80
|
def path_prefix
|
38
81
|
@path_prefix ||= 'templates'
|
39
82
|
end
|
40
83
|
|
84
|
+
def slim_available?
|
85
|
+
defined? ::Slim::Engine
|
86
|
+
end
|
87
|
+
|
88
|
+
def slim_options
|
89
|
+
@slim_options ||= {}
|
90
|
+
end
|
91
|
+
|
41
92
|
def template_namespace
|
42
93
|
@template_namespace ||= 'HoganTemplates'
|
43
94
|
end
|
@@ -46,12 +97,32 @@ module HoganAssets
|
|
46
97
|
@template_extensions ||= "mustache#{' hamstache' if haml_available?}#{' slimstache' if slim_available?}".split
|
47
98
|
end
|
48
99
|
|
49
|
-
def
|
50
|
-
|
100
|
+
def yml
|
101
|
+
begin
|
102
|
+
@yml ||= (YAML.load(IO.read yml_path)[env] rescue nil) || {}
|
103
|
+
rescue Psych::SyntaxError
|
104
|
+
@yml = {}
|
105
|
+
end
|
51
106
|
end
|
52
107
|
|
53
|
-
def
|
54
|
-
|
108
|
+
def yml_exists?
|
109
|
+
File.exists? yml_path
|
110
|
+
end
|
111
|
+
|
112
|
+
private
|
113
|
+
|
114
|
+
def symbolize(hash)
|
115
|
+
hash.keys.each do |key|
|
116
|
+
hash[(key.to_sym rescue key) || key] = hash.delete(key)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
def yml_path
|
121
|
+
@yml_path ||= if defined? Rails
|
122
|
+
Rails.root.join 'config', 'hogan_assets.yml'
|
123
|
+
else
|
124
|
+
Pathname.new('.') + 'config/hogan_assets.yml'
|
125
|
+
end
|
55
126
|
end
|
56
127
|
end
|
57
128
|
end
|
data/lib/hogan_assets/engine.rb
CHANGED
@@ -2,6 +2,7 @@ module HoganAssets
|
|
2
2
|
class Engine < ::Rails::Engine
|
3
3
|
initializer "sprockets.hogan", :after => "sprockets.environment", :group => :all do |app|
|
4
4
|
next unless app.assets
|
5
|
+
HoganAssets::Config.load_yml! if HoganAssets::Config.yml_exists?
|
5
6
|
HoganAssets::Config.template_extensions.each do |ext|
|
6
7
|
app.assets.register_engine(".#{ext}", Tilt)
|
7
8
|
end
|
data/lib/hogan_assets/version.rb
CHANGED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module HoganAssets
|
4
|
+
module Config
|
5
|
+
extend self
|
6
|
+
|
7
|
+
def yml_path=(yml_path)
|
8
|
+
@yml_path = yml_path
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class ConfigTest < Test::Unit::TestCase
|
13
|
+
include TestSupport
|
14
|
+
|
15
|
+
def setup
|
16
|
+
HoganAssets::Config.env = 'test'
|
17
|
+
HoganAssets::Config.yml_path = Pathname.new('.') + 'test/config/hogan_assets.yml'
|
18
|
+
HoganAssets::Config.load_yml!
|
19
|
+
end
|
20
|
+
|
21
|
+
def teardown
|
22
|
+
HoganAssets::Config.env = nil
|
23
|
+
HoganAssets::Config.haml_options = nil
|
24
|
+
HoganAssets::Config.template_extensions = nil
|
25
|
+
HoganAssets::Config.yml_path = nil
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_yaml_options
|
29
|
+
scope = make_scope '/myapp/app/assets/javascripts', 'path/to/template.custom'
|
30
|
+
template = HoganAssets::Tilt.new(scope.s_path) { "This is {{mustache}}" }
|
31
|
+
assert_match /This is/, template.render(scope, {})
|
32
|
+
assert_equal HoganAssets::Config.haml_options, ugly: true
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -2,18 +2,7 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
module HoganAssets
|
4
4
|
class TiltTest < Test::Unit::TestCase
|
5
|
-
|
6
|
-
def make_scope(root, file)
|
7
|
-
Class.new do
|
8
|
-
define_method(:logical_path) { pathname.to_s.gsub(root + '/', '').gsub(/\..*/, '') }
|
9
|
-
|
10
|
-
define_method(:pathname) { Pathname.new(root) + file }
|
11
|
-
|
12
|
-
define_method(:root_path) { root }
|
13
|
-
|
14
|
-
define_method(:s_path) { pathname.to_s }
|
15
|
-
end.new
|
16
|
-
end
|
5
|
+
include TestSupport
|
17
6
|
|
18
7
|
def teardown
|
19
8
|
HoganAssets::Config.lambda_support = false
|
data/test/test_helper.rb
CHANGED
@@ -1,5 +1,18 @@
|
|
1
|
-
require 'hogan_assets
|
2
|
-
require 'hogan_assets/hogan'
|
3
|
-
require 'hogan_assets/config'
|
1
|
+
require 'hogan_assets'
|
4
2
|
|
5
3
|
require 'test/unit'
|
4
|
+
|
5
|
+
module TestSupport
|
6
|
+
# Try to act like sprockets.
|
7
|
+
def make_scope(root, file)
|
8
|
+
Class.new do
|
9
|
+
define_method(:logical_path) { pathname.to_s.gsub(root + '/', '').gsub(/\..*/, '') }
|
10
|
+
|
11
|
+
define_method(:pathname) { Pathname.new(root) + file }
|
12
|
+
|
13
|
+
define_method(:root_path) { root }
|
14
|
+
|
15
|
+
define_method(:s_path) { pathname.to_s }
|
16
|
+
end.new
|
17
|
+
end
|
18
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hogan_assets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,88 +9,104 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-02-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: execjs
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
17
18
|
requirements:
|
18
19
|
- - ! '>='
|
19
20
|
- !ruby/object:Gem::Version
|
20
21
|
version: 1.2.9
|
21
|
-
none: false
|
22
|
-
prerelease: false
|
23
22
|
type: :runtime
|
23
|
+
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
25
26
|
requirements:
|
26
27
|
- - ! '>='
|
27
28
|
- !ruby/object:Gem::Version
|
28
29
|
version: 1.2.9
|
29
|
-
none: false
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: tilt
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
33
34
|
requirements:
|
34
35
|
- - ! '>='
|
35
36
|
- !ruby/object:Gem::Version
|
36
37
|
version: 1.3.3
|
37
|
-
none: false
|
38
|
-
prerelease: false
|
39
38
|
type: :runtime
|
39
|
+
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
41
42
|
requirements:
|
42
43
|
- - ! '>='
|
43
44
|
- !ruby/object:Gem::Version
|
44
45
|
version: 1.3.3
|
45
|
-
none: false
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: sprockets
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
49
50
|
requirements:
|
50
51
|
- - ! '>='
|
51
52
|
- !ruby/object:Gem::Version
|
52
53
|
version: 2.0.3
|
53
|
-
none: false
|
54
|
-
prerelease: false
|
55
54
|
type: :runtime
|
55
|
+
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
57
58
|
requirements:
|
58
59
|
- - ! '>='
|
59
60
|
- !ruby/object:Gem::Version
|
60
61
|
version: 2.0.3
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: debugger
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
61
65
|
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
62
78
|
- !ruby/object:Gem::Dependency
|
63
79
|
name: haml
|
64
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
65
82
|
requirements:
|
66
83
|
- - ! '>='
|
67
84
|
- !ruby/object:Gem::Version
|
68
85
|
version: '0'
|
69
|
-
none: false
|
70
|
-
prerelease: false
|
71
86
|
type: :development
|
87
|
+
prerelease: false
|
72
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
73
90
|
requirements:
|
74
91
|
- - ! '>='
|
75
92
|
- !ruby/object:Gem::Version
|
76
93
|
version: '0'
|
77
|
-
none: false
|
78
94
|
- !ruby/object:Gem::Dependency
|
79
95
|
name: slim
|
80
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
81
98
|
requirements:
|
82
99
|
- - ! '>='
|
83
100
|
- !ruby/object:Gem::Version
|
84
101
|
version: '0'
|
85
|
-
none: false
|
86
|
-
prerelease: false
|
87
102
|
type: :development
|
103
|
+
prerelease: false
|
88
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
89
106
|
requirements:
|
90
107
|
- - ! '>='
|
91
108
|
- !ruby/object:Gem::Version
|
92
109
|
version: '0'
|
93
|
-
none: false
|
94
110
|
description: Use compiled hogan.js (mustache) JavaScript templates with sprockets
|
95
111
|
and the Rails asset pipeline.
|
96
112
|
email:
|
@@ -114,6 +130,8 @@ files:
|
|
114
130
|
- lib/hogan_assets/hogan.rb
|
115
131
|
- lib/hogan_assets/tilt.rb
|
116
132
|
- lib/hogan_assets/version.rb
|
133
|
+
- test/config/hogan_assets.yml
|
134
|
+
- test/hogan_assets/config_test.rb
|
117
135
|
- test/hogan_assets/tilt_test.rb
|
118
136
|
- test/test_helper.rb
|
119
137
|
- vendor/assets/javascripts/hogan.js
|
@@ -124,24 +142,26 @@ rdoc_options: []
|
|
124
142
|
require_paths:
|
125
143
|
- lib
|
126
144
|
required_ruby_version: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
127
146
|
requirements:
|
128
147
|
- - ! '>='
|
129
148
|
- !ruby/object:Gem::Version
|
130
149
|
version: '0'
|
131
|
-
none: false
|
132
150
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
|
+
none: false
|
133
152
|
requirements:
|
134
153
|
- - ! '>='
|
135
154
|
- !ruby/object:Gem::Version
|
136
155
|
version: '0'
|
137
|
-
none: false
|
138
156
|
requirements: []
|
139
157
|
rubyforge_project:
|
140
|
-
rubygems_version: 1.8.
|
158
|
+
rubygems_version: 1.8.23
|
141
159
|
signing_key:
|
142
160
|
specification_version: 3
|
143
161
|
summary: Use compiled hogan.js (mustache) JavaScript templates with sprockets and
|
144
162
|
the Rails asset pipeline.
|
145
163
|
test_files:
|
164
|
+
- test/config/hogan_assets.yml
|
165
|
+
- test/hogan_assets/config_test.rb
|
146
166
|
- test/hogan_assets/tilt_test.rb
|
147
167
|
- test/test_helper.rb
|