rbexy 0.1.4 → 0.2.3
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/.gitignore +1 -0
- data/Gemfile.lock +1 -1
- data/README.md +10 -0
- data/lib/rbexy/component.rb +11 -6
- data/lib/rbexy/component_providers/namespaced_rbexy_provider.rb +20 -0
- data/lib/rbexy/component_providers/rbexy_provider.rb +0 -2
- data/lib/rbexy/component_providers/view_component_provider.rb +0 -2
- data/lib/rbexy/rails.rb +1 -1
- data/lib/rbexy/rails/controller_helper.rb +3 -0
- data/lib/rbexy/rails/engine.rb +7 -1
- data/lib/rbexy/runtime.rb +11 -1
- data/lib/rbexy/version.rb +1 -1
- metadata +4 -3
- data/lib/rbexy/rails/template_handler.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 65318a8a1a6c9bc0dc13f0b653dd18df24af2eee0ba7b316c92987becfd10a5b
|
4
|
+
data.tar.gz: c5bfae261147560bd41b85a3d18b1f672d99294eec70038687315dadeaddcb4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9fec2040704b9d393992b7f9ba73be9ed4de414ba87d021b5aa80daff9b086594807f2ade26b55f3b7c23478d4476040862a019c5bef2538fe82cb5d7e3a20ed
|
7
|
+
data.tar.gz: 882a81ff03783bfd18e9d2ac09a494ac8cd434e293db3d7a83735c0c5f8fe391a319ea596a31ed3680d1a542e9dbcb656e5fd711f3779a828cea6ff993b37e61
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -375,6 +375,16 @@ Rbexy.configure do |config|
|
|
375
375
|
end
|
376
376
|
```
|
377
377
|
|
378
|
+
Or in Rails you can customize the component provider just for a controller:
|
379
|
+
|
380
|
+
```ruby
|
381
|
+
class ThingsController < ApplicationController
|
382
|
+
def rbexy_component_provider
|
383
|
+
MyComponentProvider.new
|
384
|
+
end
|
385
|
+
end
|
386
|
+
```
|
387
|
+
|
378
388
|
See `lib/rbexy/component_providers/` for example implementations.
|
379
389
|
|
380
390
|
## Usage outside of Rails
|
data/lib/rbexy/component.rb
CHANGED
@@ -3,6 +3,8 @@ require "action_view"
|
|
3
3
|
module Rbexy
|
4
4
|
class Component < ActionView::Base
|
5
5
|
class LookupContext < ActionView::LookupContext
|
6
|
+
attr_accessor :component_name_stack
|
7
|
+
|
6
8
|
def self.details_hash(context)
|
7
9
|
context.registered_details.each_with_object({}) do |key, details_hash|
|
8
10
|
value = key == :locale ? [context.locale] : context.send(key)
|
@@ -15,7 +17,8 @@ module Rbexy
|
|
15
17
|
# template path, since we're using the Rails partial-rendering
|
16
18
|
# functionality but don't want our templates prefixed with a `_`
|
17
19
|
def args_for_lookup(name, prefixes, partial, keys, details_options)
|
18
|
-
|
20
|
+
partial = false if component_name_stack.include?(name)
|
21
|
+
super(name, prefixes, partial, keys, details_options)
|
19
22
|
end
|
20
23
|
end
|
21
24
|
|
@@ -37,7 +40,6 @@ module Rbexy
|
|
37
40
|
def setup(**props); end
|
38
41
|
|
39
42
|
def render(&block)
|
40
|
-
@content = nil
|
41
43
|
@content_block = block_given? ? block : nil
|
42
44
|
call
|
43
45
|
end
|
@@ -50,7 +52,7 @@ module Rbexy
|
|
50
52
|
end
|
51
53
|
|
52
54
|
def content
|
53
|
-
|
55
|
+
content_block ? view_context.capture(self, &content_block) : ""
|
54
56
|
end
|
55
57
|
|
56
58
|
def create_context(name, value)
|
@@ -77,9 +79,12 @@ module Rbexy
|
|
77
79
|
attr_reader :view_context, :content_block, :old_lookup_context
|
78
80
|
|
79
81
|
def replace_lookup_context
|
80
|
-
|
81
|
-
|
82
|
-
|
82
|
+
unless view_renderer.lookup_context.is_a? Rbexy::Component::LookupContext
|
83
|
+
@old_lookup_context = view_renderer.lookup_context
|
84
|
+
view_renderer.lookup_context = build_lookup_context(old_lookup_context)
|
85
|
+
end
|
86
|
+
|
87
|
+
(view_renderer.lookup_context.component_name_stack ||= []) << component_name
|
83
88
|
end
|
84
89
|
|
85
90
|
def restore_lookup_context
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Rbexy
|
2
|
+
module ComponentProviders
|
3
|
+
class NamespacedRbexyProvider < Rbexy::ComponentProviders::RbexyProvider
|
4
|
+
attr_reader :namespaces
|
5
|
+
|
6
|
+
def initialize(*namespaces)
|
7
|
+
@namespaces = namespaces
|
8
|
+
end
|
9
|
+
|
10
|
+
def find(name)
|
11
|
+
namespaces.each do |namespace|
|
12
|
+
result = super("#{namespace}::#{name}")
|
13
|
+
return result if result != nil
|
14
|
+
end
|
15
|
+
|
16
|
+
super
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/rbexy/rails.rb
CHANGED
data/lib/rbexy/rails/engine.rb
CHANGED
@@ -4,10 +4,16 @@ module Rbexy
|
|
4
4
|
module Rails
|
5
5
|
class Engine < ::Rails::Engine
|
6
6
|
initializer "rbexy" do |app|
|
7
|
-
|
7
|
+
template_handler = ::Rails.version.to_f >= 6.0 ?
|
8
|
+
proc { |template, source| Rbexy.compile(source) } :
|
9
|
+
proc { |template| Rbexy.compile(template.source) }
|
10
|
+
|
11
|
+
ActionView::Template.register_template_handler(:rbx, template_handler)
|
8
12
|
|
9
13
|
ActiveSupport.on_load :action_controller_base do
|
10
14
|
helper Rbexy::ViewContextHelper
|
15
|
+
helper_method :rbexy_component_provider
|
16
|
+
include ControllerHelper
|
11
17
|
end
|
12
18
|
|
13
19
|
if defined?(ViewComponent)
|
data/lib/rbexy/runtime.rb
CHANGED
@@ -11,7 +11,11 @@ module Rbexy
|
|
11
11
|
|
12
12
|
DefaultTagBuilder = ActionView::Helpers::TagHelper::TagBuilder
|
13
13
|
|
14
|
-
def self.create_tag_builder(context, provider =
|
14
|
+
def self.create_tag_builder(context, provider = nil)
|
15
|
+
provider = provider ||
|
16
|
+
provider_from_context(context) ||
|
17
|
+
Rbexy.configuration.component_provider
|
18
|
+
|
15
19
|
if provider
|
16
20
|
ComponentTagBuilder.new(context, provider)
|
17
21
|
else
|
@@ -19,6 +23,12 @@ module Rbexy
|
|
19
23
|
end
|
20
24
|
end
|
21
25
|
|
26
|
+
def self.provider_from_context(context)
|
27
|
+
if context.respond_to?(:rbexy_component_provider)
|
28
|
+
context.rbexy_component_provider
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
22
32
|
def initialize(component_provider = nil)
|
23
33
|
@rbexy_tag = self.class.create_tag_builder(self, component_provider)
|
24
34
|
end
|
data/lib/rbexy/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbexy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Giancola
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-10-
|
11
|
+
date: 2020-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -224,6 +224,7 @@ files:
|
|
224
224
|
- example.rb
|
225
225
|
- lib/rbexy.rb
|
226
226
|
- lib/rbexy/component.rb
|
227
|
+
- lib/rbexy/component_providers/namespaced_rbexy_provider.rb
|
227
228
|
- lib/rbexy/component_providers/rbexy_provider.rb
|
228
229
|
- lib/rbexy/component_providers/view_component_provider.rb
|
229
230
|
- lib/rbexy/component_tag_builder.rb
|
@@ -234,8 +235,8 @@ files:
|
|
234
235
|
- lib/rbexy/output_buffer.rb
|
235
236
|
- lib/rbexy/parser.rb
|
236
237
|
- lib/rbexy/rails.rb
|
238
|
+
- lib/rbexy/rails/controller_helper.rb
|
237
239
|
- lib/rbexy/rails/engine.rb
|
238
|
-
- lib/rbexy/rails/template_handler.rb
|
239
240
|
- lib/rbexy/runtime.rb
|
240
241
|
- lib/rbexy/version.rb
|
241
242
|
- lib/rbexy/view_context_helper.rb
|