missile_emitter 0.1.1 → 0.1.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: 5a38fa6f5f01a264e3fc00d72befbe12a29e05aec1acf6ef2a79bfe5d4c0373f
4
- data.tar.gz: 2e3a55d5fcf2b5d1e2c11d8bebda500e5908ee59bb44d142483e3a31efe288be
3
+ metadata.gz: 46ab698e7bba2e8af0eaf93d8a9882ff522a5acca5d17de5308737558a0476c0
4
+ data.tar.gz: d63ad0e9764163f14abf3a326c528be00963b7ab95bd6775387e4c9e27801b95
5
5
  SHA512:
6
- metadata.gz: dafcb49660a89127302f3f93710155594937aec1aff16a10d183b4aa609a77a8c4356e001cba112c9edd891057b37c76da2f7680854925789e94fc11d1434e58
7
- data.tar.gz: 1c2bea2657c924bab830ead79cc0b48a7f7155e53f6caa0c389a6c241501a570f50ea209b87688726c9924581d61b0ac1edd231f1d9d1c160c6be2d8f4f81133
6
+ metadata.gz: c22c26896d40b8d2e5fae943de2d20d67bf96b43b349aefc3e2e447513403f2d8aef593da3b1334a8112c61236cde307682a16d7883b2b6d4330f702183fd4f0
7
+ data.tar.gz: 0b23e86509f97ca64343e1c1b44bae62b99c5508451c09b0f85cd13455be774a438f8a6ebea8b932985b1f8cab471caa3fbc20ee23fb70773a798013b25b0b8a
data/README.md CHANGED
@@ -102,22 +102,20 @@ me.age # => 36
102
102
 
103
103
  ```ruby
104
104
  module Searchable
105
-
106
- extend ActiveSupport::Concern
107
-
108
- included do
109
- # 使用 class attribute 保存搜索条件
110
- class_attribute :conditions, {}
111
- end
105
+ # 搜索条件(klass => {keyword: block})
106
+ # eg. {Person => {name_like: proc, older_than: proc}}
107
+ conditions = {}.with_indifferent_access
112
108
 
113
109
  MissileEmitter do |klass, key, *, &block|
114
- # 保存声明的每一个关键字,以及搜索算法
115
- klass.conditions[key] = block
110
+ conditions[klass] ||= {}
111
+ conditions[klass][key] = block
116
112
  end
117
113
 
118
- class_methods do
114
+ extend ActiveSupport::Concern
115
+
116
+ included do
119
117
 
120
- def search(hash)
118
+ define_singleton_method :search do |hash|
121
119
  hash.reduce all do |relation, (key, value)|
122
120
  # Just for fun :)
123
121
  relation = relation.extending do
@@ -126,7 +124,7 @@ module Searchable
126
124
 
127
125
  if value.blank?
128
126
  relation
129
- elsif filter = mapping[key]
127
+ elsif filter = conditions.fetch(self, {})[key]
130
128
  relation.instance_exec(value, &filter)
131
129
  elsif column_names.include?(key)
132
130
  relation.where key => value
@@ -136,8 +134,6 @@ module Searchable
136
134
  end
137
135
  end
138
136
 
139
- end
140
-
141
137
  end
142
138
  ```
143
139
 
@@ -1,3 +1,3 @@
1
1
  module MissileEmitter
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -1,7 +1,10 @@
1
1
  require "missile_emitter/version"
2
2
  require "missile_emitter/battle_field"
3
3
 
4
- require "pry" rescue nil
4
+ begin
5
+ require "pry"
6
+ rescue LoadError
7
+ end
5
8
 
6
9
  module MissileEmitter
7
10
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: missile_emitter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - coding-class.com