fdist 1.0.1 → 1.1.1

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.
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: []