rbexy 0.1.4 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|