Sha256: 56fe4acb58e451cb112a6bcaf4b41068ddf67bc75150a7fd231d10d0f2ebb943

Contents?: true

Size: 1.02 KB

Versions: 11

Compression:

Stored size: 1.02 KB

Contents

require 'erb'

module ROCrate
  ##
  # A representation of the `ro-crate-preview.html` file.
  class Preview < File
    IDENTIFIER = 'ro-crate-preview.html'.freeze
    DEFAULT_TEMPLATE = ::File.expand_path(::File.join(::File.dirname(__FILE__), '..', 'ro-crate-preview.html.erb'))

    ##
    # The ERB template to use when rendering the preview.
    # @return [String]
    attr_accessor :template

    def initialize(crate, properties = {})
      @template = nil
      super(crate, nil, IDENTIFIER, properties)
    end

    ##
    # Generate the crate's `ro-crate-preview.html`.
    # @return [String] The rendered HTML as a string.
    def generate
      b = crate.get_binding
      renderer = ERB.new(template || ::File.read(DEFAULT_TEMPLATE))
      renderer.result(b)
    end

    private

    def source
      Entry.new(StringIO.new(generate))
    end

    def default_properties
      {
        '@id' => IDENTIFIER,
        '@type' => 'CreativeWork',
        'about' => { '@id' => ROCrate::Crate::IDENTIFIER }
      }
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
ro-crate-0.4.10 lib/ro_crate/model/preview.rb
ro-crate-0.4.9 lib/ro_crate/model/preview.rb
ro-crate-0.4.8 lib/ro_crate/model/preview.rb
ro-crate-0.4.7 lib/ro_crate/model/preview.rb
ro-crate-0.4.6 lib/ro_crate/model/preview.rb
ro-crate-0.4.5 lib/ro_crate/model/preview.rb
ro-crate-0.4.4 lib/ro_crate/model/preview.rb
ro-crate-0.4.3 lib/ro_crate/model/preview.rb
ro-crate-0.4.2 lib/ro_crate/model/preview.rb
ro-crate-0.4.1 lib/ro_crate/model/preview.rb
ro-crate-0.4.0 lib/ro_crate/model/preview.rb