Skip to content

Instantly share code, notes, and snippets.

@takaheraw
Created March 12, 2012 12:14
Show Gist options
  • Save takaheraw/2021443 to your computer and use it in GitHub Desktop.
Save takaheraw/2021443 to your computer and use it in GitHub Desktop.
class SimpleWriter
def initialize(path)
@file = File.open(path,'w')
end
def write_line(line)
@file.print(line)
@file.print("\n")
end
def pos
@file.pos
end
def rewind
@file.rewind
end
def close
@file.close
end
end
class WriteDecorator
def initialize(real_writer)
@real_writer = real_writer
end
def write_line(line)
@real_writer.write_line(line)
end
def pos
@real_writer.pos
end
def rewind
@real_writer.rewind
end
def close
@real_writer.close
end
end
class NumberingWriter < WriteDecorator
def initialize(real_writer)
super(real_writer)
@line_number = 1
end
def write_line(line)
@real_writer.write_line("#{@line_number}: #{line}")
@line_number += 1
end
end
class TimeStampingWriter < WriteDecorator
def write_line(line)
@real_writer.write_line("#{Time.new}: #{line}")
end
end
writer = TimeStampingWriter.new(NumberingWriter.new(SimpleWriter.new('out.txt')))
writer.write_line("Hello!")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment