Sha256: 75cb4ba76c33b39ece616bbabea2e9c935fb46de3e8e2defc8f3e76a77add268

Contents?: true

Size: 786 Bytes

Versions: 11

Compression:

Stored size: 786 Bytes

Contents

require 'erb'

module ROCrate
  ##
  # A class to handle generation of an RO-Crate's preview HTML in an IO-like way (to fit into an Entry).
  class PreviewGenerator
    ##
    # @param preview [Preview] The RO-Crate preview object.
    def initialize(preview)
      @preview = preview
    end

    def read(*args)
      io.read(*args)
    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)
      renderer.result(b)
    end

    def template
      @preview.template || ::File.read(Preview::DEFAULT_TEMPLATE)
    end

    def crate
      @preview.crate
    end

    private

    def io
      @io ||= StringIO.new(generate)
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
ro-crate-0.5.3 lib/ro_crate/model/preview_generator.rb
ro-crate-0.5.2 lib/ro_crate/model/preview_generator.rb
ro-crate-0.5.1 lib/ro_crate/model/preview_generator.rb
ro-crate-0.5.0 lib/ro_crate/model/preview_generator.rb
ro-crate-0.4.17 lib/ro_crate/model/preview_generator.rb
ro-crate-0.4.16 lib/ro_crate/model/preview_generator.rb
ro-crate-0.4.15 lib/ro_crate/model/preview_generator.rb
ro-crate-0.4.14 lib/ro_crate/model/preview_generator.rb
ro-crate-0.4.13 lib/ro_crate/model/preview_generator.rb
ro-crate-0.4.12 lib/ro_crate/model/preview_generator.rb
ro-crate-0.4.11 lib/ro_crate/model/preview_generator.rb