mirror of
https://github.com/haml/haml.git
synced 2022-11-09 12:33:31 -05:00
61 lines
3.1 KiB
Ruby
61 lines
3.1 KiB
Ruby
module Haml
|
|
# An exception raised by Haml code.
|
|
class Error < StandardError
|
|
|
|
MESSAGES = {
|
|
:bad_script_indent => '"%s" is indented at wrong level: expected %d, but was at %d.',
|
|
:cant_run_filter => 'Can\'t run "%s" filter; you must require its dependencies first',
|
|
:cant_use_tabs_and_spaces => "Indentation can't use both tabs and spaces.",
|
|
:deeper_indenting => "The line was indented %d levels deeper than the previous line.",
|
|
:filter_not_defined => 'Filter "%s" is not defined.',
|
|
:gem_install_filter_deps => '"%s" filter\'s %s dependency missing: try installing it or adding it to your Gemfile',
|
|
:illegal_element => "Illegal element: classes and ids must have values.",
|
|
:illegal_nesting_content => "Illegal nesting: nesting within a tag that already has content is illegal.",
|
|
:illegal_nesting_header => "Illegal nesting: nesting within a header command is illegal.",
|
|
:illegal_nesting_line => "Illegal nesting: content can't be both given on the same line as %%%s and nested within it.",
|
|
:illegal_nesting_plain => "Illegal nesting: nesting within plain text is illegal.",
|
|
:illegal_nesting_self_closing => "Illegal nesting: nesting within a self-closing tag is illegal.",
|
|
:inconsistent_indentation => "Inconsistent indentation: %s used for indentation, but the rest of the document was indented using %s.",
|
|
:indenting_at_start => "Indenting at the beginning of the document is illegal.",
|
|
:install_haml_contrib => 'To use the "%s" filter, please install the haml-contrib gem.',
|
|
:invalid_attribute_list => 'Invalid attribute list: %s.',
|
|
:invalid_filter_name => 'Invalid filter name ":%s".',
|
|
:invalid_tag => 'Invalid tag: "%s".',
|
|
:missing_if => 'Got "%s" with no preceding "if"',
|
|
:no_ruby_code => "There's no Ruby code for %s to evaluate.",
|
|
:self_closing_content => "Self-closing tags can't have content.",
|
|
:unbalanced_brackets => 'Unbalanced brackets.',
|
|
:no_end => <<-END
|
|
You don't need to use "- end" in Haml. Un-indent to close a block:
|
|
- if foo?
|
|
%strong Foo!
|
|
- else
|
|
Not foo.
|
|
%p This line is un-indented, so it isn't part of the "if" block
|
|
END
|
|
}
|
|
|
|
def self.message(key, *args)
|
|
string = MESSAGES[key] or raise "[HAML BUG] No error messages for #{key}"
|
|
(args.empty? ? string : string % args).rstrip
|
|
end
|
|
|
|
# The line of the template on which the error occurred.
|
|
#
|
|
# @return [Fixnum]
|
|
attr_reader :line
|
|
|
|
# @param message [String] The error message
|
|
# @param line [Fixnum] See \{#line}
|
|
def initialize(message = nil, line = nil)
|
|
super(message)
|
|
@line = line
|
|
end
|
|
end
|
|
|
|
# SyntaxError is the type of exception raised when Haml encounters an
|
|
# ill-formatted document.
|
|
# It's not particularly interesting,
|
|
# except in that it's a subclass of {Haml::Error}.
|
|
class SyntaxError < Error; end
|
|
end
|