PukiWiki改造/エスケープシーケンス
をテンプレートにして作成
[
凌宮
|
初基
|
一覧
|
検索
|
最新
] [
ソース
]
開始行:
TITLE:エスケープシーケンス
#indent
#contents
//-- make_link L59 L285
/////////////////////////////////////////////////////////...
* 方針 [#jc465a12]
- ウィキには書式をエスケープする手段はない。
-- 書式ごとに手段があったりもするが、ケースバイケースで覚...
-- 実体参照というエスケープが既にあるが、スペルは覚えにく...
-- 文字参照というエスケープも既にあるが、ASCIIコードは覚...
- プラグイン形式でエスケープを導入。
-- 将来の拡張を想定し、キーボードにある記号類を全対応。
--- 「エスケープ必要か?」の事態を回避。エスケープすれば...
/////////////////////////////////////////////////////////...
* 仕様 [#w0dac652]
- エスケープする記号を ##&## と ##;## で挟む。
- エスケープされた記号は文字参照に変換
- 例:
-- ##&&;&@;&;;## → ##&@;##
-- ##&&;&&;&;;## → ##&&;##
-- ##&&;&;;&;;## → ##&;;##
-- ##&&;& ;&;;## → ##& ;##
/////////////////////////////////////////////////////////...
* 実装 [#a928306f]
- ファイル ##lib/make_link.php## の ##class InlineConvert...
#code(diff){{{{
function InlineConverter($converters = NULL, $ex...
{
if ($converters === NULL) {
$converters = array(
'plugin', // Inline plugins
+ 'escape', // Escapes
'note', // Footnotes
'url', // URLs
}}}}
//
- 同ファイル、##class Link_plugin## を''コピー''し、##cla...
-- 「##!##」で始まる行は##class Link_plugin## に対する差...
-
#code(diff){{{{
!// Escapes
!class Link_escape extends Link
{
var $pattern;
var $plain,$param;
function Link_escape($start)
{
parent::Link($start);
}
function get_pattern()
{
$this->pattern = <<<EOD
&
( # (1) plain
- (\w+) # (2) plugin name
- (?:
- \(
- ((?:(?!\)[;{]).)*) # (3) parameter
- \)
- )?
+ ([-!"#$%&'()=~|\\`@+*;:<>?_,.\/}{\][ ^]) #...
)
EOD;
return <<<EOD
{$this->pattern}
-(?:
- \{
- ((?:(?R)|(?!};).)*) # (4) body
- \}
-)?
;
EOD;
}
function get_count()
{
- return 4;
+ return 2;
}
function set($arr, $page)
{
- list($all, $this->plain, $name, $this->param...
+ list($all, $this->plain, $name) = $this->spl...
// Re-get true plugin name and patameters (f...
$matches = array();
if (preg_match('/^' . $this->pattern . '/x',...
&& $matches[1] != $this->plain)
list(, $this->plain, $name) = $matches;
+ $body = '';
- return parent::setParam($page, $name, $body,...
+ return parent::setParam($page, $name, $body,...
}
function toString()
{
! return htmlspecialchars($this->name);
}
}
}}}}
/////////////////////////////////////////////////////////...
終了行:
TITLE:エスケープシーケンス
#indent
#contents
//-- make_link L59 L285
/////////////////////////////////////////////////////////...
* 方針 [#jc465a12]
- ウィキには書式をエスケープする手段はない。
-- 書式ごとに手段があったりもするが、ケースバイケースで覚...
-- 実体参照というエスケープが既にあるが、スペルは覚えにく...
-- 文字参照というエスケープも既にあるが、ASCIIコードは覚...
- プラグイン形式でエスケープを導入。
-- 将来の拡張を想定し、キーボードにある記号類を全対応。
--- 「エスケープ必要か?」の事態を回避。エスケープすれば...
/////////////////////////////////////////////////////////...
* 仕様 [#w0dac652]
- エスケープする記号を ##&## と ##;## で挟む。
- エスケープされた記号は文字参照に変換
- 例:
-- ##&&;&@;&;;## → ##&@;##
-- ##&&;&&;&;;## → ##&&;##
-- ##&&;&;;&;;## → ##&;;##
-- ##&&;& ;&;;## → ##& ;##
/////////////////////////////////////////////////////////...
* 実装 [#a928306f]
- ファイル ##lib/make_link.php## の ##class InlineConvert...
#code(diff){{{{
function InlineConverter($converters = NULL, $ex...
{
if ($converters === NULL) {
$converters = array(
'plugin', // Inline plugins
+ 'escape', // Escapes
'note', // Footnotes
'url', // URLs
}}}}
//
- 同ファイル、##class Link_plugin## を''コピー''し、##cla...
-- 「##!##」で始まる行は##class Link_plugin## に対する差...
-
#code(diff){{{{
!// Escapes
!class Link_escape extends Link
{
var $pattern;
var $plain,$param;
function Link_escape($start)
{
parent::Link($start);
}
function get_pattern()
{
$this->pattern = <<<EOD
&
( # (1) plain
- (\w+) # (2) plugin name
- (?:
- \(
- ((?:(?!\)[;{]).)*) # (3) parameter
- \)
- )?
+ ([-!"#$%&'()=~|\\`@+*;:<>?_,.\/}{\][ ^]) #...
)
EOD;
return <<<EOD
{$this->pattern}
-(?:
- \{
- ((?:(?R)|(?!};).)*) # (4) body
- \}
-)?
;
EOD;
}
function get_count()
{
- return 4;
+ return 2;
}
function set($arr, $page)
{
- list($all, $this->plain, $name, $this->param...
+ list($all, $this->plain, $name) = $this->spl...
// Re-get true plugin name and patameters (f...
$matches = array();
if (preg_match('/^' . $this->pattern . '/x',...
&& $matches[1] != $this->plain)
list(, $this->plain, $name) = $matches;
+ $body = '';
- return parent::setParam($page, $name, $body,...
+ return parent::setParam($page, $name, $body,...
}
function toString()
{
! return htmlspecialchars($this->name);
}
}
}}}}
/////////////////////////////////////////////////////////...
ページ名:
Anatomy_of_the_Human_Ear_ja.svg
363件
[
詳細
]
line.pukiwiki.php
459件
[
詳細
]
line.diff.php
449件
[
詳細
]
inline.tex
438件
[
詳細
]
convert_html.php
470件
[
詳細
]
eq.inc.php
506件
[
詳細
]
convert.tex
422件
[
詳細
]
codehighlight.php
438件
[
詳細
]
code.inc.php
474件
[
詳細
]
ToHeader.png
234件
[
詳細
]
ToFooter_0.png
202件
[
詳細
]
ToFooter.png
239件
[
詳細
]
ParaEdit.png
245件
[
詳細
]
TexEqMiddleAlign.png
484件
[
詳細
]
[
凌宮
|
初基
|
一覧
|
検索
|
最新
] [
ソース
]