Module: SlackValidBlockKit::Validator::Element
- Included in:
- Runner
- Defined in:
- lib/slack_valid_block_kit/validator/element.rb
Constant Summary collapse
- BUTTON_PROPERTIES =
i(type text action_id url value style confirm accessibility_label)
- CHECKBOXES_PROPERTIES =
i(type action_id confirm focus_on_load)
- DATEPICKER_PROPERTIES =
i(type action_id placeholder initial_date confirm focus_on_load)
- IMAGE_PROPERTIES =
i(type image_url alt_text)
- OVERFLOW_PROPERTIES =
i(type action_id confirm)
- PLAIN_TEXT_INPUT_PROPERTIES =
i(type action_id placeholder initial_value multiline min_length max_length dispatch_action_config focus_on_load)
- RADIO_BUTTONS_PROPERTIES =
i(type action_id initial_option confirm focus_on_load)
- TIMEPICKER_PROPERTIES =
i(type action_id placeholder initial_time confirm focus_on_load)
Instance Method Summary collapse
- #validate_button(hash, path, options = nil) ⇒ Object
- #validate_checkboxes(hash, path, options = nil) ⇒ Object
- #validate_datepicker(hash, path, options = nil) ⇒ Object
- #validate_image(hash, path, options = nil) ⇒ Object
- #validate_overflow(hash, path, options = nil) ⇒ Object
- #validate_plain_text_input(hash, path, options = nil) ⇒ Object
- #validate_radio_buttons(hash, path, options = nil) ⇒ Object
- #validate_timepicker(hash, path, options = nil) ⇒ Object
Instance Method Details
#validate_button(hash, path, options = nil) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/slack_valid_block_kit/validator/element.rb', line 13 def (hash, path, = nil) validate_for_properties(hash, path, BUTTON_PROPERTIES) validate_for(hash[:type], "#{path}.type", String, true, only: ["button"]) validate_for_plain_text(hash[:text], "#{path}.text", true, 75) validate_for_action_id(hash[:action_id], "#{path}.action_id") validate_for(hash[:url], "#{path}.url", String, false, max: 3000) validate_for(hash[:value], "#{path}.value", String, false, max: 2000) validate_for(hash[:style], "#{path}.style", String, false, only: %w(primary danger)) validate_for(hash[:confirm], "#{path}.confirm", Hash, false) validate_confirmation(hash[:confirm], "#{path}.confirm") unless hash[:confirm].nil? validate_for(hash[:accessibility_label], "#{path}.accessibility_label", String, false, max: 75) end |
#validate_checkboxes(hash, path, options = nil) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/slack_valid_block_kit/validator/element.rb', line 26 def validate_checkboxes(hash, path, = nil) validate_for_properties(hash, path, CHECKBOXES_PROPERTIES) validate_for(hash[:type], "#{path}.type", String, true, only: ["checkboxes"]) validate_for(hash[:options], "#{path}.options", Array, true, max: 10) = Array(hash[:options]) .each_with_index do |e, i| validate_option(e, "#{path}.options[#{i}]", { text_type: :text_objects }) end validate_for(hash[:initial_options], "#{path}.initial_options", Array, false, max: .size, only: ) validate_common_for_input(hash, path, ) end |
#validate_datepicker(hash, path, options = nil) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/slack_valid_block_kit/validator/element.rb', line 40 def validate_datepicker(hash, path, = nil) validate_for_properties(hash, path, DATEPICKER_PROPERTIES) validate_for(hash[:type], "#{path}.type", String, true, only: ["datepicker"]) validate_for_plain_text(hash[:placeholder], "#{path}.placeholder", false, 150) validate_for(hash[:initial_date], "#{path}.initial_date", String, false) if hash[:initial_date].is_a?(String) && !hash[:initial_date] =~ /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1])$/ add_error("#{path}.initial_date", :invalid_format) end validate_common_for_input(hash, path, ) end |
#validate_image(hash, path, options = nil) ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/slack_valid_block_kit/validator/element.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) validate_for(hash[:alt_text], "#{path}.alt_text", String, true) end |
#validate_overflow(hash, path, options = nil) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/slack_valid_block_kit/validator/element.rb', line 62 def validate_overflow(hash, path, = nil) validate_for_properties(hash, path, OVERFLOW_PROPERTIES) validate_for(hash[:type], "#{path}.type", String, true, only: ["overflow"]) validate_for_action_id(hash[:action_id], "#{path}.action_id") validate_for(hash[:options], "#{path}.options", Array, true, max: 5, min: 2) = Array(hash[:options]) .each_with_index do |e, i| validate_option(e, "#{path}.options[#{i}]", { text_type: :text_objects }) end validate_for(hash[:confirm], "#{path}.confirm", Hash, false) validate_confirmation(hash[:confirm], "#{path}.confirm") unless hash[:confirm].nil? end |
#validate_plain_text_input(hash, path, options = nil) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/slack_valid_block_kit/validator/element.rb', line 77 def validate_plain_text_input(hash, path, = nil) validate_for_properties(hash, path, PLAIN_TEXT_INPUT_PROPERTIES) validate_for(hash[:type], "#{path}.type", String, true, only: ["plain_text_input"]) validate_for_action_id(hash[:action_id], "#{path}.action_id") validate_for_plain_text(hash[:placeholder], "#{path}.placeholder", false, 150) validate_for(hash[:initial_value], "#{path}.initial_value", String, false) validate_for(hash[:multiline], "#{path}.multiline", :bool, false) validate_for(hash[:min_length], "#{path}.min_length", Integer, false, max: 3000) validate_for(hash[:max_length], "#{path}.max_length", Integer, false) validate_for(hash[:dispatch_action_config], "#{path}.dispatch_action_config", Hash, false) validate_dispatch_action_config(hash[:dispatch_action_config], "#{path}.dispatch_action_config") unless hash[:dispatch_action_config].nil? validate_for_focus_on_load(hash[:focus_on_load], "#{path}.focus_on_load") end |
#validate_radio_buttons(hash, path, options = nil) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/slack_valid_block_kit/validator/element.rb', line 93 def (hash, path, = nil) validate_for_properties(hash, path, RADIO_BUTTONS_PROPERTIES) validate_for(hash[:type], "#{path}.type", String, true, only: ["radio_buttons"]) validate_for(hash[:options], "#{path}.options", Array, true, max: 10) = Array(hash[:options]) .each_with_index do |e, i| validate_option(e, "#{path}.options[#{i}]", { text_type: :text_objects }) end validate_for(hash[:initial_options], "#{path}.initial_options", Array, false, max: .size, only: ) validate_common_for_input(hash, path, ) end |
#validate_timepicker(hash, path, options = nil) ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/slack_valid_block_kit/validator/element.rb', line 107 def validate_timepicker(hash, path, = nil) validate_for_properties(hash, path, TIMEPICKER_PROPERTIES) validate_for(hash[:type], "#{path}.type", String, true, only: ["timepicker"]) validate_for_plain_text(hash[:placeholder], "#{path}.placeholder", false, 150) validate_for(hash[:initial_time], "#{path}.initial_time", String, false) if hash[:initial_time].is_a?(String) && !hash[:initial_time] =~ /^(0\d|1[0-2])-[0-5]\d$/ add_error("#{path}.initial_time", :invalid_format) end validate_common_for_input(hash, path, ) end |