Class: PDF::Reader::RegisterReceiver
- Inherits:
-
Object
- Object
- PDF::Reader::RegisterReceiver
- Defined in:
- lib/pdf/reader/register_receiver.rb
Overview
An example receiver that just records all callbacks generated by parsing a PDF file.
Useful for testing the contents of a file in an rspec/test-unit suite.
Usage:
PDF::Reader.open("somefile.pdf") do |reader|
receiver = PDF::Reader::RegisterReceiver.new
reader.page(1).walk(receiver)
callback = receiver.first_occurance_of(:show_text)
callback[:args].first.should == "Hellow World"
end
Instance Attribute Summary collapse
-
#callbacks ⇒ Object
Returns the value of attribute callbacks.
Instance Method Summary collapse
-
#all(methodname) ⇒ Object
return the details for every time the specified callback was fired.
- #all_args(methodname) ⇒ Object
-
#count(methodname) ⇒ Object
count the number of times a callback fired.
-
#final_occurance_of(methodname) ⇒ Object
return the details for the final time the specified callback was fired.
-
#first_occurance_of(methodname) ⇒ Object
return the details for the first time the specified callback was fired.
-
#initialize ⇒ RegisterReceiver
constructor
A new instance of RegisterReceiver.
- #method_missing(methodname, *args) ⇒ Object
- #respond_to?(meth) ⇒ Boolean
-
#series(*methods) ⇒ Object
return the first occurance of a particular series of callbacks.
Constructor Details
#initialize ⇒ RegisterReceiver
Returns a new instance of RegisterReceiver.
27 28 29 |
# File 'lib/pdf/reader/register_receiver.rb', line 27 def initialize @callbacks = [] end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(methodname, *args) ⇒ Object
35 36 37 |
# File 'lib/pdf/reader/register_receiver.rb', line 35 def method_missing(methodname, *args) callbacks << {:name => methodname.to_sym, :args => args} end |
Instance Attribute Details
#callbacks ⇒ Object
Returns the value of attribute callbacks.
25 26 27 |
# File 'lib/pdf/reader/register_receiver.rb', line 25 def callbacks @callbacks end |
Instance Method Details
#all(methodname) ⇒ Object
return the details for every time the specified callback was fired
45 46 47 |
# File 'lib/pdf/reader/register_receiver.rb', line 45 def all(methodname) callbacks.select { |cb| cb[:name] == methodname } end |
#all_args(methodname) ⇒ Object
49 50 51 |
# File 'lib/pdf/reader/register_receiver.rb', line 49 def all_args(methodname) all(methodname).map { |cb| cb[:args] } end |
#count(methodname) ⇒ Object
count the number of times a callback fired
40 41 42 |
# File 'lib/pdf/reader/register_receiver.rb', line 40 def count(methodname) callbacks.count { |cb| cb[:name] == methodname} end |
#final_occurance_of(methodname) ⇒ Object
return the details for the final time the specified callback was fired
59 60 61 |
# File 'lib/pdf/reader/register_receiver.rb', line 59 def final_occurance_of(methodname) all(methodname).last end |
#first_occurance_of(methodname) ⇒ Object
return the details for the first time the specified callback was fired
54 55 56 |
# File 'lib/pdf/reader/register_receiver.rb', line 54 def first_occurance_of(methodname) callbacks.find { |cb| cb[:name] == methodname } end |
#respond_to?(meth) ⇒ Boolean
31 32 33 |
# File 'lib/pdf/reader/register_receiver.rb', line 31 def respond_to?(meth) true end |
#series(*methods) ⇒ Object
return the first occurance of a particular series of callbacks
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/pdf/reader/register_receiver.rb', line 64 def series(*methods) return nil if methods.empty? indexes = (0..(callbacks.size-1)) method_indexes = (0..(methods.size-1)) indexes.each do |idx| count = methods.size method_indexes.each do |midx| count -= 1 if callbacks[idx+midx] && callbacks[idx+midx][:name] == methods[midx] end if count == 0 return callbacks[idx, methods.size] end end nil end |