Mercurial > hg > soundsoftware-site
view vendor/gems/coderay-1.0.0/lib/coderay/scanners/erb.rb @ 1082:997f6d7738f7 bug_531
In repo controller entry action, show the page for the file even if it's binary (so user still has access to history etc links). This makes it possible to use the entry action as the default when a file is clicked on
author | Chris Cannam <chris.cannam@soundsoftware.ac.uk> |
---|---|
date | Thu, 22 Nov 2012 18:04:17 +0000 |
parents | cbb26bc654de |
children |
line wrap: on
line source
module CodeRay module Scanners load :html load :ruby # Scanner for HTML ERB templates. class ERB < Scanner register_for :erb title 'HTML ERB Template' KINDS_NOT_LOC = HTML::KINDS_NOT_LOC ERB_RUBY_BLOCK = / (<%(?!%)[-=\#]?) ((?> [^\-%]* # normal* (?> # special (?: %(?!>) | -(?!%>) ) [^\-%]* # normal* )* )) ((?: -?%> )?) /x # :nodoc: START_OF_ERB = / <%(?!%) /x # :nodoc: protected def setup @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true end def reset_instance super @html_scanner.reset end def scan_tokens encoder, options until eos? if (match = scan_until(/(?=#{START_OF_ERB})/o) || scan_rest) and not match.empty? @html_scanner.tokenize match, :tokens => encoder elsif match = scan(/#{ERB_RUBY_BLOCK}/o) start_tag = self[1] code = self[2] end_tag = self[3] encoder.begin_group :inline encoder.text_token start_tag, :inline_delimiter if start_tag == '<%#' encoder.text_token code, :comment else @ruby_scanner.tokenize code, :tokens => encoder end unless code.empty? encoder.text_token end_tag, :inline_delimiter unless end_tag.empty? encoder.end_group :inline else raise_inspect 'else-case reached!', encoder end end encoder end end end end