Skip to content

ktlacaelel/buffered_proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

buffered_proxy

A proxy that thinks she’s a buffer.

Abstract

Use this as a channel to execute methods from another object, stash’em up but do not run until you are certain.. or clear the whole stack of execution. then start over.

Usage

require 'rubygems'
require 'buffered_proxy'

class Target

  def initialize(string)
    @string = string
  end

  def print
    puts @string
  end

  def change string
    @string = string
  end

end

target = Target.new('Hello')
proxy = BufferedProxy.new(target, [:print, :change])

# Print the message twice
proxy.print
proxy.print
proxy.flush # Execute every instruction given, and clear the stack
            # so we start from zero from this point on..

# Do some stuff with the proxy, and then discard everything!
proxy.print
proxy.change 'this should never execute'
proxy.print
proxy.clear # Clean everything in the stack without running anything

# Start fresh now, print old message, change it and print it again.
proxy.print
proxy.change 'Good bye'
proxy.print
proxy.flush # Execute every instruction given, and clear the stack
            # so we start from zero from this point on..

proxy.flush # Since the stack is clean now this shall not execute
            # anythig!

The script above will output this.

Hello
Hello
Hello
Good bye

About

A proxy that thinks she's a buffer.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages