我在哪里可以找到将内部 MediaWiki 链接转换为文章 URL 的代码?

Where can I find the code that convert internal MediaWiki links into article URLs?

我需要准确复制维基百科关于将页面正文中的 [[links]] 转换为打开其引用文章的 URL 的行为。

描述了 link 语法及其行为(转换)here。虽然那篇文章只提到了一些非常基本的修改,但我认为这还不是全部。

我尝试搜索 MediaWiki API 参考资料,但没有找到我正在寻找的特定代码段。有没有人对代码足够熟悉,知道我可能在谈论哪个 PHP 函数(大概与 editing/submitting 相关)?

这有两部分:

  1. 正在解析 link 语法。
  2. 正在从页面标题生成 URL。

解析 link 由解析器 class 完成,它负责所有 wiki 文本处理。链接可以比 [[Foo]] 更复杂,例如[[Foo#bar|something]],其中 Foo 是目标页面,#bar 是一个部分,"something" 是结果 link 的 "surface text"。要生成 URL,您需要目标页面和部分。要生成 link(在 HTML 中),您还需要表面文本(如果未给出,则与目标页面 + 部分相同)。目前没有简单的方法来解析 link,而不进行完整的维基文本处理。

如果您已经有了目标页面标题(可能还有部分 ID),您有两种选择来为其获取 URL:老式(整体)方式,或新式(服务基于)方式。

新的样式方法是:

  • 使用 MediaWikiTitleCodec::parseTitle 从您拥有的字符串生成 TitleValue object。
  • 使用 MediaWikiPageLinkRenderer::getPageURL 获取给定 TitleValue object 的页面 URL。

老派方法是:

  • 使用 Title::newFromText() 从您拥有的字符串中创建标题 object。
  • 使用Title::getFullURL()获取页面URL.

旧样式更简单,因为它不需要您创建服务 object。它依赖于全局状态并且所有依赖项都是硬编码的。新风格使用简单的依赖注入,允许所有部分单独换出并独立测试 - 但它需要更多的代码。