def maruku_error(s, src=nil, con=nil, recover=nil)
      policy = get_setting(:on_error)

      case policy
      when :ignore
      when :raise
        raise_error create_frame(describe_error(s, src, con, recover))
      when :warning
        tell_user create_frame(describe_error(s, src, con, recover))
      else
        raise "Unknown on_error policy: #{policy.inspect}"
      end
    end
def maruku_error(s, src=nil, con=nil, recover=nil)
      policy = get_setting(:on_error)

      case policy
      when :ignore
      when :raise
        raise_error create_frame(describe_error(s, src, con, recover))
      when :warning
        tell_user create_frame(describe_error(s, src, con, recover))
      else
        raise "Unknown on_error policy: #{policy.inspect}"
      end
    end
Properly handles a formatting error.
 All such errors go through this method.

 The behavior depends on {MaRuKu::Globals `MaRuKu::Globals[:on_error]`}.
 If this is `:warning`, this prints the error to stderr
 (or `@error_stream` if it's defined) and tries to continue.
 If `:on_error` is `:ignore`, this doesn't print anything
 and tries to continue. If it's `:raise`, this raises a {MaRuKu::Exception}.

 By default, `:on_error` is set to `:warning`.

 @overload def maruku_error(s, src = nil, con = nil)
 @param s [String] The text of the error
 @param src [#describe, nil] The source of the error
 @param con [#describe, nil] The context of the error
 @param recover [String, nil] Recovery text
 @raise [MaRuKu::Exception] If `:on_error` is set to `:raise`