controller_less 0.0.4.pre → 0.0.5.pre
Sign up to get free protection for your applications and to get access to all the features.
- 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
|