sanford-nm 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/README.md +10 -1
- data/lib/sanford-nm/version.rb +1 -1
- data/lib/sanford-nm.rb +27 -0
- data/sanford-nm.gemspec +3 -0
- data/test/helper.rb +3 -0
- data/test/support/factory.rb +9 -0
- data/test/support/template.json.nm +5 -0
- data/test/unit/template_engine_tests.rb +54 -0
- metadata +61 -10
- checksums.yaml +0 -7
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -13,7 +13,7 @@ require 'sanford-nm'
|
|
13
13
|
|
14
14
|
Sanford.configure do |c|
|
15
15
|
|
16
|
-
c.template_source "/path/to/templates"
|
16
|
+
c.template_source "/path/to/templates" do |s|
|
17
17
|
s.engine 'nm', Sanford::Nm::TemplateEngine
|
18
18
|
end
|
19
19
|
|
@@ -22,6 +22,15 @@ end
|
|
22
22
|
|
23
23
|
Add `.nm` to any template files in your template source path. Sanford will render their content using Nm when they are rendered.
|
24
24
|
|
25
|
+
### Notes
|
26
|
+
|
27
|
+
Nm doesn't allow overriding the template scope but instead allows you to pass in data that binds to the template scope as methods. By default, the service handler will be bound to Nm's scope via the `view` method in templates. If you want to change this, provide a `'handler_local'` option when registering:
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
c.template_source "/path/to/templates" do |s|
|
31
|
+
s.engine 'nm', Sanford::Nm::TemplateEngine, 'handler_local' => 'service_handler'
|
32
|
+
end
|
33
|
+
```
|
25
34
|
## Installation
|
26
35
|
|
27
36
|
Add this line to your application's Gemfile:
|
data/lib/sanford-nm/version.rb
CHANGED
data/lib/sanford-nm.rb
CHANGED
@@ -1,4 +1,31 @@
|
|
1
|
+
require 'nm'
|
2
|
+
require 'sanford/template_engine'
|
1
3
|
require "sanford-nm/version"
|
2
4
|
|
3
5
|
module Sanford::Nm
|
6
|
+
|
7
|
+
class TemplateEngine < Sanford::TemplateEngine
|
8
|
+
|
9
|
+
DEFAULT_HANDLER_LOCAL = 'view'
|
10
|
+
|
11
|
+
def nm_source
|
12
|
+
@nm_source ||= Nm::Source.new(self.source_path)
|
13
|
+
end
|
14
|
+
|
15
|
+
def nm_handler_local
|
16
|
+
@nm_handler_local ||= (self.opts['handler_local'] || DEFAULT_HANDLER_LOCAL)
|
17
|
+
end
|
18
|
+
|
19
|
+
def render(path, service_handler, locals)
|
20
|
+
self.nm_source.render(path, render_locals(service_handler, locals))
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def render_locals(service_handler, locals)
|
26
|
+
{ self.nm_handler_local => service_handler }.merge(locals)
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
4
31
|
end
|
data/sanford-nm.gemspec
CHANGED
data/test/helper.rb
CHANGED
data/test/support/factory.rb
CHANGED
@@ -3,4 +3,13 @@ require 'assert/factory'
|
|
3
3
|
module Factory
|
4
4
|
extend Assert::Factory
|
5
5
|
|
6
|
+
def self.template_json_rendered(service_handler, locals)
|
7
|
+
{ 'thing' => {
|
8
|
+
'id' => service_handler.identifier,
|
9
|
+
'name' => service_handler.name,
|
10
|
+
'local1' => locals['local1']
|
11
|
+
}
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
6
15
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'assert'
|
2
|
+
require 'sanford-nm'
|
3
|
+
|
4
|
+
require 'nm/source'
|
5
|
+
require 'sanford/template_engine'
|
6
|
+
|
7
|
+
class Sanford::Nm::TemplateEngine
|
8
|
+
|
9
|
+
class UnitTests < Assert::Context
|
10
|
+
desc "Sanford::Nm::TemplateEngine"
|
11
|
+
setup do
|
12
|
+
@engine = Sanford::Nm::TemplateEngine.new({
|
13
|
+
'source_path' => TEST_SUPPORT_PATH
|
14
|
+
})
|
15
|
+
end
|
16
|
+
subject{ @engine }
|
17
|
+
|
18
|
+
should have_imeths :nm_source, :nm_handler_local
|
19
|
+
|
20
|
+
should "be a Sanford template engine" do
|
21
|
+
assert_kind_of Sanford::TemplateEngine, subject
|
22
|
+
assert_respond_to 'render', subject
|
23
|
+
end
|
24
|
+
|
25
|
+
should "memoize its Nm source" do
|
26
|
+
assert_kind_of Nm::Source, subject.nm_source
|
27
|
+
assert_equal subject.source_path, subject.nm_source.root
|
28
|
+
assert_same subject.nm_source, subject.nm_source
|
29
|
+
end
|
30
|
+
|
31
|
+
should "use 'view' as the handler local name by default" do
|
32
|
+
assert_equal 'view', subject.nm_handler_local
|
33
|
+
end
|
34
|
+
|
35
|
+
should "allow custom handler local names" do
|
36
|
+
handler_local = Factory.string
|
37
|
+
engine = Sanford::Nm::TemplateEngine.new('handler_local' => handler_local)
|
38
|
+
assert_equal handler_local, engine.nm_handler_local
|
39
|
+
end
|
40
|
+
|
41
|
+
should "render nm template files" do
|
42
|
+
service_handler = OpenStruct.new({
|
43
|
+
:identifier => Factory.integer,
|
44
|
+
:name => Factory.string
|
45
|
+
})
|
46
|
+
locals = { 'local1' => Factory.string }
|
47
|
+
exp = Factory.template_json_rendered(service_handler, locals)
|
48
|
+
|
49
|
+
assert_equal exp, subject.render('template.json', service_handler, locals)
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sanford-nm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 0.1.0
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Kelly Redding
|
@@ -10,17 +16,51 @@ autorequire:
|
|
10
16
|
bindir: bin
|
11
17
|
cert_chain: []
|
12
18
|
|
13
|
-
date: 2014-06-
|
19
|
+
date: 2014-06-11 00:00:00 Z
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
+
none: false
|
17
24
|
requirements:
|
18
25
|
- - ~>
|
19
26
|
- !ruby/object:Gem::Version
|
27
|
+
hash: 23
|
28
|
+
segments:
|
29
|
+
- 2
|
30
|
+
- 10
|
20
31
|
version: "2.10"
|
21
32
|
type: :development
|
22
|
-
version_requirements: *id001
|
23
33
|
name: assert
|
34
|
+
version_requirements: *id001
|
35
|
+
prerelease: false
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ~>
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 31
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
- 10
|
46
|
+
version: "0.10"
|
47
|
+
type: :runtime
|
48
|
+
name: sanford
|
49
|
+
version_requirements: *id002
|
50
|
+
prerelease: false
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
version: "0"
|
61
|
+
type: :runtime
|
62
|
+
name: nm
|
63
|
+
version_requirements: *id003
|
24
64
|
prerelease: false
|
25
65
|
description: Sanford template engine for Nm templates
|
26
66
|
email:
|
@@ -44,33 +84,44 @@ files:
|
|
44
84
|
- sanford-nm.gemspec
|
45
85
|
- test/helper.rb
|
46
86
|
- test/support/factory.rb
|
87
|
+
- test/support/template.json.nm
|
88
|
+
- test/unit/template_engine_tests.rb
|
47
89
|
- tmp/.gitkeep
|
48
90
|
homepage: http://github.com/redding/sanford-nm
|
49
91
|
licenses:
|
50
92
|
- MIT
|
51
|
-
metadata: {}
|
52
|
-
|
53
93
|
post_install_message:
|
54
94
|
rdoc_options: []
|
55
95
|
|
56
96
|
require_paths:
|
57
97
|
- lib
|
58
98
|
required_ruby_version: !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
59
100
|
requirements:
|
60
|
-
-
|
61
|
-
- ">="
|
101
|
+
- - ">="
|
62
102
|
- !ruby/object:Gem::Version
|
103
|
+
hash: 3
|
104
|
+
segments:
|
105
|
+
- 0
|
63
106
|
version: "0"
|
64
107
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
+
none: false
|
65
109
|
requirements:
|
66
|
-
-
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
hash: 3
|
113
|
+
segments:
|
114
|
+
- 0
|
115
|
+
version: "0"
|
67
116
|
requirements: []
|
68
117
|
|
69
118
|
rubyforge_project:
|
70
|
-
rubygems_version:
|
119
|
+
rubygems_version: 1.8.25
|
71
120
|
signing_key:
|
72
|
-
specification_version:
|
121
|
+
specification_version: 3
|
73
122
|
summary: Sanford template engine for Nm templates
|
74
123
|
test_files:
|
75
124
|
- test/helper.rb
|
76
125
|
- test/support/factory.rb
|
126
|
+
- test/support/template.json.nm
|
127
|
+
- test/unit/template_engine_tests.rb
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA512:
|
3
|
-
data.tar.gz: 2e9084121898d5efbe1e36f6330c1ec6651649e87f4f18ab2ac2dfca77841a5728db25962e9df4c445e64cf5d584e256c747a0942bb563f2e1fe2e30c9893d4b
|
4
|
-
metadata.gz: 65fa1dfa5fc5bb25295c0b8c33ab7aa1eb1d0c235ad87e5dffa6bf8340509773f7fe900b071dc4297daf2dcf1ee6a7ae2b111d56dc8ef0352216438ec3e843da
|
5
|
-
SHA1:
|
6
|
-
data.tar.gz: 72373d9605321bbc7ac5adc9a95a3f5d616d444c
|
7
|
-
metadata.gz: 9afa971ee87506a6136662e416a9e726d8f72044
|