Class: Canvas::Validator::CustomTypeLayoutSchema

Inherits:
Object
  • Object
show all
Defined in:
lib/canvas/validators/custom_type_layout_schema.rb

Overview

:documented: This class is used to validate a layout definition for a custom type. Custom type layouts use a flat array of elements (unlike block layouts which use tabs).

Example of a valid custom type layout definition: { "attributes" => [ { "name" => "question", "type" => "string" }, { "name" => "answer", "type" => "text" }, { "name" => "show_icon", "type" => "boolean" } ], "layout" => [ "question", { "type" => "accordion", "label" => "Advanced", "elements" => [ "answer", { "type" => "attribute", "name" => "show_icon" } ] } ] }

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(schema:) ⇒ CustomTypeLayoutSchema

Returns a new instance of CustomTypeLayoutSchema.



34
35
36
37
# File 'lib/canvas/validators/custom_type_layout_schema.rb', line 34

def initialize(schema:)
  @schema = schema
  @errors = []
end

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors.



32
33
34
# File 'lib/canvas/validators/custom_type_layout_schema.rb', line 32

def errors
  @errors
end

Instance Method Details

#validateObject



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/canvas/validators/custom_type_layout_schema.rb', line 39

def validate
  @errors = []

  if ensure_valid_format
    ensure_no_unrecognized_keys
    ensure_no_duplicate_keys
    ensure_accordion_toggles_are_valid
  end

  @errors.empty?
end