Module: Spider::Model::ConditionMixin

Included in:
ConditionContext, ConditionElement, ConditionElementCreator
Defined in:
lib/spiderfw/model/condition.rb

Overview

:nodoc:

Defined Under Namespace

Classes: ConditionElement, ConditionElementCreator

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(meth, *arguments) ⇒ Object



398
399
400
# File 'lib/spiderfw/model/condition.rb', line 398

def method_missing(meth, *arguments)
    __create_condition_element(meth)
end

Instance Method Details

#__create_condition_element(meth) ⇒ Object



402
403
404
405
406
407
408
409
410
411
# File 'lib/spiderfw/model/condition.rb', line 402

def __create_condition_element(meth)
    if (meth == :q)
        return ConditionElementCreator.new
    end
    if (meth.to_s =~ /element_(.+)/) # alternative syntax to avoid clashes
        meth = $1.to_sym
    end
    name = @condition_element_name ? "#{@condition_element_name}.#{meth}" : meth.to_s
    return ConditionElement.new(name, @condition_context)
end

#__el(meth) ⇒ Object



394
395
396
# File 'lib/spiderfw/model/condition.rb', line 394

def __el(meth)
    __create_condition_element(meth)
end

#AND(&proc) ⇒ Object



417
418
419
420
421
422
423
424
425
426
# File 'lib/spiderfw/model/condition.rb', line 417

def AND(&proc)
    @condition_context = []
    instance_eval(&proc)
    c = Condition.and
    @condition_context.each do |cond|
        c << cond unless (cond.conjunct)
    end
    @condition_context = nil
    return c
end

#idObject



413
414
415
# File 'lib/spiderfw/model/condition.rb', line 413

def id
    return ConditionElement.new(:id, @condition_context)
end

#OR(&proc) ⇒ Object



428
429
430
431
432
433
434
435
436
437
# File 'lib/spiderfw/model/condition.rb', line 428

def OR(&proc)
    @condition_context = []
    instance_eval(&proc)
    c = Condition.and
    @condition_context.each do |cond|
        c << cond unless (cond.conjunct)
    end
    @condition_context = nil
    return c
end