Class: Command::Results::Formatter
- Inherits:
-
Object
- Object
- Command::Results::Formatter
- Extended by:
- Forwardable
- Defined in:
- lib/command-set/formatter/base.rb
Overview
The end of the Results train. Formatter objects are supposed to output to the user events that they receive from their presenters. To simplify this process, a number of common IO functions are delegated to an IO object - usually Command::raw_stdout.
This class in particular is pretty quiet - probably not helpful for everyday use. Of course, for some purposes, singleton methods might be very useful
Direct Known Subclasses
Defined Under Namespace
Modules: Styler Classes: FormatAdvisor
Instance Attribute Summary collapse
-
#advice ⇒ Object
readonly
Returns the value of attribute advice.
Class Method Summary collapse
Instance Method Summary collapse
- #apply_advice(item) ⇒ Object
-
#closed_begin_list(list) ⇒ Object
Presenter callback: a list opened, tree order.
-
#closed_end_list(list) ⇒ Object
Presenter callback: an list closed, tree order.
-
#closed_item(item) ⇒ Object
Presenter callback: an item added, tree order.
- #default_advice(type) ⇒ Object
-
#finish ⇒ Object
Presenter callback: output is done.
-
#initialize(out = nil, err = nil) ⇒ Formatter
constructor
A new instance of Formatter.
- #notify(msg, item) ⇒ Object
- #receive_advice(&block) ⇒ Object
-
#saw_begin_list(list) ⇒ Object
Presenter callback: a list has just started.
-
#saw_end_list(list) ⇒ Object
Presenter callback: a list has just ended.
-
#saw_item(item) ⇒ Object
Presenter callback: an item has just been added.
-
#start ⇒ Object
Presenter callback: output is beginning.
Constructor Details
#initialize(out = nil, err = nil) ⇒ Formatter
Returns a new instance of Formatter.
112 113 114 115 116 117 |
# File 'lib/command-set/formatter/base.rb', line 112 def initialize(out = nil, err = nil) @out_to = out || ::Command::raw_stdout @err_to = err || ::Command::raw_stderr @advisor = FormatAdvisor.new(self) @advice = {:list => [], :item => [], :output => []} end |
Instance Attribute Details
#advice ⇒ Object (readonly)
Returns the value of attribute advice.
134 135 136 |
# File 'lib/command-set/formatter/base.rb', line 134 def advice @advice end |
Class Method Details
.inherited(sub) ⇒ Object
146 147 148 149 150 151 |
# File 'lib/command-set/formatter/base.rb', line 146 def self.inherited(sub) sub.extend Forwardable sub.class_eval do def_delegators :@out_to, :p, :puts, :print, :printf, :putc, :write, :write_nonblock, :flush end end |
Instance Method Details
#apply_advice(item) ⇒ Object
119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/command-set/formatter/base.rb', line 119 def apply_advice(item) type = List === item ? :list : :item item.[:format_advice] = @advice[type].inject(default_advice(type)) do |advice, advisor| result = advisor[item] break if result == :DONE if Hash === result advice.merge(result) else advice end end end |
#closed_begin_list(list) ⇒ Object
Presenter callback: a list opened, tree order
166 |
# File 'lib/command-set/formatter/base.rb', line 166 def closed_begin_list(list); end |
#closed_end_list(list) ⇒ Object
Presenter callback: an list closed, tree order
172 |
# File 'lib/command-set/formatter/base.rb', line 172 def closed_end_list(list); end |
#closed_item(item) ⇒ Object
Presenter callback: an item added, tree order
169 |
# File 'lib/command-set/formatter/base.rb', line 169 def closed_item(item); end |
#default_advice(type) ⇒ Object
140 141 142 |
# File 'lib/command-set/formatter/base.rb', line 140 def default_advice(type) {} end |
#finish ⇒ Object
Presenter callback: output is done
175 |
# File 'lib/command-set/formatter/base.rb', line 175 def finish; end |
#notify(msg, item) ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/command-set/formatter/base.rb', line 79 def notify(msg, item) if msg == :start start return end if msg == :done finish return end apply_advice(item) if List === item case msg when :saw_begin saw_begin_list(item) when :saw_end saw_end_list(item) when :arrive closed_begin_list(item) when :leave closed_end_list(item) end else case msg when :arrive closed_item(item) when :saw saw_item(item) end end end |
#receive_advice(&block) ⇒ Object
136 137 138 |
# File 'lib/command-set/formatter/base.rb', line 136 def receive_advice(&block) @advisor.instance_eval(&block) end |
#saw_begin_list(list) ⇒ Object
Presenter callback: a list has just started
157 |
# File 'lib/command-set/formatter/base.rb', line 157 def saw_begin_list(list); end |
#saw_end_list(list) ⇒ Object
Presenter callback: a list has just ended
163 |
# File 'lib/command-set/formatter/base.rb', line 163 def saw_end_list(list); end |
#saw_item(item) ⇒ Object
Presenter callback: an item has just been added
160 |
# File 'lib/command-set/formatter/base.rb', line 160 def saw_item(item); end |
#start ⇒ Object
Presenter callback: output is beginning
154 |
# File 'lib/command-set/formatter/base.rb', line 154 def start; end |