Sha256: 6ea76c2b60378350d1ec3eefc3a145a6d5a9f5799a6813f775b220aff2de139c

Contents?: true

Size: 1.05 KB

Versions: 10

Compression:

Stored size: 1.05 KB

Contents

require 'forwardable'

module Spread2RDF
  module Schema
    class Element
      include Attributes
      extend Forwardable

      self.attributes = {
          name:         nil,
          source_name:  nil
      }

      attr_reader :parent
      attr_reader :block

      def_delegators :parent, :spreadsheet

      def initialize(parent, attr = {}, &block)
        @parent   = parent
        @block    = block
        init_attributes(attr)
      end

      def name
        (@name or @source_name).try(:to_sym)
      end

      def source_name
        (@source_name or @name).try(:to_s)
      end

      def worksheet
        return self if self.is_a? Worksheet
        parent = self.parent
        parent = parent.parent until parent.is_a? Worksheet or parent.nil?
        parent
      end

      def to_s
        name = (self.name.to_s == self.source_name.to_s ?
            self.name : "#{self.name} (#{self.source_name})" )
        "#{self.class.name.split('::').last}-schema #{name}"
      end

    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
spread2rdf-0.1.7 lib/spread2rdf/schema/element.rb
spread2rdf-0.1.6 lib/spread2rdf/schema/element.rb
spread2rdf-0.1.5 lib/spread2rdf/schema/element.rb
spread2rdf-0.1.4 lib/spread2rdf/schema/element.rb
spread2rdf-0.1.3 lib/spread2rdf/schema/element.rb
spread2rdf-0.1.2 lib/spread2rdf/schema/element.rb
spread2rdf-0.1.1 lib/spread2rdf/schema/element.rb
spread2rdf-0.1.0 lib/spread2rdf/schema/element.rb
spread2rdf-0.0.2 lib/spread2rdf/schema/element.rb
spread2rdf-0.0.1 lib/spread2rdf/schema/element.rb