rbexy 0.1.3 → 0.2.2
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 +0 -1
- data/lib/rbexy/rails/engine.rb +9 -2
- data/lib/rbexy/runtime.rb +11 -1
- data/lib/rbexy/version.rb +1 -1
- metadata +3 -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: 9b5edab6a6162d1d195a6e72652727a6be94934f6759eeaa4425ca252fc2be6a
|
4
|
+
data.tar.gz: 77112d7e4c606ad909d34777c1a549c904acef758cb64705aec70fea5ef9bf35
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b018d547ad94191051c9dbf4dec6dc6032c71f55d5d9cbc96f0ceb5993ddec97f047a9301868499bb0fe038ca93fed7bb40af1c7a46b0d97c27cbceb1b70ddf7
|
7
|
+
data.tar.gz: 16058ae7865b3090b1975c66619787ab368268cc1c7dba50fb4899c0c206b0865de96b7e66c708eb65405b48b610d50d6b8cf701c3a04424e72f5a2ac69cee0d
|
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,17 @@ 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) }
|
8
10
|
|
9
|
-
|
11
|
+
ActionView::Template.register_template_handler(:rbx, template_handler)
|
12
|
+
|
13
|
+
ActiveSupport.on_load :action_controller_base do
|
10
14
|
helper Rbexy::ViewContextHelper
|
15
|
+
helper_method :rbexy_component_provider
|
16
|
+
|
17
|
+
def rbexy_component_provider; end
|
11
18
|
end
|
12
19
|
|
13
20
|
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.2
|
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-18 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
|
@@ -235,7 +236,6 @@ files:
|
|
235
236
|
- lib/rbexy/parser.rb
|
236
237
|
- lib/rbexy/rails.rb
|
237
238
|
- lib/rbexy/rails/engine.rb
|
238
|
-
- lib/rbexy/rails/template_handler.rb
|
239
239
|
- lib/rbexy/runtime.rb
|
240
240
|
- lib/rbexy/version.rb
|
241
241
|
- lib/rbexy/view_context_helper.rb
|