File: coderay.rb

package info (click to toggle)
tdiary-contrib 5.0.2-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 2,576 kB
  • ctags: 1,957
  • sloc: ruby: 16,900; lisp: 514; xml: 451; php: 61; sql: 40; sh: 35; makefile: 33
file content (74 lines) | stat: -rw-r--r-- 1,943 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# -*- coding: utf-8 -*-
#
# coderay.rb - easy syntax highlighting for selected languages
#  refer to the URL below.
#  http://coderay.rubychan.de/
#
# Copyright (C) 2013, tamoot <tamoot+tdiary@gmail.com>
# You can redistribute it and/or modify it under GPL2.
#

require 'cgi'
require 'erb'
require 'coderay'

@coderay_default_css ||= ::CodeRay::Encoders[:html]::CSS.new(:default).stylesheet

def coderay(lang, text, options = {})
   html = ::CodeRay.scan(text, lang).html(:line_numbers => :inline, :bold_every => false, :line_number_anchors => false)
   %Q|<div class="CodeRay"><pre>#{html}</pre></div>|
end

add_header_proc do
   coderay_css = ''
   if @conf['coderay.css.url'] && @conf['coderay.css.url'].size > 0
      coderay_css = %Q|<link rel="stylesheet" href="#{h @conf['coderay.css.url']}" type="text/css" media="all">|
   else
      coderay_css = <<-STYLE
   <style type="text/css"><!--
   #{@coderay_default_css}
   -->
   </style>
STYLE
   end

   coderay_css
end

add_conf_proc( 'coderay', 'CodeRay' ) do
   if @mode == 'saveconf' then
      @conf['coderay.css.url'] = @cgi.params['coderay.css.url'][0]

   end

   coderay_conf = <<-HTML
   <h3 class="subtitle">custom style</h3>

   <p>The stylesheet path is used instead of CodeRay default. </p>
   <p>Path: <input name="coderay.css.url" value="#{h @conf['coderay.css.url']}" size="70"></p>
   <pre>
   sample:
   #{CGI::escape_html('<link rel="stylesheet" href="/your/tdiary/path/coderay.css" type="text/css" media="all">')}
   </pre>


   <h4>Print default stylesheet of CodeRay</h4>
   <p>1. The coderay command installed along with the CodeRay gem can print out a stylesheet for you.</p>
   <pre>
   bundle exec coderay stylesheet > /your/tdiary/path/coderay.css
   </pre>
   <p>2. Edit your stylesheet and modify permissions.</p>

   HTML

   coderay_conf

end

# Local Variables:
# mode: ruby
# indent-tabs-mode: t
# tab-width: 3
# ruby-indent-level: 3
# End:
# vim: ts=3