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 CHANGED
@@ -4,6 +4,7 @@ gemspec
4
4
 
5
5
  gem 'rake'
6
6
  gem 'pry'
7
+ gem 'bson_ext'
7
8
 
8
9
  platform :rbx do
9
10
  gem 'rubysl'
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") do |s|
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:
@@ -1,4 +1,4 @@
1
1
  module Sanford; end
2
2
  module Sanford::Nm
3
- VERSION = "0.0.1"
3
+ VERSION = "0.1.0"
4
4
  end
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
@@ -20,4 +20,7 @@ Gem::Specification.new do |gem|
20
20
 
21
21
  gem.add_development_dependency("assert", ["~> 2.10"])
22
22
 
23
+ gem.add_dependency("sanford", ["~> 0.10"])
24
+ gem.add_dependency("nm")
25
+
23
26
  end
data/test/helper.rb CHANGED
@@ -7,4 +7,7 @@ $LOAD_PATH.unshift(File.expand_path("../..", __FILE__))
7
7
  # require pry for debugging (`binding.pry`)
8
8
  require 'pry'
9
9
 
10
+ require 'pathname'
11
+ TEST_SUPPORT_PATH = Pathname.new(File.expand_path('../support', __FILE__))
12
+
10
13
  require 'test/support/factory'
@@ -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,5 @@
1
+ node('thing') {
2
+ node('id', view.identifier)
3
+ node('name', view.name)
4
+ node('local1', local1)
5
+ }
@@ -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
- version: 0.0.1
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-08 00:00:00 Z
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
- - &id002
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
- - *id002
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: 2.2.2
119
+ rubygems_version: 1.8.25
71
120
  signing_key:
72
- specification_version: 4
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