Sha256: 936c345486673fbe92bc85b1f06af30d86d6556a7b95a683c9ae8e66fa6d6d4a

Contents?: true

Size: 871 Bytes

Versions: 4

Compression:

Stored size: 871 Bytes

Contents

require 'refinements/string_refinements'

module Dolly
  module DocumentType
    using StringRefinements

    def namespace_keys(keys)
      keys.map { |key| namespace_key key }
    end

    def namespace_key(key)
      return key if key =~ %r{^#{name_paramitized}/}
      "#{name_paramitized}/#{key}"
    end

    def base_id
      self.id.sub(%r{^#{name_paramitized}/}, '')
    end

    def name_paramitized
      class_name.split("::").last.underscore
    end

    def class_name
      is_a?(Class) ? name : self.class.name
    end

    def typed?
      respond_to?(:type)
    end

    def set_type
      return unless typed?
      write_attribute(:type, name_paramitized)
    end

    def self.included(base)
      base.extend(ClassMethods)
    end

    module ClassMethods
      def typed_model
        property :type, class_name: String
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dolly-3.1.2 lib/dolly/document_type.rb
dolly-3.1.1 lib/dolly/document_type.rb
dolly-3.1.0 lib/dolly/document_type.rb
dolly-3.0.1 lib/dolly/document_type.rb