# coding: utf-8 # # shjs.rb # # SHJS - Syntax Highlighting in JavaScript # を利用し、
内のソースコードを色分けします。
#
# ! 必要なこと
#   1. SHJSのインストール。
#   2. shjs.rbを有効化し設定画面で、インストールしたSHJSのパスと URLを入力する。
#   3. これで shjs(lang, code)というプラグインメソッドが利用可能です。
# ! Wiki記法でのおすすめの記述例
#   {{shjs 'ruby', <
code

という HTMLを出力します。 # タグの対応を壊さないために、shjsメソッドを呼び出す {{...}} の前後には空行を # 置いた方がよいでしょう。(それでも空の

ができてしまうのは避けられませんが) # ! スタイルファイルの改変失敗は日記データの喪失につながる危険性がありますが…… # Wikiスタイルを使用しているのなら misc/lib/hikidoc.rbに 2、3行付け加えることで # shjsメソッド呼び出しを複数行PRE記法に統合することができます。 # !! 複数行PRE記法と統合した場合の記述例 # <<>> # 詳細は http://vvvvvv.sakura.ne.jp/ds14050/diary/20071230.html def shjs_init @shjs_required_langs = []; ''; end def shjs(lang, code=nil) @shjs_required_langs.push(lang) if(@shjs_required_langs and not @shjs_required_langs.include?(lang)); return code.nil? ? '' : %Q[

\n
#{h code}
\n

]; end def shjs_footer return (@shjs_required_langs && !@shjs_required_langs.empty?) ? <<"HTML" : ''; #{@shjs_required_langs.sort.map{|lang| %Q[] }.join("\n")} HTML end def shjs_style_url(css=@options['shjs_style']) url = ''; url << (@options['shjs_url'] || 'shjs'); url << (css ? "/css/#{u css}.css" : "/sh_style.css"); return url; end def shjs_js_url(lang=nil) url = ''; url << (@options['shjs_url'] || 'shjs'); url << (lang ? "/lang/sh_#{u lang}.min.js" : '/sh_main.min.js'); return url; end add_header_proc{ shjs_init; ''; } add_footer_proc{ shjs_footer; } if(@mode.index('conf')) def shjs_csslist unless(@shjs_csslist) @shjs_csslist = []; Dir.chdir("#{@options['shjs_dir'] || 'shjs'}/css"){ Dir.glob('*.css').sort.each{|css| @shjs_csslist.push(css.chomp('.css')); } } end return @shjs_csslist; rescue Exception @shjs_csslist_errmsg = $!.to_s; return []; end def shjs_saveconf @conf['shjs_style'] = @cgi.params['shjs_style'][0].to_s; @conf['shjs_url'] = @cgi.params['shjs_url'][0].to_s.chomp('/'); @conf['shjs_dir'] = @cgi.params['shjs_dir'][0].to_s.chomp('/'); %w(shjs_style shjs_url shjs_dir).each{|key| @conf.delete(key) if(@conf[key].empty?); } end add_conf_proc( 'shjs', 'SHJS シンタックスハイライト', 'theme' ){ shjs_saveconf if(@mode == 'saveconf'); shjs_init; shjs('ruby'); <<-"CONFFORM".sub('RUBYSCRIPT', h(<<-'RUBYSCRIPT'.gsub(/^\t+/, '')))

SHJS - Syntax Highlighting in JavaScript

http://shjs.sourceforge.net

配色設定 (shjs_style)

サンプル Rubyスクリプト

RUBYSCRIPT

デフォルトは #{h @conf.base_url}shjs/sh_style.css

すこし上にスタイルシートのリストが表示されていないときは shjs_dirを先に設定してください。

#{@shjs_csslist_errmsg}

SHJSをインストールしたフォルダ (shjs_dir)

sh_main.min.jsファイルと sh_style.cssファイル、cssフォルダと langフォルダが入ったフォルダです。

デフォルトは #{h Dir.pwd}/shjs

shjs_dirにブラウザでアクセスするときの URL (shjs_url)

デフォルトは #{h @conf.base_url}shjs

CONFFORM $KCODE = 's' require 'shjs' def say_hello puts :hello end 10000.times{ say_hello } %w[this is not string literal but array.] if @mode =~ /\A(save)?conf\z/i # show config form. end exit unless defined? Const; RUBYSCRIPT } if @mode.index("conf") end