Sha256: 8c15aeec2eb5f3b3c007d705cd25c326d0dbf8dae32e3d65e30f0b93df1106f4

Contents?: true

Size: 1.19 KB

Versions: 5

Compression:

Stored size: 1.19 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

      Bridgetown::Resource.register_extension klass unless klass.extensions_have_been_registered
      @data = klass.prismic_data(self, @prismic_document)
      @data[:_id_] = id
      @data[:_origin_] = self

      @data
    end

    def exists?
      false
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
bridgetown-prismic-0.2.2 lib/bridgetown-prismic/origin.rb
bridgetown-prismic-0.2.1 lib/bridgetown-prismic/origin.rb
bridgetown-prismic-0.2.0 lib/bridgetown-prismic/origin.rb
bridgetown-prismic-0.1.2 lib/bridgetown-prismic/origin.rb
bridgetown-prismic-0.1.1 lib/bridgetown-prismic/origin.rb