Class: RDF::Literal::Boolean

Inherits:
RDF::Literal show all
Defined in:
lib/rdf/model/literal/boolean.rb

Overview

A boolean literal.

Constant Summary collapse

DATATYPE =

Since:

  • 0.2.1

XSD.boolean
GRAMMAR =

Since:

  • 0.2.1

/^(true|false|1|0)$/i.freeze
TRUES =

Since:

  • 0.2.1

%w(true  1).freeze
FALSES =

Since:

  • 0.2.1

%w(false 0).freeze

Constants inherited from RDF::Literal

FALSE, TRUE, ZERO

Instance Attribute Summary

Attributes inherited from RDF::Literal

#datatype, #language

Instance Method Summary collapse

Methods inherited from RDF::Literal

#anonymous?, #canonicalize, #comperable_datatype?, datatyped_class, #eql?, #has_datatype?, #has_language?, #hash, #invalid?, #literal?, new, #object, #plain?, #valid?, #validate!, #value

Methods included from Term

#constant?, #eql?, #variable?

Methods included from Value

#graph?, #inspect!, #iri?, #literal?, #node?, #resource?, #statement?, #to_ntriples, #to_quad, #to_rdf, #type_error, #uri?, #variable?

Constructor Details

#initialize(value, options = {}) ⇒ Boolean

Returns a new instance of Boolean.

Parameters:

  • value (Boolean)
  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :lexical (String) — default: nil

Since:

  • 0.2.1



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/rdf/model/literal/boolean.rb', line 16

def initialize(value, options = {})
  @datatype = RDF::URI(options[:datatype] || self.class.const_get(:DATATYPE))
  @string   = options[:lexical] if options.has_key?(:lexical)
  @string   ||= value if value.is_a?(String)
  @object   = case
    when true.equal?(value)  then true
    when false.equal?(value) then false
    when TRUES.include?(value.to_s.downcase)  then true
    when FALSES.include?(value.to_s.downcase) then false
    else value
  end
end

Instance Method Details

#<=>(other) ⇒ Integer

Compares this literal to ‘other` for sorting purposes.

Parameters:

  • other (Object)

Returns:

  • (Integer)

    ‘-1`, `0`, or `1`

Since:

  • 0.3.0



45
46
47
48
49
50
51
52
53
# File 'lib/rdf/model/literal/boolean.rb', line 45

def <=>(other)
  case other
    when TrueClass, FalseClass
      to_i <=> (other ? 1 : 0)
    when RDF::Literal::Boolean
      to_i <=> other.to_i
    else super
  end
end

#==(other) ⇒ Boolean

Returns ‘true` if this literal is equivalent to `other`.

Parameters:

  • other (Object)

Returns:

  • (Boolean)

    ‘true` or `false`

Since:

  • 0.3.0



61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/rdf/model/literal/boolean.rb', line 61

def ==(other)
  # If lexically invalid, use regular literal testing
  return super unless self.valid?

  other = Literal::Boolean.new(other) if other.class == TrueClass || other.class == FalseClass

  case other
  when Literal::Boolean
    return super unless other.valid?
    (cmp = (self <=> other)) ? cmp.zero? : false
  else
    super
  end
end

#canonicalize!RDF::Literal

Converts this literal into its canonical lexical representation.



34
35
36
37
# File 'lib/rdf/model/literal/boolean.rb', line 34

def canonicalize!
  @string = (@object ? :true : :false).to_s
  self
end

#false?Boolean

Returns ‘true` if this value is `false`.

Returns:

Since:

  • 0.2.1



105
106
107
# File 'lib/rdf/model/literal/boolean.rb', line 105

def false?
  @object.equal?(false)
end

#inspectString

Returns a developer-friendly representation of ‘self`.

Returns:

  • (String)

Since:

  • 0.2.1



113
114
115
116
117
118
119
# File 'lib/rdf/model/literal/boolean.rb', line 113

def inspect
  case
    when self.equal?(RDF::Literal::TRUE)  then 'RDF::Literal::TRUE'
    when self.equal?(RDF::Literal::FALSE) then 'RDF::Literal::FALSE'
    else super
  end
end

#to_iInteger

Returns the value as an integer.

Returns:

Since:

  • 0.3.0



89
90
91
# File 'lib/rdf/model/literal/boolean.rb', line 89

def to_i
  @object ? 1 : 0
end

#to_sString

Returns the value as a string.

Returns:

  • (String)

Since:

  • 0.2.1



80
81
82
# File 'lib/rdf/model/literal/boolean.rb', line 80

def to_s
  @string || @object.to_s
end

#true?Boolean

Returns ‘true` if this value is `true`.

Returns:

Since:

  • 0.2.1



97
98
99
# File 'lib/rdf/model/literal/boolean.rb', line 97

def true?
  @object.equal?(true)
end