*自作プラグイン codeHighlihgt.inc.php 開発 [#n6da5c14]
[[自作プラグイン/codehighlight.inc.php]]のページが開発者寄りになってしまい
マニュアルが分かりにくくなってしまったため分割する事にしました。

自作プラグイン codehighlight.inc.php (code.inc.php)
の開発の話はこのページにてお願いします。

*更新履歴 [#s36379da]
|リビジョン|内容|追加言語|投稿者|
|0.1|公開開始|PHP, C/C++, D, Java, Ruby, Bash script|sky|
|0.2|ファイル取り込み機能追加, 非対応言語は整形済出力に変更, 内部小変更|追加 (Perl, Python) , 変更 (Ruby, Bash)|sky|
|0.2.2|高速化||sakurai|
|0.2.new|高速化(D言語の速そうなアルゴリズム移植後最適化)||sakurai|
|0.2.3|高速化(正規表現, strpos, テーブルジャンプ)||sakurai|
|0.2.4|高速化(0.2.3のtokenizeとbuildを統合)||sakurai|
|0.2.5|高速化(0.2.4の最適化)||sakurai|
|0.2.6|(0.2.5ベース)|html, SQL, Delphi, C#, Visual Basic, PL/I|sakurai|
|0.2.7|(0.2.6ベース)プラグイン名をcodeに統一, preを除外, tab幅可変, キーワードファイルを別ディレクトリへ||sky|
|0.2.8|(0.2.7ベース)|css, Lisp, TeX|sky|
|0.2.9|ライン表示, アウトラインモード, VB文字列対策, Perlの定義ファイルバグ対策||sakurai|
|0.3.0|脆弱性有り危険, オプション機能追加, エスケープ文字対策|PukiWiki, Pascal, Ada, AWK, Scheme|sky|
|0.3.1|(0.3.0のbugfix)||sky|
|0.3.2|(0.3.1のbugfix)||sky|
|0.3.3|(0.3.2ベース)|gnuplot, matlab, scilab, AlteraHDL, VerilogHDL, VHDL|sky|
|0.3.4|コメント定義を正規表現化, URLオートリンク|BASIC|sakurai|
|0.3.5|(0.3.3, 0.3.4のbugfix)|HSP|sky|
*提案事項 [#s21e79ea]
実現されるかは分かりません。
提案に対する賛否の意見等もコメントにお願いいたします。
-対応言語を追加する。
XML, TCL, PostScript, Octave
--diff, make, Fortran は別関数を用いる方式で検討中
--phpもプラグイン化して全てcssで定義可能にする。
-コメントの指定方法の変更
--コメントを現在のハードコートからキーワード定義ファイルで定義出来るようにする。
--キーワード定義ファイルをユーザが作成可能にする(マニュアルの作成)。

*開発談義 [#nd2e2eee]
-小さいものは、このような利用でしょうけど、添付ファイルからも、同様にできると良いと思います。 -- [[upk]] &new{2004-10-30 (土) 03:39:10};
-なかなか楽しいですね :) -- [[teanan]] &new{2004-10-30 (土) 10:58:32};
-ページを少し変更しました。添付ファイルの表示は面白いですね。考えてみます。 -- [[sky]] &new{2004-10-30 (土) 15:50:32};
-ファイル取り込みに対応しました。プラグイン名を別にしましたが、引数の内容によって分けた方が良かったでしょうか? -- [[sky]] &new{2004-10-31 (日) 11:08:49};
--個人的には、プラグインは同一で引数で制御が良いですね。当初、小さかったものが、肥大化したり、再利用などを考慮し添付に切り替えた場合、プラグイン名の記述まで変えるわけですから。まぁ、その程度ですけどね。あと、複数行パッチを適用しないでも、現在の別プラグイン形式であれば、利用できることをユーザに意識させているという考えとかなら、それはそれでよいとも思いますけどね。-- [[upk]] &new{2004-11-03 (水) 02:56:40};
-ライセンスの件については、原作者の方に確認中です。 -- [[henoheno]] &new{2004-10-31 (日) 11:24:55};
-お手数をかけてしまい申し訳ありません>[[henoheno]]さん。今回の場合GPLのコードを取り込んでいるのでGPLで配布しなくてはならない物になり、原作者の方に''GPLでも''配布可能な許可を頂きました。ライセンスはGPLで良いのですよね。ちなみに私はこの改変についていかなる部分も権利を主張する気は有りません。 -- [[sky]] &new{2004-10-31 (日) 17:47:16};
-こんにちは。いえ[[sky]]さんがお手をわずらわせるタイプのことでもないと思いましたので問題ありません。これで全ての物件がGPLということになりますから、将来の不安が無くなった(少なくなった)のが嬉しいですね。 -- [[henoheno]] &new{2004-10-31 (日) 19:45:59};
--こんにちは。今回の件は勉強になりました。皆の善意であったのが何かのきっかけで問題になったら大きくこじれてしまいそうです。将来の憂いを無くしておく事も重要ですね。 -- [[sky]] &new{2004-11-01 (月) 13:21:20};
-キーワードファイルでコメントの指定が出来るようになりました。これでキーワードファイルを作成するだけで新規言語を追加できるようになります(プラグインのプラグインのような物です)。Debugが完了次第 r1.0-pr1 としてUpする予定でいます。 -- [[sky]] &new{2004-11-03 (水) 01:48:38};
-「...今のままだと、 __asm とかに対応できないね...。if (is_alpha($code) || $code == "_")」 -- http://d.hatena.ne.jp/k_ahiru/20041103 --  &new{2004-11-03 (水) 09:50:12};
-はじめまして、sakurai と申します。ahiruさんのところから飛んできました。~
コードハイライト高速化していないみたいと出ていて、私はD言語上で高速化した経験があるので書き込みしました。~
これは私の作った、Diki(D言語Wiki)用に移植したCodeHighlightです。~
http://www.wikiroom.com/sakurai/?DikiCodeHighlight~
このプログラムは、(今はリンクが切れていますが)~
http://int19h.tamb.ru/files.html~
(今はD言語のコンパイラのパッケージに含まれてます)~
を元に高速化しました。30倍くらい速くなりました。~
これをPHPに移植すれば高速化できると思います。~
気になるのはライセンスで、以下のようにヘッダ部分にかかれていたので自由に変更してよいものだと判断して使っていますが、大丈夫かなということです。
 /*
  * Copyright (c) 2001
  * Pavel "EvilOne" Minayev
  *
  * Permission to use, copy, modify, distribute and sell this software
  * and its documentation for any purpose is hereby granted without fee,
  * provided that the above copyright notice appear in all copies and
  * that both that copyright notice and this permission notice appear
  * in supporting documentation.  Author makes no representations about
  * the suitability of this software for any purpose. It is provided
  * "as is" without express or implied warranty.
  */
-こんにちは。Delphiも対応言語に入れてあげてくれるとうれしいです。表示例→http://slavadev.sourceforge.jp/index?241149 -- [[u*j*2*6*:http://slavadev.sourceforge.jp]] &new{2004-11-03 (水) 19:09:34};
-情報ありがとうございます。そのプログラムとその著作権者さんの詳細を確認したくなりますね。 -- [[henoheno]] &new{2004-11-03 (水) 20:06:20};
-Dの速そうなアルゴリズム移植しちゃいました。しかし、1.5倍くらいしか速くなりませんでした。その後最適化して10倍ほど速くしました(code_highlight_0_2_new.zip)。元のアルゴリズムも3倍ほど高速化しました(code_highlight_0_2_2.zip)。ベンチマークはtest.phpでやってみました。参考にしてください。Dのアルゴリズムですが、移植版だし相当いじってるのでオリジナルと言えるほどのものになってるとは思います。 -- [[sakurai]] &new{2004-11-04 (木) 22:22:53};
-こんにちは。DelphiはD言語で対応できると言うことでしょうか。u*j*2*6*さん (D言語もDelphiも使った事が無いものでして)-- [[sky]] &new{2004-11-04 (木) 22:56:04};
-[[sakurai]]さん情報提供と高速化ありがとうございます。このコードはこれまでのように改編してもよろしいのでしょうか? -- [[sky]] &new{2004-11-04 (木) 22:56:04};
--私は力不足ですがこれまで通り対応言語の追加・追加の柔軟化を目標にしていきたいと思っています。-- [[sky]] &new{2004-11-04 (木) 22:56:04};
-どうぞどうぞ。自由に使ってください。私は作るのは良いけど、管理するの苦手なのでちゃんと人の使えるものにしていただければ、私はうれしいです。 -- [[sakurai]] &new{2004-11-05 (金) 17:38:18};
-#pre<<<END ENDの書き方は、#code #endも使えるようになりませんか?何気にD言語研究のサイトで大量のコードハイライトを使ってるので変換がめんどい、、、。 -- [[sakurai]] &new{2004-11-05 (金) 17:47:05};
-sky:いえ、delphiはdelphiでコードが要ります。もしよかったら[[このコード:http://slavadev.sourceforge.jp/index?plugin=attach&pcmd=open&file=codehighlight_for_delphi_0_2.diff&refer=SlavaDev]]を検討してもらえないでしょうか。 -- [[u*j*2*6*:http://slavadev.sourceforge.jp]] &new{2004-11-05 (金) 19:16:45};
-↑コードの内容は、codehighlight.delphi.kwd.phpの追加と、「(*~*)」、「{~}」で囲まれる部分をコメントとして扱うこと、mb_strtolowerのかわりにstrtolowerを使う(古いPHP用)ことの3点です -- [[u*j*2*6*:http://slavadev.sourceforge.jp]] &new{2004-11-05 (金) 19:23:58};
-実は私の管理するサイトでもsakuraiさんと同じく#code #endをつかったページが大量にあるのでなんとかしたいです。code.inc.phpを書いて中からcodehighlightをよぼうかな? -- [[u*j*2*6*:http://slavadev.sourceforge.jp]] &new{2004-11-05 (金) 19:29:11};
-上記のアシストとして、よかったらテスターになってくれる人いませんか? (^^) [[文字列置換プラグイン>http://pukiwiki.cafelounge.net/plus/?Plugin%2Freplace.inc.php]] -- [[みこ]] &new{2004-11-05 (金) 20:16:23};
-外出中でWebを見る環境しかないので曖昧な情報をお許しください。以前の方法に対応させるには、
変更後の convert_html.phpの900行目の正規表現を変更して #pre 言語名 に対応するようにし、
$stop_wordを ''#end'' に設定する方法で対処出来ませんか。
''#code''は次の内容をcode.inc.phpとすれば動くと思います。-- [[sky]] &new{2004-11-05 (金) 20:23:23};
 require_once(PLUGIN_DIR.'codehighlight.inc.php');
 function plugin_code_convert()
 {
     $args = func_get_args();
     $lang = array_shift($args);
     return plugin_codehighlight_body($lang, $args);
 }
-sakuraiさん u*j*2*6*さん このコードはGPLで配布してもよろしいのでしょうか。前回の質問が言葉足らずですみません。 -- [[sky]] &new{2004-11-05 (金) 20:26:51};
-私ののほうはGPLでオッケーです。 -- [[u*j*2*6*:http://slavadev.sourceforge.jp]] &new{2004-11-05 (金) 21:31:44};
-なんか大分機能が :D 。遅いのは、正規表現を使わないことを目標(移植性を良くするため)にしていたので、しょうがないのデス :P -- [[ahiru]] &new{2004-11-05 (金) 22:05:43};
-GPLでオッケーですよと。 -- [[sakurai]] &new{2004-11-05 (金) 22:23:18};
- ((いいぞ!複数の改善案件が同時並行して進んでいる!期待以上の爆発力だ!)) :) -- [[henoheno]] &new{2004-11-05 (金) 23:23:35};
-ahiruさんバージョンを正規表現や、strpos使って、コリコリ高速化してみました。その後、テーブルジャンプ使ったら凄いシンプルになってこれでちゃんと動くの???って思っちゃうような綺麗なソースになりました。9546msが777msくらいです。これもGPLオッケーです。正規表現で(a|b)*見たいなことをすると死んだりしたのでそのへん解決できればもうちょい早くなるかもしれないけど、これで私は満足な感じです。 -- [[sakurai]] &new{2004-11-06 (土) 23:58:20};
-構造をギリギリ前と同じにしたものが、&ref(codehighlight.inc.php_0_2_3);,tokenizeとbuildをあわせたものが&ref(codehighlight.inc.php_0_2_4);で、最適化バリバリしてソース綺麗にしたものが、&ref(codehighlight.inc.php_0_2_5);です。 :) 以下作業履歴です。-- [[sakurai]] &new{2004-11-07 (日) 00:05:17};
|100|500|c
|>|~codehighlight.inc.php_0_2_3|
|time: 3137|コメント行終了検索を変更|
|time: 2969|isalphaなどのハッシュ化|
|time: 2866|convertのインライン化|
|time: 2408|getcのインライン化|
|time: 2375|identifierの正規表現化|
|time: 2174|文字列リテラルのstrpos関数化|
|time: 2074|replace_speceのインライン化|
|time: 2121|バグ修正|
|time: 1916|isalphaのハッシュをtokenizerのローカル変数にする。|
|>||
|>|~codehighlight.inc.php_0_2_4|
|time: 1354|tokenizerとbuilderを統合して、tokenを使わないで直接文字列出力する。|
|>||
|>|~codehighlight.inc.php_0_2_5|
|time: 1112|関数のインライン化|
|time: 960 |評価する順番を統計取ってみて、呼び出し順を変えた。|
|||
|>|dソースの統計|
|space      |1346|
|id         |970|
|string     |186|
|comment    |66|
|sharpid    |0|
|||
|>|cソースの統計(これの#からはじまるのカウントし忘れた。まいいや。)|
|space      |1265|
|id         |971|
|string     |114|
|sharpid    |0|
|comment1   |0|
|comment    |1|
|commentall |1|
|||
|time: 882  |if文の順番かえる。とした。100ms違う。|
|time: 840  |hashの初期化ミスを直す。for($i="a";$i<"z";$i++)とやるとZYとかいうデータも入ってた。|
|time: 773  |switch文用ハッシュを作って、switch文で分岐。テーブルジャンプするので速くなった。統計取った意味がなくなった。可読性が一気に上がった。|
|time: 761  |switch用ハッシュを使うことで、メインループ内で言語による分岐がなくなった。言語が増えてもパフォーマンスに影響しにくくなった。とにかく読みやすくソースを掃除。見れるソースになった。|
-kinabaさんとこみてたら、http://rafb.net/paste/なサイトがあって、ここだといろいろな言語に色つけてくれてるみたい。負けられませんな。行番号がでるのが何気に良いなと思いました。 -- [[sakurai]] &new{2004-11-07 (日) 02:08:44};
-http://rafb.net/paste/highlight.phpsこれがソースだ。bsdライセンスみたい。 -- [[sakurai]] &new{2004-11-07 (日) 02:19:25};
-[[convert_html.php.01.diff:http://www.sys.tutkie.tut.ac.jp/~sasaki/files/pukiwikiplugins/convert_html.php.01.diff]]従来の"#code 言語名" … "#end"で呼び出すpatchです。[[dev:PukiWiki/1.4/ちょっと便利に/複数行のプラグイン引数を可能に]]で仕様変更があるようなので今後使い方がまた変わってしまう可能性が高そうです。 -- [[sky]] &new{2004-11-08 (月) 14:51:29};
-複数行のプラグイン引数を可能に、、、があったから、今の形式にしたんですね。なるほど。 -- [[sakurai]] &new{2004-11-08 (月) 18:41:45};
-Delphi,C#,VB,SQL,PL/I,HTMLに対応しました。codehighlight_0_2_5に適用しました。&ref(codehighlight_0_2_6.zip);です。 -- [[sakurai]] &new{2004-11-08 (月) 18:44:30};
-delphi,c#,vb,sql,pli,htmlで動くはずです。 --  &new{2004-11-08 (月) 18:47:44};
 #から始まるコメントのバグ対策
 defineを使う。php初心者なので今まで知らなかった。
 キーワードファイル名をcodehighlight.kwd.bash.phpのように変更する。このほうが見やすい。
-{}カッコのネストをみてピロピロ表示非表示できたらいいなと。urlぽかったら、リンクはるとか。 -- [[sakurai]] &new{2004-11-08 (月) 18:54:41};
-PEAR:Text_Highlighter 使ってみてはどうでしょうか --  &new{2004-11-08 (月) 22:52:39};
--[[PEAR:Text_Highlighter:http://pear.php.net/package/Text_Highlighter/]]と言う物があったのですね。[[PHP license:http://www.php.net/license/3_0.txt]]ですね。考えてみます。 -- [[sky]] &new{2004-11-09 (火) 01:57:39};
-codehighlight_0_2_6.zip を元にいくつかの変更を加えてref(code_0_2_7.tgz);にしてみました。 -- [[sky]] &new{2004-11-09 (火) 01:57:39};
--codehighlight と codeinclude の2つのプラグインを1つにまとめて''code''に変更(使い方は同じ)
--プラグイン pre を不要
--tabの幅を変更可能
--キーワードファイルをプラグインディレクトリ以下のcodeディレクトリに移し名称を keyword.bash.phpのように変更
-それぞれの言語に固有の部分、特にコメントの指定方法をキーワードファイルに移す方法と行番号を表示する方法を検討しています。高速化を維持したまま変更するのは難しそうです。最も単純なのはパターンマッチの始めにコメント開始文字列を判定する方法なのですが。 -- [[sky]] &new{2004-11-09 (火) 01:57:39};
-仕様変更が多いので開発版と安定版に分けた方が良いのでしょうか。このページは開発専用にして別ページにマニュアルを記述した方が分かりやすくなりそうです。 -- [[sky]] &new{2004-11-09 (火) 01:57:39};
-css,TeX,Lispに対応させました&ref(code_0_2_8.tgz);。bugが2つあったので修正しました(''/''に対応していない, コメントの''#''の直後に改行が来ると次の行もコメントになる) -- [[sky]] &new{2004-11-09 (火) 05:05:39};
--[[r0.2.8用マニュアル:http://www.sys.tutkie.tut.ac.jp/~sasaki/pukiwiki/pukiwiki.php?man%2Fcode]]試作案です。 -- [[sky]] &new{2004-11-09 (火) 05:05:39};
-ついでに、PukiWiki 自身のソースも対応しません? (^^; プラグインが色つきになるとアクションプラグイン(source)の意味がでてくるので・・・ -- [[みこ]] &new{2004-11-09 (火) 13:56:44};
--むろん、ハイライトするプラグインは1.4.4をベースとするということで・・・ -- [[みこ]] &new{2004-11-09 (火) 14:01:18};
-BugFixサンクスです。css,Tex,Lisp対応すばらしい。いい感じですね。コメントの指定方法をキーワードにですか、、、。始まりと終わりを指定すれば自動的にってことですね。私も考えてみます。ライン情報は、コピペしたいので、ソースとは切り離したほうがよいです。テーブル使うかcssがいいと思います。ライン情報表示非表示をpukiwikiのプラグインオプションで指定できると良いでしょうね。開発用ページはあったほうがうれしいですね。ページを汚くしてしまっている気がします。 -- [[sakurai]] &new{2004-11-09 (火) 14:16:44};
-PukiWikiのハイライトですか、、、。なるほど。アクションプラグインってなんでしょうか? -- [[sakurai]] &new{2004-11-09 (火) 14:24:33};
-こういうhttp://f38.aaa.livedoor.jp/~sakurai/pukiwiki/diki.html ツリー表示するの作ってるのでプラグインの仕様に入れてください。でも、JavaScript使ったプラグインはPukiwikiだと、反則なのかな? -- [[sakurai]] &new{2004-11-09 (火) 15:17:47};
-コメントの指定方法の変更は、先にコメントかどうかを判定するので良いと思います。ただ、マッチングしていては遅いので、そこでも、コメント開始文字のハッシュを作っておいて判定してみてはどうでしょう。1文字あたりに1回ハッシュを参照するだけですむのでそんなに遅くならないんじゃないかと思います。がんばってみてください。 -- [[sakurai]] &new{2004-11-09 (火) 16:01:12};
-アドバイスありがとうございます。>sakuraiさん。出来るだけソースを汚さないようにやってみます。 -- [[sky]] &new{2004-11-09 (火) 16:45:22};
-PukiWIkiのソースを差分表示等でハイライト出来ればよさそうですね。 -- [[sky]] &new{2004-11-09 (火) 16:48:02};
-すみません、正式にはコマンドです。<アクションプラグイン プラグインのソースで plugin_xxxx_action となっているので私的にそう呼んでいるだけした(..; -- [[みこ]] &new{2004-11-09 (火) 19:26:54};
-PEAR::Text_Highlighterは強力そうですね。XML書いておくと、コード生成してくれるみたい。これで速くて、インストールが楽なら使えるかも。でも、使い方がわからない。。。genelatorとか動かすとコマンドプロンプトが消える。php初心者だからわからんぞー!!ググっても日本語のページみあたらんし、、、。英語苦手なのでちまちまやってみます。 -- [[sakurai]] &new{2004-11-09 (火) 20:02:42};
-PEAR::Text_Highlighterを使わなくても大方の言語に対応できそうです。新たなる拡張の糸口も掴みました。しかし、PukiWiki, HTML, TeX, gnuplot あたりはプログラム言語ではないですね。 -- [[sky]] &new{2004-11-11 (木) 02:29:31};
-キーワードで''c''とC#の''cs'', ''css''が紛らわしいですね。C#は''csharp''の方が良いかも知れません。あと''vb''も略すべきかどうか。 -- [[sky]] &new{2004-11-11 (木) 02:32:30};
-いつのまにか code になったのですね (^^; では提案。出力タグも XHTML の <code> にするのはいかが? (^^) -- [[みこ]] &new{2004-11-11 (木) 12:44:40};
--でもって、<code class="sql"> とか <code class="c"> とか言語名がクラス名になると・・・ -- [[みこ]] &new{2004-11-11 (木) 12:50:08};
--やりたいのは bash などのコマンドラインの背景だけ変えたいとかの意味なんですけどね (^^; (今でも出来るのでしょうけど・・・) -- [[みこ]] &new{2004-11-11 (木) 13:00:57};
-あと、PHP のときは XHTML Not Vaild です。(PHPの内部関数に頼っているのでしょうがないとはおもいますが・・・) -- [[みこ]] &new{2004-11-11 (木) 15:11:48};
--みこさんの提案の方がcssを素直に出来そうですね。 -- [[sky]] &new{2004-11-12 (金)  03:32:53};
--Firefoxではcodeの背景を変更しても文字の周囲しか変わりませんでした。preでなければ背景全体が変わらないようです。 -- [[sky]] &new{2004-11-12 (金)  09:22:53};
-PEAR::Text_Highlighterは大変そうなのでみるのやめました。軽量なパーサってことでがんばりましょう。 -- [[sakurai]] &new{2004-11-11 (木) 20:42:31};
-http://f17.aaa.livedoor.jp/~labamba/?%A5%B5%A5%F3%A5%D7%A5%EB%A5%B3%A1%BC%A5%C9 ピロピロ機能を入れてみました。こんな感じで動きます。 -- [[sakurai]] &new{2004-11-11 (木) 20:45:22};
-ライン表示、ピロピロ機能、VB文字列対策、Perlの定義ファイルバグ対策です。&ref{code_0_2_9.zip}; -- [[sakurai]] &new{2004-11-11 (木) 21:43:07};
-codeタグのtableを使っているものと、通常のpreとぴったりあわせるには、preのmargin-rightをpx単位に直す必要がありました。また、ライン表示、ブロック表示の切り替えができません。src2HTMLのオプションを使い分けて上のほうでやっていただけると助かります。 -- [[sakurai]] &new{2004-11-11 (木) 21:48:17};
-JavaScriptが分からなくて"ピロピロ機能"の扱いには困っていました。機能追加とBugfixありがとうございます。言語によっては"{"と"}"ではなくbeginとendを使う物があるのでそれらにも対応したいですね。Rubyのように無節操に両方とも使える言語も存在するので言語毎に切替えて良い物でしょうか。
--行数表示はcssのdivでは切替えに成功しています。tableとの使い分けはソースファイルのオプションで出来るとよさそうですね。-- [[sky]] &new{2004-11-12 (金) 03:32:53};
-r0.3.0をアップしました。行番号と"ピロピロ機能"もオプションで指定できるように追加しました。-- [[sky]] &new{2004-11-12 (金) 10:32:53};
--Perl,Ruby等の$の後の文字による誤判定も解決しました。$を例外としてその後に続く記号1文字か文字列を切り出しています。追加した言語(EmacsとVimの定義ファイルから持って来ました)。PukiWiki, Pascal, Ada, AWK, Fortran, Scheme-- [[sky]] &new{2004-11-12 (金) 10:32:53};
-そうそう、昔のコードで無理やりパッチをあてて XHTML Vaild にしたのを思い出しました。参考になれば・・・ -- [[みこ]] &new{2004-11-12 (金) 15:08:29};
0.3.0(116行目付近)
      if ('php' == $lang) {
        ob_start(); //出力のバッファリングを有効に
        highlight_string($data); //phpは標準関数でハイライトしてくれるようだ
        $_str = ob_get_contents(); //バッファの内容を得る
        ob_end_clean(); //バッファクリア?
        $_str = str_replace("\n", '', $_str); //$_str内の"\n"を''で置き換える
 +//Vaild XHTML 1.1 Patch (by miko)
 +      $_str = preg_replace('#<font color=\"#', '<span style="color:', $_str);
 +      $_str = preg_replace('#</font>#', '</span>', $_str);
 +//Vaild XHTML 1.1 Patch (by miko)
        $str =  "<pre class=\"highlight\">{$_str}</pre>";
      } else {
--ありがとうございます。r0.3.1で取り込みました。 -- [[sky]] &new{2004-11-12 (金) 16:51:01};
-ピロピロ機能の追加ありがとうございます。いろいろ、めんどくさかったと思いますが、、、。$rndをちゃんと直してくれたり、こうやって欲しいなと思ってたことをやっていただき、誠にありがたいことです。ピロピロ機能は、文法解析するとめんどくさそうなので、pythonのネスト見て構造化で対応してあとは、ちゃんと書いてねってことで逃げようかと思っています。 -- [[sakurai]] &new{2004-11-12 (金) 22:09:18};
-もう、20言語対応ですよ。凄いなぁ。keywordファイルは25個あるし。csとcsharpが2つ入ってますが片方でいい気がします。 -- [[sakurai]] &new{2004-11-12 (金) 22:11:45};
-SQLのキーワードファイルに、$capital = true;を入れてください。 -- [[sakurai]] &new{2004-11-12 (金) 22:34:14};
-オプションの"tree" ですが、"outline" のほうが一般的な気がします。 -- [[ahiru]] &new{2004-11-13 (土) 14:15:15};
--私も最初、ピロピロ機能ってなんだぁ?って思いました(笑) -- [[アクア]] &new{2004-11-13 (土) 16:01:13};
-適当にピロピロって呼んでたら、skyさんが採用しちゃうんだもん。アウトライン機能と呼びましょう。アウトライン機能をpythonモードで作ってみましたが、複数行にわたるコメントや文字列がある言語だと破綻することが分かりました。もうちょっと考えないとなぁ。 -- [[sakurai]] &new{2004-11-13 (土) 17:31:41};
-私も良い名称が思い浮かばなかったものでそのまま使っていました。''outline''に変更しました。SQLの大文字対応もしました。r0.3.3 -- [[sky]] &new{2004-11-13 (土) 18:54:41};
-コメントの定義ファイル化してみました。 -- [[sakurai]] &new{2004-11-13 (土) 20:37:28};
-作業内容0_3_2ベースなので、0_3_3ベースに変更中 --  &new{2004-11-13 (土) 20:38:00};
-&ref{code_0_3_4.zip}; URLのハイライトと、コメントを定義ファイル化したものです。 -- [[sakurai]] &new{2004-11-13 (土) 21:12:05};
-コメントの定義が柔軟になったので今後は新言語追加も楽になりそうですね。ありがとうございます。ただ、識別子にURLが使われる事は有るのでしょうか。有ったとしてもIDENTIFIREでは正規表現で弾かれてしまいます。 -- [[sky]] &new{2004-11-13 (土) 23:20:41};
-0.3.4、78行目にtreeの痕跡が…outlineが無効になります(^^; -- [[アクア]] &new{2004-11-14 (日) 00:44:10};
-何か私も参加できれば(?)と思い、[[HSP>http://www.onionsoft.net/hsp/]]という言語のキーワードファイルを作ってみました。~
とは言え私自身、昔はよく遊んでましたが最近はあまり触っていないので~
2.61の添付マニュアルからキーワードを抜き取っただけだったりします…(^^;~
それに本家にもWikiがあるのですが別のWikiクローンのようなので実はあまり需要もないカモ(笑)~
とりあえずキーワード定義ファイルの作りがあまりよくわからなかったので~
言語体系が似ているCの定義ファイルをほとんどそのまま利用し、~
{~}ブロックが有効なのでcodehighlight.inc.phpを自分で直接編集して対応しました。~
変なトコがあったらどなたか修正していただけるとありがたいですm(_ _)m~
それと、pukiwiki.ini.php内で$fixed_heading_anchorがデフォルトで1だと思うのですが~
この状態だとCのコメント終了の「*/」や今回作ったHSPのラベル開始「*」の行で~
自動的に#xxxxxxがついてしまうようです。コレは回避不可能でしょうか? -- [[アクア]] &new{2004-11-14 (日) 02:04:35};
--VB同様、"hoge\\"みたいな文字列があると文字列範囲の認識に失敗してしまうようなので&br;VBの定義を参考にVBSTRING_LITERALを追加しました。VBじゃないけど…(^^;&br;添付ファイル削除できないのに失敗したナァ… -- [[アクア]] &new{2004-11-14 (日) 02:22:37};
--アクアさん毎回バグ報告だけでなく今回は新しい言語定義ファイルまで本当にありがとうございます。早速r0.3.5で取り込みました。仕様変更が早いのでr0.3.3とr0.3.4の書式が混ざっていましたが修正したので特に問題は無いと思います((HSPがわからないので確認できません))。VBSTRING_LITERAL は NONESCAPE_LITERALの方が妥当そうなので名称変更しました。 -- [[sky]] &new{2004-11-14 (日) 04:39:46};
--行頭の*の後にラベルが付く現象は[[dev:PukiWiki/1.4/ちょっと便利に/複数行のプラグイン引数を可能に]]でユーザ定義を置換しないルールの <<PRE:EOF を使うと回避できるようです。マニュアルも訂正しました。 -- [[sky]] &new{2004-11-14 (日) 04:39:46};
-keyword.hsp.php を見てて思ったんですけど、色が全部同じだと(全部 => 2... w)、なんだか味気ないので、制御構文というカテゴリを追加してはどうでしょうか > highlight_css に -- [[ahiru]] &new{2004-11-14 (日) 10:13:59};
-if とか while とか、です。 -- [[ahiru]] &new{2004-11-14 (日) 10:16:16};

#comment
#pcomment(自作プラグイン/codehighlight.inc.php/develop/Comment,20,reply)


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.053 sec.

OSDN