fdist 1.0.1 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (8) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -1
  3. data/Gemfile.lock +59 -28
  4. data/Rakefile +29 -4
  5. data/VERSION +1 -1
  6. data/fdist.gemspec +19 -9
  7. data/lib/fdist.rb +14 -17
  8. metadata +60 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3aa42912b521e16d543a73c22f490d7a228fa926
4
- data.tar.gz: 36edbec9e2444cde0d328022ae924965fdf23c0b
3
+ metadata.gz: a70833b84a20dd91f598ec4dbaf4d4ad4b519b16
4
+ data.tar.gz: 55a50904dc563a33603bd39e671e24d6410e6428
5
5
  SHA512:
6
- metadata.gz: f7f1a80224963c6f5b98d21a5fab8d5c13bca361e5d95f56b9b88e52ebd024e1e6028e4e19b256826cf50fbeb5f235cb16fa65753f3244bc4fde1e9c49c09be0
7
- data.tar.gz: ab0d125996685f522b46f7dad0f4bc0a7e1b250acdae13ebcbcd1cff7d2dc4bf6595f0825693cbec44addbd31f6db1b88af4af7ac786d0f1ed040457bd4762b9
6
+ metadata.gz: 8ee372f6bab4926b8c084530c8da01f9c67f59cc3580355cea3c907704dc48f46c38ed98438d1e78a280fa36a95b365ffab5d875350713d192acfcf613287413
7
+ data.tar.gz: 93871fae77d3e502980dcee1d9ec36ecfb3696c899c1d44e4037e395acc8d696f9eb6812581ea8740a64c0afdb3c2aa3870750ec65d0159b7a002cd6e3ab728e
data/Gemfile CHANGED
@@ -2,9 +2,13 @@ source "http://rubygems.org"
2
2
  # Add dependencies required to use your gem here.
3
3
  # Example:
4
4
  # gem "activesupport", ">= 2.3.5"
5
+
5
6
  # Add dependencies to develop your gem here.
6
7
  # Include everything needed to run rake, tests, features, etc.
7
8
  group :development do
9
+ gem "shoulda", ">= 0"
10
+ gem "rdoc", "~> 3.12"
8
11
  gem "bundler", "~> 1.0"
9
- gem "jeweler", "~> 1.8.7"
12
+ gem "jeweler", "~> 2.0.1"
13
+ gem "simplecov", ">= 0"
10
14
  end
data/Gemfile.lock CHANGED
@@ -1,50 +1,81 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- addressable (2.3.5)
5
- builder (3.1.4)
6
- faraday (0.8.8)
7
- multipart-post (~> 1.2.0)
4
+ activesupport (4.1.0)
5
+ i18n (~> 0.6, >= 0.6.9)
6
+ json (~> 1.7, >= 1.7.7)
7
+ minitest (~> 5.1)
8
+ thread_safe (~> 0.1)
9
+ tzinfo (~> 1.1)
10
+ addressable (2.3.6)
11
+ builder (3.2.2)
12
+ descendants_tracker (0.0.4)
13
+ thread_safe (~> 0.3, >= 0.3.1)
14
+ docile (1.1.3)
15
+ faraday (0.9.0)
16
+ multipart-post (>= 1.2, < 3)
8
17
  git (1.2.6)
9
- github_api (0.10.1)
10
- addressable
11
- faraday (~> 0.8.1)
18
+ github_api (0.11.3)
19
+ addressable (~> 2.3)
20
+ descendants_tracker (~> 0.0.1)
21
+ faraday (~> 0.8, < 0.10)
12
22
  hashie (>= 1.2)
13
- multi_json (~> 1.4)
14
- nokogiri (~> 1.5.2)
23
+ multi_json (>= 1.7.5, < 2.0)
24
+ nokogiri (~> 1.6.0)
15
25
  oauth2
16
- hashie (2.0.5)
17
- highline (1.6.20)
18
- httpauth (0.2.0)
19
- jeweler (1.8.8)
26
+ hashie (2.1.1)
27
+ highline (1.6.21)
28
+ i18n (0.6.9)
29
+ jeweler (2.0.1)
20
30
  builder
21
- bundler (~> 1.0)
31
+ bundler (>= 1.0)
22
32
  git (>= 1.2.5)
23
- github_api (= 0.10.1)
33
+ github_api
24
34
  highline (>= 1.6.15)
25
- nokogiri (= 1.5.10)
35
+ nokogiri (>= 1.5.10)
26
36
  rake
27
37
  rdoc
28
- jwt (0.1.8)
38
+ json (1.8.1)
39
+ jwt (0.1.11)
29
40
  multi_json (>= 1.5)
30
- multi_json (1.8.2)
41
+ mini_portile (0.5.3)
42
+ minitest (5.3.3)
43
+ multi_json (1.9.2)
31
44
  multi_xml (0.5.5)
32
- multipart-post (1.2.0)
33
- nokogiri (1.5.10)
34
- oauth2 (0.9.2)
35
- faraday (~> 0.8)
36
- httpauth (~> 0.2)
37
- jwt (~> 0.1.4)
38
- multi_json (~> 1.0)
45
+ multipart-post (2.0.0)
46
+ nokogiri (1.6.1)
47
+ mini_portile (~> 0.5.0)
48
+ oauth2 (0.9.3)
49
+ faraday (>= 0.8, < 0.10)
50
+ jwt (~> 0.1.8)
51
+ multi_json (~> 1.3)
39
52
  multi_xml (~> 0.5)
40
53
  rack (~> 1.2)
41
54
  rack (1.5.2)
42
- rake (10.1.0)
43
- rdoc (4.0.0)
55
+ rake (10.3.0)
56
+ rdoc (3.12.2)
57
+ json (~> 1.4)
58
+ shoulda (3.5.0)
59
+ shoulda-context (~> 1.0, >= 1.0.1)
60
+ shoulda-matchers (>= 1.4.1, < 3.0)
61
+ shoulda-context (1.2.1)
62
+ shoulda-matchers (2.6.0)
63
+ activesupport (>= 3.0.0)
64
+ simplecov (0.8.2)
65
+ docile (~> 1.1.0)
66
+ multi_json
67
+ simplecov-html (~> 0.8.0)
68
+ simplecov-html (0.8.0)
69
+ thread_safe (0.3.3)
70
+ tzinfo (1.1.0)
71
+ thread_safe (~> 0.1)
44
72
 
45
73
  PLATFORMS
46
74
  ruby
47
75
 
48
76
  DEPENDENCIES
49
77
  bundler (~> 1.0)
50
- jeweler (~> 1.8.7)
78
+ jeweler (~> 2.0.1)
79
+ rdoc (~> 3.12)
80
+ shoulda
81
+ simplecov
data/Rakefile CHANGED
@@ -13,14 +13,39 @@ require 'rake'
13
13
 
14
14
  require 'jeweler'
15
15
  Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
16
  gem.name = "fdist"
18
17
  gem.homepage = "http://github.com/gametheoretic/fdist"
19
18
  gem.license = "MIT"
20
- gem.summary = %Q{quickie add-ons to the Array class}
21
- gem.description = %Q{Array methods now include :freq and :fdist, the first of which returns a Rational, and the second of which returns a hash of expression => count pairs}
19
+ gem.summary = %Q{Enumerable#fdist -- returns a freq. dist.}
20
+ gem.description = %Q{Given a block, Enumerable#fdist returns a frequency distribution of the results in the form of a Hash (sans block, distribution of raw element frequencies aka counts). Though one most often avoids imbuing a Hash w/ order-meaning, in this case the return Hash's pairs come ordered by frequency (i.e., the value side of the key-value pair).}
22
21
  gem.email = "gametheoretic@gmail.com"
23
22
  gem.authors = ["michael d. towle"]
24
- # dependencies defined in Gemfile
23
+ gem.files.include "lib/**/*.rb"
25
24
  end
25
+
26
26
  Jeweler::RubygemsDotOrgTasks.new
27
+
28
+ require 'rake/testtask'
29
+ Rake::TestTask.new(:test) do |test|
30
+ test.libs << 'lib' << 'test'
31
+ test.pattern = 'test/**/test_*.rb'
32
+ test.verbose = true
33
+ end
34
+
35
+ desc "Code coverage detail"
36
+ task :simplecov do
37
+ ENV['COVERAGE'] = "true"
38
+ Rake::Task['test'].execute
39
+ end
40
+
41
+ task :default => :test
42
+
43
+ require 'rdoc/task'
44
+ Rake::RDocTask.new do |rdoc|
45
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
46
+
47
+ rdoc.rdoc_dir = 'rdoc'
48
+ rdoc.title = "temp #{version}"
49
+ rdoc.rdoc_files.include('README*')
50
+ rdoc.rdoc_files.include('lib/**/*.rb')
51
+ end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.1
1
+ 1.1.1
data/fdist.gemspec CHANGED
@@ -2,15 +2,17 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: fdist 1.1.1 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
8
  s.name = "fdist"
8
- s.version = "1.0.1"
9
+ s.version = "1.1.1"
9
10
 
10
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
11
13
  s.authors = ["michael d. towle"]
12
- s.date = "2013-12-22"
13
- s.description = "Array methods now include :freq and :fdist, the first of which returns a Rational, and the second of which returns a hash of expression => count pairs"
14
+ s.date = "2014-04-16"
15
+ s.description = "Given a block, Enumerable#fdist returns a frequency distribution of the results in the form of a Hash (sans block, distribution of raw element frequencies aka counts). Though one most often avoids imbuing a Hash w/ order-meaning, in this case the return Hash's pairs come ordered by frequency (i.e., the value side of the key-value pair)."
14
16
  s.email = "gametheoretic@gmail.com"
15
17
  s.extra_rdoc_files = [
16
18
  "LICENSE.txt",
@@ -29,23 +31,31 @@ Gem::Specification.new do |s|
29
31
  ]
30
32
  s.homepage = "http://github.com/gametheoretic/fdist"
31
33
  s.licenses = ["MIT"]
32
- s.require_paths = ["lib"]
33
- s.rubygems_version = "2.0.3"
34
- s.summary = "quickie add-ons to the Array class"
34
+ s.rubygems_version = "2.2.2"
35
+ s.summary = "Enumerable#fdist -- returns a freq. dist."
35
36
 
36
37
  if s.respond_to? :specification_version then
37
38
  s.specification_version = 4
38
39
 
39
40
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
41
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
42
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
40
43
  s.add_development_dependency(%q<bundler>, ["~> 1.0"])
41
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.7"])
44
+ s.add_development_dependency(%q<jeweler>, ["~> 2.0.1"])
45
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
42
46
  else
47
+ s.add_dependency(%q<shoulda>, [">= 0"])
48
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
43
49
  s.add_dependency(%q<bundler>, ["~> 1.0"])
44
- s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
50
+ s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
51
+ s.add_dependency(%q<simplecov>, [">= 0"])
45
52
  end
46
53
  else
54
+ s.add_dependency(%q<shoulda>, [">= 0"])
55
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
47
56
  s.add_dependency(%q<bundler>, ["~> 1.0"])
48
- s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
57
+ s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
58
+ s.add_dependency(%q<simplecov>, [">= 0"])
49
59
  end
50
60
  end
51
61
 
data/lib/fdist.rb CHANGED
@@ -1,21 +1,18 @@
1
1
 
2
2
  module Enumerable
3
- def set_headers param_list
4
- map! do |arr|
5
- param_list.zip(arr).inject({}) do |result,zipped|
6
- result[zipped.first] = zipped.last
7
- result
8
- end
9
- end
10
- end
11
3
 
12
- def fdist
13
- if block_given?
14
- result = group_by{|elem| yield elem}
15
- result.each_key{|key| result[key] = result[key].count}
16
- result
17
- else
18
- uniq.inject({}){|result,elem| result[elem] = count elem;result}
19
- end
4
+ # such that #fdist allows the user to select a slice off results off the top/bottom/whatever of the frequency distribution hash without conversion to- and from-Array type.
5
+
6
+
7
+ def fdist(valid_array_slice_arg=0..-1)
8
+ self.group_by do |elem|
9
+ block_given? ? yield(elem) : elem
10
+ end.to_a.map do |result, results_array|
11
+ [result, results_array.count]
12
+ end.sort_by do |result, frequency|
13
+ frequency
14
+ end[valid_array_slice_arg].to_h
20
15
  end
21
- end
16
+ end
17
+
18
+
metadata CHANGED
@@ -1,45 +1,90 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fdist
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - michael d. towle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-22 00:00:00.000000000 Z
11
+ date: 2014-04-16 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: shoulda
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rdoc
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.12'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.12'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: bundler
15
43
  requirement: !ruby/object:Gem::Requirement
16
44
  requirements:
17
- - - ~>
45
+ - - "~>"
18
46
  - !ruby/object:Gem::Version
19
47
  version: '1.0'
20
48
  type: :development
21
49
  prerelease: false
22
50
  version_requirements: !ruby/object:Gem::Requirement
23
51
  requirements:
24
- - - ~>
52
+ - - "~>"
25
53
  - !ruby/object:Gem::Version
26
54
  version: '1.0'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: jeweler
29
57
  requirement: !ruby/object:Gem::Requirement
30
58
  requirements:
31
- - - ~>
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 2.0.1
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 2.0.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
32
74
  - !ruby/object:Gem::Version
33
- version: 1.8.7
75
+ version: '0'
34
76
  type: :development
35
77
  prerelease: false
36
78
  version_requirements: !ruby/object:Gem::Requirement
37
79
  requirements:
38
- - - ~>
80
+ - - ">="
39
81
  - !ruby/object:Gem::Version
40
- version: 1.8.7
41
- description: Array methods now include :freq and :fdist, the first of which returns
42
- a Rational, and the second of which returns a hash of expression => count pairs
82
+ version: '0'
83
+ description: Given a block, Enumerable#fdist returns a frequency distribution of the
84
+ results in the form of a Hash (sans block, distribution of raw element frequencies
85
+ aka counts). Though one most often avoids imbuing a Hash w/ order-meaning, in this
86
+ case the return Hash's pairs come ordered by frequency (i.e., the value side of
87
+ the key-value pair).
43
88
  email: gametheoretic@gmail.com
44
89
  executables: []
45
90
  extensions: []
@@ -47,7 +92,7 @@ extra_rdoc_files:
47
92
  - LICENSE.txt
48
93
  - README.rdoc
49
94
  files:
50
- - .document
95
+ - ".document"
51
96
  - Gemfile
52
97
  - Gemfile.lock
53
98
  - LICENSE.txt
@@ -66,18 +111,18 @@ require_paths:
66
111
  - lib
67
112
  required_ruby_version: !ruby/object:Gem::Requirement
68
113
  requirements:
69
- - - '>='
114
+ - - ">="
70
115
  - !ruby/object:Gem::Version
71
116
  version: '0'
72
117
  required_rubygems_version: !ruby/object:Gem::Requirement
73
118
  requirements:
74
- - - '>='
119
+ - - ">="
75
120
  - !ruby/object:Gem::Version
76
121
  version: '0'
77
122
  requirements: []
78
123
  rubyforge_project:
79
- rubygems_version: 2.0.3
124
+ rubygems_version: 2.2.2
80
125
  signing_key:
81
126
  specification_version: 4
82
- summary: quickie add-ons to the Array class
127
+ summary: Enumerable#fdist -- returns a freq. dist.
83
128
  test_files: []