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 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