paulyg / wikicreole
一个库,可以将常见的、标准化的wiki标记语言Creole转换为HTML。
0.1.5
2012-07-13 02:46 UTC
Requires
- php: >=5.2.4
- ext-pcre: *
This package is not auto-updated.
Last update: 2024-09-28 12:39:02 UTC
README
include 'WikiCreole.php'; $parser = new WikiCreole(array( 'urlBase' => '/wiki/', 'imgBase' => '/media/', ), $list_of_existing_page_slugs ); $html = $parser->parse($wiki_markup);
功能
- 解析Creole 1.0规范中的所有内容。
- 解析Creole的附加功能,例如, ,和 。关于这些标签的讨论见下文。
- 自动在链接或图片的slug前添加基本URL或路径。请参阅下方的选项键。
- 自动将slug转换为指向其他wiki页面的链接。这消除了URL路径中不允许的空格和其他字符。
- 控制应用于所有链接标签的标记,如果您想对您网站内外的链接进行不同的样式化。请参阅下方的linkFormat*选项键。
- 宏。在宏标记标签内运行用户定义的函数。
设置选项
此类需要一个选项数组作为其构造函数的第一个参数。选项数组遵循 'keyname' => 'value' 格式。目前有六个有效的键名称。
- : 将被添加到任何 wiki链接 的URL字符串,链接标签的目标只是一个页面名,而不是带有方案和主机名的完整URL。空字符串将不会添加任何内容。您可以传递一个路径用于绝对路径URL或方案+主机名+可选的路径用于完整绝对URL。
- : 将被添加到任何 wiki图片 的URL字符串,图像标签的目标只是一个文件名或路径和文件名,而不是带有方案和主机名的完整URL。绝对路径和完整URL的规则相同。
- : 指定用于创建具有完整URL的标签的格式。如果您想对外部链接应用特殊类以便它们格式化不同,这将非常有用。格式字符串将传递给PHP的sprintf函数。格式可以使用两个数字占位符:%1$s - URL,%2$s - 链接的文本部分。默认格式是 . 作为替代方案,您可以传递有效的PHP回调函数(如果使用PHP 5.3,闭包也适用)并且您的函数将使用URL作为第一个参数和文本作为第二个参数调用。
- : 与相同,但此格式将用于所有仅提供页面标题的其他wiki/博客/CMS页面链接。默认格式是 。您也可以在这里传递PHP回调或闭包。
- : 与相同,但如果您提供了现有页面的列表,并且链接标签中的页面尚未存在,则将应用此格式。这对于专门样式化需要创建的页面特别有用。默认格式是 。您也可以在这里传递PHP回调或闭包。
- : 适用于文本正文中的URL,但不在标签内。与上述三种格式不同,这是一个用于preg_replace的格式字符串。还有一个占位符,$0,尽管它可以重复。默认格式是 。回调和闭包目前尚不可用。
- 默认关闭。当解析出错时,允许打印额外信息。如果块级元素的解析出错,您将得到带有占位符的文本,而不是该块级元素。设置为将打印出所有无法在HTML字符串末尾PRE标签中重新组合的字符串。这个选项实际上只对开发者有用,并且希望不再需要。
以上任何选项都可以通过方法设置。
第二个可选构造函数参数接受一个包含现有页面列表的数组。数组的值(键被忽略)必须是页面URL的slug,在去除任何非法字符并进行格式化后(即空格转换为短横线)。有关URL格式化的更多信息,请参阅方法和属性。我意识到不同的软件包可能有不同的URL格式化/准备规则。这可能是将来可插拔的。
已知问题
- 多行列表项不起作用。
- 将}}}}放在no wiki标签内会导致解析错误。
Creole扩展
- 我喜欢使用删除线,所以我添加了和然后也作为标记格式。渲染的HTML使用带有应用于兼容HTML4/XHTML1 Strict样式的标签。然而请注意和是有效的HTML5标签。我可能在未来添加一个标志来在这两种选项之间切换。
- 我还实现了扩展,它使用标签包装文本(这本来应该是但被HTML5丢弃了)。
块级宏
您通过调用方法来注册您的宏。同样,$callback可以是任何有效的PHP可调用,包括闭包。解析器将使用以下语法匹配块级宏
<<macroName arg1 arg2 This is some paragraph text. >>
宏函数的参数应该用空格分隔,并且必须出现在第一行上。《em>body》宏跟在下一行上,直到找到结束标记。当您的宏被调用时,参数将按照它们出现的顺序传递。主体总是最后。您的函数返回的内容将被放置在宏标签的位置。内联宏是我开发列表中的下一个项目。
未来的计划
- 修复已知问题中的内容。
- 内联宏。
- 可能自动在标题上创建锚点(这是一个常见的使用模式)。
- 实现严格/非严格模式,可以在HTML4/XHTML1 Strict合规性和HTML 5允许的标签之间切换。
- 为免费链接实现可插拔格式化。
- 将纯文本wiki链接转换为页面slugs的可插拔转换。