active_record_decorator 0.0.1 → 0.0.2

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
  SHA256:
3
- metadata.gz: a553f1f34967ddcda72fda29064ea4e1424e974fbedc3c2c921a21982502c739
4
- data.tar.gz: cf2cb0673c163f2677f159b77830c03dbf844c0d64378b6718611aef4e261e89
3
+ metadata.gz: 6bab50fddd7b8d28eb6e78df3e9ed45bffdf109be82f1a8a45fd2ab5227e1f0b
4
+ data.tar.gz: 90377dc30a8035a5eef308f596fb76541e737759ea8a9d5c3e5f4593a9410a2c
5
5
  SHA512:
6
- metadata.gz: 0eae119da8efc7d9e90bd06b92d0b2d57ac9389c0a60ec0bef7f00bcdc816bc3e36194343ebace25743246ef60f2bb8400ee51be663a7be864da6942912093d3
7
- data.tar.gz: 7de351aaed4fb73d431ab313ae740862bbfa065029bbd2c450083649a5f307c9140021c0ec459711de6498cde33a5852764f7108119329190223b6fa518a6d3c
6
+ metadata.gz: 4be90ac7a3fb6256e21506063dcd0f9a4b16a8f7d56fc269f184c256d32aec24fca650b43b9e27bc3779d39339830243e0f654c9816b277a2adfe17ce5e914a2
7
+ data.tar.gz: cecb6ff03106f90b6827a09dae8b1038ddba87b26d070730d9ad5774633e1edfff40eafec7d48c8644a972d716db866b20e858f12897cc78f9cb9b9f3a72d3a1
@@ -1,4 +1,12 @@
1
1
 
2
+ require 'active_record_decorator/assign_operation'
3
+ require 'active_record_decorator/assign_operation_core/operation'
4
+ require 'active_record_decorator/condition_evaluator'
5
+ require 'active_record_decorator/condition_alias_manager'
6
+ require 'active_record_decorator/condition_evaluator_core/condition'
7
+ require 'active_record_decorator/condition_evaluator_core/operators'
8
+ require 'active_record_decorator/condition_evaluator_core/value_object'
9
+
2
10
  module ActiveRecordDecorator
3
11
  extend ActiveSupport::Concern
4
12
 
@@ -24,8 +32,10 @@ module ActiveRecordDecorator
24
32
  end
25
33
 
26
34
  included do
27
- class_attribute :relation_callback_chain
35
+ class_attribute :relation_callback_chain, :condition_aliases, :assign_operation_aliases
28
36
  self.relation_callback_chain = Concurrent::Array.new
37
+ self.condition_aliases = Concurrent::Array.new
38
+ self.assign_operation_aliases = Concurrent::Array.new
29
39
 
30
40
  # Return self if false else self with passed scoped attached
31
41
  # @param[condition] - deciding condition true/false to attach scope
@@ -78,6 +88,43 @@ module ActiveRecordDecorator
78
88
  end
79
89
  return status
80
90
  end
91
+
92
+ def condition_alias(condition_name, *attributes)
93
+
94
+ defaults = attributes.extract_options!.dup
95
+ condition_name = condition_name
96
+ operator = defaults[:operator]
97
+ attr = defaults[:attr]
98
+ value = defaults[:value]
99
+ return if self.condition_aliases.detect { |rl| rl.name == condition_name }
100
+ self.condition_aliases << ConditionEvaluatorCore::Condition.new(condition_name, attr, operator, value)
101
+ end
102
+
103
+ def all_condition_aliases
104
+ self.condition_aliases
105
+ end
106
+
107
+ def assign_operation(name, *attributes)
108
+ defaults = attributes.extract_options!.dup
109
+
110
+ condition_name = name
111
+
112
+ if self.instance_methods(false).include?(condition_name.to_sym)
113
+ raise "already method defined"
114
+ end
115
+
116
+
117
+ attr = defaults[:attr]
118
+ value = defaults[:value]
119
+ return if self.assign_operation_aliases.detect { |rl| rl.name == condition_name }
120
+ self.assign_operation_aliases << AssignOperationCore::Operation.new(condition_name, attr, value)
121
+ delegate name.to_sym, to: :assign_operation_proxy
122
+ end
123
+
124
+ def all_assign_operation_aliases
125
+ self.assign_operation_aliases
126
+ end
127
+
81
128
  end
82
129
 
83
130
  def run_callbacks_registered()
@@ -98,4 +145,13 @@ module ActiveRecordDecorator
98
145
  end
99
146
  end
100
147
  end
148
+
149
+ def condition_match?(condition_to_evaluate)
150
+ ActiveRecordDecorator::ConditionEvaluator.new(record: self, condition_to_evaluate: condition_to_evaluate).evaluate
151
+ end
152
+
153
+ def assign_operation_proxy
154
+ @assign_operation_proxy ||= ActiveRecordDecorator::AssignOperation.new(record: self)
155
+ end
156
+
101
157
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record_decorator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - kathir