Class: TermUtils::AP::Walker

Inherits:
Object
  • Object
show all
Defined in:
lib/term_utils/ap/result.rb

Overview

Represents a Result Walker.

Instance Method Summary collapse

Constructor Details

#initializeWalker

Constructs a new Walker.



168
169
170
171
172
173
# File 'lib/term_utils/ap/result.rb', line 168

def initialize
  @anonymous_parameter_hook = nil
  @anonymous_article_hook = nil
  @parameter_hooks = {}
  @finished_hook = nil
end

Instance Method Details

#article(param_id = nil, art_id = nil, &block) ⇒ Object

Registers an article hook.



188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# File 'lib/term_utils/ap/result.rb', line 188

def article(param_id = nil, art_id = nil, &block)
  unless param_id
    # Anonymous article hook
    @anonymous_article_hook = block
    return
  end

  unless art_id
    # Anonymous article hook
    @parameter_hooks[param_id] = TermUtils::AP::ParameterWalkerHooks.new unless @parameter_hooks.key?(param_id)
    @parameter_hooks[param_id].anonymous_article_hook = block
    return
  end

  @parameter_hooks[param_id] = TermUtils::AP::ParameterWalkerHooks.new unless @parameter_hooks.key?(param_id)
  @parameter_hooks[param_id].article_hooks ||= {}
  @parameter_hooks[param_id].article_hooks[art_id] = block
end

#finished(&block) ⇒ Object

Registers a walk finished hook.



208
209
210
# File 'lib/term_utils/ap/result.rb', line 208

def finished(&block)
  @finished_hook = block
end

#notify_article(article) ⇒ Object

Calls article hooks.



222
223
224
225
226
227
228
229
230
231
232
233
# File 'lib/term_utils/ap/result.rb', line 222

def notify_article(article)
  # (1of2) ID article hook
  param_hooks = @parameter_hooks[article.parent.param_id]
  if param_hooks
    # ID article hook
    param_hooks.article_hooks[article.art_id].call(article) if param_hooks.article_hooks && param_hooks.article_hooks.key?(article.art_id)
    # Anonymous article hook
    param_hooks.anonymous_article_hook.call(article) if param_hooks.anonymous_article_hook
  end
  # (2of2) Anonymous article hook
  @anonymous_article_hook.call(article) if @anonymous_article_hook
end

#notify_finished(remaining_arguments) ⇒ Object

Calls finished hook.



236
237
238
# File 'lib/term_utils/ap/result.rb', line 236

def notify_finished(remaining_arguments)
  @finished_hook.call(remaining_arguments) if @finished_hook
end

#notify_parameter(parameter) ⇒ Object

Calls parameter hooks.



213
214
215
216
217
218
219
# File 'lib/term_utils/ap/result.rb', line 213

def notify_parameter(parameter)
  # (1of2) ID parameter hook
  param_hooks = @parameter_hooks[parameter.param_id]
  param_hooks.hook.call(parameter) if param_hooks && param_hooks.hook
  # (2of2) Anonymous parameter hook
  @anonymous_parameter_hook.call(parameter) if @anonymous_parameter_hook
end

#parameter(param_id = nil, &block) ⇒ Object

Registers a parameter hook.



176
177
178
179
180
181
182
183
184
185
# File 'lib/term_utils/ap/result.rb', line 176

def parameter(param_id = nil, &block)
  unless param_id
    # Anonymous parameter hook
    @anonymous_parameter_hook = block
    return
  end

  @parameter_hooks[param_id] = TermUtils::AP::ParameterWalkerHooks.new unless @parameter_hooks.key?(param_id)
  @parameter_hooks[param_id].hook = block
end