summaryrefslogtreecommitdiff
path: root/lib/coderay/rouge_scanner.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/coderay/rouge_scanner.rb')
-rw-r--r--lib/coderay/rouge_scanner.rb49
1 files changed, 49 insertions, 0 deletions
diff --git a/lib/coderay/rouge_scanner.rb b/lib/coderay/rouge_scanner.rb
new file mode 100644
index 0000000..b08d7fa
--- /dev/null
+++ b/lib/coderay/rouge_scanner.rb
@@ -0,0 +1,49 @@
+require 'set'
+require 'coderay/rouge_scanner_dsl'
+
+module CodeRay
+ module Scanners
+ class RougeScanner < Scanner
+ require 'rouge'
+ include Rouge::Token::Tokens
+
+ extend RougeScannerDSL
+
+ class << self
+ def define_scan_tokens!
+ if ENV['PUTS']
+ puts CodeRay.scan(scan_tokens_code, :ruby).terminal
+ puts "callbacks: #{callbacks.size}"
+ end
+
+ class_eval <<-RUBY
+def scan_tokens encoder, options
+ @encoder = encoder
+#{ scan_tokens_code.chomp.gsub(/^/, ' ') }
+end
+ RUBY
+ end
+ end
+
+ def scan_tokens tokens, options
+ self.class.define_scan_tokens!
+
+ scan_tokens tokens, options
+ end
+
+ protected
+
+ def setup
+ @state = :root
+ end
+
+ def close_groups encoder, states
+ # TODO
+ end
+
+ def token token
+ @encoder.text_token @match, token
+ end
+ end
+ end
+end \ No newline at end of file