标签: wikitext

解析维基媒体标记 - 基于EBNF的解析器是不是很适合?

我试图解析(在Java中)维基百科上的Wikiimedia标记.有许多现有的包用于此任务,但我没有发现任何特别适合我的需求.我使用过的最好的软件包是Mathclipse Bliki解析器,它在大多数页面上都做得不错.

但是,此解析器不完整,无法解析某些页面或无法正确解析其他页面.可悲的是,代码相当混乱,因此修复此解析引擎中的问题非常耗时且容易出错.

在尝试找到一个更好的解析引擎时,我已经研究过使用基于EBNF的解析器来完成这项任务(特别是ANTLR).经过一些尝试后,似乎这种方法并不特别适合这项任务,因为维基媒体标记相对宽松,因此不能轻易地融入结构化语法.

我对ANTLR和类似解析器的经验非常有限,因此可能是我的经验不足导致问题,而不是这样的解析器天生就不适合这项任务.任何对这些话题有更多经验的人都可以在这里说点吗?

@Stobor:我已经提到我已经查看了各种解析引擎,包括谷歌查询返回的引擎.到目前为止我发现的最好的是Bliki引擎.问题是修复这些解析器的问题变得非常繁琐,因为它们本质上都是条件和正则表达式的长链,导致意大利面条代码.我正在寻找更类似于EBNF解析方法的东西,因为该方法更清晰,更简洁,因此更容易理解和发展.我已经看过你发布的mediawiki链接,似乎证实了我怀疑开箱即用的EBNF不适合这个任务.因此,我正在寻找一个像EBNF一样清晰易懂的解析引擎,但也能够处理wiki标记的混乱语法.

java parsing antlr ebnf wikitext

9
推荐指数
1
解决办法
1318
查看次数

使用命令行将MediaWiki wikitext格式转换为HTML

我倾向于编写大量的文档,因此MediaWiki格式对我来说很容易理解,而且比编写传统HTML节省了我很多时间.然而,我也写了一篇博客,发现从键盘切换到鼠标一直为HTML输入正确的标签会增加很多时间.我希望能够用Mediawiki语法编写我的文章,然后将其转换为HTML以便在我的博客上使用.

我已经尝试了谷歌,但必须要求更好的术语,因为我无法找到任何东西.

我使用Linux,并希望从命令行执行此操作.

任何人有任何想法或想法?

html linux command-line mediawiki wikitext

9
推荐指数
3
解决办法
5192
查看次数

获取维基百科文章的第一段(并且仅文本)返回不期望的结果

我试图在这个例子中检索维基百科,UNIX的文章的第一段文本,但它返回了一个非期望的输出.

对于我在维基百科api和StackOverflow上阅读的内容,这是进行调用的请求URL:

http://en.wikipedia.org/w/api.php?format=php&action=query&titles=unix&redirects=1&prop=revisions&rvprop=content&rvsection=0&rvlimit=1

我的预期输出将是:

Unix(官方注册为UNIX,有时也称为小型大写的Unix)是一种多任务,多用户计算机操作系统,最初由贝尔实验室的一组AT&T员工于1969年开发,包括Ken Thompson,Dennis Ritchie,Brian Kernighan, Douglas McIlroy,Michael Lesk和Joe Ossanna.[1] Unix操作系统最初是用汇编语言开发的,但到1973年几乎完全用C语言编写,极大地促进了它的进一步开发和移植到其他硬件.今天的Unix系统演变分为各个分支,由AT&T以及各种商业供应商,大学(如加州大学伯克利分校的BSD)和非营利组织随时间开发.

我目前的结果:

{{Use dmy dates|date=August 2012}}
{{Infobox OS
|name               = Unix
|logo               = 
|screenshot         = [[File:Unix history-simple.svg|250px]]
|caption            = Evolution of Unix and Unix-like systems
|website            = [http://www.unix.org unix.org]
|developer          = [[Ken Thompson (computer programmer)|Ken Thompson]], [[Dennis Ritchie]], [[Brian Kernighan]], [[Douglas McIlroy]], and [[Joe Ossanna]] at [[Bell Labs]]
|source_model       = Historically [[Closed source software|closed source]], now some Unix projects ([[Berkeley Software Distribution|BSD]] family and [[Illumos]]) are …
Run Code Online (Sandbox Code Playgroud)

wikipedia wikitext wikipedia-api

7
推荐指数
2
解决办法
2264
查看次数

将表格放入 Mediawiki 的有序列表中

我试图将表格内联放置在 Mediawiki 的有序列表中,但是它破坏了我的编号。我想要的是

1. A1
1.1 B1
1.2 B2
my table
2. A2
Run Code Online (Sandbox Code Playgroud)

但我得到的是

1. A1
1.1 B1
1.2 B2
my table
1. A2
Run Code Online (Sandbox Code Playgroud)

我使用的基本标记是;

# A1
## B1
## B2
my table
#A2
Run Code Online (Sandbox Code Playgroud)

mediawiki wikitext

7
推荐指数
1
解决办法
927
查看次数

Mediawiki最好的WYSIWYG编辑器是什么?

Mediawiki最好的WYSIWYG编辑器是什么?似乎周围有许多,但不是特别用户友好(特别是像桌子这样的东西).谁知道目前最好的产品是什么?

我们主要将wiki用于文档(内部),而不是实际的encycopedia类型操作(即引用和引用不太重要).但我希望它尽可能方便用户使用 - 所以不要让用户学习维基媒体标记(wikitext)会很棒......

markup wysiwyg mediawiki editor wikitext

6
推荐指数
1
解决办法
7040
查看次数

如何在Python中解析简单的内联标记(即*bold*)?

如何为修改文本的wiki文本子集实现解析器(在Python中),即:

*bold*, /italics/, _underline_ 
Run Code Online (Sandbox Code Playgroud)

我正在将它转换为LaTeX,因此转换来自:

Hello, *world*! Let's /go/.
Run Code Online (Sandbox Code Playgroud)

至:

Hello \textbf{world}! Let's \textit{go}.
Run Code Online (Sandbox Code Playgroud)

虽然没有具体说明它是转换为LaTeX(特别是除了嵌套的情况,如"*bold/italics*whatami /"=>"textbf {bold\textit {italics} whatami}").

我查看了现有的标记库,但它们(a)不是我想要的维基语言,而且(b)似乎因这个问题而被压制.

我考虑过逆向工程Creoleparser,但我想知道在我付出努力之前别人有什么建议.

谢谢!

python parsing wikitext creole

4
推荐指数
1
解决办法
855
查看次数

.Net WikiText到HTML Parser

我知道,我知道,这听起来很愚蠢,但似乎没有开源强大的.NET库可以将Wikitext解析为HTML.

任何人都知道一个stable.robust .net Wikitext到HTML解析器(即仍处于测试模式的codeplex项目不计算在内)

.net parsing open-source wikitext

2
推荐指数
1
解决办法
3068
查看次数

ANTLR 3中wikitext-to-HTML的工作示例

我正试图在ANTLR 3中充实wiki文本到HTML的翻译,但我一直陷入困境.

你知道一个我可以检查的工作实例吗?我尝试了MediaWiki ANTLR语法和Wiki Creole语法,但是我无法让它们在ANTLR 3中生成词法分析器和解析器.

以下是我尝试使用的两个语法的链接:

我无法获得这两个中的任何一个来生成我的Java Lexer和Parser.(我使用ANTLR3作为Eclipse插件).MediaWiki需要花费很长时间来构建,然后在某些时候抛出OutOfMemory异常.另一个有错误,我不知道如何调试.

编辑:好的,我有一个非常基本的语法:

grammar wikitext;

options {
  //output = AST;
  //ASTLabelType = CommonTree;
  output = template;
  language = Java;
}

document: line (NL line?)*;

line: horizontal_line | list | heading | paragraph;

/* horizontal line */
horizontal_line: HRLINE;

/* lists */
list: unordered_list | ordered_list;

unordered_list: '*'+ content;
ordered_list: '#'+ content;

/* Headings */
heading: heading1 | heading2 | heading3 | heading4 | heading5 | heading6;
heading1: H1 …
Run Code Online (Sandbox Code Playgroud)

mediawiki antlr stringtemplate wikitext creole

2
推荐指数
1
解决办法
1818
查看次数

如何将包含双大括号函数的 Wikitext 标记转换为纯文本或 html?

我正在创建一个定制的 Wiki 标记解析器/解释器。然而,解释这样的函数是一项艰巨的任务:

\n\n
{{convert|500|ft|m|0}}\n
Run Code Online (Sandbox Code Playgroud)\n\n

其转换如下:

\n\n
500 feet (152 m)    \n
Run Code Online (Sandbox Code Playgroud)\n\n

我想避免手动编码这些函数的解释,而宁愿采用查询字符串的方法

\n\n
+akiva@akiva-ThinkPad-X230:~$ wiki-to-text "convert|3|to(-)|6|ft|abbr=on}}"\n
Run Code Online (Sandbox Code Playgroud)\n\n

并获得以下回报:

\n\n
"3 to 6 ft (0.91\xe2\x80\x931.83 m)"\n
Run Code Online (Sandbox Code Playgroud)\n\n

有没有工具可以做到这一点?离线是迄今为止最理想的解决方案,但我可以忍受必须查询服务器。

\n

markup wiki mediawiki wikipedia wikitext

2
推荐指数
1
解决办法
498
查看次数

Parsoid - 在本地解析维基文本

这甚至可能吗?

我不确定,如果我正确理解这个项目。我正在尝试使用 Parsoid-JSAPI 项目将大量 wikitext 解析为 html。

解析工作正常,但它仍在调用维基媒体 API。我已经在本地运行服务器,但该库仍在使用公共 Internet API 而不是我的本地服务器。如果我尝试指定域,调用Parsoid.parse("wikitext", {domain: 'localhost'}),它说No API URI available for prefix: null; domain: localhost

我的 config.yaml:

mwApis:
    uri: 'http://localhost/w/api.php'
    domain: 'localhost'
Run Code Online (Sandbox Code Playgroud)

html localhost wikitext parsoid

2
推荐指数
1
解决办法
255
查看次数

使用Python渲染wiki文档

我需要渲染wikitext(从相关的mediawiki数据库中提取)并以其他格式显示(最终呈现为PDF,但基本上任何其他格式都可以).

我可以肯定地将一些能够完成这项工作的东西放在一起,但最终我会随着时间的推移编写它,我可以看到,当我团队中的人使用它们时,实施新标签的开销会耗费我很多时间.

有没有这样做的项目?

我看到了用python编写的TiddlyWiki,我将考虑借用他们的库,但与此同时我认为可能有一个项目更有利于有人知道吗?

干杯

python mediawiki wikitext

0
推荐指数
1
解决办法
1845
查看次数

维基文本中的可滚动表格

在我的公司,我们使用内部 wiki,我需要添加一个表格,但表格非常大,超过 100 列,因此当您想查看所有数据时,您可以水平滚动,但滚动的是所有页面。wikitext 中有没有办法让表格只能滚动?

wikitext

0
推荐指数
1
解决办法
934
查看次数