Make style fixes to conform to ruby style guide

Made style fixes to conform to Ruby style guide.
Added a reference to a community-driven Ruby coding style guide.
This commit is contained in:
Dzianis Dashkevich 2014-08-19 12:06:52 +03:00
parent cdd139136c
commit b249363a99

View File

@ -9,6 +9,7 @@ contributors:
- ["Nick LaMuro", "https://github.com/NickLaMuro"]
- ["Marcos Brizeno", "http://www.about.me/marcosbrizeno"]
- ["Ariel Krakowski", "http://www.learneroo.com"]
- ["Dzianis Dashkevich", "https://github.com/dskecse"]
---
@ -35,7 +36,7 @@ You shouldn't either
8 - 1 #=> 7
10 * 2 #=> 20
35 / 5 #=> 7
2 ** 5 #=> 32
2**5 #=> 32
# Arithmetic is just syntactic sugar
# for calling a method on an object
@ -78,14 +79,17 @@ false.class #=> FalseClass
'I am a string'.class #=> String
"I am a string too".class #=> String
placeholder = "use string interpolation"
placeholder = 'use string interpolation'
"I can #{placeholder} when using double quoted strings"
#=> "I can use string interpolation when using double quoted strings"
# Prefer single quoted strings to double quoted ones where possible
# Double quoted strings perform additional inner calculations
# Combine strings, but not with numbers
"hello " + "world" #=> "hello world"
"hello " + 3 #=> TypeError: can't convert Fixnum into String
"hello " + 3.to_s #=> "hello 3"
'hello ' + 'world' #=> "hello world"
'hello ' + 3 #=> TypeError: can't convert Fixnum into String
'hello ' + 3.to_s #=> "hello 3"
# print to the output
puts "I'm printing!"
@ -130,7 +134,7 @@ array = [1, 2, 3, 4, 5] #=> [1, 2, 3, 4, 5]
# Arrays can contain different types of items
[1, "hello", false] #=> [1, "hello", false]
[1, 'hello', false] #=> [1, "hello", false]
# Arrays can be indexed
# From the front
@ -157,7 +161,7 @@ array << 6 #=> [1, 2, 3, 4, 5, 6]
# Hashes are Ruby's primary dictionary with keys/value pairs.
# Hashes are denoted with curly braces:
hash = {'color' => 'green', 'number' => 5}
hash = { 'color' => 'green', 'number' => 5 }
hash.keys #=> ['color', 'number']
@ -170,7 +174,7 @@ hash['nothing here'] #=> nil
# Since Ruby 1.9, there's a special syntax when using symbols as keys:
new_hash = { defcon: 3, action: true}
new_hash = { defcon: 3, action: true }
new_hash.keys #=> [:defcon, :action]
@ -180,11 +184,11 @@ new_hash.keys #=> [:defcon, :action]
# Control structures
if true
"if statement"
'if statement'
elsif false
"else if, optional"
'else if, optional'
else
"else, also optional"
'else, also optional'
end
for counter in 1..5
@ -216,7 +220,7 @@ end
#=> iteration 5
# You can also surround blocks in curly brackets:
(1..5).each {|counter| puts "iteration #{counter}"}
(1..5).each { |counter| puts "iteration #{counter}" }
# The contents of data structures can also be iterated using each.
array.each do |element|
@ -241,32 +245,30 @@ grade = 'B'
case grade
when 'A'
puts "Way to go kiddo"
puts 'Way to go kiddo'
when 'B'
puts "Better luck next time"
puts 'Better luck next time'
when 'C'
puts "You can do better"
puts 'You can do better'
when 'D'
puts "Scraping through"
puts 'Scraping through'
when 'F'
puts "You failed!"
puts 'You failed!'
else
puts "Alternative grading system, eh?"
puts 'Alternative grading system, eh?'
end
#=> "Better luck next time"
# cases can also use ranges
grade = 82
case grade
when 90..100
puts "Hooray!"
when 80...90
puts "OK job"
else
puts "You failed!"
when 90..100
puts 'Hooray!'
when 80...90
puts 'OK job'
else
puts 'You failed!'
end
#=> "OK job"
@ -284,23 +286,23 @@ double 3 #=> 6
double double 3 #=> 12
def sum(x,y)
def sum(x, y)
x + y
end
# Method arguments are separated by a comma
sum 3, 4 #=> 7
sum sum(3,4), 5 #=> 12
sum sum(3, 4), 5 #=> 12
# yield
# All methods have an implicit, optional block parameter
# it can be called with the 'yield' keyword
def surround
puts "{"
puts '{'
yield
puts "}"
puts '}'
end
surround { puts 'hello world' }
@ -311,25 +313,25 @@ surround { puts 'hello world' }
# You can pass a block to a function
# "&" marks a reference to a passed block
# "&" marks a reference to a passed block
def guests(&block)
block.call "some_argument"
block.call 'some_argument'
end
# You can pass a list of arguments, which will be converted into an array
# That's what splat operator ("*") is for
# That's what splat operator ("*") is for
def guests(*array)
array.each { |guest| puts "#{guest}" }
array.each { |guest| puts guest }
end
# Define a class with the class keyword
class Human
# A class variable. It is shared by all instances of this class.
@@species = "H. sapiens"
@@species = 'H. sapiens'
# Basic initializer
def initialize(name, age=0)
def initialize(name, age = 0)
# Assign the argument to the "name" instance variable for the instance
@name = name
# If no age given, we will fall back to the default in the arguments list.
@ -356,20 +358,19 @@ class Human
# A class method uses self to distinguish from instance methods.
# It can only be called on the class, not an instance.
def self.say(msg)
puts "#{msg}"
puts msg
end
def species
@@species
end
end
# Instantiate a class
jim = Human.new("Jim Halpert")
jim = Human.new('Jim Halpert')
dwight = Human.new("Dwight K. Schrute")
dwight = Human.new('Dwight K. Schrute')
# Let's call a couple of methods
jim.species #=> "H. sapiens"
@ -380,7 +381,7 @@ dwight.species #=> "H. sapiens"
dwight.name #=> "Dwight K. Schrute"
# Call the class method
Human.say("Hi") #=> "Hi"
Human.say('Hi') #=> "Hi"
# Variable's scopes are defined by the way we name them.
# Variables that start with $ have global scope
@ -399,7 +400,7 @@ defined? @@var #=> "class variable"
Var = "I'm a constant"
defined? Var #=> "constant"
# Class also is object in ruby. So class can have instance variables.
# Class is also an object in ruby. So class can have instance variables.
# Class variable is shared among the class and all of its descendants.
# base class
@ -415,7 +416,7 @@ class Human
end
end
# derived class
# derived class
class Worker < Human
end
@ -451,8 +452,8 @@ module ModuleExample
end
end
# Including modules binds the methods to the object instance
# Extending modules binds the methods to the class instance
# Including modules binds their methods to the class instances
# Extending modules binds their methods to the class itself
class Person
include ModuleExample
@ -467,7 +468,7 @@ Person.new.foo # => 'foo'
Book.foo # => 'foo'
Book.new.foo # => NoMethodError: undefined method `foo'
# Callbacks when including and extending a module are executed
# Callbacks are executed when including and extending a module
module ConcernExample
def self.included(base)
@ -500,9 +501,8 @@ Something.new.qux # => 'qux'
## Additional resources
- [Learn Ruby by Example with Challenges](http://www.learneroo.com/modules/61/nodes/338) - A variant of this reference with in-browser challenges.
- [Learn Ruby by Example with Challenges](http://www.learneroo.com/modules/61/nodes/338) - A variant of this reference with in-browser challenges.
- [Official Documentation](http://www.ruby-doc.org/core-2.1.1/)
- [Ruby from other languages](https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/)
- [Programming Ruby](http://www.amazon.com/Programming-Ruby-1-9-2-0-Programmers/dp/1937785491/) - An older [free addition](http://ruby-doc.com/docs/ProgrammingRuby/) is available online.
- [Programming Ruby](http://www.amazon.com/Programming-Ruby-1-9-2-0-Programmers/dp/1937785491/) - An older [free addition](http://ruby-doc.com/docs/ProgrammingRuby/) is available online.
- [Ruby Style Guide](https://github.com/bbatsov/ruby-style-guide) - A community-driven Ruby coding style guide.