ruby_codex 0.0.7 → 0.0.8
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 +33 -33
- metadata +1 -1
data/lib/ruby_codex.rb
CHANGED
@@ -29,8 +29,6 @@ class Codex
|
|
29
29
|
|
30
30
|
key = {
|
31
31
|
:type => type,
|
32
|
-
:info => info,
|
33
|
-
:func_info => func_info
|
34
32
|
}
|
35
33
|
|
36
34
|
data_core = {
|
@@ -86,7 +84,7 @@ class Codex
|
|
86
84
|
"We've seen #{keys[:func]} blocks returning the #{keys[:ret_val]} type #{query_count.to_s} " +
|
87
85
|
"times, and we've seen #{keys[:func]} blocks #{blocks.to_s} times and #{keys[:ret_val]} " +
|
88
86
|
"returned #{rets.to_s} times.",
|
89
|
-
:unlikely => Proc.new { |gt=1,bt
|
87
|
+
:unlikely => Proc.new { |gt=1,bt=5,rt=5| query_count < gt && blocks > bt && rets > rt}
|
90
88
|
}
|
91
89
|
}
|
92
90
|
)
|
@@ -96,36 +94,34 @@ class Codex
|
|
96
94
|
Proc.new { |x| x.type == :send},
|
97
95
|
key.merge({
|
98
96
|
:func => Proc.new { |x| func_name.call(x) },
|
99
|
-
:norm_code => Proc.new { |x| normal_node(x) { |x| Unparser.unparse(without_caller(x)) rescue nil } },
|
100
97
|
:sig => Proc.new { |x| x.children.drop(2).map { |y| type.call(y) } },
|
98
|
+
}),
|
99
|
+
data_core.merge({
|
101
100
|
:info => Proc.new { |x| info.call(without_caller(x)) },
|
102
101
|
:func_info => Proc.new { |x| func_info.call(without_caller(x)) }
|
103
102
|
}),
|
104
|
-
data_core,
|
105
103
|
combine,
|
106
|
-
Proc.new
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
:
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
end
|
128
|
-
}
|
104
|
+
Proc.new do |db,keys,values|
|
105
|
+
query = db.where( :type => keys[:type], :func => keys[:func], :sig => keys[:sig]).first
|
106
|
+
query_count = query.nil? ? 0 : query.count
|
107
|
+
func = db.where(:type => keys[:type], :func => keys[:func], :sig => {:$ne => keys[:sig]}).sort(:count => -1).limit(1).first
|
108
|
+
alt_text =
|
109
|
+
if func
|
110
|
+
alt_count = func.count
|
111
|
+
"and the most common alternative #{func.func}:#{func.sig.join(",")} has appeared #{alt_count.to_s} times."
|
112
|
+
else
|
113
|
+
alt_count = 0
|
114
|
+
"and we've seen no known alternative."
|
115
|
+
end
|
116
|
+
{ :keys => keys,
|
117
|
+
:message =>
|
118
|
+
"Function call #{keys[:func]}:#{keys[:sig].join(",")} has appeared #{query_count.to_s} times, " +
|
119
|
+
alt_text,
|
120
|
+
:unlikely => Proc.new do |ac=5,t=1024|
|
121
|
+
query_count == 0 && alt_count >= ac || alt_count >= t * (query_count + 1)
|
122
|
+
end
|
123
|
+
}
|
124
|
+
end
|
129
125
|
)
|
130
126
|
|
131
127
|
@nodes[:func_chain] = DataNode.new(
|
@@ -135,8 +131,6 @@ class Codex
|
|
135
131
|
:type => Proc.new { "func_chain" },
|
136
132
|
:f1 => Proc.new { |x| func_name.call(x) },
|
137
133
|
:f2 => Proc.new { |x| func_name.call(x.children.first) },
|
138
|
-
:info => Proc.new { 0 },
|
139
|
-
:func_info => Proc.new { 0 }
|
140
134
|
}),
|
141
135
|
data_core,
|
142
136
|
combine,
|
@@ -162,6 +156,8 @@ class Codex
|
|
162
156
|
:cond => Proc.new { |x| normal_node(x) { |n| Unparser.unparse(n.children.first) }},
|
163
157
|
:iftrue => Proc.new { |x| normal_node(x) { |n| Unparser.unparse(n.children[1]) }},
|
164
158
|
:iffalse => Proc.new { |x| normal_node(x) { |n| Unparser.unparse(n.children[2]) }},
|
159
|
+
:info => info,
|
160
|
+
:func_info => func_info
|
165
161
|
}),
|
166
162
|
data_core,
|
167
163
|
combine
|
@@ -173,8 +169,6 @@ class Codex
|
|
173
169
|
key.merge({
|
174
170
|
:type => Proc.new { "ident" },
|
175
171
|
:ident => Proc.new { |x| x.children.first.to_s },
|
176
|
-
:info => Proc.new { 0 },
|
177
|
-
:func_info => Proc.new { 0 }
|
178
172
|
}),
|
179
173
|
data_core.merge({
|
180
174
|
:ident_type => Proc.new { |x| type.call(x.children[1]) rescue nil }
|
@@ -194,7 +188,13 @@ class Codex
|
|
194
188
|
:message =>
|
195
189
|
"The identifier #{keys[:ident]} has appeared #{types[data[:ident_type]].to_s} " +
|
196
190
|
"times as #{data[:ident_type].to_s} and #{best_str}",
|
197
|
-
|
191
|
+
:unlikely => Proc.new do |ac=5,t=8|
|
192
|
+
if best
|
193
|
+
types[keys[:ident_type]] == 0 && best[1] >= ac || best[1] >= t * (types[keys[:ident_type]] + 1)
|
194
|
+
else
|
195
|
+
false
|
196
|
+
end
|
197
|
+
end
|
198
198
|
}
|
199
199
|
else
|
200
200
|
{ :message => "Never Seen", :unlikely => Proc.new { false } }
|