ruby_codex 0.0.8 → 0.0.9
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.
- data/lib/ruby_codex.rb +18 -4
- metadata +1 -1
data/lib/ruby_codex.rb
CHANGED
@@ -95,6 +95,11 @@ class Codex
|
|
95
95
|
key.merge({
|
96
96
|
:func => Proc.new { |x| func_name.call(x) },
|
97
97
|
:sig => Proc.new { |x| x.children.drop(2).map { |y| type.call(y) } },
|
98
|
+
:norm_code => Proc.new do |x|
|
99
|
+
name = func_name.call(x)
|
100
|
+
sig = x.children.drop(2).map { |y| type.call(y) }.join(",")
|
101
|
+
"#{name}(#{sig})"
|
102
|
+
end
|
98
103
|
}),
|
99
104
|
data_core.merge({
|
100
105
|
:info => Proc.new { |x| info.call(without_caller(x)) },
|
@@ -102,6 +107,8 @@ class Codex
|
|
102
107
|
}),
|
103
108
|
combine,
|
104
109
|
Proc.new do |db,keys,values|
|
110
|
+
primatives = ["str","int","float","array","hash"]
|
111
|
+
all_prim = keys[:sig].all? { |x| primatives.include?(x) }
|
105
112
|
query = db.where( :type => keys[:type], :func => keys[:func], :sig => keys[:sig]).first
|
106
113
|
query_count = query.nil? ? 0 : query.count
|
107
114
|
func = db.where(:type => keys[:type], :func => keys[:func], :sig => {:$ne => keys[:sig]}).sort(:count => -1).limit(1).first
|
@@ -118,7 +125,7 @@ class Codex
|
|
118
125
|
"Function call #{keys[:func]}:#{keys[:sig].join(",")} has appeared #{query_count.to_s} times, " +
|
119
126
|
alt_text,
|
120
127
|
:unlikely => Proc.new do |ac=5,t=1024|
|
121
|
-
query_count == 0 && alt_count >= ac || alt_count >= t * (query_count + 1)
|
128
|
+
all_prim && query_count == 0 && alt_count >= ac || alt_count >= t * (query_count + 1)
|
122
129
|
end
|
123
130
|
}
|
124
131
|
end
|
@@ -131,13 +138,18 @@ class Codex
|
|
131
138
|
:type => Proc.new { "func_chain" },
|
132
139
|
:f1 => Proc.new { |x| func_name.call(x) },
|
133
140
|
:f2 => Proc.new { |x| func_name.call(x.children.first) },
|
141
|
+
:norm_code => Proc.new do |x|
|
142
|
+
f1 = func_name.call(x)
|
143
|
+
f2 = func_name.call(x.children.first)
|
144
|
+
"#{f1}.#{f2}"
|
145
|
+
end
|
134
146
|
}),
|
135
147
|
data_core,
|
136
148
|
combine,
|
137
149
|
Proc.new do |db,keys,data|
|
138
150
|
query = db.where(keys).first
|
139
151
|
query_count = query.nil? ? 0 : query.count
|
140
|
-
fs = [:f1,:f2].map { |f| db.where(:type => "send", :func => keys[f]).
|
152
|
+
fs = [:f1,:f2].map { |f| db.where(:type => "send", :func => keys[f]).sum(:count) }
|
141
153
|
{ :keys => keys,
|
142
154
|
:message =>
|
143
155
|
"Function #{keys[:f1]} has appeared #{fs[0].to_s} times " +
|
@@ -169,6 +181,7 @@ class Codex
|
|
169
181
|
key.merge({
|
170
182
|
:type => Proc.new { "ident" },
|
171
183
|
:ident => Proc.new { |x| x.children.first.to_s },
|
184
|
+
:norm_code => Proc.new { |x| x.children.first.to_s + " ="}
|
172
185
|
}),
|
173
186
|
data_core.merge({
|
174
187
|
:ident_type => Proc.new { |x| type.call(x.children[1]) rescue nil }
|
@@ -177,9 +190,10 @@ class Codex
|
|
177
190
|
:ident_types => Proc.new { |v| v.group_by { |y| y[:ident_type] }.map_hash { |x| x.size } }
|
178
191
|
}),
|
179
192
|
Proc.new { |db, keys, data|
|
193
|
+
#pp keys
|
180
194
|
primatives = ["str","int","float","array","hash"]
|
181
195
|
query = db.where(keys).first
|
182
|
-
if query && primatives.include?(
|
196
|
+
if query && primatives.include?(data[:ident_type])
|
183
197
|
types = query.ident_types.select { |k,v| primatives.include? k }
|
184
198
|
types.default = 0
|
185
199
|
best = types.select { |k,v| k != data[:ident_type] }.sort_by{ |k,v| v*-1 }.first
|
@@ -190,7 +204,7 @@ class Codex
|
|
190
204
|
"times as #{data[:ident_type].to_s} and #{best_str}",
|
191
205
|
:unlikely => Proc.new do |ac=5,t=8|
|
192
206
|
if best
|
193
|
-
types[keys[:ident_type]] == 0 && best[1] >= ac || best[1] >= t * (types[keys[:ident_type]] + 1)
|
207
|
+
(types[keys[:ident_type]] == 0 && best[1] >= ac) || (best[1] >= t * (types[keys[:ident_type]] + 1))
|
194
208
|
else
|
195
209
|
false
|
196
210
|
end
|