papercraft 0.24 → 0.25
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 +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +52 -0
- data/lib/papercraft/tags.rb +23 -0
- data/lib/papercraft/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f23902f7431dcbd6c1180e26f612ae5099d4e7f2ba468dd0e0e5e9a76e324ef4
|
4
|
+
data.tar.gz: 5bf38e4faea0ab6c6145d769b24b416e467836b29c6d8856bb96442f86b43bfe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69ed90f079f1db073bbc18b1b631c13cbcd2db5dae9e512781046fb7fa5ab0a164653137b28c201f48671d77e4d08ff1da3818381aca5d3686d61eb185f8a586
|
7
|
+
data.tar.gz: 85681c583e3e145ca27a52638e0d3370fa94462d5baaae8cccb477a1a2938ad56f3040ee4f6cceb2757b49019890bcae505bcdc008e2ff0931987f09ab9eb91a
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -86,6 +86,7 @@ hello.render('world')
|
|
86
86
|
- [XML Templates](#xml-templates)
|
87
87
|
- [JSON Templates](#json-templates)
|
88
88
|
- [Papercraft Extensions](#papercraft-extensions)
|
89
|
+
- [Inline Helper Methods](#inline-helper-methods)
|
89
90
|
- [Bundled Extensions](#bundled-extensions)
|
90
91
|
- [API Reference](#api-reference)
|
91
92
|
|
@@ -681,6 +682,57 @@ Papercraft.html {
|
|
681
682
|
}
|
682
683
|
```
|
683
684
|
|
685
|
+
## Inline Helper Methods
|
686
|
+
|
687
|
+
In addition to proper extensions defined in modules, you can also define
|
688
|
+
individual extension methods inline in your Papercraft templates. You can do
|
689
|
+
this using any of the following techniques:
|
690
|
+
|
691
|
+
1. Define a method in the template body:
|
692
|
+
|
693
|
+
```ruby
|
694
|
+
Papercraft.html {
|
695
|
+
def label(text)
|
696
|
+
span text, class: 'label'
|
697
|
+
end
|
698
|
+
|
699
|
+
label 'foo'
|
700
|
+
label 'bar'
|
701
|
+
}
|
702
|
+
```
|
703
|
+
|
704
|
+
2. Use `def_tag` to define a custom tag:
|
705
|
+
|
706
|
+
```ruby
|
707
|
+
Papercraft.html {
|
708
|
+
def_tag(:label) { |text| span text, class: 'label' }
|
709
|
+
|
710
|
+
label 'foo'
|
711
|
+
label 'bar'
|
712
|
+
}
|
713
|
+
```
|
714
|
+
|
715
|
+
Note that using any of the above methods you can also create custom components
|
716
|
+
that take a block with inner HTML:
|
717
|
+
|
718
|
+
```ruby
|
719
|
+
# using def
|
720
|
+
def section(title, &inner)
|
721
|
+
div {
|
722
|
+
h1 title
|
723
|
+
emit inner
|
724
|
+
}
|
725
|
+
end
|
726
|
+
|
727
|
+
# using def_tag
|
728
|
+
def_tag(:section) do |title, &inner|
|
729
|
+
div {
|
730
|
+
h1 title
|
731
|
+
emit inner
|
732
|
+
}
|
733
|
+
end
|
734
|
+
```
|
735
|
+
|
684
736
|
## Bundled Extensions
|
685
737
|
|
686
738
|
Papercraft comes bundled with a few extensions that address common use cases.
|
data/lib/papercraft/tags.rb
CHANGED
@@ -180,6 +180,29 @@ module Papercraft
|
|
180
180
|
@buffer << escape_text(data)
|
181
181
|
end
|
182
182
|
|
183
|
+
# Defines a custom tag. This is handy for defining helper or extension
|
184
|
+
# methods inside the template body.
|
185
|
+
#
|
186
|
+
# Papercraft.html {
|
187
|
+
# def_tag(:section) { |title, &inner|
|
188
|
+
# div {
|
189
|
+
# h1 title
|
190
|
+
# emit inner
|
191
|
+
# }
|
192
|
+
# }
|
193
|
+
#
|
194
|
+
# section('Foo') {
|
195
|
+
# p 'Bar'
|
196
|
+
# }
|
197
|
+
# }
|
198
|
+
#
|
199
|
+
# @param tag [Symbol, String] tag/method name
|
200
|
+
# @param block [Proc] method body
|
201
|
+
# @return [void]
|
202
|
+
def def_tag(sym, &block)
|
203
|
+
self.class.define_method(sym, &block)
|
204
|
+
end
|
205
|
+
|
183
206
|
private
|
184
207
|
|
185
208
|
# Defines a method that emits the given tag based on a constant. The
|
data/lib/papercraft/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: papercraft
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.25'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sharon Rosner
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: escape_utils
|
@@ -122,7 +122,7 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 2.0.9
|
125
|
-
description:
|
125
|
+
description:
|
126
126
|
email: sharon@noteflakes.com
|
127
127
|
executables: []
|
128
128
|
extensions: []
|
@@ -152,7 +152,7 @@ metadata:
|
|
152
152
|
documentation_uri: https://www.rubydoc.info/gems/papercraft
|
153
153
|
homepage_uri: https://github.com/digital-fabric/papercraft
|
154
154
|
changelog_uri: https://github.com/digital-fabric/papercraft/blob/master/CHANGELOG.md
|
155
|
-
post_install_message:
|
155
|
+
post_install_message:
|
156
156
|
rdoc_options:
|
157
157
|
- "--title"
|
158
158
|
- Papercraft
|
@@ -171,8 +171,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
171
171
|
- !ruby/object:Gem::Version
|
172
172
|
version: '0'
|
173
173
|
requirements: []
|
174
|
-
rubygems_version: 3.
|
175
|
-
signing_key:
|
174
|
+
rubygems_version: 3.4.1
|
175
|
+
signing_key:
|
176
176
|
specification_version: 4
|
177
177
|
summary: 'Papercraft: component-based HTML templating for Ruby'
|
178
178
|
test_files: []
|