jbuilder-jpartial 0.1.2 → 0.1.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/lib/jbuilder/jpartial.rb +22 -4
- data/lib/jbuilder/jpartial/railtie.rb +29 -0
- data/lib/jbuilder/jpartial/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75e8c4257f48d6ef56dcaaf8047bef63df892137
|
4
|
+
data.tar.gz: 4f22e415d52ea9f82f097f5e05e2a42c22200c9a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da10106742ea3e98614392ee921e09caf4d8f77d6047632e4b1d4a9a065b01253d704c7409c8045dfb84d5804e411ba97a14b47eb61194e24499a94f0af70238
|
7
|
+
data.tar.gz: 118c304e9eca4ac54df216e59bc8146ca10e427b6dbae58a9e46ed807557cd53b8eea1942cd3e4a04e2487384f257e1d2c992dda09ec627ac1c3af9812acee33
|
data/lib/jbuilder/jpartial.rb
CHANGED
@@ -20,19 +20,37 @@ class Jbuilder
|
|
20
20
|
module Jpartial
|
21
21
|
DangerousMethodName = Class.new(ArgumentError)
|
22
22
|
|
23
|
+
@defined_by_user = []
|
24
|
+
|
23
25
|
def self.jpartial(name, &block)
|
24
|
-
|
25
|
-
|
26
|
-
raise DangerousMethodName, "The method `##{name}` is already defined"\
|
26
|
+
if dangerous_method_name?(name)
|
27
|
+
raise DangerousMethodName, "The method `##{name}` is already defined"\
|
27
28
|
' by Jbuilder. Please choose another name to define your partial'
|
28
|
-
|
29
|
+
else
|
30
|
+
Jbuilder.class_eval do
|
29
31
|
define_method(name, &block)
|
30
32
|
end
|
33
|
+
@defined_by_user << name unless @defined_by_user.include?(name)
|
31
34
|
end
|
32
35
|
end
|
33
36
|
|
37
|
+
def self.dangerous_method_name?(name)
|
38
|
+
!@defined_by_user.include?(name) &&
|
39
|
+
Jbuilder.method_defined?(name) ||
|
40
|
+
Jbuilder.private_method_defined?(name)
|
41
|
+
end
|
42
|
+
|
34
43
|
def self.configure(&block)
|
35
44
|
module_eval(&block)
|
36
45
|
end
|
46
|
+
|
47
|
+
# Sends all method calls to Jpartial.jpartial for definition
|
48
|
+
class Template
|
49
|
+
def method_missing(method_name, &block)
|
50
|
+
Jpartial.jpartial(method_name, &block)
|
51
|
+
end
|
52
|
+
end
|
37
53
|
end
|
38
54
|
end
|
55
|
+
|
56
|
+
require 'jbuilder/jpartial/railtie' if defined?(Rails)
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'rails/railtie'
|
4
|
+
require 'jbuilder/jbuilder_template'
|
5
|
+
require 'jbuilder/jpartial'
|
6
|
+
|
7
|
+
class Jbuilder
|
8
|
+
module Jpartial
|
9
|
+
# Adds the #json and #jpartial methods to .jbuilder templates
|
10
|
+
class JpartialHandler < ::JbuilderHandler
|
11
|
+
def self.call(template)
|
12
|
+
%{__already_defined = defined?(json); json||=JbuilderTemplate.new(self);
|
13
|
+
jpartial||=Jbuilder::Jpartial::Template.new;
|
14
|
+
#{template.source} json.target! unless
|
15
|
+
(__already_defined && __already_defined != "method")}
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# Loads the template handler, overriding the JbuilderTemplate
|
20
|
+
class Railtie < ::Rails::Railtie
|
21
|
+
initializer :jpartial do
|
22
|
+
ActiveSupport.on_load :action_view do
|
23
|
+
ActionView::Template.register_template_handler :jbuilder,
|
24
|
+
JpartialHandler
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jbuilder-jpartial
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- M. Simon Borg
|
@@ -62,6 +62,7 @@ files:
|
|
62
62
|
- LICENSE.txt
|
63
63
|
- README.md
|
64
64
|
- lib/jbuilder/jpartial.rb
|
65
|
+
- lib/jbuilder/jpartial/railtie.rb
|
65
66
|
- lib/jbuilder/jpartial/version.rb
|
66
67
|
homepage: https://github.com/msimonborg/jbuilder-jpartial
|
67
68
|
licenses:
|