spaces_are_ok 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,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 50b5c8bb4f715deea3aad77d77a806731f68764c
4
+ data.tar.gz: e1330ea83d035cdc61930038fe2468ff23500086
5
+ SHA512:
6
+ metadata.gz: 4921e3819e2a031290432f24b20c588784499f16801237d4e8a527af72871fe68178fead26526fbbc284391a4791c05788290b99b7dda3b76785f132c41b5c23
7
+ data.tar.gz: eb9afc71b9867e2d3c54db88d0a67efdfe7bd93aa871b12d51a00b5c4d7cedb11a48340041b585eff78f0f1605563714dbd0ca8cf92392111e26fe47a5c50d79
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
@@ -0,0 +1 @@
1
+ 2.1.5
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in spaces_are_ok.gemspec
4
+ gemspec
5
+
6
+ gem "codeclimate-test-reporter", group: :test, require: nil
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Kim Ahlström
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,281 @@
1
+ [![Build Status](https://travis-ci.org/Kimtaro/spaces_are_ok.svg)](https://travis-ci.org/Kimtaro/spaces_are_ok) [![Code Climate](https://codeclimate.com/github/Kimtaro/spaces_are_ok/badges/gpa.svg)](https://codeclimate.com/github/Kimtaro/spaces_are_ok) [![Test Coverage](https://codeclimate.com/github/Kimtaro/spaces_are_ok/badges/coverage.svg)](https://codeclimate.com/github/Kimtaro/spaces_are_ok)
2
+
3
+ # Spaces Are Ok
4
+
5
+ Use natural language in your Ruby class and method names.
6
+
7
+ Like this
8
+
9
+ ```ruby
10
+ space_class("Scorecard for a player").new("Picard").space_method("Calculate the score from a game", game)
11
+ ```
12
+
13
+ or the shorter and fancier
14
+
15
+ ```ruby
16
+ ç("Scorecard for a player").new("Picard").ƒ("Calculate the score from a game", game)
17
+ ```
18
+
19
+ instead of the mechanical and boring
20
+
21
+ ```ruby
22
+ ScorecardForPlayer.new("Picard").calculate_new_score(game)
23
+ ```
24
+
25
+ or the not very informative
26
+
27
+ ```ruby
28
+ Scorecard.new("Picard").score(game)
29
+ ```
30
+
31
+ ## Why
32
+
33
+ Naming things is famously one of the hard things in computer science[*](http://martinfowler.com/bliki/TwoHardThings.html), but programming languages aren't doing a very good job of helping us write fun and descriptive language.
34
+
35
+ What if instead of `WritingLikeThis`, `having_to_read_this` or `BEING_SHOUTEN_AT` we could write and read regular language? Maybe it will help us write better programs? Or maybe it won't. But I thought it would be a fun experiment.
36
+
37
+ ## Installation
38
+
39
+ This gem requires Ruby 2.1 or newer.
40
+
41
+ Add this line to your application's Gemfile:
42
+
43
+ gem 'spaces_are_ok'
44
+
45
+ And then execute:
46
+
47
+ $ bundle
48
+
49
+ Or install it yourself as:
50
+
51
+ $ gem install spaces_are_ok
52
+
53
+ ## Usage
54
+
55
+ Ruby doesn't allow method calls with the keywords `class` and `def`, so we have to use slightly different syntax when defining and using our space friendly names. But it's not too bad.
56
+
57
+ ```ruby
58
+ require 'spaces_are_ok'
59
+
60
+ space_class("Greet someone") do
61
+ def initialize(name)
62
+ @name = name
63
+ end
64
+
65
+ space_method_def "Say hello", def _
66
+ "Hello, #{@name}"
67
+ end
68
+ end
69
+
70
+ greeter = space_class("Greet someone").new("Kim")
71
+ greeter.space_method("Say hello") # => Hello, Kim!
72
+ ```
73
+
74
+ Since it gets rather tedious to write `space_` all the time, I have included shorthand versions, so the above can be written like this:
75
+
76
+ ```ruby
77
+ require 'spaces_are_ok'
78
+
79
+ ç("Greet someone") do
80
+ def initialize(name)
81
+ @name = name
82
+ end
83
+
84
+ ∂ƒ "Say hello", def _
85
+ "Hello, #{@name}"
86
+ end
87
+ end
88
+
89
+ greeter = ç("Greet someone").new("Kim")
90
+ greeter.ƒ("Say hello") # => Hello, Kim!
91
+ ```
92
+
93
+ ### Summary of functionality
94
+
95
+ #### Defining a class
96
+
97
+ ##### Plain Ruby
98
+
99
+ ```ruby
100
+ class LaunchSpaceShip
101
+ # Class definition
102
+ end
103
+ ```
104
+
105
+ ##### Spaces Are Ok
106
+
107
+ ```ruby
108
+ space_class("Launch space ship") do
109
+ # Class definition
110
+ end
111
+ ```
112
+
113
+ ##### Spaces Are Ok shorthand
114
+
115
+ ```ruby
116
+ ç("Launch space ship") do
117
+ # Class definition
118
+ end
119
+ ```
120
+
121
+ #### Using a class
122
+
123
+ ##### Plain Ruby
124
+
125
+ ```ruby
126
+ LaunchSpaceShip.new
127
+ ```
128
+
129
+ ##### Spaces Are Ok
130
+
131
+ ```ruby
132
+ space_class("Launch space ship").new
133
+ ```
134
+
135
+ ##### Spaces Are Ok shorthand
136
+
137
+ ```ruby
138
+ ç("Launch space ship").new
139
+ ```
140
+
141
+ #### Defining a module
142
+
143
+ #####Plain Ruby
144
+
145
+ ```ruby
146
+ module SpaceShipMotor
147
+ # Module definition
148
+ end
149
+ ```
150
+
151
+ ##### Spaces Are Ok
152
+
153
+ ```ruby
154
+ space_module("Space ship motor") do
155
+ # Module definition
156
+ end
157
+ ```
158
+
159
+ ##### Spaces Are Ok shorthand
160
+
161
+ ```ruby
162
+ ɱ("Space ship motor") do
163
+ # Module definition
164
+ end
165
+ ```
166
+
167
+ #### Using a module
168
+
169
+ ##### Plain Ruby
170
+
171
+ ```ruby
172
+ include SpaceShipMotor
173
+ ```
174
+
175
+ ##### Spaces Are Ok
176
+
177
+ ```ruby
178
+ include space_module("Space ship motor")
179
+ ```
180
+
181
+ ##### Spaces Are Ok shorthand
182
+
183
+ ```ruby
184
+ include ɱ("Space ship motor")
185
+ ```
186
+
187
+ #### Defining a method
188
+
189
+ ##### Plain Ruby
190
+
191
+ ```ruby
192
+ def travel_to_a_planet(planet)
193
+ # Method body
194
+ end
195
+ ```
196
+
197
+ ##### Spaces Are Ok
198
+
199
+ ```ruby
200
+ space_method_def("Travel to a planet"), def _(planet)
201
+ # Method body
202
+ end
203
+ ```
204
+
205
+ ##### Spaces Are Ok shorthand
206
+
207
+ ```ruby
208
+ ∂ƒ("Travel to a planet"), def_(planet)
209
+ # Method body
210
+ end
211
+ ```
212
+
213
+ #### Calling a method
214
+
215
+ ##### Plain Ruby
216
+
217
+ ```ruby
218
+ travel_to_a_planet(planet)
219
+ ```
220
+
221
+ ##### Spaces Are Ok
222
+
223
+ ```ruby
224
+ space_method("Travel to a planet", planet)
225
+ ```
226
+
227
+ ##### Spaces Are Ok shorthand
228
+
229
+ ```ruby
230
+ ƒ("Travel to a planet", planet)
231
+ ```
232
+
233
+ ### You don't have to care about spelling
234
+
235
+ If you're the adventurous type and don't want to worry about speling everything correctly all the time, then you don't have have to. Just turn on the `dont_worry_about_spelling`-mode.
236
+
237
+ ```ruby
238
+ require 'spaces_are_ok/dont_worry_about_spelling'
239
+
240
+ space_class("Greet someone") do
241
+ def initialize(name)
242
+ @name = name
243
+ end
244
+
245
+ space_method_def "Say hello", def _
246
+ "Hello, #{@name}"
247
+ end
248
+ end
249
+
250
+ greeter = space_class("Greeet someone").new("Kim")
251
+ greeter.space_method("Say jello") # => Hello, Kim!
252
+ ```
253
+
254
+ ## But should I use it?
255
+
256
+ Probably not.
257
+
258
+ ## Ideas for improvement
259
+
260
+ - I haven't been able to figure out a way of doing this for variable names. I would prefer `space_variable("Number of vowels")` over `vwl_ctr`. Wouldn't you?
261
+ - Patch Ruby so we could have this as a feature in the language. It could look something like this:
262
+
263
+ ```ruby
264
+ class “Weather forecast”
265
+ def ‘will it rain tomorrow?’
266
+ puts "Time will tell"
267
+ end
268
+ end
269
+
270
+ “Weather forecast”.new.‘will it rain tomorrow?’ # => Time will tell
271
+ ```
272
+
273
+ ## Contributing
274
+
275
+ 1. Fork it
276
+ 2. Install the dependencies (`bundle install`)
277
+ 3. Create your feature branch (`git checkout -b my-new-feature`)
278
+ 4. Commit your changes (`git commit -am 'Add some feature'`)
279
+ 5. Push to the branch (`git push origin my-new-feature`)
280
+ 6. Run the tests (`mtest test.rb`)
281
+ 7. Create new Pull Request
@@ -0,0 +1,7 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ task :default => :test
4
+
5
+ task :test do
6
+ require './test.rb'
7
+ end
@@ -0,0 +1,17 @@
1
+ require "spaces_are_ok/version"
2
+ require "spaces_are_ok/classes_and_modules"
3
+ require "spaces_are_ok/methods"
4
+ require "spaces_are_ok/modify_the_kernel"
5
+
6
+ module SpacesAreOk
7
+ def self.make_a_valid_name(possibly_invalid_name, separator)
8
+ name = possibly_invalid_name.gsub(%r< [^a-z0-9_] >ix) do |m|
9
+ "#{m.ord}_"
10
+ end
11
+ name.downcase
12
+ end
13
+
14
+ def self.find_a_matching_name(prospects, name)
15
+ prospects.detect { |prospect| prospect == name }
16
+ end
17
+ end
@@ -0,0 +1,63 @@
1
+ module SpacesAreOk::ClassesAndModules
2
+ def self.get_class(original_name, superclass = Object, &class_definition)
3
+ creator = -> { Class.new(superclass) }
4
+ define_or_get_module_or_class(
5
+ original_name,
6
+ Class,
7
+ :class_eval,
8
+ creator,
9
+ &class_definition
10
+ )
11
+ end
12
+
13
+ def self.get_module(original_name, &module_definition)
14
+ creator = -> { Module.new }
15
+ define_or_get_module_or_class(
16
+ original_name,
17
+ Module,
18
+ :module_eval,
19
+ creator,
20
+ &module_definition
21
+ )
22
+ end
23
+
24
+ private
25
+
26
+ def self.define_or_get_module_or_class(original_name, type, evaluator, creator, &body)
27
+ name = get_name(original_name, type)
28
+
29
+ if !Object.const_defined?(name)
30
+ Object.const_set(name, creator.call)
31
+ end
32
+
33
+ module_or_class = Object.const_get(name)
34
+
35
+ if !body.nil?
36
+ module_or_class.send(evaluator, &body)
37
+ end
38
+
39
+ module_or_class
40
+ end
41
+
42
+ def self.get_name(original_name, type)
43
+ name = valid_class_or_module_name_from(original_name)
44
+ close_enough = closest_existing_name_for(name, type)
45
+ name = close_enough unless close_enough.nil?
46
+ name
47
+ end
48
+
49
+ def self.closest_existing_name_for(name, type)
50
+ names = Module.constants.select do |c|
51
+ next if c.to_s == 'Config' # Get rid of RbConfig/Config warning
52
+ Module.const_get(c).is_a?(type)
53
+ end
54
+
55
+ SpacesAreOk::find_a_matching_name(names, name)
56
+ end
57
+
58
+ def self.valid_class_or_module_name_from(original_name)
59
+ name = SpacesAreOk::make_a_valid_name(original_name, '')
60
+ name = "a_#{name}" if name.match(%r<^ [^a-z] >x)
61
+ name.capitalize
62
+ end
63
+ end
@@ -0,0 +1,12 @@
1
+ require "spaces_are_ok"
2
+ require "rubyfish"
3
+
4
+ module SpacesAreOk
5
+ def self.find_a_matching_name(prospects, name)
6
+ names = prospects.find_all do |prospect|
7
+ RubyFish::Levenshtein.distance(name, prospect) <= 3
8
+ end
9
+
10
+ names.sort_by(&:size).first
11
+ end
12
+ end
@@ -0,0 +1,27 @@
1
+ module SpacesAreOk::Methods
2
+ def self.get_method(original_name, the_binding)
3
+ name = valid_method_name_from(original_name)
4
+
5
+ if !method_defined?(name)
6
+ close_enough = closest_method_name(name, the_binding)
7
+ if !close_enough.nil?
8
+ name = close_enough
9
+ end
10
+ end
11
+
12
+ name
13
+ end
14
+
15
+ private
16
+
17
+ def self.valid_method_name_from(original_name)
18
+ name = SpacesAreOk::make_a_valid_name(original_name, '_')
19
+ name = "a_#{name}" if name.match(%r<^ [^a-z] >x)
20
+ name
21
+ end
22
+
23
+ def self.closest_method_name(name, the_binding)
24
+ all_methods = the_binding.eval("methods") + the_binding.eval("private_methods")
25
+ SpacesAreOk::find_a_matching_name(all_methods, name)
26
+ end
27
+ end
@@ -0,0 +1,40 @@
1
+ module Kernel
2
+ # Classes
3
+ def space_class(*args, &class_definition)
4
+ SpacesAreOk::ClassesAndModules.get_class(*args, &class_definition)
5
+ end
6
+
7
+ def ç(*args, &class_definition)
8
+ space_class(*args, &class_definition)
9
+ end
10
+
11
+ # Modules
12
+ def space_module(*args, &module_definition)
13
+ SpacesAreOk::ClassesAndModules.get_module(*args, &module_definition)
14
+ end
15
+
16
+ def ɱ(*args, &class_definition)
17
+ space_module(*args, &class_definition)
18
+ end
19
+
20
+ # Method definition
21
+ def space_method_def(original_name, actual_method_name)
22
+ new_name = SpacesAreOk::Methods.get_method(original_name, binding)
23
+ binding.eval <<-EOS
24
+ alias_method :#{new_name}, :#{actual_method_name}
25
+ EOS
26
+ end
27
+
28
+ def ∂ƒ(original_name, actual_method_name)
29
+ space_method_def(original_name, actual_method_name)
30
+ end
31
+
32
+ # Method invocation
33
+ def space_method(original_name, *args, &block)
34
+ send(SpacesAreOk::Methods.get_method(original_name, binding), *args, &block)
35
+ end
36
+
37
+ def ƒ(original_name, *args, &block)
38
+ space_method(original_name, *args, &block)
39
+ end
40
+ end
@@ -0,0 +1,3 @@
1
+ module SpacesAreOk
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'spaces_are_ok/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "spaces_are_ok"
8
+ spec.version = SpacesAreOk::VERSION
9
+ spec.authors = ["Kim Ahlström"]
10
+ spec.email = ["kim.ahlstrom@gmail.com"]
11
+ spec.description = %q{Allows the use of strings as class names, module names and method names}
12
+ spec.summary = %q{Use strings as class, module and method names}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "maxitest", "~> 1.0.3"
24
+ spec.add_dependency "rubyfish", "~> 0.0.6"
25
+ end
data/test.rb ADDED
@@ -0,0 +1,130 @@
1
+ require "codeclimate-test-reporter"
2
+ CodeClimate::TestReporter.start
3
+
4
+ $: << File.expand_path('../lib', __FILE__)
5
+ require 'maxitest/autorun'
6
+ require 'spaces_are_ok'
7
+
8
+ space_class("Greet the world") do
9
+ def initialize(name)
10
+ @name = name
11
+ end
12
+
13
+ def hi
14
+ greet("Hi")
15
+ end
16
+
17
+ space_method_def "say good bye", def _
18
+ "Good bye, #{@name}"
19
+ end
20
+
21
+ space_method_def "say good afternoon", def _
22
+ "Good afternoon, #{@name}"
23
+ end
24
+
25
+ private
26
+
27
+ def greet(greeting)
28
+ "#{greeting}, #{@name}!"
29
+ end
30
+ end
31
+
32
+ space_class("Shout greeting", space_class("Greet the world")) do
33
+ private
34
+
35
+ def greet(greeting)
36
+ super(greeting).upcase
37
+ end
38
+ end
39
+
40
+ space_module("A greeter") do
41
+ def greet
42
+ "Hello!"
43
+ end
44
+ end
45
+
46
+ space_class("I do nothing on my own") do
47
+ include space_module("A greeter")
48
+ end
49
+
50
+ class SpacesAreOkTest < Minitest::Test
51
+ def setup
52
+ require 'spaces_are_ok'
53
+ end
54
+
55
+ def test_make_a_valid_name
56
+ assert_equal "36__228__ncc45_170145_d47_12472_12515_12531_65309_12522_12517_12483_12463_12539_12500_12459_12540_12489_", SpacesAreOk::make_a_valid_name('$_ä_ncc-1701-d/ジャン=リュック・ピカード', '_')
57
+ end
58
+
59
+ def test_instance_method_invocation_on_classes
60
+ assert_equal "Hi, Kim!", space_class("Greet the world").new("Kim").hi
61
+ end
62
+
63
+ def test_subclass
64
+ assert_equal "HI, KIM!", space_class("Shout greeting").new("Kim").hi
65
+ end
66
+
67
+ def test_module
68
+ assert_equal "Hello!", space_class("I do nothing on my own").new.greet
69
+ end
70
+
71
+ def test_method
72
+ assert_equal "Good afternoon, Kim", space_class("Greet the world").new("Kim").space_method("Say good afternoon")
73
+ assert_equal "Good bye, Kim", space_class("Greet the world").new("Kim").space_method("Say good bye")
74
+ end
75
+ end
76
+
77
+ class SpacesAreOkAndDontWorryAboutSpellingTest < Minitest::Test
78
+ def setup
79
+ require 'spaces_are_ok/dont_worry_about_spelling'
80
+ end
81
+
82
+ def test_misspelled_class
83
+ assert_equal space_class("Greet the world"), space_class("Kreet the vorld")
84
+ end
85
+
86
+ def test_misspelled_module
87
+ assert_equal space_module("A greeter"), space_module("B greeter")
88
+ end
89
+
90
+ def test_misspelled_method
91
+ assert_equal "Good afternoon, Kim", space_class("Greet the world").new("Kim").space_method("Say good afternooon")
92
+ assert_equal "Good bye, Kim", space_class("Greet the world").new("Kim").space_method("Say good buy")
93
+ end
94
+ end
95
+
96
+ ç("Test fancy class names", Minitest::Test) do
97
+ def self.a
98
+ "a"
99
+ end
100
+
101
+ def test_using_the_class_name
102
+ assert_equal "a", ç("Test fancy class names").a
103
+ end
104
+ end
105
+
106
+ ç("Test fancy module names", Minitest::Test) do
107
+ ɱ("Module for a") do
108
+ def a
109
+ "a"
110
+ end
111
+ end
112
+
113
+ extend ɱ("Module for a")
114
+
115
+ def test_using_the_class_name
116
+ assert_equal "a", ç("Test fancy module names").a
117
+ end
118
+ end
119
+
120
+ ç("Test fancy method names", Minitest::Test) do
121
+ class << self
122
+ ∂ƒ "return a", def _
123
+ "a"
124
+ end
125
+ end
126
+
127
+ def test_using_the_method_name
128
+ assert_equal "a", ç("Test fancy method names").ƒ("return a")
129
+ end
130
+ end
metadata ADDED
@@ -0,0 +1,114 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spaces_are_ok
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Kim Ahlström
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-01-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: maxitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 1.0.3
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 1.0.3
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubyfish
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.0.6
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.0.6
69
+ description: Allows the use of strings as class names, module names and method names
70
+ email:
71
+ - kim.ahlstrom@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".gitignore"
77
+ - ".ruby-version"
78
+ - Gemfile
79
+ - LICENSE.txt
80
+ - README.md
81
+ - Rakefile
82
+ - lib/spaces_are_ok.rb
83
+ - lib/spaces_are_ok/classes_and_modules.rb
84
+ - lib/spaces_are_ok/dont_worry_about_spelling.rb
85
+ - lib/spaces_are_ok/methods.rb
86
+ - lib/spaces_are_ok/modify_the_kernel.rb
87
+ - lib/spaces_are_ok/version.rb
88
+ - spaces_are_ok.gemspec
89
+ - test.rb
90
+ homepage: ''
91
+ licenses:
92
+ - MIT
93
+ metadata: {}
94
+ post_install_message:
95
+ rdoc_options: []
96
+ require_paths:
97
+ - lib
98
+ required_ruby_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ requirements: []
109
+ rubyforge_project:
110
+ rubygems_version: 2.2.2
111
+ signing_key:
112
+ specification_version: 4
113
+ summary: Use strings as class, module and method names
114
+ test_files: []