summaryrefslogtreecommitdiff
path: root/demo
diff options
context:
space:
mode:
authormurphy <murphy@rubychan.de>2005-10-01 06:04:52 +0000
committermurphy <murphy@rubychan.de>2005-10-01 06:04:52 +0000
commit3d8868dd0b9898d589ecdff5151ed5d47956f937 (patch)
tree19a1ed947e24145818d483b3c0211a44d10f557f /demo
parentc194637b0d9af5ee756c5efa0942fe8cc09769e5 (diff)
downloadcoderay-3d8868dd0b9898d589ecdff5151ed5d47956f937.tar.gz
Demos updated, rewritten, enhanced, tested.
Some code cleanups. Bugs fixed, scanner and encoder improved: count.rb: marked Streamable html_css.rb: style for inline numbers html.rb: changed options; :line_numbers_offset is now :line_number_start html_output.rb: offset for inline numbers fixed html.rb: token text no longer changed by gsub! while highlighting (this is even faster!) text.rb, plugin.rb: reindented ruby.rb: eleminated multiple assignments for speed tokens.rb: reindented, Tokens#to_s added, #<< returns self Plugin system: bugs fixed, error messages improved.
Diffstat (limited to 'demo')
-rw-r--r--demo/demo_global_vars.rb8
-rw-r--r--demo/demo_html2.rb11
-rw-r--r--demo/demo_load_encoder.rb8
-rw-r--r--demo/demo_more.rb4
-rw-r--r--demo/demo_scanner.rb34
-rw-r--r--demo/demo_server.rb4
-rw-r--r--demo/demo_stream.rb27
-rw-r--r--demo/demo_stream2.rb2
8 files changed, 73 insertions, 25 deletions
diff --git a/demo/demo_global_vars.rb b/demo/demo_global_vars.rb
index 2bacfe5..8066d67 100644
--- a/demo/demo_global_vars.rb
+++ b/demo/demo_global_vars.rb
@@ -5,11 +5,9 @@ text = $bla.test(...)
CODE
require 'coderay'
-require 'erb'
-include ERB::Util
tokens = CodeRay.scan code, :ruby
-tokens.each_text_token { |text, kind| text.replace h(text) }
-tokens.each(:global_variable) { |text, kind| text.replace '<span class="glob-var">%s</span>' % text }
+tokens.each_text_token { |text, kind| text.upcase! }
+tokens.each(:global_variable) { |text, kind| text.replace '<--%s-->' % text }
-puts tokens.text
+print tokens
diff --git a/demo/demo_html2.rb b/demo/demo_html2.rb
index 0982ad8..7ce9d60 100644
--- a/demo/demo_html2.rb
+++ b/demo/demo_html2.rb
@@ -1,4 +1,11 @@
require 'coderay'
-require 'coderay/encoders/html'
-puts CodeRay["puts CodeRay['...', :ruby]", :ruby].div
+# scan this file
+tokens = CodeRay.scan(File.read($0) * 1, :ruby)
+
+# output it with two styles of line numbers
+out = tokens.div(:line_numbers => :table)
+out << '<hr />'
+out << tokens.div(:line_numbers => :inline, :line_number_start => 8)
+
+puts out.page
diff --git a/demo/demo_load_encoder.rb b/demo/demo_load_encoder.rb
index 3c85463..4861ee7 100644
--- a/demo/demo_load_encoder.rb
+++ b/demo/demo_load_encoder.rb
@@ -7,7 +7,11 @@ rescue
end
yaml_encoder = CodeRay::Encoders[:yaml]
-puts 'Now it is loaded.'
+print 'Now it is loaded: '
+p yaml_encoder
+puts 'See?'
-p yaml_encoder == CodeRay::Encoders::YAML #-> true
+tokens_encoder = require_plugin 'CodeRay::Encoders/tokens'
+print 'Require is also possible: '
+p tokens_encoder
puts 'See?'
diff --git a/demo/demo_more.rb b/demo/demo_more.rb
index 7ebf5c3..5056842 100644
--- a/demo/demo_more.rb
+++ b/demo/demo_more.rb
@@ -1,13 +1,11 @@
-require 'rubygems'
-$: << '..'
require 'coderay'
-require 'benchmark'
c, ruby = DATA.read.split(/^---$/)
DATA.rewind
me = DATA.read[/.*^__END__$/m]
$input = c + ruby + me
+require 'benchmark'
time = Benchmark.realtime do
# here CodeRay comes to play
diff --git a/demo/demo_scanner.rb b/demo/demo_scanner.rb
index a250f91..6a0245e 100644
--- a/demo/demo_scanner.rb
+++ b/demo/demo_scanner.rb
@@ -1,12 +1,36 @@
require 'coderay'
-c_scanner = CodeRay::Scanners[:c].new "if (*p == '{') nest++;"
+
+c_code = "if (*p == '{') nest++;"
+puts 'C Code: ' + c_code
+puts
+
+c_scanner = CodeRay::Scanners[:c].new c_code
+
+puts '> print only operators:'
for text, kind in c_scanner
print text if kind == :operator
end
puts
+puts '-' * 30
+puts
-ruby_scanner = CodeRay::Scanners[:ruby].new %q<c_scanner = CodeRay::Scanners[:c].new "if (*p == '{') nest++;">
+ruby_code = %q!ruby_code(:can, BE, %r[q[ui]te #{ /comple/x },] => $-s, &?\xee)!
+puts 'Ruby Code: ' + ruby_code
+puts
+
+ruby_scanner = CodeRay::Scanners[:ruby].new ruby_code
+
+puts '> has a string?'
+puts ruby_scanner.
+ any? { |text, kind| kind == :string }
+puts
+
+puts '> number of regexps?'
+puts ruby_scanner.
+ select { |token| token == [:open, :regexp] }.size
+puts
-puts ruby_scanner.any? { |text, kind| kind == :string and text == :open}
-puts ruby_scanner.find { |text, kind| kind == :regexp }
-puts ruby_scanner.map { |text, kind| text if kind != :space }.compact.join(' ')
+puts '> has a string?'
+puts ruby_scanner.
+ reject { |text, kind| not text.is_a? String }.
+ map { |text, kind| %("#{text}" (#{kind})) }.join(', ')
diff --git a/demo/demo_server.rb b/demo/demo_server.rb
index 44485f0..cc3db2b 100644
--- a/demo/demo_server.rb
+++ b/demo/demo_server.rb
@@ -74,9 +74,9 @@ class CodeRayServlet < WEBrick::HTTPServlet::AbstractServlet
end
end
-# 0xCODE = 49374
+# this is taken by "qip_msgd" - I don't know that.
module CodeRay
- PORT = 0xC0DE
+ PORT = 0xC0DE / 20
end
server = WEBrick::HTTPServer.new :Port => CodeRay::PORT
diff --git a/demo/demo_stream.rb b/demo/demo_stream.rb
index b1d8560..7ed8a22 100644
--- a/demo/demo_stream.rb
+++ b/demo/demo_stream.rb
@@ -1,8 +1,25 @@
-$: << '..'
require 'coderay'
-e = CodeRay.encoder(:html)
-t = e.encode_stream('a LOT of :code', :ruby)
+code = File.read($0) * 500
+puts "Size of code: %d KB" % [code.size / 1024]
-puts t
-p t.class
+puts "Use your system's memory tracker to see how much RAM this takes."
+print 'Press some key to continue...'; gets
+
+require 'benchmark'
+e = CodeRay.encoder(:div)
+for do_stream in [true, false]
+ puts "Scanning and encoding in %s mode, please wait..." %
+ [do_stream ? 'streaming' : 'normal']
+ output = ''
+ time = Benchmark.realtime do
+ if do_stream
+ output = e.encode_stream(code, :ruby)
+ else
+ output = e.encode_tokens(t = CodeRay.scan(code, :ruby))
+ end
+ end
+ puts 'Finished after %4.2f seconds.' % time
+ puts "Size of output: %d KB" % [output.size / 1024]
+ print 'Press some key to continue...'; gets
+end
diff --git a/demo/demo_stream2.rb b/demo/demo_stream2.rb
index 8a6bec7..d43cc9a 100644
--- a/demo/demo_stream2.rb
+++ b/demo/demo_stream2.rb
@@ -4,5 +4,5 @@ token_stream = CodeRay::TokenStream.new do |kind, text|
puts 'kind: %s, text size: %d.' % [kind, text.size]
end
-token_stream << [:regexp, '/\d+/']
+token_stream << [:regexp, '/\d+/'] << [:space, "\n"]
#-> kind: rexpexp, text size: 5.