module Enolib::Errors::Validation
Public Class Methods
comment_error(context, message, element)
click to toggle source
# File lib/enolib/errors/validation.rb, line 6 def self.comment_error(context, message, element) ValidationError.new( context.messages.comment_error(message), context.reporter.new(context).report_comments(element).snippet, Selections.select_comments(element) ) end
element_error(context, message, element)
click to toggle source
# File lib/enolib/errors/validation.rb, line 14 def self.element_error(context, message, element) ValidationError.new( message, context.reporter.new(context).report_element(element).snippet, Selections.select_element(element) ) end
key_error(context, message, element)
click to toggle source
# File lib/enolib/errors/validation.rb, line 22 def self.key_error(context, message, element) ValidationError.new( context.messages.key_error(message), context.reporter.new(context).report_line(element).snippet, Selections.select_key(element) ) end
missing_comment(context, element)
click to toggle source
# File lib/enolib/errors/validation.rb, line 30 def self.missing_comment(context, element) ValidationError.new( context.messages::MISSING_COMMENT, context.reporter.new(context).report_line(element).snippet, # TODO: Question-tag an empty line before an element with missing comment Selections.selection(element, :line, RANGE_BEGIN) ) end
missing_element(context, key, parent, message)
click to toggle source
# File lib/enolib/errors/validation.rb, line 38 def self.missing_element(context, key, parent, message) ValidationError.new( key ? context.messages.send(message + '_with_key', key) : context.messages.const_get(message.upcase), # TODO: Solve the upcase rather through a different generated message type, e.g. method instead of constant context.reporter.new(context).report_missing_element(parent).snippet, parent[:type] == :document ? Selections::DOCUMENT_BEGIN : Selections.selection(parent, :line, RANGE_END) ) end
missing_value(context, element)
click to toggle source
# File lib/enolib/errors/validation.rb, line 46 def self.missing_value(context, element) selection = {} if element[:type] == :field || element[:type] == :field_or_fieldset_or_list || element[:type] == :multiline_field_begin message = context.messages.missing_field_value(element[:key]) selection[:from] = if element[:ranges].has_key?(:template) Selections.cursor(element, :template, RANGE_END) elsif element[:ranges].has_key?(:element_operator) Selections.cursor(element, :element_operator, RANGE_END) else Selections.cursor(element, :line, RANGE_END) end elsif element[:type] == :fieldset_entry message = context.messages.missing_fieldset_entry_value(element[:key]) selection[:from] = Selections.cursor(element, :entry_operator, RANGE_END) elsif element[:type] == :list_item message = context.messages.missing_list_item_value(element[:parent][:key]) selection[:from] = Selections.cursor(element, :item_operator, RANGE_END) end snippet = context.reporter.new(context).report_element(element).snippet selection[:to] = if element[:type] == :field && element.has_key?(:continuations) Selections.cursor(element[:continuations].last, :line, RANGE_END) else Selections.cursor(element, :line, RANGE_END) end ValidationError.new(message, snippet, selection) end
unexpected_element(context, message, element)
click to toggle source
# File lib/enolib/errors/validation.rb, line 82 def self.unexpected_element(context, message, element) ValidationError.new( message || context.messages::UNEXPECTED_ELEMENT, context.reporter.new(context).report_element(element).snippet, Selections.select_element(element) ) end
unexpected_element_type(context, key, section, message)
click to toggle source
# File lib/enolib/errors/validation.rb, line 98 def self.unexpected_element_type(context, key, section, message) ValidationError.new( key ? context.messages.send(message + '_with_key', key) : context.messages.const_get(message.upcase), # TODO: Solve the upcase rather through a different generated message type, e.g. method instead of constant context.reporter.new(context).report_element(section).snippet, Selections.select_element(section) ) end
unexpected_multiple_elements(context, key, elements, message)
click to toggle source
# File lib/enolib/errors/validation.rb, line 90 def self.unexpected_multiple_elements(context, key, elements, message) ValidationError.new( key ? context.messages.send(message + '_with_key', key) : context.messages.const_get(message.upcase), # TODO: Solve the upcase rather through a different generated message type, e.g. method instead of constant context.reporter.new(context).report_elements(elements).snippet, Selections.select_element(elements[0]) ) end
value_error(context, message, element)
click to toggle source
# File lib/enolib/errors/validation.rb, line 106 def self.value_error(context, message, element) if element.has_key?(:mirror) snippet = context.reporter.new(context).report_line(element).snippet select = select_key(element) elsif element[:type] == :multiline_field_begin if element.has_key?(:lines) snippet = context.reporter.new(context).report_multiline_value(element).snippet select = Selections.selection(element[:lines][0], :line, RANGE_BEGIN, element[:lines][-1], :line, RANGE_END) else snippet = context.reporter.new(context).report_element(element).snippet select = Selections.selection(element, :line, RANGE_END) end else snippet = context.reporter.new(context).report_element(element).snippet select = { from: if element[:ranges].has_key?(:value) Selections.cursor(element, :value, RANGE_BEGIN) elsif element[:ranges].has_key?(:element_operator) Selections.cursor(element, :element_operator, RANGE_END) elsif element[:ranges].has_key?(:entry_operator) Selections.cursor(element, :entry_operator, RANGE_END) elsif element[:type] == :list_item Selections.cursor(element, :item_operator, RANGE_END) else # TODO: Possibly never reached - think through state permutations Selections.cursor(element, :line, RANGE_END) end, to: if element.has_key?(:continuations) Selections.cursor(element[:continuations][-1], :line, RANGE_END) elsif element[:ranges].has_key?(:value) Selections.cursor(element, :value, RANGE_END) else Selections.cursor(element, :line, RANGE_END) end } end ValidationError.new(context.messages.value_error(message), snippet, select) end