Module: SlackValidBlockKit

Defined in:
lib/slack_valid_block_kit.rb,
lib/slack_valid_block_kit/config.rb,
lib/slack_valid_block_kit/builder.rb,
lib/slack_valid_block_kit/version.rb,
lib/slack_valid_block_kit/validator.rb,
lib/slack_valid_block_kit/builder/layouts.rb,
lib/slack_valid_block_kit/builder/elements.rb,
lib/slack_valid_block_kit/builder/surfaces.rb,
lib/slack_valid_block_kit/builder/compositions.rb,
lib/slack_valid_block_kit/builder/method_generator.rb

Defined Under Namespace

Modules: Builder, Validator Classes: Config

Constant Summary collapse

VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

.blocks(validate: nil) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/slack_valid_block_kit.rb', line 23

def self.blocks(validate: nil)
  blocks = yield(::SlackValidBlockKit::Builder::Runner.new)
  raise "SlackValidBlockKit.blocks must return an Array object." unless blocks.is_a?(Array)

  if validate.nil?
    if SlackValidBlockKit::Config.skip_validation.nil? || !SlackValidBlockKit::Config.skip_validation
      validate_blocks!(blocks)
    end
  elsif validate
    validate_blocks!(blocks)
  end
  blocks
end

.build(validate: nil) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/slack_valid_block_kit.rb', line 9

def self.build(validate: nil)
  hash = yield(::SlackValidBlockKit::Builder::Runner.new)
  raise "SlackValidBlockKit.build must return a Hash object." unless hash.is_a?(Hash)

  if validate.nil?
    if SlackValidBlockKit::Config.skip_validation.nil? || !SlackValidBlockKit::Config.skip_validation
      validate!(hash)
    end
  elsif validate
    validate!(hash)
  end
  hash
end

.validate(obj) ⇒ Object



37
38
39
40
41
42
43
44
# File 'lib/slack_valid_block_kit.rb', line 37

def self.validate(obj)
  this = ::SlackValidBlockKit::Validator::Runner.new
  this.validate(obj, "root", :top)
  this.validate_block_id
  this.validate_action_id
  this.validate_focus_on_load
  this.errors_by_path
end

.validate!(obj) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/slack_valid_block_kit.rb', line 46

def self.validate!(obj)
  errors_by_path = validate(obj)
  if errors_by_path.size > 0
    raise "invalid json.\n#{::SlackValidBlockKit::Validator::Error.messages(errors_by_path).join("\n")}"
  end
  true
end

.validate_blocks(obj) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
# File 'lib/slack_valid_block_kit.rb', line 54

def self.validate_blocks(obj)
  if obj.is_a?(Array)
    obj = { blocks: obj }
  end
  this = ::SlackValidBlockKit::Validator::Runner.new
  this.validate_blocks(obj, "root", :top)
  this.validate_block_id
  this.validate_action_id
  this.validate_focus_on_load
  this.errors_by_path
end

.validate_blocks!(blocks) ⇒ Object



66
67
68
69
70
71
72
# File 'lib/slack_valid_block_kit.rb', line 66

def self.validate_blocks!(blocks)
  errors_by_path = validate_blocks(blocks)
  if errors_by_path.size > 0
    raise "invalid json.\n#{::SlackValidBlockKit::Validator::Error.messages(errors_by_path).join("\n")}"
  end
  true
end