controller_less 0.0.4.pre → 0.0.5.pre
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/controller_less/application.rb +6 -4
- data/lib/controller_less/resource.rb +24 -5
- data/lib/controller_less/resource_dsl.rb +23 -18
- data/lib/controller_less/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f7d3c34f2e8f650993fb84cefe0a92e61746049
|
4
|
+
data.tar.gz: 038c1b0118c7ae0f215dac510cc70aaa67ec44f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbd4bba8327cf43405ea300c19a96208696a3c80d36a3a2fbb5939f99c565d701d3c035913c819fd1ecd064bee35564fd37ba5602c0ace0cd7c692af708f8c68
|
7
|
+
data.tar.gz: 152dddfab40e1fe1d6fd6d15d60e54d7fc14bf507f07b4afe16332b883fe3c31235239d92a3ecb8ff528fc3c1b0ef66e8fe8fe06440dffc099f41af13718fa80
|
@@ -20,13 +20,15 @@ module ControllerLess
|
|
20
20
|
resource = ControllerLess::Resource.new(name, options)
|
21
21
|
eval "class ::#{resource.controller_name} < ControllerLess::ResourcesController; end"
|
22
22
|
resource.controller.cl_config = resource
|
23
|
-
block_given? && hook_methods(
|
23
|
+
block_given? && hook_methods( resource, &block )
|
24
24
|
add_route(resource.route)
|
25
25
|
end
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
|
27
|
+
def hook_methods(rsource, &block)
|
28
|
+
resource_dsl = ControllerLess::ResourceDsl.new rsource
|
29
|
+
resource_dsl.run_registration_block &block
|
29
30
|
end
|
31
|
+
|
30
32
|
def add_route(route_name)
|
31
33
|
(self.routes_list ||= Array.new).push(route_name)
|
32
34
|
end
|
@@ -41,19 +41,38 @@ module ControllerLess
|
|
41
41
|
def build_namespace_route
|
42
42
|
func = "lambda do;"
|
43
43
|
arry = options.fetch(:namespace).split("::")
|
44
|
-
func += arry.map { |val| "namespace(:#{val.downcase}) do" }.join(";") << (";#{
|
44
|
+
func += arry.map { |val| "namespace(:#{val.downcase}) do" }.join(";") << (";#{ belongs_to_or_simple_route }" + ";end" * arry.size + ";end")
|
45
45
|
@build_namespace_route = eval(func)
|
46
46
|
end
|
47
47
|
def simple_route
|
48
|
-
[:resources, route_name.to_sym]
|
48
|
+
belongs_to_list.present? && build_nested_routes_func || [:resources, route_name.to_sym]
|
49
49
|
end
|
50
|
-
def
|
51
|
-
|
50
|
+
def build_nested_routes_func
|
51
|
+
eval("lambda do; #{build_nested_routes};end")
|
52
|
+
end
|
53
|
+
def build_nested_routes
|
54
|
+
@build_nested_routes = belongs_to_list.map { |val| "resources(:#{val.to_s.pluralize}) do" }.join(";") << (";#{nested_route}" + ";end;" * belongs_to_list.size)
|
55
|
+
any_optional_belongs_to && @build_nested_routes << nested_route
|
56
|
+
@build_nested_routes
|
57
|
+
end
|
58
|
+
def belongs_to_or_simple_route
|
59
|
+
belongs_to_list.present? && build_nested_routes || nested_route
|
60
|
+
end
|
61
|
+
def nested_route
|
62
|
+
"resources '#{route_name}'"
|
52
63
|
end
|
53
64
|
def controller
|
54
65
|
@controller ||= controller_name.constantize
|
55
66
|
end
|
56
|
-
|
67
|
+
def any_optional_belongs_to=(value)
|
68
|
+
@any_optional_belongs_to = value
|
69
|
+
end
|
70
|
+
def any_optional_belongs_to
|
71
|
+
@any_optional_belongs_to ||= false
|
72
|
+
end
|
73
|
+
def belongs_to_list
|
74
|
+
@belongs_to_list ||= Array.new
|
75
|
+
end
|
57
76
|
def param_key
|
58
77
|
if resource_class.respond_to? :model_name
|
59
78
|
resource_class.model_name.param_key
|
@@ -1,23 +1,28 @@
|
|
1
1
|
module ControllerLess
|
2
2
|
class ResourceDsl
|
3
|
-
attr_accessor :
|
4
|
-
def initialize(
|
5
|
-
self.
|
3
|
+
attr_accessor :resource
|
4
|
+
def initialize(rs)
|
5
|
+
self.resource = rs
|
6
|
+
end
|
7
|
+
def run_registration_block(&block)
|
8
|
+
instance_exec &block
|
9
|
+
end
|
10
|
+
def controller(&block)
|
11
|
+
block_given? && resource.controller.class_exec(&block)
|
12
|
+
resource.controller
|
13
|
+
end
|
14
|
+
def permitted_params(*args, &block)
|
15
|
+
p_key = resource.param_key.to_sym
|
16
|
+
controller do
|
17
|
+
define_method :permitted_params do
|
18
|
+
params.permit(p_key => block ? instance_exec(&block) : args)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
def belongs_to(target, options={})
|
23
|
+
resource.belongs_to_list.push target
|
24
|
+
resource.any_optional_belongs_to || (resource.any_optional_belongs_to = options.fetch(:optional, false))
|
25
|
+
resource.controller.send :belongs_to, target, options
|
6
26
|
end
|
7
|
-
def run_registration_block(&block)
|
8
|
-
instance_exec &block
|
9
|
-
end
|
10
|
-
def controller(&block)
|
11
|
-
block_given? && config.controller.class_exec(&block)
|
12
|
-
config.controller
|
13
|
-
end
|
14
|
-
def permitted_params(*args, &block)
|
15
|
-
param_key = config.param_key.to_sym
|
16
|
-
controller do
|
17
|
-
define_method :permitted_params do
|
18
|
-
params.permit(param_key => block ? instance_exec(&block) : args)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
27
|
end
|
23
28
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: controller_less
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kamal Ejaz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: inherited_resources
|