missile_emitter 0.1.1 → 0.1.2

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