Sha256: 3b784947b31c80886ab0894add32cd48ead98d59027308235eba4214d8009a46

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

require 'uri'
require 'xml_schema'
require 'redland'
require 'redlander/version'

require "redlander/exceptions"
require 'redlander/uri'
require 'redlander/node'
require 'redlander/model'
require 'redlander/statement'

# Main Redlander namespace
module Redlander
  class << self

    # @api private
    def rdf_world
      unless @rdf_world
        @rdf_world = Redland.librdf_new_world
        raise RedlandError, "Could not create a new RDF world" if @rdf_world.null?
        ObjectSpace.define_finalizer(self, finalize_world(@rdf_world))
        Redland.librdf_world_open(@rdf_world)
      end
      @rdf_world
    end


    # @api private
    # Convert options hash into a string for librdf.
    # What it does:
    #   1) Convert boolean values into 'yes/no' values
    #   2) Change underscores in key names into dashes ('dhar_ma' => 'dhar-ma')
    #   3) Join all options as "key='value'" pairs in a comma-separated string
    #
    # @example
    #   to_rdf_options {:key => true, "key_board" => 3}
    #   # => "key='yes',key-board='3'"
    def to_rdf_options(options = {})
      options.inject([]){|opts, option_pair|
        key = option_pair[0].to_s.gsub(/_/, '-')
        value = if [TrueClass, FalseClass].include?(option_pair[1].class)
                  option_pair[1] ? 'yes' : 'no'
                else
                  option_pair[1]
                end
        opts << "#{key}='#{value}'"
      }.join(',')
    end


    private

    # @api private
    def finalize_world(rdf_world_ptr)
      proc { Redland.librdf_free_world(rdf_world_ptr) }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
redlander-0.6.2 lib/redlander.rb