Index: components/plugins/textfilters/coderay_controller.rb =================================================================== --- components/plugins/textfilters/coderay_controller.rb (revision 0) +++ components/plugins/textfilters/coderay_controller.rb (revision 0) @@ -0,0 +1,33 @@ +require 'coderay/coderay' + +class Plugins::Textfilters::CodeRayController < TextFilterPlugin::MacroPre + plugin_display_name "CodeRay" + plugin_description "Apply syntax highlighting to a code block using CodeRay" + + def self.help_text + %{ +You can use `` to include syntax-highlighted code blocks. Example: + + + class Foo + def bar + "abcde" + end + end + + +This uses the CodeRay (http://coderay.rubychan.de/) gem. Options: + +* **lang**. Optional - defaults to `ruby`. Sets the programming language. Currently supported languages are +`ruby`, `C`, `Delphi`, `HTML`, `RHTML`, `Nitro-XHTML`. +} + end + + def self.macrofilter(controller,content,attrib,params,text="") + lang = attrib['lang'] || 'ruby' + tokens = CodeRay.scan(text.strip, lang) + result = tokens.div(:line_numbers => :table) + "#{result}" + end + +end Index: config/environment.rb =================================================================== --- config/environment.rb (revision 1188) +++ config/environment.rb (working copy) @@ -23,6 +23,7 @@ vendor/sparklines/lib vendor/uuidtools/lib vendor/jabber4r/lib + vendor/coderay vendor/rails/railties vendor/rails/railties/lib vendor/rails/actionpack/lib Index: public/stylesheets/coderay.css =================================================================== --- public/stylesheets/coderay.css (revision 0) +++ public/stylesheets/coderay.css (revision 0) @@ -0,0 +1,104 @@ +.CodeRay { + background-color: #f8f8f8; + border: 1px solid silver; + font-family: 'Courier New', 'Terminal', monospace; + color: #100; +} +.CodeRay pre { margin: 0px } + +div.CodeRay { } + +span.CodeRay { white-space: pre; border: 0px; padding: 2px } + +table.CodeRay { border-collapse: collapse; width: 100%; padding: 2px } +table.CodeRay td { padding: 2px 4px; vertical-align: top } + +.CodeRay .line_numbers, .CodeRay .no { + background-color: #def; + color: gray; + text-align: right; +} +.CodeRay .line_numbers tt { font-weight: bold } +.CodeRay .no { padding: 0px 4px } +.CodeRay .code { width: 100% } + +ol.CodeRay { font-size: 10pt } +ol.CodeRay li { white-space: pre } + +.CodeRay .code pre { overflow: auto } + +.CodeRay .af { color:#00C } +.CodeRay .an { color:#007 } +.CodeRay .av { color:#700 } +.CodeRay .aw { color:#C00 } +.CodeRay .bi { color:#509; font-weight:bold } +.CodeRay .c { color:#888 } + +.CodeRay .ch { color:#04D } +.CodeRay .ch .k { color:#04D } +.CodeRay .ch .dl { color:#039 } + +.CodeRay .cl { color:#B06; font-weight:bold } +.CodeRay .co { color:#036; font-weight:bold } +.CodeRay .cr { color:#0A0 } +.CodeRay .cv { color:#369 } +.CodeRay .df { color:#099; font-weight:bold } +.CodeRay .di { color:#088; font-weight:bold } +.CodeRay .dl { color:black } +.CodeRay .do { color:#970 } +.CodeRay .ds { color:#D42; font-weight:bold } +.CodeRay .e { color:#666; font-weight:bold } +.CodeRay .en { color:#800; font-weight:bold } +.CodeRay .er { color:#F00; background-color:#FAA } +.CodeRay .ex { color:#F00; font-weight:bold } +.CodeRay .fl { color:#60E; font-weight:bold } +.CodeRay .fu { color:#06B; font-weight:bold } +.CodeRay .gv { color:#d70; font-weight:bold } +.CodeRay .hx { color:#058; font-weight:bold } +.CodeRay .i { color:#00D; font-weight:bold } +.CodeRay .ic { color:#B44; font-weight:bold } + +.CodeRay .il { background: #eee } +.CodeRay .il .il { background: #ddd } +.CodeRay .il .il .il { background: #ccc } +.CodeRay .il .dl { font-weight: bold ! important; color: #888 ! important } + +.CodeRay .in { color:#B2B; font-weight:bold } +.CodeRay .iv { color:#33B } +.CodeRay .la { color:#970; font-weight:bold } +.CodeRay .lv { color:#963 } +.CodeRay .oc { color:#40E; font-weight:bold } +.CodeRay .on { color:#000; font-weight:bold } +.CodeRay .op { } +.CodeRay .pc { color:#038; font-weight:bold } +.CodeRay .pd { color:#369; font-weight:bold } +.CodeRay .pp { color:#579 } +.CodeRay .pt { color:#339; font-weight:bold } +.CodeRay .r { color:#080; font-weight:bold } + +.CodeRay .rx { background-color:#fff0ff } +.CodeRay .rx .k { color:#808 } +.CodeRay .rx .dl { color:#404 } +.CodeRay .rx .mod { color:#C2C } +.CodeRay .rx .fu { color:#404; font-weight: bold } + +.CodeRay .s { background-color:#fff0f0 } +.CodeRay .s .s { background-color:#ffe0e0 } +.CodeRay .s .s .s { background-color:#ffd0d0 } +.CodeRay .s .k { color:#D20 } +.CodeRay .s .dl { color:#710 } + +.CodeRay .sh { background-color:#f0fff0 } +.CodeRay .sh .k { color:#2B2 } +.CodeRay .sh .dl { color:#161 } + +.CodeRay .sy { color:#A60 } +.CodeRay .sy .k { color:#A60 } +.CodeRay .sy .dl { color:#630 } + +.CodeRay .ta { color:#070 } +.CodeRay .tf { color:#070; font-weight:bold } +.CodeRay .ts { color:#D70; font-weight:bold } +.CodeRay .ty { color:#339; font-weight:bold } +.CodeRay .v { color:#036 } +.CodeRay .xt { color:#444 } \ No newline at end of file Index: themes/azure/layouts/default.rhtml =================================================================== --- themes/azure/layouts/default.rhtml (revision 1188) +++ themes/azure/layouts/default.rhtml (working copy) @@ -4,6 +4,7 @@ <%=h page_title %> <%= page_header %> <%= stylesheet_link_tag "/stylesheets/theme/azure", :media => 'all' %> + <%= stylesheet_link_tag "/stylesheets/coderay", :media => 'all' %> <%= stylesheet_link_tag "/stylesheets/user-styles", :media => 'all' %> <%= stylesheet_link_tag "/stylesheets/theme/print", :media => 'print' %>