Class: Herb::Engine::Validator

Inherits:
Visitor
  • Object
show all
Defined in:
lib/herb/engine/validator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Visitor

#visit, #visit_all, #visit_cdata_node, #visit_child_nodes, #visit_document_node, #visit_erb_begin_node, #visit_erb_block_node, #visit_erb_case_match_node, #visit_erb_case_node, #visit_erb_content_node, #visit_erb_else_node, #visit_erb_end_node, #visit_erb_ensure_node, #visit_erb_for_node, #visit_erb_if_node, #visit_erb_in_node, #visit_erb_node, #visit_erb_open_tag_node, #visit_erb_render_node, #visit_erb_rescue_node, #visit_erb_strict_locals_node, #visit_erb_unless_node, #visit_erb_until_node, #visit_erb_when_node, #visit_erb_while_node, #visit_erb_yield_node, #visit_html_attribute_name_node, #visit_html_attribute_node, #visit_html_attribute_value_node, #visit_html_close_tag_node, #visit_html_comment_node, #visit_html_conditional_element_node, #visit_html_conditional_open_tag_node, #visit_html_doctype_node, #visit_html_element_node, #visit_html_omitted_close_tag_node, #visit_html_open_tag_node, #visit_html_text_node, #visit_html_virtual_close_tag_node, #visit_literal_node, #visit_node, #visit_ruby_html_attributes_splat_node, #visit_ruby_literal_node, #visit_ruby_parameter_node, #visit_ruby_render_keywords_node, #visit_ruby_render_local_node, #visit_whitespace_node, #visit_xml_declaration_node

Methods included from AST::Helpers

#erb_comment?, #erb_graphql?, #erb_output?, #erb_outputs?, #inline_ruby_comment?

Constructor Details

#initialize(enabled: true) ⇒ Validator

Returns a new instance of Validator.



8
9
10
11
12
13
# File 'lib/herb/engine/validator.rb', line 8

def initialize(enabled: true)
  super()

  @enabled = enabled
  @diagnostics = []
end

Instance Attribute Details

#diagnosticsObject (readonly)

Returns the value of attribute diagnostics.



6
7
8
# File 'lib/herb/engine/validator.rb', line 6

def diagnostics
  @diagnostics
end

#enabledObject (readonly)

Returns the value of attribute enabled.



6
7
8
# File 'lib/herb/engine/validator.rb', line 6

def enabled
  @enabled
end

Instance Method Details

#clear_diagnosticsObject



55
56
57
# File 'lib/herb/engine/validator.rb', line 55

def clear_diagnostics
  @diagnostics.clear
end

#diagnostic_count(severity = nil) ⇒ Object



59
60
61
62
63
# File 'lib/herb/engine/validator.rb', line 59

def diagnostic_count(severity = nil)
  return @diagnostics.length unless severity

  @diagnostics.count { |diagnostic| diagnostic[:severity] == severity }
end

#enabled?Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/herb/engine/validator.rb', line 15

def enabled?
  @enabled
end

#error(message, location, code: nil, source: nil) ⇒ Object



23
24
25
# File 'lib/herb/engine/validator.rb', line 23

def error(message, location, code: nil, source: nil)
  add_diagnostic(message, location, :error, code: code, source: source)
end

#errorsObject



47
48
49
# File 'lib/herb/engine/validator.rb', line 47

def errors
  @diagnostics.select { |diagnostic| diagnostic[:severity] == :error }
end

#errors?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/herb/engine/validator.rb', line 39

def errors?
  @diagnostics.any? { |diagnostic| diagnostic[:severity] == :error }
end

#hint(message, location, code: nil, source: nil) ⇒ Object



35
36
37
# File 'lib/herb/engine/validator.rb', line 35

def hint(message, location, code: nil, source: nil)
  add_diagnostic(message, location, :hint, code: code, source: source)
end

#info(message, location, code: nil, source: nil) ⇒ Object



31
32
33
# File 'lib/herb/engine/validator.rb', line 31

def info(message, location, code: nil, source: nil)
  add_diagnostic(message, location, :info, code: code, source: source)
end

#validate(node) ⇒ Object



19
20
21
# File 'lib/herb/engine/validator.rb', line 19

def validate(node)
  visit(node)
end

#warning(message, location, code: nil, source: nil) ⇒ Object



27
28
29
# File 'lib/herb/engine/validator.rb', line 27

def warning(message, location, code: nil, source: nil)
  add_diagnostic(message, location, :warning, code: code, source: source)
end

#warningsObject



51
52
53
# File 'lib/herb/engine/validator.rb', line 51

def warnings
  @diagnostics.select { |diagnostic| diagnostic[:severity] == :warning }
end

#warnings?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/herb/engine/validator.rb', line 43

def warnings?
  @diagnostics.any? { |diagnostic| diagnostic[:severity] == :warning }
end