nm 0.5.3 → 0.5.4
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.
- checksums.yaml +5 -5
- data/README.md +23 -0
- data/lib/nm/template.rb +2 -2
- data/lib/nm/version.rb +1 -1
- data/test/unit/template_tests.rb +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
SHA1:
|
3
|
-
data.tar.gz: cbd3cdb0ce766948af48d6a1c502f0efd972666d
|
4
|
-
metadata.gz: adabe344f116f0b43fc0c525e2f074b6dda71de8
|
5
2
|
SHA512:
|
6
|
-
|
7
|
-
|
3
|
+
metadata.gz: 31eb095487432e3c6b60cbb023624cce4b902371692cea5312d52d0bcd6a57d98ad2ca4171110f66e2bd4028fdf449c6eee00442d769fc260abd7ab76f8f15cb
|
4
|
+
data.tar.gz: 43ec476c3b63ec379f30edc5b75989f56843eab905e90a0a2b4422022102f2cbd5931cc3b09bbe7f3aeeacf26280a130dc6a8875af9cfd83b4ed903dcfeda5c8
|
5
|
+
SHA1:
|
6
|
+
metadata.gz: 79b11e40bec9d04eed9c4590c06ee9acc2a74ba9
|
7
|
+
data.tar.gz: 2a6984f912b917b14c9ab9ba5a524c310f8f7648
|
data/README.md
CHANGED
@@ -94,6 +94,29 @@ There are two main markup methods:
|
|
94
94
|
* `node`: create a named attribute on a hash object
|
95
95
|
* `map`: create a list object mapped from a given list
|
96
96
|
|
97
|
+
### Default render value
|
98
|
+
|
99
|
+
Nm templates render an empty object (ie `::Hash.new`) if no source is given or no markup methods are called in the template source. The idea is that the templates should always return *something* and avoid `nil` values as much as possible.
|
100
|
+
|
101
|
+
This is also more consistent with rendering mapped lists vs reduced objects. Say your are mapping a list of objects in your template (using the `map` markup method):
|
102
|
+
|
103
|
+
```ruby
|
104
|
+
map incoming_list do |item|
|
105
|
+
node 'name', item.name
|
106
|
+
node 'value', item.value
|
107
|
+
end
|
108
|
+
```
|
109
|
+
|
110
|
+
If there are no items in the incoming list, the template render produces an empty list. Now say you are reducing an incoming list to a single object:
|
111
|
+
|
112
|
+
```ruby
|
113
|
+
incoming_list.each do |item|
|
114
|
+
node item.name, item.value
|
115
|
+
end
|
116
|
+
```
|
117
|
+
|
118
|
+
If there are no items in the incoming list, no markup methods are called, but the template render still produces an empty object b/c that is the default value.
|
119
|
+
|
97
120
|
### Partials
|
98
121
|
|
99
122
|
**Note**: using partials negatively impacts template rendering performance.
|
data/lib/nm/template.rb
CHANGED
@@ -6,7 +6,7 @@ module Nm
|
|
6
6
|
class Template
|
7
7
|
|
8
8
|
def initialize(*args)
|
9
|
-
@__dstack__ = [
|
9
|
+
@__dstack__ = [nil]
|
10
10
|
|
11
11
|
# apply any given locals to template scope as methods
|
12
12
|
metaclass = class << self; self; end
|
@@ -34,7 +34,7 @@ module Nm
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def __data__
|
37
|
-
@__dstack__.last
|
37
|
+
@__dstack__.last || ::Hash.new
|
38
38
|
end
|
39
39
|
|
40
40
|
def __node__(key, value = nil, &block)
|
data/lib/nm/version.rb
CHANGED
data/test/unit/template_tests.rb
CHANGED
@@ -25,8 +25,8 @@ class Nm::Template
|
|
25
25
|
should have_imeths :render, :_render, :r
|
26
26
|
should have_imeths :partial, :_partial, :p
|
27
27
|
|
28
|
-
should "have
|
29
|
-
|
28
|
+
should "have empty data if no markup meths called or no source given" do
|
29
|
+
assert_equal ::Hash.new, subject.__data__
|
30
30
|
end
|
31
31
|
|
32
32
|
should "return itself when its markup methods are called" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kelly Redding
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2016-
|
13
|
+
date: 2016-09-30 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: assert
|
@@ -80,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
80
80
|
requirements: []
|
81
81
|
|
82
82
|
rubyforge_project:
|
83
|
-
rubygems_version: 2.6.
|
83
|
+
rubygems_version: 2.6.6
|
84
84
|
signing_key:
|
85
85
|
specification_version: 4
|
86
86
|
summary: Data templating system.
|