Skip to content

Commit

Permalink
renamed some knowledge permutations, added koans 2 and 3
Browse files Browse the repository at this point in the history
  • Loading branch information
ryankinderman committed Apr 23, 2007
1 parent 1974fb0 commit 8844956
Show file tree
Hide file tree
Showing 11 changed files with 88 additions and 2 deletions.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ class SomeClass
def self.attribute; end

def a?
return @a
!@a.nil?
end

def a
Expand Down
19 changes: 19 additions & 0 deletions metakoans-ryan/knowledge_for_koan_02_0.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
module MetaKoans

class SomeClass
def self.attribute(name='a'); end

def a?
!@a.nil?
end

def a
@a
end

def a=(value)
@a = value
end
end

end
12 changes: 12 additions & 0 deletions metakoans-ryan/knowledge_for_koan_02_1.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
module MetaKoans

class SomeClass
def self.attribute(name='a')
attr_accessor name
define_method name + "?" do
!send(name).nil?
end
end
end

end
21 changes: 21 additions & 0 deletions metakoans-ryan/knowledge_for_koan_03_0.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
module MetaKoans

class SomeClass
class << self
def self.attribute(name='a')
attr_accessor name
define_method name + "?" do
!send(name).nil?
end
end
end

def self.attribute(name='a')
attr_accessor name
define_method name + "?" do
!send(name).nil?
end
end
end

end
19 changes: 19 additions & 0 deletions metakoans-ryan/knowledge_for_koan_03_1.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
module MetaKoans

module Attributable
def attribute(name='a')
attr_accessor name
define_method name + "?" do
!send(name).nil?
end
end
end

class SomeClass
class << self
extend Attributable
end
extend Attributable
end

end
17 changes: 16 additions & 1 deletion metakoans-ryan/metakoans.rb
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ def self::method_missing m, *a, &b


# knowledge = ARGV.shift or abort "#{ $0 } knowledge.rb"
student = MetaStudent.new 'knowledge_for_koan_02_assert_0'
student = MetaStudent.new 'knowledge_for_koan_03_1'


module MetaKoans
Expand Down Expand Up @@ -131,6 +131,21 @@ def koan_02
assert{ o.b? }
end

def koan_03
SomeClass.instance_eval do
class << self
attribute 'b'
end
end

assert{ not SomeClass.b? }
assert{ SomeClass.b = 42 }
assert{ SomeClass.b == 42 }
assert{ SomeClass.b? }
end



#
# 'attribute' must provide getter, setter, and query to instances
#
Expand Down

0 comments on commit 8844956

Please sign in to comment.