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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 14f2efb325cfc55aecc4a067b81564e8fbb19dae
4
- data.tar.gz: cc9c8f8a44dcc146292c236715fd5c3b496d2507
3
+ metadata.gz: 2f7d3c34f2e8f650993fb84cefe0a92e61746049
4
+ data.tar.gz: 038c1b0118c7ae0f215dac510cc70aaa67ec44f1
5
5
  SHA512:
6
- metadata.gz: 62897d2c10d958bf0c2ea72e5e72459bbddd01e7f1a39a53865170e5e45a921a4005f419832360d900d00d9371f877225735c7330d27c7d7e2951235dcc4b7cc
7
- data.tar.gz: b1c70d1918333febf0359978fda21525b40ed4c1ad78a69f242f200b12c26c7750dd3d3b91c0eff408865601777dcb2a6b74d0b638861b85d94304aab8b16370
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(resource, resource.resource_class, &block)
23
+ block_given? && hook_methods( resource, &block )
24
24
  add_route(resource.route)
25
25
  end
26
- def hook_methods(config, resource_class, &block)
27
- rdsl = ControllerLess::ResourceDsl.new(config, resource_class)
28
- rdsl.run_registration_block(&block)
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(";") << (";#{simple_routes_for_namespace.join(" ")}" + ";end" * arry.size + ";end")
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 simple_routes_for_namespace
51
- [:resources, "'#{route_name}'"]
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 :config, :resource_class
4
- def initialize(conf, rclass)
5
- self.config, self.resource_class = conf, rclass
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
@@ -1,3 +1,3 @@
1
1
  module ControllerLess
2
- VERSION = '0.0.4.pre'
2
+ VERSION = '0.0.5.pre'
3
3
  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.pre
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-05-25 00:00:00.000000000 Z
11
+ date: 2016-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inherited_resources