class Factoid::Value

Constants

EMPTY
Interpreters

Public Class Methods

from_xml(container_elem) click to toggle source
# File lib/factoid/xml.rb, line 82
def Value.from_xml(container_elem)
        elem = container_elem.at('./f:value', NS)

        type = elem.attr('type')
        # TODO: special case for entitoids
        # TODO: use type = :entitoid_ref instead of nil

        return Value.new(type, elem)
end
new(type, raw_value) click to toggle source
# File lib/factoid/value.rb, line 6
def initialize(type, raw_value)
        @type = type
        @raw_value = raw_value
end

Public Instance Methods

value(interpret, follow) click to toggle source
# File lib/factoid/value.rb, line 13
def value(interpret, follow)
        raw = nil

        if @raw_value.elements.empty?
                raw = @raw_value.text
        else
                raw = @raw_value
        end

        if !interpret
                return raw
        end

        interpreter = Interpreters.find { |i| begin i.accept?(@type, raw); rescue; end; }
        v = interpreter.interpret(@type, raw)

        if !follow
                return v
        end

        # FIXME: use Dereferenciators (like Interpreters)
        if v.is_a? EntitoidRef
                r = v.deref
        else
                r = v
        end

        return r
end