preproc = "require"

include "number.lang"

string delim "\"" "\"" escape "\\"
string delim "'" "'"  escape "\\"
string delim "<" ">"
regexp = '/[^\n]*/'
(symbol,regexp) = `(%r)(\{(?:\\\}|#\{[[:alnum:]]+\}|[^}])*\})`

keyword = "alias|begin|BEGIN|break|case|defined|do|else|elsif|end|END|ensure|for|if|in|include|loop|next|raise|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|false|nil|self|true|__FILE__|__LINE__|and|not|or|def|class|module|catch|fail|load|throw"

comment delim '(^\=begin)' '^(\=end)' multiline

type = '(\$[#]?|@@|@)([[:word:]]+|\'|\"|/)'

# don't highlight ? and ! as symbols if they are part of a method call
normal = '[[:alnum:]]+(\?|!)'

include "symbols.lang"

# for variable interpolation, #{ is not a comment
(symbol,cbracket) = `(#)(\{)`

include "script_comment.lang"

cbracket = "{|}"

# no function highlighting for Ruby, since a method invocation
# can be written even without parenthesis
# include "function.lang"

