slack-ruby-block-kit 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +12 -0
- data/Gemfile.lock +1 -1
- data/lib/slack/block_kit.rb +45 -1
- data/lib/slack/block_kit/layout/image.rb +1 -4
- data/lib/slack/block_kit/layout/section.rb +1 -1
- data/lib/slack/surfaces/home.rb +35 -0
- data/lib/slack/surfaces/message.rb +34 -0
- data/lib/slack/surfaces/modal.rb +76 -0
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 31d357b44cc9c6e928a1ddc3e469393befde7bcc565416167e76767835551115
|
4
|
+
data.tar.gz: 942fb2311a0e388e7fe4d2fe40a76b2c398583fe06facdac05547b2d3102b6b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 93c87de2988ede207c6950fd00ed7c68a84cb30cefeeeb105ce8309595f7135ef5db5ed3a9fa2ebf02e06b0744c0633ac3cd551ac9d93c43462ca1c8a1cb9d9f
|
7
|
+
data.tar.gz: 591a9b52614a626dccbe11dd1ddbf3ec6114f54f509209643d7e6eeac5a213d2e1262842c345ffab18af86e58fecec90ea7f5372403a2f8a03f36e131b5933dc
|
data/.rubocop.yml
CHANGED
@@ -53,3 +53,15 @@ Style/HashTransformValues:
|
|
53
53
|
|
54
54
|
Style/SlicingWithRange:
|
55
55
|
Enabled: true
|
56
|
+
|
57
|
+
Lint/MixedRegexpCaptureTypes:
|
58
|
+
Enabled: true
|
59
|
+
|
60
|
+
Style/RedundantFetchBlock:
|
61
|
+
Enabled: true
|
62
|
+
|
63
|
+
Style/RedundantRegexpCharacterClass:
|
64
|
+
Enabled: true
|
65
|
+
|
66
|
+
Style/RedundantRegexpEscape:
|
67
|
+
Enabled: true
|
data/Gemfile.lock
CHANGED
data/lib/slack/block_kit.rb
CHANGED
@@ -6,12 +6,13 @@ module Slack
|
|
6
6
|
module Element; end
|
7
7
|
module Layout; end
|
8
8
|
|
9
|
-
VERSION = '0.
|
9
|
+
VERSION = '0.9.0'
|
10
10
|
|
11
11
|
Dir[File.join(__dir__, 'block_kit', 'composition', '*.rb')].sort.each { |file| require file }
|
12
12
|
Dir[File.join(__dir__, 'block_kit', 'element', '*.rb')].sort.each { |file| require file }
|
13
13
|
Dir[File.join(__dir__, 'block_kit', 'layout', '*.rb')].sort.each { |file| require file }
|
14
14
|
Dir[File.join(__dir__, 'block_kit', '*.rb')].sort.each { |file| require file }
|
15
|
+
Dir[File.join(__dir__, 'surfaces', '*.rb')].sort.each { |file| require file }
|
15
16
|
|
16
17
|
module_function
|
17
18
|
|
@@ -22,5 +23,48 @@ module Slack
|
|
22
23
|
|
23
24
|
blocks
|
24
25
|
end
|
26
|
+
|
27
|
+
def home(blocks: nil,
|
28
|
+
private_metadata: nil, callback_id: nil, external_id: nil)
|
29
|
+
home_surface = Slack::Surfaces::Home.new(blocks: blocks,
|
30
|
+
private_metadata: private_metadata,
|
31
|
+
callback_id: callback_id,
|
32
|
+
external_id: external_id)
|
33
|
+
|
34
|
+
yield(home_surface) if block_given?
|
35
|
+
|
36
|
+
home_surface
|
37
|
+
end
|
38
|
+
|
39
|
+
def modal(title: nil,
|
40
|
+
blocks: nil,
|
41
|
+
private_metadata: nil, callback_id: nil, external_id: nil,
|
42
|
+
clear_on_close: nil, notify_on_close: nil)
|
43
|
+
modal_surface = Slack::Surfaces::Modal.new(title: title,
|
44
|
+
blocks: blocks,
|
45
|
+
private_metadata: private_metadata,
|
46
|
+
callback_id: callback_id,
|
47
|
+
external_id: external_id,
|
48
|
+
clear_on_close: clear_on_close,
|
49
|
+
notify_on_close: notify_on_close)
|
50
|
+
|
51
|
+
yield(modal_surface) if block_given?
|
52
|
+
|
53
|
+
modal_surface
|
54
|
+
end
|
55
|
+
|
56
|
+
def message(blocks: nil, channel: nil, thread_ts: nil, as_user: nil, text: nil)
|
57
|
+
message_surface = Slack::Surfaces::Message.new(
|
58
|
+
blocks: blocks,
|
59
|
+
channel: channel,
|
60
|
+
thread_ts: thread_ts,
|
61
|
+
text: text,
|
62
|
+
as_user: as_user
|
63
|
+
)
|
64
|
+
|
65
|
+
yield(message_surface) if block_given?
|
66
|
+
|
67
|
+
message_surface
|
68
|
+
end
|
25
69
|
end
|
26
70
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Slack
|
4
|
+
module Surfaces
|
5
|
+
# The Home tab is a persistent, yet dynamic interface
|
6
|
+
# for apps that lives within the App Home.
|
7
|
+
#
|
8
|
+
# https://api.slack.com/surfaces#tabs
|
9
|
+
# https://api.slack.com/reference/surfaces/views
|
10
|
+
class Home
|
11
|
+
TYPE = 'home'
|
12
|
+
|
13
|
+
def initialize(blocks: nil,
|
14
|
+
private_metadata: nil, callback_id: nil, external_id: nil)
|
15
|
+
@blocks = blocks || Slack::BlockKit::Blocks.new
|
16
|
+
|
17
|
+
@private_metadata = private_metadata
|
18
|
+
@callback_id = callback_id
|
19
|
+
@external_id = external_id
|
20
|
+
end
|
21
|
+
|
22
|
+
attr_reader :blocks
|
23
|
+
|
24
|
+
def as_json(*)
|
25
|
+
{
|
26
|
+
type: TYPE,
|
27
|
+
blocks: @blocks.as_json,
|
28
|
+
private_metadata: @private_metadata,
|
29
|
+
callback_id: @callback_id,
|
30
|
+
external_id: @external_id
|
31
|
+
}.compact
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Slack
|
4
|
+
module Surfaces
|
5
|
+
# App-published messages are dynamic yet transient spaces.
|
6
|
+
# They allow users to complete workflows among their Slack conversations.
|
7
|
+
#
|
8
|
+
# https://api.slack.com/surfaces#messages
|
9
|
+
# https://api.slack.com/messaging/composing#complex_layouts
|
10
|
+
class Message
|
11
|
+
TYPE = 'message'
|
12
|
+
|
13
|
+
def initialize(blocks: nil, text: nil, channel: nil, thread_ts: nil, as_user: nil)
|
14
|
+
@blocks = blocks || Slack::BlockKit::Blocks.new
|
15
|
+
@channel = channel
|
16
|
+
@thread_ts = thread_ts
|
17
|
+
@as_user = as_user
|
18
|
+
@text = text
|
19
|
+
end
|
20
|
+
|
21
|
+
attr_reader :blocks
|
22
|
+
|
23
|
+
def as_json(*)
|
24
|
+
{
|
25
|
+
channel: @channel,
|
26
|
+
thread_ts: @thread_ts,
|
27
|
+
as_user: @as_user,
|
28
|
+
text: @text,
|
29
|
+
blocks: @blocks.as_json
|
30
|
+
}.compact
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Slack
|
4
|
+
module Surfaces
|
5
|
+
# Modals provide focused spaces ideal for requesting and collecting data from users,
|
6
|
+
# or temporarily displaying dynamic and interactive information.
|
7
|
+
#
|
8
|
+
# https://api.slack.com/surfaces#modals
|
9
|
+
# https://api.slack.com/reference/surfaces/views
|
10
|
+
#
|
11
|
+
# @param title [String] title is required. Must be set as an initial argument
|
12
|
+
# or using #title for detail setup
|
13
|
+
#
|
14
|
+
class Modal
|
15
|
+
TYPE = 'modal'
|
16
|
+
|
17
|
+
def initialize(
|
18
|
+
title: nil,
|
19
|
+
blocks: nil,
|
20
|
+
private_metadata: nil,
|
21
|
+
callback_id: nil,
|
22
|
+
external_id: nil,
|
23
|
+
clear_on_close: nil,
|
24
|
+
notify_on_close: nil
|
25
|
+
)
|
26
|
+
@blocks = blocks || Slack::BlockKit::Blocks.new
|
27
|
+
|
28
|
+
@private_metadata = private_metadata
|
29
|
+
@callback_id = callback_id
|
30
|
+
@external_id = external_id
|
31
|
+
|
32
|
+
@clear_on_close = clear_on_close
|
33
|
+
@notify_on_close = notify_on_close
|
34
|
+
|
35
|
+
@title = Slack::BlockKit::Composition::PlainText.new(text: title) if title
|
36
|
+
|
37
|
+
@close, @submit = nil
|
38
|
+
end
|
39
|
+
|
40
|
+
attr_reader :blocks
|
41
|
+
|
42
|
+
def title(text:, emoji: nil)
|
43
|
+
@title = Slack::BlockKit::Composition::PlainText.new(text: text, emoji: emoji)
|
44
|
+
|
45
|
+
self
|
46
|
+
end
|
47
|
+
|
48
|
+
def close(text:, emoji: nil)
|
49
|
+
@close = Slack::BlockKit::Composition::PlainText.new(text: text, emoji: emoji)
|
50
|
+
|
51
|
+
self
|
52
|
+
end
|
53
|
+
|
54
|
+
def submit(text:, emoji: nil)
|
55
|
+
@submit = Slack::BlockKit::Composition::PlainText.new(text: text, emoji: emoji)
|
56
|
+
|
57
|
+
self
|
58
|
+
end
|
59
|
+
|
60
|
+
def as_json(*) # rubocop:disable Metrics/MethodLength
|
61
|
+
{
|
62
|
+
type: TYPE,
|
63
|
+
blocks: @blocks.as_json,
|
64
|
+
title: @title&.as_json,
|
65
|
+
close: @close&.as_json,
|
66
|
+
submit: @submit&.as_json,
|
67
|
+
clear_on_close: @clear_on_close,
|
68
|
+
notify_on_close: @notify_on_close,
|
69
|
+
private_metadata: @private_metadata,
|
70
|
+
callback_id: @callback_id,
|
71
|
+
external_id: @external_id
|
72
|
+
}.compact
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slack-ruby-block-kit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Gregg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -186,6 +186,9 @@ files:
|
|
186
186
|
- lib/slack/block_kit/layout/input.rb
|
187
187
|
- lib/slack/block_kit/layout/section.rb
|
188
188
|
- lib/slack/block_kit/layout/section/multi_select_elements.rb
|
189
|
+
- lib/slack/surfaces/home.rb
|
190
|
+
- lib/slack/surfaces/message.rb
|
191
|
+
- lib/slack/surfaces/modal.rb
|
189
192
|
- slack-ruby-block-kit.gemspec
|
190
193
|
homepage: https://github.com/CGA1123/slack-ruby-block-kit
|
191
194
|
licenses:
|
@@ -207,7 +210,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
207
210
|
- !ruby/object:Gem::Version
|
208
211
|
version: '0'
|
209
212
|
requirements: []
|
210
|
-
rubygems_version: 3.
|
213
|
+
rubygems_version: 3.0.3
|
211
214
|
signing_key:
|
212
215
|
specification_version: 4
|
213
216
|
summary: A ruby wrapper for Slack's Block Kit
|