Sha256: e38b83761fb92125d1565570e8193da1bd25e1eca9426b5e04d410e8bb8834dd

Contents?: true

Size: 1.4 KB

Versions: 435

Compression:

Stored size: 1.4 KB

Contents

module GovukPublishingComponents
  module Presenters
    class DatasetSchema
      attr_reader :page

      def initialize(page)
        @page = page
      end

      def structured_data
        # http://schema.org/Dataset
        data = CreativeWorkSchema.new(@page).structured_data
          .merge(distribution)
          .merge(description)
          .merge(name)
        data["@type"] = "Dataset"
        data
      end

    private

      def distribution
        return {} unless page.attachments

        {
          "distribution" => page.attachments.map { |a| present_attachment(a.with_indifferent_access) }.compact,
        }
      end

      def description
        descr = page.body || page.description
        return {} unless descr

        {
          "description" => descr.slice(0..4999),
        }
      end

      def name
        {
          "name" => page.title,
        }
      end

      def present_attachment(attachment)
        title = attachment[:title]
        url = attachment[:url]
        return unless title
        return unless url

        case attachment[:attachment_type]
        when "external", "html"
          {
            "name" => title,
            "url" => url,
          }
        when "file"
          {
            "name" => title,
            "contentUrl" => url,
            "encodingFormat" => attachment[:content_type],
          }.compact
        end
      end
    end
  end
end

Version data entries

435 entries across 435 versions & 1 rubygems

Version Path
govuk_publishing_components-55.1.0 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-55.0.1 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-55.0.0 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-54.0.1 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-54.0.0 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-53.0.0 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-52.1.0 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-52.0.0 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-51.2.1 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-51.2.0 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-51.1.1 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-51.1.0 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-51.0.0 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-50.0.1 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-50.0.0 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-49.1.0 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-49.0.0 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-48.0.0 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-47.0.0 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
govuk_publishing_components-46.4.0 lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb