Module: SlackValidBlockKit::Validator::Layout
- Included in:
- Runner
- Defined in:
- lib/slack_valid_block_kit/validator/layout.rb
Constant Summary collapse
- ACTION_PROPERTIES =
%i(type elements block_id)
- CONTEXT_PROPERTIES =
%i(type elements block_id)
- DIVIDER_PROPERTIES =
%i(type block_id)
- FILE_PROPERTIES =
%i(type external_id source block_id)
- HEADER_PROPERTIES =
%i(type text block_id)
- IMAGE_PROPERTIES =
%i(type image_url alt_text title block_id)
- INPUT_PROPERTIES =
%i(type label element dispatch_action block_id hint optional)
- SECTION_PROPERTIES =
%i(type text block_id fields accessory)
Instance Method Summary collapse
- #validate_actions(hash, path, options = nil) ⇒ Object
- #validate_context(hash, path, options = nil) ⇒ Object
- #validate_divider(hash, path, options = nil) ⇒ Object
- #validate_file(hash, path, options = nil) ⇒ Object
- #validate_header(hash, path, options = nil) ⇒ Object
- #validate_image(hash, path, options = nil) ⇒ Object
- #validate_input(hash, path, options = nil) ⇒ Object
- #validate_section(hash, path, options = nil) ⇒ Object
Instance Method Details
#validate_actions(hash, path, options = nil) ⇒ Object
12 13 14 15 16 17 18 19 20 |
# File 'lib/slack_valid_block_kit/validator/layout.rb', line 12 def validate_actions(hash, path, = nil) validate_for_properties(hash, path, ACTION_PROPERTIES) validate_for(hash[:type], "#{path}.type", String, true, only: ["actions"]) validate_for(hash[:elements], "#{path}.elements", Array, true, max: 25) Array(hash[:elements]).each_with_index do |e, i| validate(e, "#{path}.elements[#{i}]", :action_elements) end validate_for_block_id(hash[:block_id], "#{path}.block_id") end |
#validate_context(hash, path, options = nil) ⇒ Object
22 23 24 25 26 27 28 29 30 |
# File 'lib/slack_valid_block_kit/validator/layout.rb', line 22 def validate_context(hash, path, = nil) validate_for_properties(hash, path, CONTEXT_PROPERTIES) validate_for(hash[:type], "#{path}.type", String, true, only: ["context"]) validate_for(hash[:elements], "#{path}.elements", Array, true, max: 10) Array(hash[:elements]).each_with_index do |e, i| validate(e, "#{path}.elements[#{i}]", :image_or_text) end validate_for_block_id(hash[:block_id], "#{path}.block_id") end |
#validate_divider(hash, path, options = nil) ⇒ Object
32 33 34 35 36 |
# File 'lib/slack_valid_block_kit/validator/layout.rb', line 32 def validate_divider(hash, path, = nil) validate_for_properties(hash, path, DIVIDER_PROPERTIES) validate_for(hash[:type], "#{path}.type", String, true, only: ["divider"]) validate_for_block_id(hash[:block_id], "#{path}.block_id") end |
#validate_file(hash, path, options = nil) ⇒ Object
38 39 40 41 42 43 44 45 |
# File 'lib/slack_valid_block_kit/validator/layout.rb', line 38 def validate_file(hash, path, = nil) validate_for_properties(hash, path, FILE_PROPERTIES) validate_for(hash[:type], "#{path}.type", String, true, only: ["file"]) validate_for(hash[:external_id], "#{path}.external_id", String, true) validate_for(hash[:source], "#{path}.source", String, true, only: ["remote"]) validate_for_block_id(hash[:block_id], "#{path}.block_id") end |
#validate_header(hash, path, options = nil) ⇒ Object
47 48 49 50 51 52 |
# File 'lib/slack_valid_block_kit/validator/layout.rb', line 47 def validate_header(hash, path, = nil) validate_for_properties(hash, path, HEADER_PROPERTIES) validate_for(hash[:type], "#{path}.type", String, true, only: ["header"]) validate_for_plain_text(hash[:text], "#{path}.text", true, 150) validate_for_block_id(hash[:block_id], "#{path}.block_id") end |
#validate_image(hash, path, options = nil) ⇒ Object
54 55 56 57 58 59 60 61 |
# File 'lib/slack_valid_block_kit/validator/layout.rb', line 54 def validate_image(hash, path, = nil) validate_for_properties(hash, path, IMAGE_PROPERTIES) validate_for(hash[:type], "#{path}.type", String, true, only: ["image"]) validate_for(hash[:image_url], "#{path}.image_url", String, true, max: 3000) validate_for(hash[:alt_text], "#{path}.alt_text", String, true, max: 2000) validate_for_plain_text(hash[:title], "#{path}.title", false, 2000) validate_for_block_id(hash[:block_id], "#{path}.block_id") end |
#validate_input(hash, path, options = nil) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/slack_valid_block_kit/validator/layout.rb', line 63 def validate_input(hash, path, = nil) validate_for_properties(hash, path, INPUT_PROPERTIES) validate_for(hash[:type], "#{path}.type", String, true, only: ["input"]) validate_for_plain_text(hash[:label], "#{path}.label", true, 2000) validate_for(hash[:element], "#{path}.element", Hash, true) validate(hash[:element], "#{path}.element", :input_elements) validate_for(hash[:dispatch_action], "#{path}.dispatch_action", :bool, false) validate_for_plain_text(hash[:hint], "#{path}.hint", false, 2000) validate_for(hash[:optional], "#{path}.optional", :bool, false) validate_for_block_id(hash[:block_id], "#{path}.block_id") end |
#validate_section(hash, path, options = nil) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/slack_valid_block_kit/validator/layout.rb', line 76 def validate_section(hash, path, = nil) validate_for_properties(hash, path, SECTION_PROPERTIES) validate_for(hash[:type], "#{path}.type", String, true, only: ["section"]) validate_for_text_objects(hash[:text], "#{path}.text", false, 3000) validate_for(hash[:fields], "#{path}.fields", Array, false, max: 10) Array(hash[:fields]).each_with_index do |e, i| validate_for_text_objects(e, "#{path}.fields[#{i}]", true, 2000) end if hash[:text].nil? && hash[:fields].nil? add_error(path, :require_text_or_fields) end validate_for(hash[:accessory], "#{path}.accessory", Hash, false) validate(hash[:accessory], "#{path}.accessory", :all_element_types) end |