Sha256: 129337c067684d7172fb435c5d795b9a500a7990223552ad09ac07bc49d04db0

Contents?: true

Size: 1.1 KB

Versions: 3

Compression:

Stored size: 1.1 KB

Contents

# frozen_string_literal: true

module BridgetownPrismic
  class Origin < Bridgetown::Model::Origin
    # @return [Pathname]
    attr_reader :relative_path

    attr_reader :prismic_document

    def self.handle_scheme?(scheme) = scheme == "prismic"

    def self.import_document(document) = new("prismic://#{document.type}/#{document.id}",
                                             document).read

    def initialize(id, prismic_document = nil)
      super(id)
      @relative_path = Pathname.new("#{id.delete_prefix("prismic://")}.html")
      @prismic_document = prismic_document # could be nil, so model should load preview instance
    end

    def verify_model?(klass)
      klass.prismic_custom_type.to_s == URI.parse(id).host
    end

    def read
      klass = Bridgetown::Model::Base.klass_for_id(id)
      if klass.name == "Bridgetown::Model::Base"
        raise "Could not find a specialized model class for ID `#{id}'"
      end

      @data = klass.prismic_data(self, @prismic_document)
      @data[:_id_] = id
      @data[:_origin_] = self

      @data
    end

    def exists?
      false
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
bridgetown-prismic-1.0.0 lib/bridgetown-prismic/origin.rb
bridgetown-prismic-0.3.0 lib/bridgetown-prismic/origin.rb
bridgetown-prismic-0.2.3 lib/bridgetown-prismic/origin.rb