From a2ddd87c8fe53081d70ef0736df153c278916543 Mon Sep 17 00:00:00 2001 From: David Baynes Date: Fri, 11 Oct 2013 04:32:43 -0700 Subject: [PATCH 01/13] Adding David Baynes to Roster --- week1/exercises/roster.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/week1/exercises/roster.txt b/week1/exercises/roster.txt index 45c4395..5836d0f 100644 --- a/week1/exercises/roster.txt +++ b/week1/exercises/roster.txt @@ -1,7 +1,7 @@ #, name, email, github, twitter, chat 0, Renee, renee@nird.us, reneedv, @nirdllc, renee 1, -2, +2, David Baynes, dbaynes@gci.com, dbaynes, baynesDL, dbaynes 3, 4, 5, From d0cbe762eebfab5213a46f66a095fa3a92b7a727 Mon Sep 17 00:00:00 2001 From: David Baynes Date: Mon, 14 Oct 2013 11:48:22 -0700 Subject: [PATCH 02/13] Week 1 Homework - dbaynes --- .rspec | 2 ++ week1/homework/questions.txt | 18 ++++++++++++++++++ week1/homework/strings_and_rspec_spec.rb | 14 +++++++++----- 3 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 .rspec diff --git a/.rspec b/.rspec new file mode 100644 index 0000000..e061e30 --- /dev/null +++ b/.rspec @@ -0,0 +1,2 @@ +--format nested +--color \ No newline at end of file diff --git a/week1/homework/questions.txt b/week1/homework/questions.txt index bd581a6..fb8c1c1 100644 --- a/week1/homework/questions.txt +++ b/week1/homework/questions.txt @@ -3,13 +3,31 @@ Chapter 3 Classes, Objects, and Variables p.86-90 Strings (Strings section in Chapter 6 Standard Types) 1. What is an object? +Everything appears to Ruby as an object. +Everything that you can manipulate in Ruby is an object, +and the results of those manipulations are themselves objects. 2. What is a variable? +A variable is a reference to an object. +Variables are an object's attributes that become properties of objects once an object is created, and +are used to keep track of objects. + 3. What is the difference between an object and a class? +Classes are a combination of state and methods that are used to represent an object. Everything +that you manipulate in Ruby is an object and objects are initialized as instances of classes. + 4. What is a String? +A string is a mutable object in Ruby that holds and manipulates an arbitrary sequence of one or more bytes +of data. 5. What are three messages that I can send to a string object? Hint: think methods +chomp, split, scan 6. What are two ways of defining a String literal? Bonus: What is the difference between the two? +Using %q and %Q (Q is optional) delimiters and by using 'here documents.' +Characters following the %q or %Q are delimiters. The string is read unitl the next occurrence of th delimiter. +[, {, ( or < or followed by their matching close symbol: ],} ) or >. +'Here documents' constist of lines in the source up to but not including the terminating string that you +specify after the << characters. \ No newline at end of file diff --git a/week1/homework/strings_and_rspec_spec.rb b/week1/homework/strings_and_rspec_spec.rb index ea79e4c..fdfdce2 100644 --- a/week1/homework/strings_and_rspec_spec.rb +++ b/week1/homework/strings_and_rspec_spec.rb @@ -12,14 +12,18 @@ before(:all) do @my_string = "Renée is a fun teacher. Ruby is a really cool programming language" end - it "should be able to count the charaters" - it "should be able to split on the . charater" do - pending - result = #do something with @my_string here + it "should be able to count the characters" do + @my_string.length.should eq 66 + #@my_string.length.should have (67).characters - doesn't work for 2.0.0 or 1.9.3 - only 1.8.7! + end + it "should be able to split on the . character" do + #pending + result = @my_string.split('.') #do something with @my_string here result.should have(2).items end it "should be able to give the encoding of the string" do - pending 'helpful hint: should eq (Encoding.find("UTF-8"))' + @my_string.encoding.should eq (Encoding.find("UTF-8")) + #pending 'helpful hint: should eq (Encoding.find("UTF-8"))' end end end From d807a506f7c7e5960a71a6175e218bb3317b4dc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20De=20Voursney?= Date: Tue, 15 Oct 2013 17:33:41 -0700 Subject: [PATCH 03/13] week 1 homework answers --- week1/homework/questions.txt | 8 ++++++++ week1/homework/strings_and_rspec_spec.rb | 10 +++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/week1/homework/questions.txt b/week1/homework/questions.txt index bd581a6..f7276ac 100644 --- a/week1/homework/questions.txt +++ b/week1/homework/questions.txt @@ -3,13 +3,21 @@ Chapter 3 Classes, Objects, and Variables p.86-90 Strings (Strings section in Chapter 6 Standard Types) 1. What is an object? +An object is a representation in memory of a specific concept or thing that the Ruby interpreter knows about. 2. What is a variable? +A variable is a name for a location in memory. It can contain, or point to, any type of object. 3. What is the difference between an object and a class? +An object is an instance of a class, or a specific thing of that class's type in memory. The class is the specifics that are common to all things of that type. The classification of a concept or a thing is a class. A specific thing or concept of a class's type in memory is an object. For example: All books have titles (Class). This book's title is "Harry Potter and the Goblet of Fire" (Object). 4. What is a String? +A string is how Ruby understands text. It is a collection of characters (Bytes), and can be created by making an instance of the String class (String.new) or as a string literal ("",'', %Q[]). 5. What are three messages that I can send to a string object? Hint: think methods +chomp! - removes newline characters, or the specified characters, from the end of a string +strip! - removes leading or trailing whitespace from a string +split - returns an array of strings made up of the original string separated on whitespace or the specified characters or regexp 6. What are two ways of defining a String literal? Bonus: What is the difference between the two? +Single quotes ex: '' and Double quotes ex: "". The single quotes allow for 2 escape characters: \' and \\ . The double quoted string literal allows for many different escaped special characters (like \n is a line break) and allows for string interpolation, or the injection of evaluated Ruby code into the string ex: "Hello #{my_name}". The single quoted string takes up much less memory than a double quoted string with interpolation. Without interpolation, both are about the same. \ No newline at end of file diff --git a/week1/homework/strings_and_rspec_spec.rb b/week1/homework/strings_and_rspec_spec.rb index ea79e4c..14cbcdc 100644 --- a/week1/homework/strings_and_rspec_spec.rb +++ b/week1/homework/strings_and_rspec_spec.rb @@ -12,15 +12,15 @@ before(:all) do @my_string = "Renée is a fun teacher. Ruby is a really cool programming language" end - it "should be able to count the charaters" + it "should be able to count the characters" do + @my_string.should have(@my_string.size).characters + end it "should be able to split on the . charater" do - pending - result = #do something with @my_string here + result = @my_string.split('.') result.should have(2).items end it "should be able to give the encoding of the string" do - pending 'helpful hint: should eq (Encoding.find("UTF-8"))' + @my_string.encoding.should eq (Encoding.find("UTF-8")) end end end - From 9161d8d11868e97614d7de7fa9a86f811eb6159a Mon Sep 17 00:00:00 2001 From: David Baynes Date: Tue, 22 Oct 2013 09:05:26 -0700 Subject: [PATCH 04/13] Week 2 Homework - David Baynes --- week2/exercises/book_spec.rb | 43 +++++++++++++++----- week2/homework/.rspec | 2 + week2/homework/questions.txt | 79 ++++++++++++++++++++++++++++++++++++ week2/homework/simon_says.rb | 27 ++++++++++++ week2/mad_libs.rb | 5 +++ 5 files changed, 145 insertions(+), 11 deletions(-) create mode 100644 week2/homework/.rspec create mode 100644 week2/homework/simon_says.rb create mode 100644 week2/mad_libs.rb diff --git a/week2/exercises/book_spec.rb b/week2/exercises/book_spec.rb index bb22819..24831fc 100644 --- a/week2/exercises/book_spec.rb +++ b/week2/exercises/book_spec.rb @@ -1,14 +1,35 @@ -require './book.rb' +#require './book.rb' +# or: +require './book' + +# require requires full path. Require loads it once Include will include each time... +# try in irb -describe Book do - before :each do - @book = Book.new("Harry Potter", 200) - end - it "should respond to title" do - @book.should respond_to "title" - end +##describe Book do +## before :each do +## @book = Book.new("Harry Potter", 200) +## end +## it "should respond to title" do +## @book.should respond_to "title" +## end +## +## it "should return the page count" do +## @book.page_count.should eq "Page count is 200" +## end +##end - it "should return the page count" do - @book.page_count.should eq "Page count is 200" - end +### +describe Book do + + context "#title" do # lb sign refers to instance method + + it "should have a title" do + book = Book.new("Harry Potter", 200) + book.title.should_not be_nil + # or + #G book.title.should respond_to "title" # that title method exists + end + end end + + \ No newline at end of file diff --git a/week2/homework/.rspec b/week2/homework/.rspec new file mode 100644 index 0000000..e061e30 --- /dev/null +++ b/week2/homework/.rspec @@ -0,0 +1,2 @@ +--format nested +--color \ No newline at end of file diff --git a/week2/homework/questions.txt b/week2/homework/questions.txt index 939e42d..87c3316 100644 --- a/week2/homework/questions.txt +++ b/week2/homework/questions.txt @@ -4,10 +4,89 @@ Sharing Functionality: Inheritance, Modules, and Mixins 1. What is the difference between a Hash and an Array? +Both are ruby collection classes. The class Array holds a collection of object references. +Each object in an array reference occupies a position identified by a positive integer index. +The array index starts at zero and arrays are indexed using the [] operator. + +Hashes are also known as associative arrays. +When you store values in a hash, two objects are supplied, the index, or key, and the value to be +stored with the key. + +One significant advantage that hashes have over arrays is that hashes can use any +object as an index. Also, unlike an array where the stored variables are not stored in any particular +order, hash values are retrieved with a "key" instead of by their position in the collection. Ruby +remembers the order in which items are added to a hash. + 2. When would you use an Array over a Hash and vice versa? +When using a basic list, an array is easier to use. When an index other than a number is useful, +the hash is to be used. 3. What is a module? Enumerable is a built in Ruby module, what is it? +Modules are a way of grouping together methods, classes, and constants. By defining a namespace, methods +and constants are accessible by classes without having to worry about being stepped on by other methods and +constants. Modules also support the mixin facility. Ruby classes can include multiple mixins which provide +a key advantage over other single object oriented languages by providing a multiple-inheritance-like +capability with none of the drawbacks that other multiple-inheritance languages like C++ have. + +Enumerable is a mixin that allows a class to use the large number of operations or methods supported by the +Ruby collection classes. If in a class an iterator 'each' is added, functions such as map, include? +and find_all are now available. It that class also implements ordering semantics using the <=> method, +methods such as min, max and sort are also available to the class as well. + 4. Can you inherit more than one thing in Ruby? How could you get around this problem? +Ruby is a single inheritance language where a class has only one parent, but by using modules that can +include any number of mixins, "a controlled multiple-inheritance-like capability" is provided. 5. What is the difference between a Module and a Class? + +A module cannot be instantiated. When a class includes a module, a proxy superclass is +generated that provides access to all the module methods as well as the class methods. + +In summary, classes are all about objects, whereas modules are all about methods and constants. + +Please Read The Chapters on: +Containers, Blocks, and Iterators +Sharing Functionality: Inheritance, Modules, and Mixins + +1. What is the difference between a Hash and an Array? + +Both are ruby collection classes. The class Array holds a collection of object references. +Each object in an array reference occupies a position identified by a positive integer index. +The array index starts at zero and arrays are indexed using the [] operator. + +Hashes are also known as associative arrays. +When you store values in a hash, two objects are supplied, the index, or key, and the value to be +stored with the key. + +One significant advantage that hashes have over arrays is that hashes can use any +object as an index. Also, unlike an array where the stored variables are not stored in any particular +order, hash values are retrieved with a "key" instead of by their position in the collection. Ruby +remembers the order in which items are added to a hash. + +2. When would you use an Array over a Hash and vice versa? +When using a basic list, an array is easier to use. When an index other than a number is useful, +the hash is to be used. + +3. What is a module? Enumerable is a built in Ruby module, what is it? + +Modules are a way of grouping together methods, classes, and constants. By defining a namespace, methods +and constants are accessible by classes without having to worry about being stepped on by other methods and constants. +When a class includes a module to use its methods and constants, this is called a 'mixin.' +Enumerable is a mixin that allows a class to use the large number of operations or methods supported by the +Ruby collection classes. For example, if a class adds an iterator 'each', functions such as map, include? +and find_all are now available. It that class also implements ordering semantics using the <=> method, +methods such as min, max and sort are also available to the class as well. + +4. Can you inherit more than one thing in Ruby? How could you get around this problem? +Ruby is a single inheritance language where a class has only one parent, but when a class includes a module, +also known as a 'mixin', and can now have access to all of the modules methods and constants, a controlled +multiple-inheritance-like capability" is provided. + +5. What is the difference between a Module and a Class? + +A module cannot be instantiated. A class can only inherit from another class. A module can be included in a Class. When a class includes a module, a +proxy superclass is generated that provides access to all the module methods as well as the class methods. +A very powerful approach. A simplified overview would be that classes are all about objects, whereas +modules are all about methods, namespaces and constants. + diff --git a/week2/homework/simon_says.rb b/week2/homework/simon_says.rb new file mode 100644 index 0000000..d83dbde --- /dev/null +++ b/week2/homework/simon_says.rb @@ -0,0 +1,27 @@ +module SimonSays + def echo(word) + word # return String + end + + def shout(word) + word.upcase # return String + end + + def repeat(word,ntimes=2) + #default is 2 times unless parameter is passed, in this case 3 + #("#{word} " *ntimes).strip + ([word]*ntimes).join(' ') + end + + def start_of_word(word,nchars=1) + #default is 1 time unless parameter is passed, in this case 2 + word[0...nchars] + end + + def first_word(words) + #a = words.split(' ') + #a[0] + words.split(' ')[0] + end + +end \ No newline at end of file diff --git a/week2/mad_libs.rb b/week2/mad_libs.rb new file mode 100644 index 0000000..2103f7d --- /dev/null +++ b/week2/mad_libs.rb @@ -0,0 +1,5 @@ +puts "Please give me a noun" +noun = gets.chomp! # or chomp! +puts "please give me a past tense verb:" +verb = gets.chomp # or chomp! +puts "The #{noun} #{verb} to the store" \ No newline at end of file From b60103549faf299ef88c5a4dce08599fa1868fcb Mon Sep 17 00:00:00 2001 From: David Baynes Date: Tue, 22 Oct 2013 09:12:01 -0700 Subject: [PATCH 05/13] Week 2 homework - David Baynes --- week2/homework/questions.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/week2/homework/questions.txt b/week2/homework/questions.txt index 87c3316..a7589cc 100644 --- a/week2/homework/questions.txt +++ b/week2/homework/questions.txt @@ -73,7 +73,7 @@ the hash is to be used. Modules are a way of grouping together methods, classes, and constants. By defining a namespace, methods and constants are accessible by classes without having to worry about being stepped on by other methods and constants. When a class includes a module to use its methods and constants, this is called a 'mixin.' -Enumerable is a mixin that allows a class to use the large number of operations or methods supported by the +Enumerable is a 'mixin' that allows a class to use the large number of operations or methods supported by the Ruby collection classes. For example, if a class adds an iterator 'each', functions such as map, include? and find_all are now available. It that class also implements ordering semantics using the <=> method, methods such as min, max and sort are also available to the class as well. From 02ccc7d94fdfc30a6d2d7e93c8bee3f07a3da618 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20De=20Voursney?= Date: Tue, 22 Oct 2013 17:03:43 -0700 Subject: [PATCH 06/13] week 2 homework answers --- week2/homework/questions.txt | 5 +++++ week2/homework/simon_says.rb | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 week2/homework/simon_says.rb diff --git a/week2/homework/questions.txt b/week2/homework/questions.txt index 939e42d..4cfc0a3 100644 --- a/week2/homework/questions.txt +++ b/week2/homework/questions.txt @@ -3,11 +3,16 @@ Containers, Blocks, and Iterators Sharing Functionality: Inheritance, Modules, and Mixins 1. What is the difference between a Hash and an Array? +An array is an ordered list of items that are referenced by their index (order), a hash is a collection of items that can be referenced by a key and have no order. 2. When would you use an Array over a Hash and vice versa? +When the items have an inherent order I would use an array, when I want to reference the items in my collection by a name or key and their order does not matter I would use a hash. 3. What is a module? Enumerable is a built in Ruby module, what is it? +A module is a way to group code that you can use across multiple classes. Enumerable is a Ruby module that provides collection functionality; iteration, searching, and sorting. It requires an implementation of the each method. 4. Can you inherit more than one thing in Ruby? How could you get around this problem? +No, multiple inheritance is not allowed in Ruby. You can include multiple modules if you wanted to mix-in different functionality into your code. Code that is related with a hierarchical nature should be subclassed (inherited). A class can only have 1 direct parent, but can have lots of ancestors. 5. What is the difference between a Module and a Class? +A class can be instantiated into an object, a module cannot. A module is code that can be used across many classes. diff --git a/week2/homework/simon_says.rb b/week2/homework/simon_says.rb new file mode 100644 index 0000000..971a674 --- /dev/null +++ b/week2/homework/simon_says.rb @@ -0,0 +1,21 @@ +module SimonSays + def echo(st) + st + end + + def shout(st) + st.upcase + end + + def first_word(st) + st.split.first + end + + def start_of_word(st,i) + st[0...i] + end + + def repeat(st, t=2) + ([st]*t).join(' ') + end +end From a76d738fb3815f8492686b9f0b0b927c20f16d3c Mon Sep 17 00:00:00 2001 From: David Baynes Date: Tue, 29 Oct 2013 17:32:03 -0700 Subject: [PATCH 07/13] David Baynes Week 3 Homework --- week2/.DS_Store | Bin 6148 -> 6148 bytes week2/exercises/.rspec | 2 ++ week2/exercises/book.rb | 47 +++++++++++++++++++++++------- week2/exercises/book_spec.rb | 31 ++++++++++++++++---- week2/homework/simon_says.rb | 10 +++++-- week2/homework/simon_says_spec.rb | 40 +++++++++++++++++++++++-- week3/homework/.rspec | 2 ++ week3/homework/calculator.rb | 43 +++++++++++++++++++++++++++ week3/homework/calculator_spec.rb | 1 + week3/homework/questions.txt | 31 ++++++++++++++++++++ 10 files changed, 187 insertions(+), 20 deletions(-) create mode 100644 week2/exercises/.rspec create mode 100644 week3/homework/.rspec create mode 100644 week3/homework/calculator.rb diff --git a/week2/.DS_Store b/week2/.DS_Store index 6f2aa37b766a3ea9609fe9a4a7c689f88a3f19fd..21c900c9066175adb06755003daae02442e4dd5e 100644 GIT binary patch delta 286 zcmZoMXfc=|#>B)qu~2NHo+2aD!~pA!7aABR8;Gz>?ANa6V8~#|XUJtpWhe*IMGVCJzu~2NHo+2aT!~knX#>qTPdYeUh66y%FxiGjdUK4(5@rCEl@R~{ diff --git a/week2/exercises/.rspec b/week2/exercises/.rspec new file mode 100644 index 0000000..e061e30 --- /dev/null +++ b/week2/exercises/.rspec @@ -0,0 +1,2 @@ +--format nested +--color \ No newline at end of file diff --git a/week2/exercises/book.rb b/week2/exercises/book.rb index 50bc054..55987d1 100644 --- a/week2/exercises/book.rb +++ b/week2/exercises/book.rb @@ -1,13 +1,40 @@ class Book - - attr_accessor :title, :pages - - def initialize(title, pages) - @title = title - @pages = pages - end - - def page_count - "Page count is #{@pages}" + ##orig-attr_accessor :title, :pages + ##orig- + ##orig-def initialize(title, pages) + ##orig- @title = title + ##orig- @pages = pages + ##orig-end + ##orig- + ##orig-def page_count + ##orig- "Page count is #{@pages}" + ##orig-end + # attr_accessor :title -- creates getters and setters, readers / writers + # attr_reader reader only + # attr_writer + attr_accessor :title + attr_reader :page_count #can't change it. + @@book_count = 0 + def self.book_count + @@book_count # ||= 0 optional + # class level variable - + # 1. @@ viewable to instances as well + # if you change name of class do not have to change + # 2. Book.library_count (class name .) will need to change everywwhere + # 3. self << rare + end + def initialize title = "Not Set" + + @@book_count += 1 # instance of a class initiialze is called - not required + @page_count = page_count + @title = title # also called a constuctor + + end + def test + @test = "Hello!" #@variable + end + def out_put_test + puts @test + puts @@book_count end end diff --git a/week2/exercises/book_spec.rb b/week2/exercises/book_spec.rb index 24831fc..454bf30 100644 --- a/week2/exercises/book_spec.rb +++ b/week2/exercises/book_spec.rb @@ -20,14 +20,33 @@ ### describe Book do - + context "::book_count" do + it "should count how many books have been created" do + Book.new + Book.new + Book.new + Book.book_count.should eq 3 + end + end + context "::new" do #::new indicates Book.new :: befowre a method indicates a class level + it "should set some defaults" do + Book.new.title.should eq "Not Set" + end + it "should allow us to set the page count" do + @book = Book.new "Harry Potter", 5 + @book.page_count.should eq 5 + end + end context "#title" do # lb sign refers to instance method - + before :each do + @book = Book.new + end it "should have a title" do - book = Book.new("Harry Potter", 200) - book.title.should_not be_nil - # or - #G book.title.should respond_to "title" # that title method exists + @book.should respond_to "title" + end + it "should allow me to set the title" do + @book.title = "Harry Potter" + @book.title.should eq "Harry Potter" end end end diff --git a/week2/homework/simon_says.rb b/week2/homework/simon_says.rb index d83dbde..612b685 100644 --- a/week2/homework/simon_says.rb +++ b/week2/homework/simon_says.rb @@ -1,6 +1,6 @@ module SimonSays def echo(word) - word # return String + word # return keyword is optional word () optional - parenthesis used for precedence end def shout(word) @@ -11,17 +11,23 @@ def repeat(word,ntimes=2) #default is 2 times unless parameter is passed, in this case 3 #("#{word} " *ntimes).strip ([word]*ntimes).join(' ') + #class: ((input + ' ')*ntimes ).chop + #([input] * ntimes).join(' ') end - def start_of_word(word,nchars=1) + def start_of_word word, nchars=1) #default is 1 time unless parameter is passed, in this case 2 word[0...nchars] + #class: input[0,n] end def first_word(words) #a = words.split(' ') #a[0] words.split(' ')[0] + #class + #words.split.first + #default .split does whitespace end end \ No newline at end of file diff --git a/week2/homework/simon_says_spec.rb b/week2/homework/simon_says_spec.rb index 7f329e5..34df327 100644 --- a/week2/homework/simon_says_spec.rb +++ b/week2/homework/simon_says_spec.rb @@ -5,6 +5,10 @@ include SimonSays # Hint: Inclusion is different than SimonSays.new (read about modules) # Hint: We are just calling methods, we are not passing a message to a SimonSays object. + ## module SimonSays + ## def echo(st) + ## st + ## end it "should echo hello" do echo("hello").should == "hello" end @@ -12,7 +16,10 @@ it "should echo bye" do echo("bye").should == "bye" end - + ##def shout(st) + ## st.upcase + ##end + it "should shout hello" do shout("hello").should == "HELLO" end @@ -20,6 +27,9 @@ it "should shout multiple words" do shout("hello world").should == "HELLO WORLD" end + ## def repeat(st, t=2) + ## ([st]*t).join(' ') + ## end it "should repeat" do repeat("hello").should == "hello hello" @@ -28,7 +38,9 @@ it "should repeat a number of times" do repeat("hello", 3).should == "hello hello hello" end - + ## def start_of_word(st,i) + ## st[0...i] + ## end it "should return the first letter" do start_of_word("hello", 1).should == "h" end @@ -36,6 +48,9 @@ it "should return the first two letters" do start_of_word("Bob", 2).should == "Bo" end + ## def first_word(st) + ## st.split.first + ## end it "should tell us the first word of 'Hello World' is 'Hello'" do first_word("Hello World").should == "Hello" @@ -45,3 +60,24 @@ first_word("oh dear").should == "oh" end end +##module SimonSays +## def echo(st) +## st +## end +## +## def shout(st) +## st.upcase +## end +## +## def first_word(st) +## st.split.first +## end +## +## def start_of_word(st,i) +## st[0...i] +## end +## +## def repeat(st, t=2) +## ([st]*t).join(' ') +## end +##end diff --git a/week3/homework/.rspec b/week3/homework/.rspec new file mode 100644 index 0000000..e061e30 --- /dev/null +++ b/week3/homework/.rspec @@ -0,0 +1,2 @@ +--format nested +--color \ No newline at end of file diff --git a/week3/homework/calculator.rb b/week3/homework/calculator.rb new file mode 100644 index 0000000..35e00c1 --- /dev/null +++ b/week3/homework/calculator.rb @@ -0,0 +1,43 @@ +class Calculator + def sum arr + @sum = 0 + arr.each{|n| @sum += n } + return @sum + end + + def multiply *args + @product = 1 + if args.length == 1 + @arr = args[0] + @arr.each do |m| + @product *= m + end + end + if args.length > 1 + @mcand = args[0] + @mplier = args[1] + @arr = [@mcand,@mplier] + @arr.each {|p| @product *= p} + end + return @product + end + def pow *args + p = args[0]**args[1] + return p + end + ##def pow a,b + ## p=a**b + ##end + def fac *args + #The value of 0! is 1, according to the convention for an empty product. + if args[0] == 0 + n = 1 + r = (1..n).reduce(:*) + end + if args[0] != 0 + n = args[0] + r = (1..args[0]).reduce(:*) + end + return r + end +end \ No newline at end of file diff --git a/week3/homework/calculator_spec.rb b/week3/homework/calculator_spec.rb index 5a418ed..072ae7a 100644 --- a/week3/homework/calculator_spec.rb +++ b/week3/homework/calculator_spec.rb @@ -8,6 +8,7 @@ describe "#sum" do it "computes the sum of an empty array" do + Calculator.new @calculator.sum([]).should == 0 end diff --git a/week3/homework/questions.txt b/week3/homework/questions.txt index dfb158d..1d235f2 100644 --- a/week3/homework/questions.txt +++ b/week3/homework/questions.txt @@ -6,10 +6,41 @@ Please Read: 1. What is a symbol? +A symbol in Ruby is an identifier corresponding to a set of characters often as a name for something. It is +constructed in Ruby by preceding the name with a colon. A particular name will always generate the same symbol, regardless of how +that name is used within the program. The %s delimited notation can also be used to create a symbol. + 2. What is the difference between a symbol and a string? +The basic difference is that Symbols are immutable and Strings are not. Mutable objects, like strings, can +be changed after assignment while immutable objects can only be overwritten. As such, Strings are Ruby +objects having a unique id and and their own place in memory. Symbol usage shares the same object id, and as +such the same space on the memory heap. Every time a a string is created a new object is created, where as, a symbol is +is simply reused until the program operation has completed. As Symbols stay in memory throughout the program's +operation, it can be quickly accessed from memory instead of instantiating a new object for a string. + +This impacts the overhead of Garbage collection as there is one symbol marked for clean up where as every sting object is marked. + +Symbols are not just faster then Strings in how they are stored and used, but also in how they are compared. +As Symbols of the same text share the same space on the heap, testing for equality is only a matter of comparing +the object id’s. Testing equality for Strings is more extensive as every String's actual data must be +compared by the interpreter. 3. What is a block and how do I call a block? +A block is ruby code that is enclosed in {} or do/end notation and is called a 'closure' because +of it's start/end delineation. A method calls a block by using the Ruby yield statement. + +If it is required to reuse a block of code multiple times or if the method using a block +requires a callback, a proc would be recommended over the block. 4. How do I pass a block to a method? What is the method signature? +When calling the method, a block is included in that method call. The '&block' notation is used in the method signature to assign a +block to that variable in the method. + 5. Where would you use regular expressions? +Regular expressions are a powerful tool for working with text, specifically strings. +Though the Ruby String class is quite expansive with more than 100 methods for manipulating strings, +for those situations that the String class can't handle, the power of regular expressions can be +utilized. + + From 3be68938e1db016e1615f6dcd02bbe364ed0b7a4 Mon Sep 17 00:00:00 2001 From: David Baynes Date: Sat, 9 Nov 2013 08:48:57 -0800 Subject: [PATCH 08/13] First iteration of the midterm --- midterm/instructions_and_questions.txt | 117 ++++++++++++++++++++++++- 1 file changed, 115 insertions(+), 2 deletions(-) diff --git a/midterm/instructions_and_questions.txt b/midterm/instructions_and_questions.txt index 177358a..7d742a7 100644 --- a/midterm/instructions_and_questions.txt +++ b/midterm/instructions_and_questions.txt @@ -11,12 +11,125 @@ Instructions for Mid-Term submission and Git Review (10pts): Questions (20pts): - What are the three uses of the curly brackets {} in Ruby? + + - Hash definition + - To denote a block of code as with the do/end + - Interpolation that allows Ruby code to appear within a string: #{1+2} + - What is a regular expression and what is a common use for them? + + - Regular expressions are a powerful tool for working with text, specifically strings. + Though the Ruby String class is quite expansive with more than 100 methods for manipulating strings, + for those situations that the String class can't handle, the power of regular expressions can be + utilized. + - What is the difference between how a String, a symbol, a FixNum, and a Float are stored in Ruby? + + The basic difference is that Symbols are immutable and Strings are not. Mutable objects, like strings, can + be changed after assignment while immutable objects can only be overwritten. As such, Strings are Ruby + objects having a unique id and and their own place in memory. Symbol usage shares the same object id, and as + such the same space on the memory heap. Every time a a string is created a new object is created, where as, a symbol is + is simply reused until the program operation has completed. As Symbols stay in memory throughout the program's + operation, it can be quickly accessed from memory instead of instantiating a new object for a string. + + This impacts the overhead of Garbage collection as there is one symbol marked for clean up where as every sting object is marked. + + Symbols are not just faster then Strings in how they are stored and used, but also in how they are compared. + As Symbols of the same text share the same space on the heap, testing for equality is only a matter of comparing + the object id’s. Testing equality for Strings is more extensive as every String's actual data must be + compared by the interpreter. + + Fixnum:A Fixnum holds Integer values that can be represented in a native machine word (minus 1 bit). + If any operation on a Fixnum exceeds this range, the value is automatically converted to a Bignum. + Fixnum objects have immediate value meaning that when they are assigned or passed as parameters, t + he actual object is passed, rather than a reference to that object. + Assignment does not alias Fixnum objects. There is effectively only one Fixnum object instance + for any given integer value, + + Float: + + I remember my CompSci professor saying never to use floats for currency. + + The reason for that is how the IEEE specification defines floats in binary format. Basically, it + stores sign, fraction and exponent to represent a Float. It's like a scientific notation for binary + (something like +1.43*10^2). Because of that, it is impossible to store fractions and decimals in + Float exactly. That's why there is a Decimal format. If you do this: + + irb:001:0> "%.47f" % (1.0/10) + => "0.10000000000000000555111512312578270211815834045" # not "0.1"! + whereas if you just do + + irb:002:0> (1.0/10).to_s + => "0.1" # the interpreter rounds the number for you + So if you are dealing with small fractions, like compounding interests, or maybe even geolocation, + I would highly recommend Decimal format, since in decimal format 1.0/10 is exactly 0.1. + + However, it should be noted that despite being less accurate, floats are processed faster. + Here's a benchmark: + + require "benchmark" + require "bigdecimal" + + d = BigDecimal.new(3) + f = Float(3) + + time_decimal = Benchmark.measure{ (1..10000000).each { |i| d * d } } + time_float = Benchmark.measure{ (1..10000000).each { |i| f * f } } + + puts time_decimal + #=> 6.770960 seconds + puts time_float + #=> 0.988070 seconds + + Basically: + Use float when you don't care about precision too much. For example, some scientific simulations + and calculations only need up to 3 or 4 significant digits. This is useful in trading off accuracy + for speed. Since they don't need precision as much as speed, they would use float. + + Use decimal if you are dealing with numbers that need to be precise and sum up to correct number + (like compounding interests and money-related things). Remember: if you need precision, then you + should always use decimal. + + So if I understand correctly, float is in base-2 whereas decimal is in base-10? What would be a + good use for float? What does your example do, and demonstrate? + no. both of them are base 2. The difference is the structure. My example demonstrates that + 1.0/10 is 0.1 when represented by decimal data structure and 0.100000000000000005 + when represented by float data structure. So if you are working with numbers that need high + precision than using Float will be a mistake. + + When should one use Float, and when Decimal? + + use float when you need speed and dont care about precision too much. for example some + scientific simulations and calculations only care up to 3 or 4 significant digits. + Since they dont need precision as much as speed, you would use float. but if you are dealing + with numbers that need to be precise and sum up to correct number (like compunding interests + and money related things), then you should always use decimal. + + + - Are these two statements equivalent? Why or Why Not? - 1. x, y = "hello", "hello" - 2. x = y = "hello" + 1. x, y = "hello", "hello" - This creates an array: + irb > x,y = "hello" => ["hello","hello"]. + irb > x => "hello" + irb > y => "hello" + 2. x = y = "hello"- This assignment creates one String object: + irb > x = y = "hello" => "hello" + irb > x => "hello" (same as example 1 for x) + irb > y => "hello" (same as example 1 for y) + The difference is the #2 stores one String object. #1 stores an array causing more processing + overhead. + + - What is the difference between a Range and an Array? + An array is an object that's a collection of arbitrary elements. A range is an object that has + a "start" and an "end", and knows how to move from the start to the end without having to + enumerate all the elements in between. + + + + + + - Why would I use a Hash instead of an Array? - What is your favorite thing about Ruby so far? - What is your least favorite thing about Ruby so far? From f5dd118bf469cddcc83b46aad600d4be400a08fc Mon Sep 17 00:00:00 2001 From: David Baynes Date: Wed, 13 Nov 2013 11:38:47 -0800 Subject: [PATCH 09/13] David Baynes - Discovered Week 4 homework was in answers branch - moved it to master and here it is. --- midterm/RubyFall2013-midterm | 1 + week4/class_materials/week4.key | Bin 1004605 -> 1008027 bytes week4/exercises/.rspec | 2 ++ week4/exercises/worker_spec.rb | 3 ++- week4/homework/questions.txt | 33 ++++++++++++++++++++++++++++++++ week4/homework/worker.rb | 17 ++++++++++++++++ 6 files changed, 55 insertions(+), 1 deletion(-) create mode 160000 midterm/RubyFall2013-midterm create mode 100644 week4/exercises/.rspec create mode 100644 week4/homework/worker.rb diff --git a/midterm/RubyFall2013-midterm b/midterm/RubyFall2013-midterm new file mode 160000 index 0000000..798e318 --- /dev/null +++ b/midterm/RubyFall2013-midterm @@ -0,0 +1 @@ +Subproject commit 798e3184ed59e7394e846b2a93ef1fd6448a7a28 diff --git a/week4/class_materials/week4.key b/week4/class_materials/week4.key index 10d5b17a01b0e461cf15da0103003bc8645455a5..89b3bef00a5335b2438f7f70751aeaf18f538e3f 100644 GIT binary patch delta 91155 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

-wFGjr!&H9W3)^7nOK%2p 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Œ`%|K{@T+esc*Lj$ga%j6 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 GawqLahX?>uL1VRX;Avkm2pB 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 R_Ff-3)E$uGDKux#?q6#(n*9I( diff --git a/week4/exercises/.rspec b/week4/exercises/.rspec new file mode 100644 index 0000000..e061e30 --- /dev/null +++ b/week4/exercises/.rspec @@ -0,0 +1,2 @@ +--format nested +--color \ No newline at end of file diff --git a/week4/exercises/worker_spec.rb b/week4/exercises/worker_spec.rb index dfc6f02..47deddb 100644 --- a/week4/exercises/worker_spec.rb +++ b/week4/exercises/worker_spec.rb @@ -1,4 +1,5 @@ -require "#{File.dirname(__FILE__)}/worker" +#require "#{File.dirname(__FILE__)}/worker" +require File.join(File.dirname(__FILE__), '..', '/homework/worker') describe Worker do diff --git a/week4/homework/questions.txt b/week4/homework/questions.txt index bc1ab7c..80226e3 100644 --- a/week4/homework/questions.txt +++ b/week4/homework/questions.txt @@ -3,7 +3,40 @@ Chapter 10 Basic Input and Output The Rake Gem: http://rake.rubyforge.org/ 1. How does Ruby read files? +Ruby defines a single base class, IO, to handle input and output. The same +methods we use for 'simple' i/o from irb, puts, gets, are available for all file +objects: + while line = gets + puts line + end +There are I/O iterators for reading. I/O#each_byte invokes a block with next 8-bit +byte from the IO object. String#dump can also be used + File.open("tesfile") do |file| + file.each_line {|line| puts "got #{line.dump}"} + end + 2. How would you output "Hello World!" to a file called my_output.txt? + + File.open("output.txt", "w") do |file| + file.puts "Hello World!" + end + 3. What is the Directory class and what is it used for? + +Objects of class Dir are directory streams representing directories in the +underlying file system. They provide a variety of ways to list directories and +their contents. + 4. What is an IO object? + +Ruby defines a single base class, IO, to handle input and output. An IO object is +a bidirectional channel between a Ruby program and some external resource. Bidirectional +as in read/write, puts/gets. + + 5. What is rake and what is it used for? What is a rake task? +Rake is a simple ruby build program with capabilities similar to 'make.' Tasks or jobs can be written in ruby +and executed via the ruby Rake command. Files containg ruby code can also be part of the execution. In rails, +rake db:migrate is used to run a database migration script that executes ruby code to build tables according +to the database and table specifications. To view the 'routes' that a ruby application may be configured to run, +the 'rake routes' command will display what the ruby program or application will respond to. diff --git a/week4/homework/worker.rb b/week4/homework/worker.rb new file mode 100644 index 0000000..051d1aa --- /dev/null +++ b/week4/homework/worker.rb @@ -0,0 +1,17 @@ +class Worker + def self.work (number = 1) + result = '' + number.times {result = yield if block_given?} + result + end + + #or + + ##class << self + ## def work number=1 + ## result = '' + ## number.times {result = yield if block_given?} + ## result + ## end + ##end +end From df82ef34e878ec8c4c38f70e454b1041e9d37d9f Mon Sep 17 00:00:00 2001 From: David Baynes Date: Sun, 17 Nov 2013 05:23:25 -0800 Subject: [PATCH 10/13] David Baynes Iteration with Thanksgiving Dinner --- midterm/RubyFall2013-midterm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/midterm/RubyFall2013-midterm b/midterm/RubyFall2013-midterm index 798e318..0877e78 160000 --- a/midterm/RubyFall2013-midterm +++ b/midterm/RubyFall2013-midterm @@ -1 +1 @@ -Subproject commit 798e3184ed59e7394e846b2a93ef1fd6448a7a28 +Subproject commit 0877e78c8ceb871dbaa4149f5aeb3c4fa9522197 From 2a53cc052468dc0c97df9c041bb8548dd64e89ed Mon Sep 17 00:00:00 2001 From: David Baynes Date: Tue, 26 Nov 2013 17:05:14 -0800 Subject: [PATCH 11/13] David Baynes Week 7 - Homework --- .../step_definitions/pirate_translator.rb | 14 ++++++++ .../step_definitions/tic-tac-toe-steps.rb | 16 +++++----- .../features/step_definitions/tic_tac_toe.rb | 32 +++++++++++++++++++ week7/homework/features/tic-tac-toe.feature | 8 ++--- week7/homework/questions.txt | 24 ++++++++++++++ 5 files changed, 82 insertions(+), 12 deletions(-) create mode 100644 week7/homework/features/step_definitions/pirate_translator.rb create mode 100644 week7/homework/features/step_definitions/tic_tac_toe.rb diff --git a/week7/homework/features/step_definitions/pirate_translator.rb b/week7/homework/features/step_definitions/pirate_translator.rb new file mode 100644 index 0000000..4503810 --- /dev/null +++ b/week7/homework/features/step_definitions/pirate_translator.rb @@ -0,0 +1,14 @@ +class PirateTranslator + PIRATE_TRANSLATIONS = { + "Hello Friend" => "Ahoy Matey" + } + def say(pirate_words) + @pirate_speak = get_pirate_translation(pirate_words) + end + def translate + @pirate_speak + "\n Shiber Me Timbers You Scurvey Dogs!!" ##+ ' Shiber Me Timbers You Scurvey Dogs!!' + end + def get_pirate_translation(pirate_words) + PIRATE_TRANSLATIONS[pirate_words] + end +end diff --git a/week7/homework/features/step_definitions/tic-tac-toe-steps.rb b/week7/homework/features/step_definitions/tic-tac-toe-steps.rb index a3287c1..0789658 100644 --- a/week7/homework/features/step_definitions/tic-tac-toe-steps.rb +++ b/week7/homework/features/step_definitions/tic-tac-toe-steps.rb @@ -22,28 +22,28 @@ Given /^I have a started Tic\-Tac\-Toe game$/ do @game = TicTacToe.new(:player) - @game.player = "Renee" + @game.player = "David" end Given /^it is my turn$/ do - @game.current_player.should eq "Renee" + @game.current_player.should eq "David" end -Given /^the computer knows my name is Renee$/ do - @game.player.should eq "Renee" +Given /^the computer knows my name is David$/ do + @game.player.should eq "David" end Then /^the computer prints "(.*?)"$/ do |arg1| - @game.should_receive(:puts).with(arg1) - @game.indicate_palyer_turn + @game.should_receive(:puts).with(arg1) # + @game.indicate_player_turn# end Then /^waits for my input of "(.*?)"$/ do |arg1| @game.should_receive(:gets).and_return(arg1) - @game.get_player_move + @game.get_player_move # end -Given /^it is the computer's turn$/ do +Given /^it is the computer''s turn$/ do @game = TicTacToe.new(:computer, :O) @game.current_player.should eq "Computer" end diff --git a/week7/homework/features/step_definitions/tic_tac_toe.rb b/week7/homework/features/step_definitions/tic_tac_toe.rb new file mode 100644 index 0000000..6e86ad3 --- /dev/null +++ b/week7/homework/features/step_definitions/tic_tac_toe.rb @@ -0,0 +1,32 @@ +class TicTacToe + attr_accessor :player + #include @game.player_symbol, @game.computer_symbol + SYMBOLS = [:X,:O] + def initialize(player=nil,current_player=nil) + @player = player + @current_player = current_player + end + def welcome_player player=@player + "Welcome #{@player}" + end + def current_player + #[@game.player, "Computer"].should include @game.current_player + player = @player.to_s.capitalize #["#{@player}","Computer"].sample + end + def player_symbol + @player_symbol = :X #SYMBOLS.sample + end + def computer_symbol symbol = @computer_symbol + @computer_symbol = SYMBOLS.reject{|p| p==@player_symbol}.first + end + def indicate_player_turn + puts "#{@player}'s Move:" + end + def get_player_move + gets("Move") + end + def board + @board = :a1 + end + +end \ No newline at end of file diff --git a/week7/homework/features/tic-tac-toe.feature b/week7/homework/features/tic-tac-toe.feature index 6f3134d..429cf55 100644 --- a/week7/homework/features/tic-tac-toe.feature +++ b/week7/homework/features/tic-tac-toe.feature @@ -5,16 +5,16 @@ Feature: Tic-Tac-Toe Game Scenario: Begin Game Given I start a new Tic-Tac-Toe game - When I enter my name Renee - Then the computer welcomes me to the game with "Welcome Renee" + When I enter my name David + Then the computer welcomes me to the game with "Welcome David" And randomly chooses who goes first And who is X and who is O Scenario: My Turn Given I have a started Tic-Tac-Toe game And it is my turn - And the computer knows my name is Renee - Then the computer prints "Renee's Move:" + And the computer knows my name is David + Then the computer prints "David's Move:" And waits for my input of "B2" Scenario: Computer's Turn diff --git a/week7/homework/questions.txt b/week7/homework/questions.txt index d55387d..3d6b5cd 100644 --- a/week7/homework/questions.txt +++ b/week7/homework/questions.txt @@ -3,7 +3,31 @@ Please Read Chapters 23 and 24 DuckTyping and MetaProgramming Questions: 1. What is method_missing and how can it be used? + +"method_missing" allows you to respond to class definition and it's class hierarchy in different, customized ways. +A custom response or action based on a specific condition can be utilized when a "method_missing" method is defined. For example, in an emergency situation, the method defined with "method_missing" could perform specific action when the "method_missing" condition is met in that 'emergency' situation. + 2. What is and Eigenclass and what is it used for? Where Do Singleton methods live? + +Singletons in Ruby lets you define methods that are specific to a particular object. When we create +a singleton method a new anonymous class is created and inserted as the first link in an object's inheritance chain, being the first place Ruby will look for a method definition, then the superclass, etc. It is here in the 'anonymous class' where the singleton lives. + +Eigenclass is an alternate name for this dynamically created anonymous class. The word 'eigen' comes from the German, roughly implying something like, "one's very own." + 3. When would you use DuckTypeing? How would you use it to improve your code? + +DuckTypeing is style of programming with it's basic premise being an object’s type is determined by what it can do, not by its class: "if an object walks like a duck and talks like a duck, then the interpreter is happy to treat it as if it were a duck." Therefore, Ducktypeing simply questions the value in testing the class of an object, for instance, or to check the type of arguments in a method call. Checking types of arguments can constrain the method's flexibility. Though this not a blanket rule and there are valid situations to test argument types or type of class, etc. DuckTypeing poses the question to developers to consider whether you’re getting a real benefit from the extra code "to write and maintain." Applying the DuckTypeing approach will rely more on Ruby's inherit framework and potentially allowing less defensive coding or over-coding to achieve a program's objective. Not only would this be cleaner and more maintainable, but also potentially more efficient and performance wise. + 4. What is the difference between a class method and an instance method? What is the difference between instance_eval and class_eval? + +Basically, class methods are methods that are called on a class, often preceded with self. as self.method_name, or class << self def method_name, or within a class, def ClassName.method_name. Instance methods are methods that are called on an instance of a class, thus for an instance class a new instance must be created to use them (Classname.new) + +'class_eval' can only be called on classes or modules, and it 'evals' on the instances of the +classes or modules that create instance methods. 'class_eval' will fail if the class doesn't exist. + +'instance_eval' on the other hand evaluates code against a single object's instance. If we use instance_eval to define a method on a class, it will define a method for just that instance of class, not all classes. + 5. What is the difference between a singleton class and a singleton method? + +Singleton methods reside in the Singleton class, where as instance methods reside in the superclass. If defined, a Singleton is only utilized when the programmer wants to have class-level methods for unique objects within that class. Used extensively with metaprogramming, Singletons are often referred to as the implicit ancestor of every Ruby Object. When we want to create unique behavior for an individual object we can create singleton methods for a specific object in the Singleton class that are not shared by other instances of the object. These are singleton methods as they belong to the single object only. + From 9e3391963c50f480fdb58e7a706d8dc1c0697b08 Mon Sep 17 00:00:00 2001 From: David Baynes Date: Tue, 26 Nov 2013 18:28:13 -0800 Subject: [PATCH 12/13] Cleaner Weeky --- week7/exercises/features/converter.rb | 9 ++++ week7/exercises/features/converter_steps.rb | 53 +++++++++++++++++++ .../step_definitions/pirate_translator.rb | 4 +- week7/rspec/expectations.rb | 0 4 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 week7/exercises/features/converter.rb create mode 100644 week7/exercises/features/converter_steps.rb create mode 100644 week7/rspec/expectations.rb diff --git a/week7/exercises/features/converter.rb b/week7/exercises/features/converter.rb new file mode 100644 index 0000000..47e30f4 --- /dev/null +++ b/week7/exercises/features/converter.rb @@ -0,0 +1,9 @@ +class Converter + attr_writer :type + def initialize celcius_value + @value = celcius_value.to_f + end + def convert + ((@value -32.0)*(5.0/9.0)).round(1) + end +end \ No newline at end of file diff --git a/week7/exercises/features/converter_steps.rb b/week7/exercises/features/converter_steps.rb new file mode 100644 index 0000000..0029e09 --- /dev/null +++ b/week7/exercises/features/converter_steps.rb @@ -0,0 +1,53 @@ +Given(/^I have entered (\d+) into the converter$/) do |arg1| + #pending # express the regexp above with the code you wish you had + @converter = Converter.new(arg1) +end + +Given(/^I set the type to Fahrenheit$/) do + #pending # express the regexp above with the code you wish you had + @converter.type = "Celcius" +end + +When(/^I press convert$/) do + @result = @converter.convert +end + +Then(/^the result returned should be (\d+)\.(\d+)$/) do |arg1, arg2| + @result.should eq "#{args1}.#{args2}" +end + +Given(/^we have a puppy$/) do + # pending # express the regexp above with the code you wish you had +end + +Given(/^its name is Fred$/) do + #pending # express the regexp above with the code you wish you had +end + +When(/^we pet the puppy$/) do + #pending # express the regexp above with the code you wish you had +end + +Then(/^the puppy wags its tail$/) do + #pending # express the regexp above with the code you wish you had +end + +Given(/^its name is Bella$/) do + #pending # express the regexp above with the code you wish you had +end + +When(/^we ring the bell$/) do + #pending # express the regexp above with the code you wish you had +end + +When(/^it wags its tail$/) do + #pending # express the regexp above with the code you wish you had +end + +Then(/^we must take it out$/) do + #pending # express the regexp above with the code you wish you had +end + +Then(/^then it will not pee on the floor$/) do + #pending # express the regexp above with the code you wish you had +end diff --git a/week7/homework/features/step_definitions/pirate_translator.rb b/week7/homework/features/step_definitions/pirate_translator.rb index 4503810..dbde0c1 100644 --- a/week7/homework/features/step_definitions/pirate_translator.rb +++ b/week7/homework/features/step_definitions/pirate_translator.rb @@ -1,12 +1,12 @@ class PirateTranslator PIRATE_TRANSLATIONS = { - "Hello Friend" => "Ahoy Matey" + "Hello Friend" => "Ahoy Matey\n Shiber Me Timbers You Scurvey Dogs!!" } def say(pirate_words) @pirate_speak = get_pirate_translation(pirate_words) end def translate - @pirate_speak + "\n Shiber Me Timbers You Scurvey Dogs!!" ##+ ' Shiber Me Timbers You Scurvey Dogs!!' + @pirate_speak # + "\n Shiber Me Timbers You Scurvey Dogs!!" ##+ ' Shiber Me Timbers You Scurvey Dogs!!' end def get_pirate_translation(pirate_words) PIRATE_TRANSLATIONS[pirate_words] diff --git a/week7/rspec/expectations.rb b/week7/rspec/expectations.rb new file mode 100644 index 0000000..e69de29 From 0f57e5231f432f99d7190a52a646fa890648c22a Mon Sep 17 00:00:00 2001 From: David Baynes Date: Tue, 10 Dec 2013 13:06:23 -0800 Subject: [PATCH 13/13] David Baynes Week 9 Homework - Tic-Tac-Toe --- .../step_definitions/tic-tac-toe-steps.rb | 4 +- .../features/step_definitions/tic-tac-toe.rb | 49 ++ week8/class_materials/couch.rb | 11 + week8/class_materials/experient.rb | 37 ++ .../step_definitions/tic-tac-toe-steps.rb | 124 ++++ .../features/step_definitions/tic-tac-toe.rb | 108 ++++ week8/homework/features/tic-tac-toe.feature | 57 ++ week8/homework/play_game.rb | 24 + week8/homework/questions.txt | 33 + week9/class_materials/doc/Thing.html | 195 ++++++ week9/class_materials/doc/created.rid | 2 + week9/class_materials/doc/images/add.png | Bin 0 -> 733 bytes week9/class_materials/doc/images/arrow_up.png | Bin 0 -> 372 bytes week9/class_materials/doc/images/brick.png | Bin 0 -> 452 bytes .../class_materials/doc/images/brick_link.png | Bin 0 -> 764 bytes week9/class_materials/doc/images/bug.png | Bin 0 -> 774 bytes .../doc/images/bullet_black.png | Bin 0 -> 211 bytes .../doc/images/bullet_toggle_minus.png | Bin 0 -> 207 bytes .../doc/images/bullet_toggle_plus.png | Bin 0 -> 209 bytes week9/class_materials/doc/images/date.png | Bin 0 -> 626 bytes week9/class_materials/doc/images/delete.png | Bin 0 -> 715 bytes week9/class_materials/doc/images/find.png | Bin 0 -> 659 bytes .../doc/images/loadingAnimation.gif | Bin 0 -> 5886 bytes .../doc/images/macFFBgHack.png | Bin 0 -> 207 bytes week9/class_materials/doc/images/package.png | Bin 0 -> 853 bytes .../class_materials/doc/images/page_green.png | Bin 0 -> 621 bytes .../doc/images/page_white_text.png | Bin 0 -> 342 bytes .../doc/images/page_white_width.png | Bin 0 -> 309 bytes week9/class_materials/doc/images/plugin.png | Bin 0 -> 591 bytes week9/class_materials/doc/images/ruby.png | Bin 0 -> 592 bytes week9/class_materials/doc/images/tag_blue.png | Bin 0 -> 1880 bytes .../class_materials/doc/images/tag_green.png | Bin 0 -> 613 bytes .../doc/images/transparent.png | Bin 0 -> 97 bytes week9/class_materials/doc/images/wrench.png | Bin 0 -> 610 bytes .../doc/images/wrench_orange.png | Bin 0 -> 584 bytes week9/class_materials/doc/images/zoom.png | Bin 0 -> 692 bytes week9/class_materials/doc/index.html | 71 +++ week9/class_materials/doc/js/darkfish.js | 155 +++++ week9/class_materials/doc/js/jquery.js | 18 + week9/class_materials/doc/js/navigation.js | 142 +++++ week9/class_materials/doc/js/search.js | 94 +++ week9/class_materials/doc/js/search_index.js | 1 + week9/class_materials/doc/js/searcher.js | 228 +++++++ week9/class_materials/doc/rdoc.css | 595 ++++++++++++++++++ .../doc/table_of_contents.html | 48 ++ week9/class_materials/exceptional_ruby.rb | 30 + week9/class_materials/hello.rb | 10 + week9/class_materials/named_thing.rb | 2 + 48 files changed, 2036 insertions(+), 2 deletions(-) create mode 100644 week7/homework/features/step_definitions/tic-tac-toe.rb create mode 100644 week8/class_materials/experient.rb create mode 100644 week8/homework/features/step_definitions/tic-tac-toe-steps.rb create mode 100644 week8/homework/features/step_definitions/tic-tac-toe.rb create mode 100644 week8/homework/features/tic-tac-toe.feature create mode 100644 week8/homework/play_game.rb create mode 100644 week8/homework/questions.txt create mode 100644 week9/class_materials/doc/Thing.html create mode 100644 week9/class_materials/doc/created.rid create mode 100755 week9/class_materials/doc/images/add.png create mode 100755 week9/class_materials/doc/images/arrow_up.png create mode 100644 week9/class_materials/doc/images/brick.png create mode 100644 week9/class_materials/doc/images/brick_link.png create mode 100644 week9/class_materials/doc/images/bug.png create mode 100644 week9/class_materials/doc/images/bullet_black.png create mode 100644 week9/class_materials/doc/images/bullet_toggle_minus.png create mode 100644 week9/class_materials/doc/images/bullet_toggle_plus.png create mode 100644 week9/class_materials/doc/images/date.png create mode 100755 week9/class_materials/doc/images/delete.png create mode 100644 week9/class_materials/doc/images/find.png create mode 100644 week9/class_materials/doc/images/loadingAnimation.gif create mode 100644 week9/class_materials/doc/images/macFFBgHack.png create mode 100644 week9/class_materials/doc/images/package.png create mode 100644 week9/class_materials/doc/images/page_green.png create mode 100644 week9/class_materials/doc/images/page_white_text.png create mode 100644 week9/class_materials/doc/images/page_white_width.png create mode 100644 week9/class_materials/doc/images/plugin.png create mode 100644 week9/class_materials/doc/images/ruby.png create mode 100755 week9/class_materials/doc/images/tag_blue.png create mode 100644 week9/class_materials/doc/images/tag_green.png create mode 100644 week9/class_materials/doc/images/transparent.png create mode 100644 week9/class_materials/doc/images/wrench.png create mode 100644 week9/class_materials/doc/images/wrench_orange.png create mode 100644 week9/class_materials/doc/images/zoom.png create mode 100644 week9/class_materials/doc/index.html create mode 100644 week9/class_materials/doc/js/darkfish.js create mode 100644 week9/class_materials/doc/js/jquery.js create mode 100644 week9/class_materials/doc/js/navigation.js create mode 100644 week9/class_materials/doc/js/search.js create mode 100644 week9/class_materials/doc/js/search_index.js create mode 100644 week9/class_materials/doc/js/searcher.js create mode 100644 week9/class_materials/doc/rdoc.css create mode 100644 week9/class_materials/doc/table_of_contents.html create mode 100644 week9/class_materials/exceptional_ruby.rb create mode 100644 week9/class_materials/hello.rb create mode 100644 week9/class_materials/named_thing.rb diff --git a/week7/homework/features/step_definitions/tic-tac-toe-steps.rb b/week7/homework/features/step_definitions/tic-tac-toe-steps.rb index 0789658..e9e808c 100644 --- a/week7/homework/features/step_definitions/tic-tac-toe-steps.rb +++ b/week7/homework/features/step_definitions/tic-tac-toe-steps.rb @@ -1,5 +1,5 @@ -require 'rspec/mocks/standalone' -require 'rspec/expectations' +#require 'rspec/mocks/standalone' +#require 'rspec/expectations' Given /^I start a new Tic\-Tac\-Toe game$/ do @game = TicTacToe.new end diff --git a/week7/homework/features/step_definitions/tic-tac-toe.rb b/week7/homework/features/step_definitions/tic-tac-toe.rb new file mode 100644 index 0000000..7b53850 --- /dev/null +++ b/week7/homework/features/step_definitions/tic-tac-toe.rb @@ -0,0 +1,49 @@ +class TicTacToe + attr_accessor :player + #include @game.player_symbol, @game.computer_symbol + SYMBOLS = [:X,:O] + def initialize(player=nil,current_player=nil) + @player = player + #@current_player = current_player + @current_player = current_player || [:computer, :player].shuffle[0] + end + def welcome_player player=@player + "Welcome #{@player}" + end + def current_player + #[@game.player, "Computer"].should include @game.current_player + #player = @player.to_s.capitalize + ["#{@player}","Computer"].shuffle[0] + end + def player_symbol + @player_symbol = :X #SYMBOLS.sample + end + def computer_symbol symbol = @computer_symbol + @computer_symbol = SYMBOLS.reject{|p| p==@player_symbol}.first + end + def indicate_player_turn + puts "#{@player}'s Move:" + end + #def get_player_move + # gets("Move") + #end + def get_player_move + gets.chomp + end + + def player_move + puts 'player_move' + move = get_player_move.to_sym + until open_spots.include?(move) + move = get_player_move.to_sym + end + @board[move] = player_symbol + @current_player = :computer + move + end + + def board + @board = :a1 + end + +end \ No newline at end of file diff --git a/week8/class_materials/couch.rb b/week8/class_materials/couch.rb index a919c51..ec6e715 100644 --- a/week8/class_materials/couch.rb +++ b/week8/class_materials/couch.rb @@ -9,8 +9,17 @@ def initialize(pillows, cushions, dogs) define_method("how_many_#{s}") do instance_variable_get("@#{s}").count end + define_method("show_colors_#{s}") do + puts "show colors" + instance_variable_get("@#{s}").each do color| puts color} + end + + + define_method("#{s.to_s.gsub('s','')}_colors)") do + instance_variable_get("@#{s}").each do color| puts color) end + # def to_str # "I am a Couch" # end @@ -30,6 +39,8 @@ def initialize(pillows, cushions, dogs) # self.send(meth) # end + + end \ No newline at end of file diff --git a/week8/class_materials/experient.rb b/week8/class_materials/experient.rb new file mode 100644 index 0000000..90b98c7 --- /dev/null +++ b/week8/class_materials/experient.rb @@ -0,0 +1,37 @@ +class Object + def call_chain + "Object" + end +end + +class Animal + def call_chain + "Animal.#{super}" + end +end + +module NamedThing + def call_chain + "NamedThing.#{super}" + end +end + +module Speaker + def call_chain + "Speaker.#{super}" + end +end + +class Person < Animal + include NamedThing + include Speaker + def call_chain + "Person.#{super}" + end +end + +class Renee < Person + def call_chain + "#{self}.#{super}" + end +end \ No newline at end of file diff --git a/week8/homework/features/step_definitions/tic-tac-toe-steps.rb b/week8/homework/features/step_definitions/tic-tac-toe-steps.rb new file mode 100644 index 0000000..0382327 --- /dev/null +++ b/week8/homework/features/step_definitions/tic-tac-toe-steps.rb @@ -0,0 +1,124 @@ +require 'rspec/mocks/standalone' +require 'rspec/expectations' +Given /^I start a new Tic\-Tac\-Toe game$/ do + @game = TicTacToe.new +end + +When /^I enter my name (\w+)$/ do |name| + @game.player = name +end + +Then /^the computer welcomes me to the game with "(.*?)"$/ do |arg1| + @game.welcome_player.should eq arg1 +end + +Then /^randomly chooses who goes first$/ do + [@game.player, "Computer"].should include @game.current_player +end + +Then /^who is X and who is O$/ do + TicTacToe::SYMBOLS.should include @game.player_symbol, @game.computer_symbol +end + +Given /^I have a started Tic\-Tac\-Toe game$/ do + @game = TicTacToe.new(:player) + @game.player = "David" +end + +Given /^it is my turn$/ do + @game.current_player.should eq "David" +end + +Given /^the computer knows my name is David$/ do + @game.player.should eq "David" +end + +Then /^the computer prints "(.*?)"$/ do |arg1| + @game.should_receive(:puts).with(arg1) + @game.indicate_player_turn +end + +Then /^waits for my input of "(.*?)"$/ do |arg1| + @game.should_receive(:gets).and_return(arg1) + @game.get_player_move +end + +Given /^it is the computers turn$/ do + @game = TicTacToe.new(:computer, :O) + @game.current_player.should eq "Computer" +end + +Then /^the computer randomly chooses an open position for its move$/ do + open_spots = @game.open_spots + @com_move = @game.computer_move + open_spots.should include(@com_move) +end + +Given /^the computer is playing X$/ do + @game.computer_symbol.should eq :X +end + +Then /^the board should have an X on it$/ do + @game.current_state.should include 'X' +end + +Given /^I am playing X$/ do + @game = TicTacToe.new(:computer, :X) + @game.player_symbol.should eq :X +end + +When /^I enter a position "(.*?)" on the board$/ do |arg1| + @old_pos = @game.board[arg1.to_sym] + @game.should_receive(:get_player_move).and_return(arg1) + @game.player_move.should eq arg1.to_sym +end + +When /^"(.*?)" is not taken$/ do |arg1| + @old_pos.should eq " " +end + +Then /^it is now the computers turn$/ do + @game.current_player.should eq "Computer" +end + +When /^there are three Xs in a row$/ do + @game = TicTacToe.new(:computer, :X) + @game.board[:C1] = @game.board[:B2] = @game.board[:A3] = :X +end + +Then /^I am declared the winner$/ do + @game.determine_winner + @game.player_won?.should be_true +end + +Then /^the game ends$/ do + @game.over?.should be_true +end + +Given /^there are not three symbols in a row$/ do + @game.board = { + :A1 => :X, :A2 => :O, :A3 => :X, + :B1 => :X, :B2 => :O, :B3 => :X, + :C1 => :O, :C2 => :X, :C3 => :O + } + @game.determine_winner +end + +When /^there are no open spaces left on the board$/ do + @game.spots_open?.should be_false +end + +Then /^the game is declared a draw$/ do + @game.draw?.should be_true +end + +When /^"(.*?)" is taken$/ do |arg1| + @game.board[arg1.to_sym] = :O + @taken_spot = arg1.to_sym +end + +Then /^computer should ask me for another position "(.*?)"$/ do |arg1| + @game.board[arg1.to_sym] = ' ' + @game.should_receive(:get_player_move).twice.and_return(@taken_spot, arg1) + @game.player_move.should eq arg1.to_sym +end \ No newline at end of file diff --git a/week8/homework/features/step_definitions/tic-tac-toe.rb b/week8/homework/features/step_definitions/tic-tac-toe.rb new file mode 100644 index 0000000..d78595c --- /dev/null +++ b/week8/homework/features/step_definitions/tic-tac-toe.rb @@ -0,0 +1,108 @@ +class TicTacToe + SYMBOLS = [:X,:O] + attr_accessor :player, :board, :status + def initialize(current_player=nil,game_symbols=nil) + @board = {:A1 => ' ', :A2 => ' ', :A3 => ' ', + :B1 => ' ', :B2 => ' ', :B3 => ' ', + :C1 => ' ', :C2 => ' ', :C3 => ' '} + @status = status + @current_player = current_player || [:computer, :player].shuffle[0] + choose_player_symbol(game_symbols) + end + def choose_player_symbol(game_symbols=nil) + game_symbols ||= SYMBOLS.shuffle[0] + @player_symbol = { + :computer => SYMBOLS.reject{|s| s==game_symbols}.first, + :player => game_symbols + } + end + def computer_symbol + @player_symbol[:computer] + end + + def player_symbol + @player_symbol[:player] + end + + def current_player + {:computer => "Computer", :player => @player}[@current_player] + end + + def welcome_player + "Welcome #{@player}" + end + + def indicate_player_turn + puts "#{@player}'s Move:" + end + def get_player_move + gets.chomp.capitalize + end + def player_move + move = get_player_move.to_sym + until open_spots.include?(move) + move = get_player_move.to_sym + end + @board[move] = player_symbol + @current_player = :computer + move + end + def computer_move + move = @board.select{|k,v| v.to_s.strip.empty?}.map{|k,v| k}.shuffle[0] + @board[move] = computer_symbol + @current_player = :player + move + end + ### + def current_state + row1 = "#{@board[:A1]}|#{@board[:A2]}|#{@board[:A3]}\n" + row2 = "#{@board[:B1]}|#{@board[:B2]}|#{@board[:B3]}\n" + row3 = "#{@board[:C1]}|#{@board[:C2]}|#{@board[:C3]}\n" + row1 + "-"*row1.size+"\n"+ + row2 + "-"*row2.size+"\n"+ + row3 + "-"*row3.size+"\n"+ + "******" + end + def determine_winner + person_spots = @board.select{|k,v| v==player_symbol} + computer_spots = @board.select{|k,v| v==computer_symbol} + @player_win = false + @computer_win = false + @player_win = check_winner(person_spots) + @computer_win = check_winner(computer_spots) + end + def check_winner(player_spots_selected) + return true if player_spots_selected.has_key?(:A1) && player_spots_selected.has_key?(:A2) && player_spots_selected.has_key?(:A3) + return true if player_spots_selected.has_key?(:B1) && player_spots_selected.has_key?(:B2) && player_spots_selected.has_key?(:B3) + return true if player_spots_selected.has_key?(:C1) && player_spots_selected.has_key?(:C2) && player_spots_selected.has_key?(:C3) + + return true if player_spots_selected.has_key?(:A1) && player_spots_selected.has_key?(:B1) && player_spots_selected.has_key?(:C1) + return true if player_spots_selected.has_key?(:A2) && player_spots_selected.has_key?(:B2) && player_spots_selected.has_key?(:C2) + return true if player_spots_selected.has_key?(:A3) && player_spots_selected.has_key?(:B3) && player_spots_selected.has_key?(:C3) + + return true if player_spots_selected.has_key?(:A1) && player_spots_selected.has_key?(:B2) && player_spots_selected.has_key?(:C3) + return true if player_spots_selected.has_key?(:A3) && player_spots_selected.has_key?(:B2) && player_spots_selected.has_key?(:C1) + end + def player_won? + !@player_win? false : true + end + def computer_won? + !@computer_win? false : true + end + + def draw? + !player_won? && !computer_won? + end + + def over? + player_won? || computer_won? || !spots_open? + end + + def spots_open? + !open_spots.empty? + end + + def open_spots + @board.select{|k,v| v.to_s.strip.empty?}.map{|k,v| k} + end + end \ No newline at end of file diff --git a/week8/homework/features/tic-tac-toe.feature b/week8/homework/features/tic-tac-toe.feature new file mode 100644 index 0000000..ad04774 --- /dev/null +++ b/week8/homework/features/tic-tac-toe.feature @@ -0,0 +1,57 @@ +Feature: Tic-Tac-Toe Game + As a game player I like tic-tac-toe + In order to up my skills + I would like to play agaist the computer + +Scenario: Begin Game + Given I start a new Tic-Tac-Toe game + When I enter my name David + Then the computer welcomes me to the game with "Welcome David" + And randomly chooses who goes first + And who is X and who is O + +Scenario: My Turn + Given I have a started Tic-Tac-Toe game + And it is my turn + And the computer knows my name is David + Then the computer prints "David's Move:" + And waits for my input of "B2" + +Scenario: Computer's Turn + Given I have a started Tic-Tac-Toe game + And it is the computers turn + And the computer is playing X + Then the computer randomly chooses an open position for its move + And the board should have an X on it + +Scenario: Making Moves + Given I have a started Tic-Tac-Toe game + And it is my turn + And I am playing X + When I enter a position "A1" on the board + And "A1" is not taken + Then the board should have an X on it + And it is now the computers turn + +Scenario: Making Bad Moves + Given I have a started Tic-Tac-Toe game + And it is my turn + And I am playing X + When I enter a position "A1" on the board + And "A1" is taken + Then computer should ask me for another position "B2" + And it is now the computers turn + +Scenario: Winning the Game + Given I have a started Tic-Tac-Toe game + And I am playing X + When there are three Xs in a row + Then I am declared the winner + And the game ends + +Scenario: Game is a draw + Given I have a started Tic-Tac-Toe game + And there are not three symbols in a row + When there are no open spaces left on the board + Then the game is declared a draw + And the game ends \ No newline at end of file diff --git a/week8/homework/play_game.rb b/week8/homework/play_game.rb new file mode 100644 index 0000000..ffd1177 --- /dev/null +++ b/week8/homework/play_game.rb @@ -0,0 +1,24 @@ +require './features/step_definitions/tic-tac-toe.rb' + +@game = TicTacToe.new +puts "What is your name?" +@game.player = gets.chomp +puts @game.welcome_player + +until @game.over? + case @game.current_player + when "Computer" + @game.computer_move + when @game.player + @game.indicate_player_turn + @game.player_move + #puts 'Current Player:' + #puts @current_player + end + puts @game.current_state + @game.determine_winner +end + +puts "You Won!" if @game.player_won? +puts "I Won!" if @game.computer_won? +puts "DRAW!" if @game.draw? diff --git a/week8/homework/questions.txt b/week8/homework/questions.txt new file mode 100644 index 0000000..3d6b5cd --- /dev/null +++ b/week8/homework/questions.txt @@ -0,0 +1,33 @@ + +Please Read Chapters 23 and 24 DuckTyping and MetaProgramming + +Questions: +1. What is method_missing and how can it be used? + +"method_missing" allows you to respond to class definition and it's class hierarchy in different, customized ways. +A custom response or action based on a specific condition can be utilized when a "method_missing" method is defined. For example, in an emergency situation, the method defined with "method_missing" could perform specific action when the "method_missing" condition is met in that 'emergency' situation. + +2. What is and Eigenclass and what is it used for? Where Do Singleton methods live? + +Singletons in Ruby lets you define methods that are specific to a particular object. When we create +a singleton method a new anonymous class is created and inserted as the first link in an object's inheritance chain, being the first place Ruby will look for a method definition, then the superclass, etc. It is here in the 'anonymous class' where the singleton lives. + +Eigenclass is an alternate name for this dynamically created anonymous class. The word 'eigen' comes from the German, roughly implying something like, "one's very own." + +3. When would you use DuckTypeing? How would you use it to improve your code? + +DuckTypeing is style of programming with it's basic premise being an object’s type is determined by what it can do, not by its class: "if an object walks like a duck and talks like a duck, then the interpreter is happy to treat it as if it were a duck." Therefore, Ducktypeing simply questions the value in testing the class of an object, for instance, or to check the type of arguments in a method call. Checking types of arguments can constrain the method's flexibility. Though this not a blanket rule and there are valid situations to test argument types or type of class, etc. DuckTypeing poses the question to developers to consider whether you’re getting a real benefit from the extra code "to write and maintain." Applying the DuckTypeing approach will rely more on Ruby's inherit framework and potentially allowing less defensive coding or over-coding to achieve a program's objective. Not only would this be cleaner and more maintainable, but also potentially more efficient and performance wise. + +4. What is the difference between a class method and an instance method? What is the difference between instance_eval and class_eval? + +Basically, class methods are methods that are called on a class, often preceded with self. as self.method_name, or class << self def method_name, or within a class, def ClassName.method_name. Instance methods are methods that are called on an instance of a class, thus for an instance class a new instance must be created to use them (Classname.new) + +'class_eval' can only be called on classes or modules, and it 'evals' on the instances of the +classes or modules that create instance methods. 'class_eval' will fail if the class doesn't exist. + +'instance_eval' on the other hand evaluates code against a single object's instance. If we use instance_eval to define a method on a class, it will define a method for just that instance of class, not all classes. + +5. What is the difference between a singleton class and a singleton method? + +Singleton methods reside in the Singleton class, where as instance methods reside in the superclass. If defined, a Singleton is only utilized when the programmer wants to have class-level methods for unique objects within that class. Used extensively with metaprogramming, Singletons are often referred to as the implicit ancestor of every Ruby Object. When we want to create unique behavior for an individual object we can create singleton methods for a specific object in the Singleton class that are not shared by other instances of the object. These are singleton methods as they belong to the single object only. + diff --git a/week9/class_materials/doc/Thing.html b/week9/class_materials/doc/Thing.html new file mode 100644 index 0000000..e332789 --- /dev/null +++ b/week9/class_materials/doc/Thing.html @@ -0,0 +1,195 @@ + + + + + + +class Thing - RDoc Documentation + + + + + + + + + + + + + + +

+ +
+

class Thing

+ +
+ +

encoding: UTF-8 This is a thing We are learning about rdoc

+
Author +
+

Renée

+
+ +
+ + + + +
+ + + + + + + + + + +
+

Public Instance Methods

+ + +
+ +
+ do_something() { || ... } + + click to toggle source + +
+ + +
+ +

This is an rDoc thing

+
  • +

    This method does this

    +
  • +

    And this

    +
+ + + + +
+
# File test.rb, line 12
+def do_something 
+        yield
+end
+
+ +
+ + + + +
+ + +
+ +
+ +
+ + + + diff --git a/week9/class_materials/doc/created.rid b/week9/class_materials/doc/created.rid new file mode 100644 index 0000000..8c4f6bd --- /dev/null +++ b/week9/class_materials/doc/created.rid @@ -0,0 +1,2 @@ +Tue, 03 Dec 2013 19:23:08 -0800 +test.rb Tue, 03 Dec 2013 18:53:57 -0800 diff --git a/week9/class_materials/doc/images/add.png b/week9/class_materials/doc/images/add.png new file mode 100755 index 0000000000000000000000000000000000000000..6332fefea4be19eeadf211b0b202b272e8564898 GIT binary patch literal 733 zcmV<30wVp1P)9VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ P00000NkvXXu0mjf^IS-S literal 0 HcmV?d00001 diff --git a/week9/class_materials/doc/images/arrow_up.png b/week9/class_materials/doc/images/arrow_up.png new file mode 100755 index 0000000000000000000000000000000000000000..1ebb193243780b8eb1919a51ef27c2a0d36ccec2 GIT binary patch literal 372 zcmV-)0gL{LP)6w#wHUuW*nL5>vZR zlg{G&%mT~|kL3ei%GW0*UOHUMs5XI$4uxe-L?I@SAefq*207}Iqtjm#e5*fP53AiC z)C|RQfwzxx<#_WfANRGZx{+tFDl8~Q?;~Ve=lM^*8UTTnVL?HTDz8uta0D@d28E9S z_)i8aLz^UE6PPKymi;2GJ`34{eIia-CtfAt0H61rk0 SPTNud0000Pdwe5?6tW?r-ok|b$oDQj8FV%kZPq;(MWOV8?8;<)(iP}>hNMU> z7fbz%jjlr7h8uuoQ~J6}n}@Y@PdTk=)PxO{%7zmL?dchpZX*~n;I{!C>*(8cU;q(~ zAS%Po_@naEU!xidrBXD?;hN|x^%W|Ij)0y*r5vi|?W&Fub(NqJ@z0o=O&SR3v>A``^efOSo-hEdApp;^Jd;9y!%1UfzX6Bh- z%-mbG|0Na{7Ruai_Y+DEb1s+b!*9k%Q!whMxjtZKA*?o;i1g&jy0@( zaU=-@d-h+o%gal6JRXEXA&L3`d2 z%jIxzZ~*p9O-;EJp_Ds0If38rM<5W8ic~K>FOK&2_p!CLg^i63OioVb6k$)zWHLx3 z5;!|M!}<9+#QSi1dRlbEcxPt^;cysUuU8@%3}RwpLRIGG<|IKnoyP6$Eh3SKw7a*r zSDXP=IYc&YZf;7@?fCe($^l9ORaJ3wbAx0uiC8QqRr$2t-Cfy8%XCI3B%pxJW>XdM zw~zPt_s}#A@pxQ5Ly)4szaMtH9lgE1SXx@b+S(fW`ub$fYPE8J7#bSNDzme*Ub07{ zQKV8SjEs!%0@v5ql8ggm!@$6Rbi^E8vBqpRM-}l+@5OSMrl+TWj*gC^qoV@>u{fQb zov5v?g~?>X@bEC&+uLPaQ&Ypn-y~^mZA}+f(&2EFH8eE%dU|@ENpN*_1-)L6_4Rc* zFuq@`IjX9vp1QiaK9ZojyZhnQURP99d=u;%37VRkpwsD4U0sd3x;hEQB&e^i|3QN0 z=H|Os1fRqaw!?#igLmS4HE!G3*ce(`TF} zlgUq0Q544c8(ae&UR$8ps&snq6^bPY3v3xAmMW74Di$h~GCH6E3TaYs2#6A<7K*gC z777H71_Wa;(dfp+g-drPCSWu)#PInZi72LJ;o?i~$-U=y&UbQ89Dul3%3P+Axkzc* zbH-y;QF=hR{qLItf%ci2_&e5wNo0gnVatG?ul6Zw=o$I9Ljfn*ic3`U?>IfEim3g{ zujU&$-hy6wn;w(xme|zJm;lWJxtTFfM)q0`kX!Vu0+d${$}LCddK1<^htTe-fUYL3 zB`SdNsZD>RgvLj1<^@h6_+cDRK2Brcr2~>%$*5S)hyV33PV^teac3%|4lz@8p4?)5 z?t5o^?q+%^%)Yygo~I^U4VR!bTnWuE35hcWrfCDR3q+sxJ79e7Fg`&)RCqLA^2^y^ z0laVfadW90_Fz8Brm|r47sB^u1VgI>kanj)Z4`zMSfHlm8>CwXa$JVM`$2RrmZB-3 zN10m-!;BvH*Br3V8t`DH7m`jf#2upVDXl{5ff18_pzCPK1Zu$$CKKvd8FGeFf)+K<|x33pc7P&S#3GZT4mEw;nr(Ze*F z3&*?-4U-lm*#tber5 z%S_ceqB`b3ko6r~BbvDwdohTvP(3a(pq{x#T$yQsu#OKwEe}KuH^Mh@nxg_(Nw136 zq#a^3xNBke)In+!?qk3%4wB69{pF`Tzg`07*qoM6N<$ Eg55P&8UO$Q literal 0 HcmV?d00001 diff --git a/week9/class_materials/doc/images/bullet_black.png b/week9/class_materials/doc/images/bullet_black.png new file mode 100644 index 0000000000000000000000000000000000000000..57619706d10d9736b1849a83f2c5694fbe09c53b GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$h^>lFz(Kw&{<9vg>5sw~gS5O!4 zr|{HuUFIBKiQyL}eBJ-L{`UVT|6_O~L{G%N{Wbre{kQtZ_0LvEhC#5QQ<|d}62BjvZR2H60wE-$h^mK6y(Kw&{<9vg>(S^W+6Zii9 z|Nhthr~iNb*Z!}6uiN$Dz5neG3a-`baBX8yz1H+_;eX)`ni0%X8XBDc-`=Ph(Uan2 zYsR{H!kvIN--9isvHznRsC#5QQ<|d}62BjvZR2H60wE-$h_H=O!(Kw&{<9vg>(S^W+6Zii9 z|Nhthr~iNb*Z!}6uiN$Dz5neG3a-`baBX8yz4q@v|B?28{s)#N@CGn3@%_y|zAV9T z66e<&B4?b6oF&azg|C(V&1ZbI_D}pL`}(^FT2yXwG1Ph~$Q@h8mJYOz!PC{xWt~$( F699+YQR)By literal 0 HcmV?d00001 diff --git a/week9/class_materials/doc/images/date.png b/week9/class_materials/doc/images/date.png new file mode 100644 index 0000000000000000000000000000000000000000..783c83357fdf90a1c7c024358e1d768b5c09c135 GIT binary patch literal 626 zcmV-&0*(ENP)5OC%H;f`~O(q$Q#t2<^v$A>fbmv%e#dKTwK=Ku{5lS|}<-`a#7b zzTCOnnT>at)D}AMFuOZ5&%EqFN(lyumd$2ASF6=;nM~%2?gqc@U=#|4PqkX@EBo-9 z7pD#bO_RUa>*faM`8;MYfVi$JnB-zcBFc6gjl$d!bF98Q!!!(Z1_R~P?e!pt#6CHJ9S&n_n&@=9 z%GP;!@Co4c*at+6vNz7o(6en^Q1%qHrc;1)9IRaz-$@S$Z-qdC^ds3X0NvQH;KS)D z-dh&rW&@X;1cS(45z)J&BVt+tv&GMVJ%!EiW) zLBGZW)#Z+gl-Lih&?>X3SS-S#ujQ;9JRXmIB7X)8`d6ETj)D#Q2+$s|<_b7-B9Xvq zwNfqlEp%y3$uY`h{Y$(Gn5@}sqEsq95lpAkFO5dyBmP6^H-51G4J|rN2Ujt<`2YX_ M07*qoM6N<$fC4}Mrzlg<+1Y8PEBfUp0jJpx4B>@E+cy3`^(Gw`Mf+2&yxZm<$to~Vpgvg&QKNR z_f#1(r6svZt%iF?s+n<8X?B&!h3g9Dbb8_=MX}!;HiQSAh`bp^WMl~Z-44teO7W_Y zV4thSL{h;rJY7!l3%5J4H1!tIzB`Dv+YxO(haWeausGZYkI8^hWj6mzo=L0{%;yxzh{5!Htr?51 zvG|W62MzC8BZ76hRpCyO2zOn<%e)K>NHge!-~)Ap33OdWw6hsLYbCxGNt0%wk_2z7 zfyYvXheSG)5HRK1VB~%mq7Dmurw#bi@hEcOr3&G1ZiF*$M=&9nB#VNf&Q^r$4G5kp zTURh&s)E0%5&hyVD}sp<72~zmAY`Y(9aqO6CXF%=zFHGzO-A&I(pE}v70YQxCPJ{Y z4L+?5-crdLn3ZRPEs!A4ehEY3ZRpL~w9>@aMN+{F4dI@v&>(QDHQum!mG~E^$OS8l z!7?%Uwib*ROP67Hw`ika)gX-(8Ia`-u_IEhxG7U<13kSsMW+$lbb2dUMm5p6pa}cjgA+U$^mJ^AjD?&bdi)8~y+Q002ovPDHLkV1g8IMc@Dc literal 0 HcmV?d00001 diff --git a/week9/class_materials/doc/images/find.png b/week9/class_materials/doc/images/find.png new file mode 100644 index 0000000000000000000000000000000000000000..1547479646722bda4647df52cf3e8bc9b77428c6 GIT binary patch literal 659 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 Dl)1NK literal 0 HcmV?d00001 diff --git a/week9/class_materials/doc/images/macFFBgHack.png b/week9/class_materials/doc/images/macFFBgHack.png new file mode 100644 index 0000000000000000000000000000000000000000..c6473b324ee1dae1faaacc0826639833f551116c GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIEX7WqAsj$Z!;#Vf4nJ za0`Jjl>Qs8<JF;+Fd5q0wCR k?u=~bH}2*0f`J3~k>FVdQ&MBb@0BAfpf&c&j literal 0 HcmV?d00001 diff --git a/week9/class_materials/doc/images/package.png b/week9/class_materials/doc/images/package.png new file mode 100644 index 0000000000000000000000000000000000000000..da3c2a2d74bab159ba0f65d7db601768258afcb2 GIT binary patch literal 853 zcmV-b1FHOqP)5TQ^(M5v$(QKVE?W+9X! z*o}&~6c?_FreF)9NJB7b5Nbn{G0n4+%uJhR9(V5R|NFTpb|HgjefT!tIhLx@DR+N) zV+fHiR5Yt19}k|KnCsND{tH-`IMJ)3AE?OtyZ4>Un|6(d%h#JK`i&a7^xW9>`yBy` zS4SOHeOpC7$?hH5-#7Rswiue_8Ju*2N@$58=a#2OTA3png`w3v->gWif7t%e$ z$NLVS!tFT#8WL|Wa&K~+{%4P2cRfwesYV1_!F=3OaRVHl(>=`%&{x*s30c}#CNE@&;ItrAv!f!)Oy$Q9t$uS=(sD$-J{T*^(8Eez1E-l3}} zPrfHZ1`qsIFe&gipuL8-IZbo2Yg{lFGKs?ZZWcOaOdk*3`5T;$?AjbG1#`B510Er^h2)2r3Y{!8_2Gj=$KzuN5 zaErtW8W_Y2iJJjY)5pmTVJoPJYpanPOEuYHclM^C1F>${hFRpdi8a<2H|Xudf78bm(zwJ9`K%6I?q*Ua~ fW9JvIbn5*B+_J)rUMBs>00000NkvXXu0mjfH&TkY literal 0 HcmV?d00001 diff --git a/week9/class_materials/doc/images/page_green.png b/week9/class_materials/doc/images/page_green.png new file mode 100644 index 0000000000000000000000000000000000000000..de8e003f9fb8752c09e7f3655d5d8664b5c62fc3 GIT binary patch literal 621 zcmV-z0+RiSP)QqUjAtB;_Vvt6}AS_5YgM`Uqu`yva+H8^=4U$e4gHb}u zAQ2N{V3A%pO|?Pv?tb6z=jC}SiRa$G^v3q?*6XcYz$p|cq{uLj@#~Fi`J(>5{@&&N zy%T^+;>8cXx%|o77anP?&W1?1A(>-T49z9pyeCl@7YI+Si zKti7=B~``}TImz(G{0PnlQA3P#MAd}sorMjkP!50B7$nAkU^%#nl{Q9lW0@}9fE-> zN(q7tRuiC_T1r|BBtVBTlQ2+70$Rf;eF`Z;lx46Cpu-rEgb)EBKq(b^W8l<^We(`D z43?0=01z<3G6+UUv6`CsWCk6^93!#+<;ws7007{zS3k2k9-zZKFO~(k`>s0y006+1 zgF_jyIhsL-`FMf~JL~C=cV75(CrJ|q;MVO961G=O zm9d)YpJg5g(4i_HKL75eSE}mq$Y}r}hyVdcV~p>6a}oXr80q`oj%+s700000NkvXX Hu0mjfPs|!l literal 0 HcmV?d00001 diff --git a/week9/class_materials/doc/images/page_white_text.png b/week9/class_materials/doc/images/page_white_text.png new file mode 100644 index 0000000000000000000000000000000000000000..813f712f726c935f9adf8d2f2dd0d7683791ef11 GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%6;pyTSA|c6o&@eC9QG)Hj&ExYL zO&oVL^)+cM^qd@ApywS>pwx0H@RDN}hq;7mU-SKczYQ-hnrr=;iDAQMZQ+*g=YOM= z!QlMQEn7FbaD->uKAYgo_j9)W&$$zS*W9}m(ey0q$&7l-XEWO0Y(9M=SnhLbwy;d>@~SY$Ku*0xPvIOQeV1x7u_z-2-X>_74(yfh7C znXL|3GZ+d2`3re2hs?MKC#5QQ<|d}62BjvZR2H60wE-$R?&;zfqH(@;q9b3Efq-lM(nr^( z=EYR73-9e)UYMWsXy%?aZsD68Yyv^2$~6QgEcljw%kx>O(f-gQ?@fOOx3A-0+Qw?O zRx~W)kn~Qe2d6f9nMG#g9Q04Mk==M~N!Dglvxk!fgVh#w@ZV$IY1+Xc`d{d2UcaP~ zfWp)_Ivqj}l2SPy^9ZWy6rG9Yx4v67_uA&&9|XA~5-#3)W3%em1peD8RWH^#O%XoM zxMPud%}GTj#~*+7JMxTd!`{^Q+>(D3*|@KV`*G2;{QnANOxu1$r2xIe;OXk;vd$@? F2>@zac~<}c literal 0 HcmV?d00001 diff --git a/week9/class_materials/doc/images/plugin.png b/week9/class_materials/doc/images/plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..6187b15aec001b7080b51a5f944f07591f26cc15 GIT binary patch literal 591 zcmV-V0eEcNHZMNv|IbJ-M`( zKwWL~opzjJe^WpCmV9E;(0&ut2;4va_(#>M8)>9$R5viQnf(Nkh~VM$y>J(jqb$cj z+nL1Nm|mV)Gm|9MnHf*7Ja4OEAQz__^LRKOLEwqpiGV^^A*T=#&inGm-62Xs;dnSp zKj&H9T*boh2i)W+(n27l!C)>fq|L%VB1i ziC4p;NwV_}ZjW7$LRW#(_bKF#hp=!IqNO26Z*w2+LEwx{PVnZ&Sn}T;mtzb$;qA*nT@@+ zV5uQ@iXDTPoTbV#FRr~z04|PPh`wXTNoCm9*tG&?e3+fYl>K6+&3|Cc$KOpL`ER+_ dcRl5U#9zn6ZO}GFk7R5;7c zlif>`Q5?tj7Yw@ZCMtTF^Q|ZedeJhM%QPCR*bs8V79p$QTo7e94yQNXRs-{0?hOn_-8n0AMO@u1Ts zNl8QzJs1#rz%RBt?ux>l+amAvh+J!{$lkaqv}+Erb-6j2xp>K4GLQnNB*W`hFg*?P z^AL@~(h~Z+wfcWEXHqV^Tq-#z$7Y#o0;yFxA!00F}F2dX# zjE$iOgT#G4*1TR6kB1Gnn@>$meCh2a>c5YuIvFn-R2W@>4@M*m@-|jiDV?b)bccgA zyPfsMM!rjy>+1O2)5Eg29Z_*2p&qGnmS!OH?vZ(4>QB01d>j%9n4QINxkyT(Dos?I zjaWF$*IQmh`SF-?xU%xMEfjq1=6qY*g&lgG_cXv$BGoIWyfO5 zp>pdV*O+y=&6@N2WWFo(%RtT`Q(H^6zn^a%epE~Kx^mEJ{c8`luC$nc*z9j|4Ms8aJK-ladKLpnAK z!yd|CC&>l1b7`m$MH$ScEIP@XgT41O>|DzL{-38CH68OyX#u=G?d7;y&_o&o)f@3U z2(tr%Ok88caOL`xiQA8o;Vzr-$A$SOu6o|$&0DQAJ1Z7?OACaeoy+)PWu&~aueW<| z*KW^(^2}#30u*~<_mXScFNd6U&sxh5*GGMNytZGxkIGqL%v6329^u`FD6T?b?K!4B z@Hzh?O2Au=((Gu;rvgLMt^pS|u1rEkBgC8$oH%zgT`TvZiK#VDrVG?-i~6a_+WZb> zc1>>lb)xcuo^Cl8k%q3c_d*It_Vtj>RSovF&w;hS=6uYrT2e@-@l@P~uBN`zu!v>e zTm(is&jcQ6vuP?|;!e+(n8w)-Xjd!hwk@r2D0i00ygdKo2Xvs?&w_lajj5DHS@9I! z;_&ji2e{!uusGnVn};Pu|dl5x-FhQyC8^-4Uo_;BLiOXzcE z&4PS2TBWSC=hsw0og;z#(mly@Ed2E1E$_VDaM?kloE4ob2XK&K;OS~-nhIGlA4~UZrJu6*|}wi#TT?|yWUH+_&n($t0xta zBwTzSfE)uAw*L0>+`pTps}L-$jIP5Q_E$Am+l|{XfsKr0Vi~`Em?SJQ#0y)8vsxb1 zMdxJl^){_CDwI^}>)Pw${G?Ajc@P}x{Fvhoi0jbY^427?KPmoA_G)sqK}u$2(79Xg zC%}xm5JDcrsm5^vQEQpGEdJDc^yfuNAlqV1pZQVkOSceV<|{=|=@?=o4i_1RFUZth zC7cu<6%V3dVCI}P6DL4iUgTc@&(nXY)ox}HZ z(a#EgiNj%{kjRLL2t?{m_aKN`{5-&u+HAtQ-Qq#@!I@<(M+B3i@|g=LY6 z90tpW!JuMn_Lcy1q7g&LUSuLE3XS}K#P^nHVUmL`L)dbP| z0bt(+Cp#M-bH!LM*DzJ0Lfn;eTBV@|JvGSgpdoc1RhhV>(G-2(vE|>MrVgA9+?+0m4OzUqbT>-U-jg|v zLZMntq`r?fy1UCMh>z2Koi1SL-~N2ZrIf+dZW|;SWszsde}Dl!HOMc1Fa>K9)e&RI z)A?aK zcviCdKDUg_%#u7YAE`A`Y3$(P4&m^@fEWAvjAwVmRWeUnmkrxA;E!fKoc{9Vi=lvFL}KmoS;g* zdjL?Y!VHUFq63aLj6VZE+tHts?Z1pFkiO9^k*5pGpFpU&5#5G4ATd{t>a&9zKBVB9=Ns^HFU|DTGH8C+Xr2UqOU`Zxe)!|%j4=-QojGePq)pRGe;!f)Czk!u3vP_Jxu8(e6 zf4Q`F$Qio2Jw@N*E@k?c`+Sw}AYQjkT+x)OAe6eq(AT!iRuksKQn%Ao_Ac1T-p#Js I_CnHs0qX}mlmGw# literal 0 HcmV?d00001 diff --git a/week9/class_materials/doc/images/tag_green.png b/week9/class_materials/doc/images/tag_green.png new file mode 100644 index 0000000000000000000000000000000000000000..83ec984bd73364134da0f98d27a800c5d3264180 GIT binary patch literal 613 zcmV-r0-F7aP)^5T)AZ%#@G{_P{NCN^P z(J0zvSn~SSm(Ur);-M~8^*;61*VRI`T1BN&LAhK;sZ>I-SVW;vfUfJv=ko^ugnc0x zhJodBxe>iyk3%w<%wC8holUJ4(iv>tL{`DQt zPOsyUbO_Cmc&*iHkqbm3ku`|GcC^OhF>jj9W*GkH;^g!iUVpib_h*=@udp4h(P+e*zL_~ZmJjh(y^BxULwq>9zXoYE8sq{#pN~U0C6!8vY)5N2 z9P*}mw}7X$O^qTtJef1ACWvJT9^wt-)Zh0r~j#0bT`f;-zv6 z^Tmw22!%rMcs!TaUX<-8s;X-B`+Xbo+_uWuFa z1yIPc?DTrQ7KvRhmt*TG|L=EYQ=LqFX;=Lp`4}jx6BE-@00000NkvXXu0mjf=s_29 literal 0 HcmV?d00001 diff --git a/week9/class_materials/doc/images/transparent.png b/week9/class_materials/doc/images/transparent.png new file mode 100644 index 0000000000000000000000000000000000000000..d665e179efd797451084235f105425247fea0a14 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;bAV5X>;M1%mmiTn0pv241o;Is pI6S+N2ITN~x;Tb#$R;N!@B(=T42&&nK2`x)44$rjF6*2UngG277DE64 literal 0 HcmV?d00001 diff --git a/week9/class_materials/doc/images/wrench.png b/week9/class_materials/doc/images/wrench.png new file mode 100644 index 0000000000000000000000000000000000000000..5c8213fef5ab969f03189d4367e32e597e38bd7f GIT binary patch literal 610 zcmV-o0-gPdP)^jb z4`0v}DG1te)wmeb(>p90leRz?_mO+^JKy=v&2<29Od6?F%9%(c8los#f*@G`-%W&* z$)uBj2i@u-@SgX}gtyWPe6d*|w6h%R? zScK2#Yn%$sum0cy>90DmY*i{1XqpClEtktsRTZ)lCUe z<FogV^*tm>8*AlX za4oiR!&85LrobG57qUHUX#{>Vz(RHpB5|@>9O6N$jqB8>%($0wxE5R3)b>Y~xtCo$ zCgEk&A?_#IxHdN)9tqre^o{ho4{?hmPuf@^@I3-wncaRd%|~O3xbrKY=&TiwPYkJroM{;WUQTuMY8vpg}f4o)2%U3C;eEDoiEh?94d(rV57VIF#8VqzW$HrDC|#U`x@QDbgi zVl)t9GGz&YY#D?gc%>hISA+_EBpnXt#pnC`p6@xw0$8TCbULjhlgVx(kuc)%xbgqq zR5+DNDFRN0!y)7Gm}oT0i39}h4h928qY?Rho^UvPGJ#kuW|-Amtrn`Pmd&+bFo@sp z$LI4IQw7BG?|#2ewOS<<3VjL$0=lMY^m;wqZujv5kx1l%Sl;V&Iy4#$ip3&@LV2!7vhhN=PCz%^9v24`qb(+m4W?!q-&~=?ssf5GfnAmJKV;3bvpDm0(NhahZ=&^sqo6Odj6>)Dq_3p~4~ zvb`d3Mydwjt&Df^hVmLtI2x=U&h9(JVYX-!y~z3zi;1>=LY;o(bL$(Yf$lf)dMf0-u^0HrpTG Wk@)HE*94aU0000m+BBgry{~j2fHLegbHP( zrgXNbr0}2;^nywdjLjZe?uxtrd3D(pZH@fFFc0{BW_~jxoO1w7-VX;6vK@ROA$$R6 zEmo;Ht-Mj|>5jUy{bQ^V5@53LRI8AgLpUm|m+15sqcz@QtVSo|oz7ArM8?pIn+>gN z0b=4_b5O|4A*;Q+vc9Vqr~%3V155*NV~@gTz}KSUiKB-uJzjMZ>5%Q#n24H!V{ zTY(LLAE*NAHZ}C#wnj%Bw5OFIkRhkkAW#kDC3j9Wm0YXRaXlyyp>#mVfYG)eC;@ab zDb=T-BCAY4LI(Z@GOTr2V_A{pRwSmz+8Be>CjAw(=gnbVWAeguvZa93JmL(EDxv1m z0OP4q=fpAK1Mq!C2`OkEn37o;m#wF#(t(8Pu#S?2f#x<~4EO{@fmm`p9veD6RZ_jp z@Au4};q&`XuKEYgIiB4((kgxOs#YdqJw0fY>9^K_agEu5+$#k;w#%I2N>n_?)YIqu z`tq&#_^p?-%K*U0^}|7+9U(&k0?s;=r=uCZ%)H9_edH8wK}gB(nUB1FFk+2Ol%BXV zHoFY`D~2x|2 + + + + + +RDoc Documentation + + + + + + + + + + + + + + + + +
+

This is the API documentation for RDoc Documentation. +

+ + + + diff --git a/week9/class_materials/doc/js/darkfish.js b/week9/class_materials/doc/js/darkfish.js new file mode 100644 index 0000000..f26fd45 --- /dev/null +++ b/week9/class_materials/doc/js/darkfish.js @@ -0,0 +1,155 @@ +/** + * + * Darkfish Page Functions + * $Id: darkfish.js 53 2009-01-07 02:52:03Z deveiant $ + * + * Author: Michael Granger + * + */ + +/* Provide console simulation for firebug-less environments */ +if (!("console" in window) || !("firebug" in console)) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", + "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; + + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +}; + + +/** + * Unwrap the first element that matches the given @expr@ from the targets and return them. + */ +$.fn.unwrap = function( expr ) { + return this.each( function() { + $(this).parents( expr ).eq( 0 ).after( this ).remove(); + }); +}; + + +function showSource( e ) { + var target = e.target; + var codeSections = $(target). + parents('.method-detail'). + find('.method-source-code'); + + $(target). + parents('.method-detail'). + find('.method-source-code'). + slideToggle(); +}; + +function hookSourceViews() { + $('.method-heading').click( showSource ); +}; + +function toggleDebuggingSection() { + $('.debugging-section').slideToggle(); +}; + +function hookDebuggingToggle() { + $('#debugging-toggle img').click( toggleDebuggingSection ); +}; + +function hookTableOfContentsToggle() { + $('.indexpage li .toc-toggle').each( function() { + $(this).click( function() { + $(this).toggleClass('open'); + }); + + var section = $(this).next(); + + $(this).click( function() { + section.slideToggle(); + }); + }); +} + +function hookSearch() { + var input = $('#search-field').eq(0); + var result = $('#search-results').eq(0); + $(result).show(); + + var search_section = $('#search-section').get(0); + $(search_section).show(); + + var search = new Search(search_data, input, result); + + search.renderItem = function(result) { + var li = document.createElement('li'); + var html = ''; + + // TODO add relative path to + + + + + + + + + + +

Table of Contents - RDoc Documentation

+ + +

Classes/Modules

+ + +

Methods

+ + + + + diff --git a/week9/class_materials/exceptional_ruby.rb b/week9/class_materials/exceptional_ruby.rb new file mode 100644 index 0000000..d0e4930 --- /dev/null +++ b/week9/class_materials/exceptional_ruby.rb @@ -0,0 +1,30 @@ + class DLBError < Exception :where all error come from in ruby + #can be specific for a specific class + #Doc has list of all child errors from exception + #can grab backtrace from an error + #message on function - so if want custom messaging + def message + "DLB threw an error" + end + end + begin + #raise 'Yipes' + rais DLBError.new + File.open ('hello.txt') + rescue DLBError => e + puts e.message + rescue Errno::ENDENT=> e + puts e (puts e.class) + rescue IOError + puts specific message + ensure #(like finally) …try, catch, finally - always ensure that this runs when even if there is an error puts "hello world" -even if there are no errors + puts "hello world" + end + + catch :yipes do + i=0 + while i<10 + sleep (2) and throw :yipes if i ==5 #and lower precedence thatn && - want it here + puts i+=1 + end + end diff --git a/week9/class_materials/hello.rb b/week9/class_materials/hello.rb new file mode 100644 index 0000000..f865e9d --- /dev/null +++ b/week9/class_materials/hello.rb @@ -0,0 +1,10 @@ +require 'sinatra' +require 'sinatra/reloader' #now just refresh rather than restart server + +get '/' do #default route + " + +

Hello World!!! + + " +end \ No newline at end of file diff --git a/week9/class_materials/named_thing.rb b/week9/class_materials/named_thing.rb new file mode 100644 index 0000000..328d2df --- /dev/null +++ b/week9/class_materials/named_thing.rb @@ -0,0 +1,2 @@ +module NamedThing +end \ No newline at end of file