props_template 0.21.1 → 0.22.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.
- checksums.yaml +4 -4
- data/README.md +12 -12
- data/lib/props_template/base_with_extensions.rb +4 -8
- data/lib/props_template/extension_manager.rb +0 -5
- data/lib/props_template/extensions/partial_renderer.rb +1 -3
- data/lib/props_template/searcher.rb +0 -2
- data/lib/props_template/version.rb +1 -1
- data/lib/props_template.rb +9 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 536af22bcde36c372950f99d9bc6a71ce5767c2a7f2736641554613e71d0e52d
|
4
|
+
data.tar.gz: a271f7be2ba091d137aa10fbae9143b6ec53789cfefe94f9936ad8fc594273b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0038a530eeaeebdcc541cfbd36d807f7b40d4324a04d290971c2dd8f9996daf2d39e8e4f2db226de89bc86f1641ae15902637fc623fe5a6a82dd89ccb88a6313'
|
7
|
+
data.tar.gz: c52fc5c39f851665cf81393d86bed834f3c9c239b2135d887dc6ccc1979437b521443c975250fc911b883959d3558a9fada74ff7a6593712520cdd982a9e1d83
|
data/README.md
CHANGED
@@ -257,8 +257,8 @@ may still need to implement `member_by`.
|
|
257
257
|
### json.deferred!
|
258
258
|
Returns all deferred nodes used by the [deferment](#deferment) option.
|
259
259
|
|
260
|
-
**Note** This is a [
|
261
|
-
`application.json.props` when first running `rails
|
260
|
+
**Note** This is a [SuperglueJS][1] specific functionality and is used in
|
261
|
+
`application.json.props` when first running `rails superglue:install:web`
|
262
262
|
|
263
263
|
|
264
264
|
```ruby
|
@@ -267,7 +267,7 @@ json.deferred json.deferred!
|
|
267
267
|
# => [{url: '/some_url?props_at=outer.inner', path: 'outer.inner', type: 'auto'}]
|
268
268
|
```
|
269
269
|
|
270
|
-
This method provides metadata about deferred nodes to the frontend ([
|
270
|
+
This method provides metadata about deferred nodes to the frontend ([SuperglueJS][1])
|
271
271
|
to fetch missing data in a second round trip.
|
272
272
|
|
273
273
|
### json.fragments!
|
@@ -276,8 +276,8 @@ option.
|
|
276
276
|
|
277
277
|
```ruby json.fragments json.fragments! ```
|
278
278
|
|
279
|
-
**Note** This is a [
|
280
|
-
`application.json.props` when first running `rails
|
279
|
+
**Note** This is a [SuperglueJS][1] specific functionality and is used in
|
280
|
+
`application.json.props` when first running `rails superglue:install:web`
|
281
281
|
|
282
282
|
## Options
|
283
283
|
Options Functionality such as Partials, Deferements, and Caching can only be
|
@@ -311,7 +311,7 @@ end
|
|
311
311
|
```
|
312
312
|
|
313
313
|
### Partial Fragments
|
314
|
-
**Note** This is a [
|
314
|
+
**Note** This is a [SuperglueJS][1] specific functionality.
|
315
315
|
|
316
316
|
A fragment identifies a partial output across multiple pages. It can be used to
|
317
317
|
update cross cutting concerns like a header bar.
|
@@ -393,7 +393,7 @@ tabbed content that does not load until you click the tab.
|
|
393
393
|
When your client receives the payload, you may issue a second request to the
|
394
394
|
same endpoint to fetch any missing nodes. See [traversing nodes](#traversing)
|
395
395
|
|
396
|
-
There is also an `defer: :auto` option that you can use with [
|
396
|
+
There is also an `defer: :auto` option that you can use with [SuperglueJS][1]. [SuperglueJS][1]
|
397
397
|
will use the metadata from `json.deferred!` to issue a `remote` dispatch to fetch
|
398
398
|
the missing node and immutably graft it at the appropriate keypath in your Redux
|
399
399
|
store.
|
@@ -417,7 +417,7 @@ end
|
|
417
417
|
|
418
418
|
A auto option is available:
|
419
419
|
|
420
|
-
**Note** This is a [
|
420
|
+
**Note** This is a [SuperglueJS][1] specific functionality.
|
421
421
|
|
422
422
|
```ruby
|
423
423
|
json.dashboard(defer: :auto) do
|
@@ -436,14 +436,14 @@ json.defers json.deferred!
|
|
436
436
|
The default behavior for deferements is to use the index of the collection to
|
437
437
|
identify an element.
|
438
438
|
|
439
|
-
**Note** If you are using this library with [
|
439
|
+
**Note** If you are using this library with [SuperglueJS][1], the `:auto` options will
|
440
440
|
generate `?props_at=a.b.c.0.title` for `json.deferred!`.
|
441
441
|
|
442
442
|
If you wish to use an attribute to identify the element. You must:
|
443
443
|
|
444
444
|
1. Use the `:key` option on `json.array!`. This key refers to an attribute on
|
445
445
|
your collection item, and is used for `defer: :auto` to generate a keypath for
|
446
|
-
[
|
446
|
+
[SuperglueJS][1]. If you are NOT using SuperglueJS, you do not need to do this.
|
447
447
|
|
448
448
|
2. Implement `member_at`, on the [collection](#jsonarray). This will be called
|
449
449
|
by PropsTemplate to when [searching nodes](#traversing)
|
@@ -469,7 +469,7 @@ json.posts
|
|
469
469
|
end
|
470
470
|
```
|
471
471
|
|
472
|
-
If you are using [
|
472
|
+
If you are using [SuperglueJS][1], SuperglueJS will, it will automatically kick off
|
473
473
|
`remote(?props_at=posts.some_id=1.contact)` and `remote(?props_at=posts.some_id=2.contact)`.
|
474
474
|
|
475
475
|
## Traversing
|
@@ -596,4 +596,4 @@ See the [CONTRIBUTING] document. Thank you, [contributors]!
|
|
596
596
|
Thanks to [turbostreamer](https://github.com/malomalo/turbostreamer) for the
|
597
597
|
inspiration.
|
598
598
|
|
599
|
-
[1]: https://github.com/thoughtbot/
|
599
|
+
[1]: https://github.com/thoughtbot/superglue
|
@@ -1,11 +1,3 @@
|
|
1
|
-
require 'props_template/base'
|
2
|
-
require 'props_template/extensions/partial_renderer'
|
3
|
-
require 'props_template/extensions/cache'
|
4
|
-
require 'props_template/extensions/deferment'
|
5
|
-
require 'props_template/extension_manager'
|
6
|
-
require 'active_support/core_ext/string/output_safety'
|
7
|
-
require 'active_support/core_ext/array'
|
8
|
-
|
9
1
|
module Props
|
10
2
|
class BaseWithExtensions < Base
|
11
3
|
attr_reader :builder, :context, :fragments, :traveled_path, :deferred, :stream
|
@@ -28,6 +20,10 @@ module Props
|
|
28
20
|
@em.fragments
|
29
21
|
end
|
30
22
|
|
23
|
+
def traveled_path!
|
24
|
+
@traveled_path.join(".")
|
25
|
+
end
|
26
|
+
|
31
27
|
def set_block_content!(options = {})
|
32
28
|
return super if !@em.has_extensions(options)
|
33
29
|
|
@@ -1,8 +1,3 @@
|
|
1
|
-
require 'props_template/extensions/partial_renderer'
|
2
|
-
require 'props_template/extensions/cache'
|
3
|
-
require 'props_template/extensions/deferment'
|
4
|
-
require 'props_template/extensions/fragment'
|
5
|
-
|
6
1
|
module Props
|
7
2
|
class ExtensionManager
|
8
3
|
attr_reader :base, :builder, :context
|
@@ -17,14 +17,12 @@ module Props
|
|
17
17
|
|
18
18
|
class Partialer
|
19
19
|
INVALID_PARTIAL_MESSAGE = "The partial name must be a string, but received (%s)."
|
20
|
-
OPTION_AS_ERROR_MESSAGE
|
20
|
+
OPTION_AS_ERROR_MESSAGE = "The value (%s) of the option `as` is not a valid Ruby identifier; " \
|
21
21
|
"make sure it starts with lowercase letter, " \
|
22
22
|
"and is followed by any combination of letters, numbers and underscores."
|
23
23
|
IDENTIFIER_ERROR_MESSAGE = "The partial name (%s) is not a valid Ruby identifier; " \
|
24
24
|
"make sure your partial name starts with underscore."
|
25
25
|
|
26
|
-
INVALID_PARTIAL_MESSAGE = "The partial name must be a string, but received (%s)."
|
27
|
-
|
28
26
|
|
29
27
|
def initialize(base, context, builder)
|
30
28
|
@context = context
|
data/lib/props_template.rb
CHANGED
@@ -1,4 +1,12 @@
|
|
1
|
+
require 'props_template/base'
|
2
|
+
require 'props_template/extensions/partial_renderer'
|
3
|
+
require 'props_template/extensions/cache'
|
4
|
+
require 'props_template/extensions/deferment'
|
5
|
+
require 'props_template/extensions/fragment'
|
1
6
|
require 'props_template/base_with_extensions'
|
7
|
+
require 'props_template/extension_manager'
|
8
|
+
require 'active_support/core_ext/string/output_safety'
|
9
|
+
require 'active_support/core_ext/array'
|
2
10
|
require 'props_template/searcher'
|
3
11
|
require 'props_template/handler'
|
4
12
|
require 'props_template/version'
|
@@ -17,6 +25,7 @@ module Props
|
|
17
25
|
:deferred!,
|
18
26
|
:fragments!,
|
19
27
|
:set_block_content!,
|
28
|
+
:traveled_path!,
|
20
29
|
to: :builder!
|
21
30
|
|
22
31
|
def initialize(context = nil, options = {})
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: props_template
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.22.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Johny Ho
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|