rack-mount 0.4.4 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -50,7 +50,7 @@ module Rack::Mount
50
50
  @report ||= begin
51
51
  possible_keys.each { |keys| keys.each_pair { |key, _| @key_frequency << key } }
52
52
  return [] if @key_frequency.count <= 1
53
- @key_frequency.keys_above_mean
53
+ @key_frequency.keys_in_upper_quartile
54
54
  end
55
55
  end
56
56
 
@@ -28,33 +28,46 @@ module Rack::Mount
28
28
  @min ||= values.min || 0
29
29
  end
30
30
 
31
- def mid_range
32
- @mid_range ||= calculate_mid_range
33
- end
34
-
35
31
  def mean
36
32
  @mean ||= calculate_mean
37
33
  end
38
34
 
39
- def keys_above_mean
40
- @keys_above_mean ||= compute_keys_above_mean
35
+ def standard_deviation
36
+ @standard_deviation ||= calculate_standard_deviation
41
37
  end
42
38
 
43
- private
44
- def calculate_mid_range
45
- (max + min) / 2
46
- end
39
+ def upper_quartile_limit
40
+ @upper_quartile_limit ||= calculate_upper_quartile_limit
41
+ end
42
+
43
+ def keys_in_upper_quartile
44
+ @keys_in_upper_quartile ||= compute_keys_in_upper_quartile
45
+ end
47
46
 
47
+ private
48
48
  def calculate_mean
49
49
  count / size
50
50
  end
51
51
 
52
- def compute_keys_above_mean
53
- sorted_by_frequency.select { |_, value| value >= mean }.map! { |key, _| key }
52
+ def calculate_variance
53
+ values.inject(0) { |sum, e| sum + (e - mean) ** 2 } / count.to_f
54
+ end
55
+
56
+ def calculate_standard_deviation
57
+ Math.sqrt(calculate_variance)
58
+ end
59
+
60
+ def calculate_upper_quartile_limit
61
+ mean + standard_deviation
62
+ end
63
+
64
+ def compute_keys_in_upper_quartile
65
+ sorted_by_frequency.select { |_, value| value >= upper_quartile_limit }.map! { |key, _| key }
54
66
  end
55
67
 
56
68
  def expire_caches!
57
- @max = @min = @mid_range = @mean = @keys_above_mean = nil
69
+ @max = @min = @mean = @standard_deviation = nil
70
+ @keys_in_upper_quartile = nil
58
71
  end
59
72
  end
60
73
  end
@@ -39,7 +39,7 @@ module Rack::Mount
39
39
  end
40
40
 
41
41
  def separators(key)
42
- @boundaries[key].keys_above_mean
42
+ @boundaries[key].keys_in_upper_quartile
43
43
  end
44
44
 
45
45
  def process_key(requirements, method, requirement)
@@ -144,8 +144,6 @@ module Rack::Mount
144
144
  segments.pop
145
145
  end
146
146
 
147
- segments.shift if segments[0].nil? || segments[0] == ''
148
-
149
147
  segments
150
148
  end
151
149
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-mount
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Peek
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-13 00:00:00 -06:00
12
+ date: 2010-01-17 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -71,6 +71,8 @@ files:
71
71
  - LICENSE
72
72
  has_rdoc: true
73
73
  homepage: http://github.com/josh/rack-mount
74
+ licenses: []
75
+
74
76
  post_install_message:
75
77
  rdoc_options: []
76
78
 
@@ -91,9 +93,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
93
  requirements: []
92
94
 
93
95
  rubyforge_project:
94
- rubygems_version: 1.3.1
96
+ rubygems_version: 1.3.5
95
97
  signing_key:
96
- specification_version: 2
98
+ specification_version: 3
97
99
  summary: Stackable dynamic tree based Rack router
98
100
  test_files: []
99
101