Sha256: 763ba0f090ae02615fd699a98480d9803eafbb3b705ab9a11219a30f02529fd0

Contents?: true

Size: 1.09 KB

Versions: 9

Compression:

Stored size: 1.09 KB

Contents

# frozen_string_literal: true

module Slack
  module BlockKit
    module Layout
      # Displays message context, which can include both images and text.
      #
      # https://api.slack.com/reference/messaging/blocks#context
      class Context
        TYPE = 'context'

        attr_accessor :elements
        def initialize(block_id: nil)
          @block_id = block_id
          @elements = []

          yield(self) if block_given?
        end

        def image(url:, alt_text:)
          append(Element::Image.new(image_url: url, alt_text: alt_text))
        end

        def plain_text(text:, emoji: nil)
          append(Composition::PlainText.new(text: text, emoji: emoji))
        end

        def mrkdwn(text:, verbatim: nil)
          append(Composition::Mrkdwn.new(text: text, verbatim: verbatim))
        end

        def append(element)
          @elements << element

          self
        end

        def as_json(*)
          {
            type: TYPE,
            elements: @elements.map(&:as_json),
            block_id: @block_id
          }.compact
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
slack-ruby-block-kit-0.6.1 lib/slack/block_kit/layout/context.rb
slack-ruby-block-kit-0.6.0 lib/slack/block_kit/layout/context.rb
slack-ruby-block-kit-0.5.0 lib/slack/block_kit/layout/context.rb
slack-ruby-block-kit-0.4.0 lib/slack/block_kit/layout/context.rb
slack_block_kit-0.3.3 lib/slack/block_kit/layout/context.rb
slack_block_kit-0.3.2 lib/slack/block_kit/layout/context.rb
slack_block_kit-0.3.1 lib/slack/block_kit/layout/context.rb
slack_block_kit-0.3.0 lib/slack/block_kit/layout/context.rb
slack_block_kit-0.2.0 lib/slack/block_kit/layout/context.rb