用Perl检查您的DuckDuckGo速查表

随着DuckDuckGo的全球Quack & Hack活动即将到来,我整理了一个脚本用于检查速查表。该脚本检查速查表是否为有效的JSON格式,并具有所需的条目和值。

设置

要运行此脚本,从GitHub下载它。它需要JSONHTTP::Tiny Perl模块,您可以在终端使用cpan进行安装

$ cpan JSON HTTP::Tiny

确保也为脚本赋予执行权限

$ chmod 744 cheatsheet_check

使用方法

一旦您有了要检查的JSON格式的速查表,只需将文件路径传递给cheatsheet_check

$ ./cheatsheet_check /path/to/cheatsheet.json

perldoc速查表的示例输出

    # Subtest: file
    ok 1 - file exists
    ok 2 - filename is appropriate
    ok 3 - file content can be read
    ok 4 - content is valid JSON
    1..4
ok 1 - file
    # Subtest: headers
    ok 1 - has id
    ok 2 - has name
    ok 3 - has description
    1..3
ok 2 - headers
    # Subtest: metadata
    ok 1 - has metadata
    ok 2 - has metadata sourceName
    ok 3 - has metadata sourceUrl
    ok 4 - sourceUrl is not undef
    ok 5 - fetch sourceUrl
    1..5
ok 3 - metadata
    # Subtest: sections
    ok 1 - has section_order
    ok 2 - section_order is an array of section names
    ok 3 - has sections
    ok 4 - sections is a hash of section key/pairs
    ok 5 - 'Usage' exists in sections
    ok 6 - 'Module Options' exists in sections
    ok 7 - 'Search Options' exists in sections
    ok 8 - 'Common Options' exists in sections
    ok 9 - 'Search Options' exists in section_order
    ok 10 - 'Search Options' is an array
    ok 11 - 'Search Options' entry: 0 has a key
    ok 12 - 'Search Options' entry: 0 has a val
    ok 13 - 'Search Options' entry: 1 has a key
    ok 14 - 'Search Options' entry: 1 has a val
    ok 15 - 'Search Options' entry: 2 has a key
    ok 16 - 'Search Options' entry: 2 has a val
    ok 17 - 'Common Options' exists in section_order
    ok 18 - 'Common Options' is an array
    ok 19 - 'Common Options' entry: 0 has a key
    ok 20 - 'Common Options' entry: 0 has a val
    ok 21 - 'Common Options' entry: 1 has a key
    ok 22 - 'Common Options' entry: 1 has a val
    ok 23 - 'Common Options' entry: 2 has a key
    ok 24 - 'Common Options' entry: 2 has a val
    ok 25 - 'Common Options' entry: 3 has a key
    ok 26 - 'Common Options' entry: 3 has a val
    ok 27 - 'Common Options' entry: 4 has a key
    ok 28 - 'Common Options' entry: 4 has a val
    ok 29 - 'Module Options' exists in section_order
    ok 30 - 'Module Options' is an array
    ok 31 - 'Module Options' entry: 0 has a key
    ok 32 - 'Module Options' entry: 0 has a val
    ok 33 - 'Module Options' entry: 1 has a key
    ok 34 - 'Module Options' entry: 1 has a val
    ok 35 - 'Module Options' entry: 2 has a key
    ok 36 - 'Module Options' entry: 2 has a val
    ok 37 - 'Module Options' entry: 3 has a key
    ok 38 - 'Module Options' entry: 3 has a val
    ok 39 - 'Usage' exists in section_order
    ok 40 - 'Usage' is an array
    ok 41 - 'Usage' entry: 0 has a key
    ok 42 - 'Usage' entry: 0 has a val
    ok 43 - 'Usage' entry: 1 has a key
    ok 44 - 'Usage' entry: 1 has a val
    1..44
ok 4 - sections
1..4

这将对速查表运行超过20个不同的测试。脚本检查JSON是否有效,所需的标题是否存在(例如id、name和description)。它检查元数据是否有效并指向一个活动URL。最后,它检查章节是否有效并且映射正确。

总结

记住,即使速查表通过了所有测试,您仍然需要在浏览器中检查其外观。App::DuckPAN可以帮助您完成这项工作。本周六,我将参加在Orbital举行的纽约市Quack & Hack活动。我期待在那里见到大家!

更新:添加了HTTP::Tiny依赖项。2015-08-28


这篇文章最初发布在PerlTricks.com

标签

David Farrell

David是一位专业程序员,他经常推文并在博客上写关于代码和编程艺术的博客。

浏览他们的文章

反馈

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