Sha256: 2971a35841631517dc678f8d250bd8fa37b642a2e6ae096f4c98003a2d22ef35

Contents?: true

Size: 994 Bytes

Versions: 6

Compression:

Stored size: 994 Bytes

Contents

# frozen_string_literal: true

module Pennyworth
  module Serializers
    # Serializes a htmx presenter for parsing by Alfred script filters.
    class HTMX
      def initialize presenter
        @presenter = presenter
      end

      def to_h
        {
          uid: presenter.id,
          title: presenter.label,
          subtitle: presenter.description,
          arg: site_url,
          quicklookurl: site_url,
          mods: modifications,
          text:
        }
      end

      private

      attr_reader :presenter

      def modifications
        {
          alt: modification(presenter.label, "Copy label."),
          cmd: modification(presenter.description, "Copy description.")
        }
      end

      def modification argument, subtitle
        {
          subtitle:,
          arg: argument
        }
      end

      def text
        {
          copy: site_url,
          largetype: site_url
        }
      end

      def site_url = presenter.uri
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
pennyworth-17.8.0 lib/pennyworth/serializers/htmx.rb
pennyworth-17.7.0 lib/pennyworth/serializers/htmx.rb
pennyworth-17.6.0 lib/pennyworth/serializers/htmx.rb
pennyworth-17.5.0 lib/pennyworth/serializers/htmx.rb
pennyworth-17.4.1 lib/pennyworth/serializers/htmx.rb
pennyworth-17.4.0 lib/pennyworth/serializers/htmx.rb