summaryrefslogtreecommitdiff
path: root/lib/coderay/scanners/nitro_xhtml.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/coderay/scanners/nitro_xhtml.rb')
-rw-r--r--lib/coderay/scanners/nitro_xhtml.rb136
1 files changed, 0 insertions, 136 deletions
diff --git a/lib/coderay/scanners/nitro_xhtml.rb b/lib/coderay/scanners/nitro_xhtml.rb
deleted file mode 100644
index b67b60c..0000000
--- a/lib/coderay/scanners/nitro_xhtml.rb
+++ /dev/null
@@ -1,136 +0,0 @@
-module CodeRay
-module Scanners
-
- load :html
- load :ruby
-
- # Nitro XHTML Scanner
- #
- # Alias: +nitro+
- class NitroXHTML < Scanner
-
- register_for :nitro_xhtml
- file_extension :xhtml
- title 'Nitro XHTML'
-
- KINDS_NOT_LOC = HTML::KINDS_NOT_LOC
-
- NITRO_RUBY_BLOCK = /
- <\?r
- (?>
- [^\?]*
- (?> \?(?!>) [^\?]* )*
- )
- (?: \?> )?
- |
- <ruby>
- (?>
- [^<]*
- (?> <(?!\/ruby>) [^<]* )*
- )
- (?: <\/ruby> )?
- |
- <%
- (?>
- [^%]*
- (?> %(?!>) [^%]* )*
- )
- (?: %> )?
- /mx # :nodoc:
-
- NITRO_VALUE_BLOCK = /
- \#
- (?:
- \{
- [^{}]*
- (?>
- \{ [^}]* \}
- (?> [^{}]* )
- )*
- \}?
- | \| [^|]* \|?
- | \( [^)]* \)?
- | \[ [^\]]* \]?
- | \\ [^\\]* \\?
- )
- /x # :nodoc:
-
- NITRO_ENTITY = /
- % (?: \#\d+ | \w+ ) ;
- / # :nodoc:
-
- START_OF_RUBY = /
- (?=[<\#%])
- < (?: \?r | % | ruby> )
- | \# [{(|]
- | % (?: \#\d+ | \w+ ) ;
- /x # :nodoc:
-
- CLOSING_PAREN = Hash.new { |h, p| h[p] = p } # :nodoc:
- CLOSING_PAREN.update( {
- '(' => ')',
- '[' => ']',
- '{' => '}',
- } )
-
- 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_RUBY})/o) || scan_rest) and not match.empty?
- @html_scanner.tokenize match
-
- elsif match = scan(/#{NITRO_VALUE_BLOCK}/o)
- start_tag = match[0,2]
- delimiter = CLOSING_PAREN[start_tag[1,1]]
- end_tag = match[-1,1] == delimiter ? delimiter : ''
- encoder.begin_group :inline
- encoder.text_token start_tag, :inline_delimiter
- code = match[start_tag.size .. -1 - end_tag.size]
- @ruby_scanner.tokenize code, :tokens => encoder
- encoder.text_token end_tag, :inline_delimiter unless end_tag.empty?
- encoder.end_group :inline
-
- elsif match = scan(/#{NITRO_RUBY_BLOCK}/o)
- start_tag = '<?r'
- end_tag = match[-2,2] == '?>' ? '?>' : ''
- encoder.begin_group :inline
- encoder.text_token start_tag, :inline_delimiter
- code = match[start_tag.size .. -(end_tag.size)-1]
- @ruby_scanner.tokenize code, :tokens => encoder
- encoder.text_token end_tag, :inline_delimiter unless end_tag.empty?
- encoder.end_group :inline
-
- elsif entity = scan(/#{NITRO_ENTITY}/o)
- encoder.text_token entity, :entity
-
- elsif scan(/%/)
- encoder.text_token matched, :error
-
- else
- raise_inspect 'else-case reached!', encoder
-
- end
-
- end
-
- encoder
-
- end
-
- end
-
-end
-end