lupo 0.0.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.
@@ -0,0 +1,37 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## Rubinius
17
+ *.rbc
18
+ .rbx
19
+
20
+ ## PROJECT::GENERAL
21
+ *.gem
22
+ coverage
23
+ profiling
24
+ turbulence
25
+ rdoc
26
+ pkg
27
+ tmp
28
+ doc
29
+ log
30
+ .yardoc
31
+ measurements
32
+
33
+ ## BUNDLER
34
+ .bundle
35
+ Gemfile.lock
36
+
37
+ ## PROJECT::SPECIFIC
data/.rspec ADDED
@@ -0,0 +1,4 @@
1
+ --color
2
+ --profile
3
+ --order random
4
+ --format progress
@@ -0,0 +1 @@
1
+ lupo
@@ -0,0 +1 @@
1
+ 1.9.3
@@ -0,0 +1,17 @@
1
+ language: ruby
2
+ before_install: gem install bundler
3
+ bundler_args: --without yard guard benchmarks
4
+ script: "bundle exec rake ci"
5
+ rvm:
6
+ - 1.9.3
7
+ - 2.0.0
8
+ - ruby-head
9
+ - rbx-19mode
10
+ matrix:
11
+ include:
12
+ - rvm: jruby-19mode
13
+ env: JRUBY_OPTS="$JRUBY_OPTS --debug"
14
+ - rvm: jruby-head
15
+ env: JRUBY_OPTS="$JRUBY_OPTS --debug"
16
+ allow_failures:
17
+ - rvm: ruby-head
@@ -0,0 +1,11 @@
1
+ Contributing
2
+ ------------
3
+
4
+ * If you want your code merged into the mainline, please discuss the proposed changes with me before doing any work on it.
5
+ * Fork the project.
6
+ * Make your feature addition or bug fix.
7
+ * Follow this [style guide](https://github.com/dkubb/styleguide).
8
+ * Add specs for it. This is important so I don't break it in a future version unintentionally. Tests must cover all branches within the code, and code must be fully covered.
9
+ * Commit, do not mess with Rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
10
+ * Run "rake ci". This must pass and not show any regressions in the metrics for the code to be merged.
11
+ * Send me a pull request. Bonus points for topic branches.
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ # encoding: utf-8
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gemspec
6
+
7
+ group :development do
8
+ gem 'devtools', git: 'https://github.com/rom-rb/devtools.git'
9
+ end
10
+
11
+ # added by devtools
12
+ eval_gemfile 'Gemfile.devtools'
@@ -0,0 +1,67 @@
1
+ # encoding: utf-8
2
+
3
+ group :development do
4
+ gem 'rake', '~> 10.1.0'
5
+ gem 'rspec', '~> 2.14.1'
6
+ gem 'yard', '~> 0.8.7'
7
+
8
+ platform :rbx do
9
+ gem 'rubysl-singleton', '~> 2.0.0'
10
+ end
11
+ end
12
+
13
+ group :yard do
14
+ gem 'kramdown', '~> 1.3.0'
15
+ end
16
+
17
+ group :guard do
18
+ gem 'guard', '~> 2.2.4'
19
+ gem 'guard-bundler', '~> 2.0.0'
20
+ gem 'guard-rspec', '~> 4.2.0'
21
+ gem 'guard-rubocop', '~> 1.0.0'
22
+
23
+ # file system change event handling
24
+ gem 'listen', '~> 2.4.0'
25
+ gem 'rb-fchange', '~> 0.0.6', require: false
26
+ gem 'rb-fsevent', '~> 0.9.3', require: false
27
+ gem 'rb-inotify', '~> 0.9.0', require: false
28
+
29
+ # notification handling
30
+ gem 'libnotify', '~> 0.8.0', require: false
31
+ gem 'rb-notifu', '~> 0.0.4', require: false
32
+ gem 'terminal-notifier-guard', '~> 1.5.3', require: false
33
+ end
34
+
35
+ group :metrics do
36
+ gem 'coveralls', '~> 0.7.0'
37
+ gem 'flay', '~> 2.4.0'
38
+ gem 'flog', '~> 4.2.0'
39
+ gem 'reek', '~> 1.3.2'
40
+ gem 'rubocop', '~> 0.15.0'
41
+ gem 'simplecov', '~> 0.8.2'
42
+ gem 'yardstick', '~> 0.9.7', git: 'https://github.com/dkubb/yardstick.git'
43
+
44
+ platforms :ruby_19, :ruby_20 do
45
+ gem 'mutant', '~> 0.3.0', git: 'https://github.com/mbj/mutant.git'
46
+ gem 'unparser', '~> 0.1.5', git: 'https://github.com/mbj/unparser.git'
47
+ gem 'yard-spellcheck', '~> 0.1.5'
48
+ end
49
+
50
+ platform :rbx do
51
+ gem 'json', '~> 1.8.1'
52
+ gem 'racc', '~> 1.4.10'
53
+ gem 'rubysl-logger', '~> 2.0.0'
54
+ gem 'rubysl-open-uri', '~> 2.0.0'
55
+ gem 'rubysl-prettyprint', '~> 2.0.2'
56
+ end
57
+ end
58
+
59
+ group :benchmarks do
60
+ gem 'rbench', '~> 0.2.3'
61
+ end
62
+
63
+ platform :jruby do
64
+ group :jruby do
65
+ gem 'jruby-openssl', '~> 0.8.5'
66
+ end
67
+ end
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2013 Martin Gamsjaeger (snusnu)
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,64 @@
1
+ # lupo
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/lupo.png)][gem]
4
+ [![Build Status](https://secure.travis-ci.org/snusnu/lupo.png?branch=master)][travis]
5
+ [![Dependency Status](https://gemnasium.com/snusnu/lupo.png)][gemnasium]
6
+ [![Code Climate](https://codeclimate.com/github/snusnu/lupo.png)][codeclimate]
7
+ [![Coverage Status](https://coveralls.io/repos/snusnu/lupo/badge.png?branch=master)][coveralls]
8
+
9
+ [gem]: https://rubygems.org/gems/lupo
10
+ [travis]: https://travis-ci.org/snusnu/lupo
11
+ [gemnasium]: https://gemnasium.com/snusnu/lupo
12
+ [codeclimate]: https://codeclimate.com/github/snusnu/lupo
13
+ [coveralls]: https://coveralls.io/r/snusnu/lupo
14
+
15
+ ## Usage
16
+
17
+ ```ruby
18
+ require 'lupo'
19
+
20
+ class TaskList
21
+ include Lupo.enumerable(:tasks)
22
+
23
+ def initialize(name, tasks)
24
+ @name, @tasks = name, tasks
25
+ end
26
+ end
27
+
28
+ list = TaskList.new('secret', %w[this and that])
29
+
30
+ list.each { |t| puts(t) } # => list
31
+ list.each.to_a # => ['this', 'and', 'that']
32
+ list.is_a?(Enumerable) # => true
33
+ list.methods.include?(:tasks) # => false
34
+
35
+ class ItemList
36
+ include Lupo.collection(:items)
37
+ end
38
+
39
+ list = ItemList.new(%w[this and that])
40
+
41
+ list.each { |i| puts(i) } # => list
42
+ list.each.to_a # => ['this', 'and', 'that']
43
+ list.is_a?(Enumerable) # => true
44
+ list.protected_methods.include?(:items) # => true
45
+
46
+ other = ItemList.new(%w[this and that])
47
+
48
+ # see equalizer for detailed docs
49
+ list.equal?(other) # => false
50
+ list.eql?(other) # => true
51
+ list == other # => true
52
+ ```
53
+
54
+ ## Credits
55
+
56
+ * [snusnu](https://github.com/snusnu)
57
+
58
+ ## Contributing
59
+
60
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
61
+
62
+ ## Copyright
63
+
64
+ Copyright © 2013 Martin Gamsjaeger (snusnu). See [LICENSE](LICENSE) for details.
@@ -0,0 +1,6 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rake'
4
+ require 'devtools'
5
+
6
+ Devtools.init_rake_tasks
@@ -0,0 +1,2 @@
1
+ ---
2
+ unit_test_timeout: 0.1
@@ -0,0 +1,3 @@
1
+ ---
2
+ threshold: 2
3
+ total_score: 4
@@ -0,0 +1,2 @@
1
+ ---
2
+ threshold: 11.8
@@ -0,0 +1,3 @@
1
+ ---
2
+ name: lupo
3
+ namespace: Lupo
@@ -0,0 +1,103 @@
1
+ ---
2
+ Attribute:
3
+ enabled: true
4
+ exclude: []
5
+ BooleanParameter:
6
+ enabled: true
7
+ exclude: []
8
+ ClassVariable:
9
+ enabled: true
10
+ exclude: []
11
+ ControlParameter:
12
+ enabled: true
13
+ exclude: []
14
+ DataClump:
15
+ enabled: true
16
+ exclude: []
17
+ max_copies: 2
18
+ min_clump_size: 2
19
+ DuplicateMethodCall:
20
+ enabled: true
21
+ exclude: []
22
+ max_calls: 1
23
+ allow_calls: []
24
+ FeatureEnvy:
25
+ enabled: true
26
+ exclude: []
27
+ IrresponsibleModule:
28
+ enabled: true
29
+ exclude: []
30
+ LongParameterList:
31
+ enabled: true
32
+ exclude: []
33
+ max_params: 1
34
+ overrides:
35
+ initialize:
36
+ max_params: 2
37
+ LongYieldList:
38
+ enabled: true
39
+ exclude: []
40
+ max_params: 1
41
+ NestedIterators:
42
+ enabled: true
43
+ exclude:
44
+ - Lupo#included # 2
45
+ max_allowed_nesting: 1
46
+ ignore_iterators: []
47
+ NilCheck:
48
+ enabled: true
49
+ exclude: []
50
+ RepeatedConditional:
51
+ enabled: true
52
+ exclude: []
53
+ max_ifs: 1
54
+ TooManyInstanceVariables:
55
+ enabled: true
56
+ exclude: []
57
+ max_instance_variables: 2
58
+ TooManyMethods:
59
+ enabled: true
60
+ exclude: []
61
+ max_methods: 2
62
+ TooManyStatements:
63
+ enabled: true
64
+ exclude: []
65
+ max_statements: 6
66
+ UncommunicativeMethodName:
67
+ enabled: true
68
+ exclude: []
69
+ reject:
70
+ - !ruby/regexp /^[a-z]$/
71
+ - !ruby/regexp /[0-9]$/
72
+ - !ruby/regexp /[A-Z]/
73
+ accept: []
74
+ UncommunicativeModuleName:
75
+ enabled: true
76
+ exclude: []
77
+ reject:
78
+ - !ruby/regexp /^.$/
79
+ - !ruby/regexp /[0-9]$/
80
+ accept: []
81
+ UncommunicativeParameterName:
82
+ enabled: true
83
+ exclude: []
84
+ reject:
85
+ - !ruby/regexp /^.$/
86
+ - !ruby/regexp /[0-9]$/
87
+ - !ruby/regexp /[A-Z]/
88
+ accept: []
89
+ UncommunicativeVariableName:
90
+ enabled: true
91
+ exclude: []
92
+ reject:
93
+ - !ruby/regexp /^.$/
94
+ - !ruby/regexp /[0-9]$/
95
+ - !ruby/regexp /[A-Z]/
96
+ accept: []
97
+ UnusedParameters:
98
+ enabled: true
99
+ exclude: []
100
+ UtilityFunction:
101
+ enabled: true
102
+ exclude: []
103
+ max_helper_calls: 0
@@ -0,0 +1,78 @@
1
+ AllCops:
2
+ Includes:
3
+ - '**/*.rake'
4
+ - 'Gemfile'
5
+ - 'Gemfile.devtools'
6
+ Excludes:
7
+ - '**/vendor/**'
8
+ - '**/benchmarks/**'
9
+
10
+ # Avoid parameter lists longer than five parameters.
11
+ ParameterLists:
12
+ Max: 2
13
+ CountKeywordArgs: true
14
+
15
+ # Avoid more than `Max` levels of nesting.
16
+ BlockNesting:
17
+ Max: 3
18
+
19
+ # Align with the style guide.
20
+ CollectionMethods:
21
+ PreferredMethods:
22
+ collect: 'map'
23
+ inject: 'reduce'
24
+ find: 'detect'
25
+ find_all: 'select'
26
+
27
+ # Do not force public/protected/private keyword to be indented at the same
28
+ # level as the def keyword. My personal preference is to outdent these keywords
29
+ # because I think when scanning code it makes it easier to identify the
30
+ # sections of code and visually separate them. When the keyword is at the same
31
+ # level I think it sort of blends in with the def keywords and makes it harder
32
+ # to scan the code and see where the sections are.
33
+ AccessModifierIndentation:
34
+ Enabled: false
35
+
36
+ # Limit line length
37
+ LineLength:
38
+ Max: 80
39
+
40
+ # Disable documentation checking until a class needs to be documented once
41
+ Documentation:
42
+ Enabled: false
43
+
44
+ # Do not favor modifier if/unless usage when you have a single-line body
45
+ IfUnlessModifier:
46
+ Enabled: false
47
+
48
+ # Allow case equality operator (in limited use within the specs)
49
+ CaseEquality:
50
+ Enabled: false
51
+
52
+ # Constants do not always have to use SCREAMING_SNAKE_CASE
53
+ ConstantName:
54
+ Enabled: false
55
+
56
+ # Not all trivial readers/writers can be defined with attr_* methods
57
+ TrivialAccessors:
58
+ Enabled: false
59
+
60
+ # Do not prefer do/end over {} for multiline blocks
61
+ Blocks:
62
+ Enabled: false
63
+
64
+ # Do not favor aligned parameters in method calls
65
+ AlignParameters:
66
+ Enabled: false
67
+
68
+ HashSyntax:
69
+ Enabled: false
70
+
71
+ SpaceInsideBrackets:
72
+ Enabled: false
73
+
74
+ Lambda:
75
+ Enabled: false # i personally like the look of multiline ->(arg) {} lambdas
76
+
77
+ AndOr:
78
+ Enabled: false # we agree to use and/or for control flow
@@ -0,0 +1,2 @@
1
+ ---
2
+ threshold: 100
@@ -0,0 +1,106 @@
1
+ # encoding: utf-8
2
+
3
+ require 'concord'
4
+
5
+ # Includes Enumerable and provides #each.
6
+ # Optionally includes Concord to provide
7
+ # #initialize and Equalizer for equality
8
+ # methods
9
+ class Lupo < Module
10
+ private_class_method :new
11
+
12
+ # Build a module providing #each, Enumerable and Concord
13
+ #
14
+ # @example
15
+ #
16
+ # class Collection
17
+ # include Lupo.enumerable(:entries)
18
+ #
19
+ # def initialize(entries)
20
+ # @entries = entries
21
+ # end
22
+ # end
23
+ #
24
+ # collection = Collection.new([1,2,3])
25
+ #
26
+ # collection.each { |i| puts(i) } # => collection
27
+ # collection.each.to_a # => [1,2,3]
28
+ # collection.is_a?(Enumerable) # => true
29
+ #
30
+ # @param [#to_s] name
31
+ # the name of the enumerable
32
+ #
33
+ # @return [undefined]
34
+ #
35
+ # @api public
36
+ def self.enumerable(name)
37
+ new(name, [Enumerable])
38
+ end
39
+
40
+ # Build a module providing #each and Enumerable
41
+ #
42
+ # @example
43
+ #
44
+ # class Collection
45
+ # include Lupo.collection(:entries)
46
+ # end
47
+ #
48
+ # collection = Collection.new([1,2,3])
49
+ #
50
+ # collection.each { |i| puts(i) } # => collection
51
+ # collection.each.to_a # => [1,2,3]
52
+ # collection.is_a?(Enumerable) # => true
53
+ #
54
+ # other = Collection.new([1,2,3])
55
+ #
56
+ # # see equalizer for detailed docs
57
+ # collection.equal?(other) # => false
58
+ # collection.eql?(other) # => true
59
+ # collection == other # => true
60
+ #
61
+ # @param [#to_s] name
62
+ # the name of the enumerable
63
+ #
64
+ # @return [undefined]
65
+ #
66
+ # @api public
67
+ def self.collection(name)
68
+ new(name, [Enumerable, Concord.new(name)])
69
+ end
70
+
71
+ # Initialize a new instance
72
+ #
73
+ # @param [#to_s] name
74
+ # the name of the enumerable
75
+ #
76
+ # @param [#each] modules
77
+ # the modules to include into a host
78
+ #
79
+ # @return [undefined]
80
+ #
81
+ # @api private
82
+ def initialize(name, modules)
83
+ @modules, @body = modules, ->(&block) {
84
+ return to_enum unless block
85
+ instance_variable_get(:"@#{name}").each(&block)
86
+ self
87
+ }
88
+ end
89
+
90
+ private
91
+
92
+ # Define the #each method on the host and include modules
93
+ #
94
+ # @param [Object] host
95
+ # the hosting object
96
+ #
97
+ # @return [undefined]
98
+ #
99
+ # @api private
100
+ def included(host)
101
+ host.instance_exec(@modules, @body) do |modules, body|
102
+ include(*modules)
103
+ define_method(:each, &body)
104
+ end
105
+ end
106
+ end # Lupo
@@ -0,0 +1,6 @@
1
+ # encoding: utf-8
2
+
3
+ class Lupo < Module
4
+ # Gem version
5
+ VERSION = '0.0.1'.freeze
6
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path('../lib/lupo/version', __FILE__)
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.name = "lupo"
7
+ gem.version = Lupo::VERSION.dup
8
+ gem.authors = [ 'Martin Gamsjaeger (snusnu)' ]
9
+ gem.email = [ 'gamsnjaga@gmail.com' ]
10
+ gem.description = 'Adds an #each method to your objects'
11
+ gem.summary = 'A module that installs an #each method and includes Enumerable'
12
+ gem.homepage = 'https://github.com/snusnu/lupo'
13
+
14
+ gem.require_paths = [ 'lib' ]
15
+ gem.files = `git ls-files`.split("\n")
16
+ gem.test_files = `git ls-files -- {spec}/*`.split("\n")
17
+ gem.extra_rdoc_files = %w[LICENSE README.md CONTRIBUTING.md]
18
+ gem.license = 'MIT'
19
+
20
+ gem.add_dependency 'concord', '~> 0.1.4'
21
+
22
+ gem.add_development_dependency 'bundler', '~> 1.3.5'
23
+ end
@@ -0,0 +1,54 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ shared_context 'lupo' do
6
+ subject { klass.new(entries) }
7
+
8
+ let(:entries) { [42] }
9
+
10
+ it 'provides an #each method' do
11
+ expect { |b| subject.each(&b) }.to yield_successive_args(*entries)
12
+ end
13
+
14
+ it 'includes Enumerable' do
15
+ expect(subject).to be_kind_of(Enumerable)
16
+ end
17
+
18
+ it 'works without a block' do
19
+ expect(subject.each).to be_instance_of(Enumerator)
20
+ end
21
+
22
+ it 'returns self from #each' do
23
+ expect(subject.each {}).to be(subject)
24
+ end
25
+ end
26
+
27
+ describe Lupo do
28
+ context '.enumerable' do
29
+ include_context 'lupo'
30
+
31
+ let(:klass) do
32
+ Class.new do
33
+ include Lupo.enumerable(:entries)
34
+ def initialize(entries)
35
+ @entries = entries
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ context '.collection' do
42
+ include_context 'lupo'
43
+
44
+ let(:klass) do
45
+ Class.new do
46
+ include Lupo.collection(:entries)
47
+ end
48
+ end
49
+
50
+ it 'should include a concord instance' do
51
+ expect(klass.ancestors).to include(Concord.new(:entries))
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+
3
+ if ENV['COVERAGE'] == 'true'
4
+ require 'simplecov'
5
+ require 'coveralls'
6
+
7
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
8
+ SimpleCov::Formatter::HTMLFormatter,
9
+ Coveralls::SimpleCov::Formatter
10
+ ]
11
+
12
+ SimpleCov.start do
13
+ command_name 'spec:unit'
14
+ add_filter 'config'
15
+ add_filter 'spec'
16
+ minimum_coverage 100
17
+ end
18
+ end
19
+
20
+ require 'lupo'
21
+ require 'devtools/spec_helper'
22
+
23
+ RSpec.configure do |config|
24
+ config.expect_with :rspec do |c|
25
+ c.syntax = :expect
26
+ end
27
+ config.mock_with :rspec do |c|
28
+ c.syntax = :expect
29
+ end
30
+ end
metadata ADDED
@@ -0,0 +1,105 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lupo
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Martin Gamsjaeger (snusnu)
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-12-20 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: concord
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.1.4
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.1.4
30
+ - !ruby/object:Gem::Dependency
31
+ name: bundler
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 1.3.5
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.3.5
46
+ description: ! 'Adds an #each method to your objects'
47
+ email:
48
+ - gamsnjaga@gmail.com
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files:
52
+ - LICENSE
53
+ - README.md
54
+ - CONTRIBUTING.md
55
+ files:
56
+ - .gitignore
57
+ - .rspec
58
+ - .ruby-gemset
59
+ - .ruby-version
60
+ - .travis.yml
61
+ - CONTRIBUTING.md
62
+ - Gemfile
63
+ - Gemfile.devtools
64
+ - LICENSE
65
+ - README.md
66
+ - Rakefile
67
+ - config/devtools.yml
68
+ - config/flay.yml
69
+ - config/flog.yml
70
+ - config/mutant.yml
71
+ - config/reek.yml
72
+ - config/rubocop.yml
73
+ - config/yardstick.yml
74
+ - lib/lupo.rb
75
+ - lib/lupo/version.rb
76
+ - lupo.gemspec
77
+ - spec/lupo_spec.rb
78
+ - spec/spec_helper.rb
79
+ homepage: https://github.com/snusnu/lupo
80
+ licenses:
81
+ - MIT
82
+ post_install_message:
83
+ rdoc_options: []
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ! '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ none: false
94
+ requirements:
95
+ - - ! '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ requirements: []
99
+ rubyforge_project:
100
+ rubygems_version: 1.8.23
101
+ signing_key:
102
+ specification_version: 3
103
+ summary: ! 'A module that installs an #each method and includes Enumerable'
104
+ test_files: []
105
+ has_rdoc: