编写DuckDuckGo插件变得更简单了

DuckDuckGo(一个不跟踪你的搜索引擎)背后的开发者已经让编写该网站的插件变得比以往任何时候都容易。随着本月底即将举行的第一次全球Quack & Hack活动,现在是参与其中的最佳时机。

即时答案

DuckDuckGo引擎支持多种类型的插件,但提供静态“速查表”的即时答案起步非常简单。之前开发新的即时答案需要Perl模块、测试文件和响应的纯文本版本。现在你只需要提供你的即时答案的JSON文件,就可以开始工作了。

设置

你需要将DuckDuckGo的仓库进行分叉,并将你的分叉仓库克隆到你的开发机器上。你可以选择安装App::DuckPAN,它可以启动一个用于测试你代码的本地DuckDuckGo站点。另一种测试速查表的方法是通过Codio

即时答案JSON文件

即时答案JSON文件应创建在仓库中的share/goodie/cheat_sheets目录中。一个好的开始方法是从现有的文件中复制一个,并将其修改为包含你的内容。

这是从我的perldoc即时答案中的一个截断示例

{
    "id": "perldoc_cheat_sheet",
    "name": "perldoc",
    "description": "Perl Documentation",
    "metadata": {
        "sourceName": "perldoc Manual",
        "sourceUrl": "https://perldoc.perl5.cn/perldoc.html"
    },
    "section_order": ["Usage", "Module Options", "Search Options", "Common Options"],
    "sections": {
        "Usage": [
        {
            "key": "[perldoc <option>]",
            "val": "start perldoc"
        },
        {
            "key": "[perldoc perldoc]",
            "val": "perldoc help"
        }
        ],
       ...
    }
}

idname字段应该是描述插件的唯一值。metadata字段描述即时答案中信息的来源。使用规范来源是好的——在这种情况下,我引用了官方的Perl文档。

sections字段是即时答案的内容。每个条目都是键值对的数组。section_order描述了搜索结果中显示部分的顺序,所以请确保将最重要的部分放在前面!

让我们更仔细地看看一个部分条目,这里是以Module Options为例

        "Module Options": [
        {
            "key": "Module::Name",
            "val": "Show module documentation"
        },
        {
            "key": "[-l Module::Name]",
            "val": "Module filepath"
        },
        {
            "key": "[-m Module::Name]",
            "val": "Module source code"
        },
        {
            "key": "[-lm Module::Name]",
            "val": "Module filepath (alt.)"
        }
        ],

“Module Options”是部分名称,这必须在section_order字段中完全存在,否则这个部分将不会显示。部分名称文本用于该部分的副标题,所以请确保选择一些可读性好的: “Module Options”比“module_options”要好。

每个键值对条目代表即时答案中要显示的文本,key文本应该是代码,val是描述。如果key文本包含空格,请将文本用方括号括起来以确保它在网页上显示为代码(参见这篇文章的封面图像以获取示例)。你可以在这里找到完整的perldoc JSON文件:这里

总结

你可以使用App::DuckPAN测试你的即时答案(见我之前的文章中的示例)。如果你想要与开发者讨论你的即时答案,或者解决问题,DuckDuckGo团队在Slack上,你可以通过电子邮件请求访问。官方的文档也非常有用。

一旦你完成了一个即时答案,创建一个拉取请求!DuckDuckGo开发者将审查你的代码并提供反馈。一旦你的即时答案获得批准,它将在几天内上线。

更新:已更改DDG Slack的聊天详情,日期为2015-08-26


本文最初发布在PerlTricks.com

标签

David Farrell

David是一位专业程序员,他经常在推特博客上分享关于代码和编程艺术的见解。

浏览他们的文章

反馈

这篇文章有什么问题吗?请通过在GitHub上打开一个问题或拉取请求来帮助我们。