mip-validator 1.3.1

MIP validator

Homepage: https://github.com/mipengine/mip-validator#readme

Platform: npm

Language: HTML

License: ISC

Keywords: MIP, validator

Repository: git+ssh:[email protected]/mipengine/mip-validator.git

View on registry: https://www.npmjs.com/package/mip-validator

Direct download link: https://registry.npmjs.org/mip-validator/-/mip-validator-1.3.1.tgz

Install: npm install [email protected]


MIP Validator

NPM version

Dependency manager

本项目给出用于MIP校验的NPM软件包,支持编程方式、命令行接口、以及浏览器JS。 本文档介绍MIP校验框架的使用和开发方式,其他相关文档请参考Wiki

依赖与安装

确保安装了Node.js(版本>=4),然后使用npm安装mip-validator

# 编程方式访问,将会安装到 ./node_modules/mip-validator
npm install -S mip-validator
# 命令行接口
sudo npm install -g mip-validator

注意:对于命令行接口,如果没有管理员权限可安装在本地(不加-g参数):

npm install mip-validator

以后使用时用本地的可执行文件./node_modules/.bin/mip-validator代替全局可执行文件mip-validator

使用方式

编程接口

在本地安装mip-validator(即安装于node_modules目录下)。 使用mip-validator创建一个实例,即可用来验证MIP HTML。

const Validator = require('mip-validator');

// 使用默认规则创建实例,等效于:Valicator(Validator.rules);
var validator = Valicator(); 
var errs = validator.validate('<html><div></div></html>')
console.log(errs);

命令行接口

需要全局安装mip-validator(见上一节)。API:

  • 使用标准输入HTML(String类型)
  • 标准输出的错误列表(JSON格式)
  • -c参数(可选)来指定规则文件(JSON格式),为空则采用MIP默认配置。

例如:

$ mip-validator < a.html                # 校验 a.html
$ mip-validator < a.html > a.html.json  # 也可将验证结果重定向至文件
$ mip-validator --help                  # 查看帮助
    -h, --help         output usage information
    -V, --version      output the version number
    -F, --fast         fast validation
    -c, --conf [path]  validator configuration file [rules.json]

浏览器JS

MIP校验框架可以在浏览器端使用,通过window.MIPValidator提供API。 将dist/mip-validator.js引入页面后,在页面脚本中可直接使用,用法与Node.js端完全相同:

var Validator = window.MIPValidator;
var validator = Validator();

HTTP Service

$ mip-validator-http

端口与主机可以通过参数更改,更多信息请运行mip-validator-http -h

然后访问http://localhost:4444,可以看到简单的使用说明。 示例客户端程序见:demo/http.js

  • 校验HTML文档:POST /validate,Request Body为待校验HTML字符串。
  • 快速校验HTML文档:POST /validate?fast=true,Request Body为待校验HTML字符串。

开启快速校验时,只能获得第一个校验错误。因此运行也稍快。

Socket Service

Socket服务只支持快速校验模式,不需要设置。

$ mip-validator-socket

创建Socket Client并连接到localhost:4445,逐个发送HTML。 HTML文本之间以__baidu_mip_validator__分隔, 返回的字符串也以__baidu_mip_validator__分隔。 对于每个HTML,将按顺序返回一个字符串序列化的JSON。 示例客户端程序见:demo/socket.js

  • 统一使用UTF-8编码。
  • 协议仍待增强(字符串Escape未实现)。

端口与主机可以通过参数更改,更多信息请运行mip-validator-socket -h

API

new Validator(<rules>, <config>)

根据传入的校验规则,以及校验器配置返回一个校验器实例。

<rules>

可选,默认值:Validator.rules

默认值的内容见rules.json,语法见rules wiki

false, undefined, null时会应用默认值, 为Object(例如{})时会应用该规则定义对象。 如果你希望使用旧版规则(rules.json),或者希望探索MIP校验框架内部的逻辑, 或者在发明新的校验规则,可以使用此参数。

var rules = {
    div: {
        mandatory: true
    }
};
var validator = Validator(rules);

<config.fast>

可选,默认值:false

true时mip-validator在第一个错误发生就立即返回。 否则mip-validator会找到所有错误。例如:

var validator = Validator(null, {fast: true});

.validate(html)

传入HTML字符串,返回错误列表(如果完全正确,则返回空数组)。

Validator.rules

默认的MIP校验规则(<rules>的默认值),可在其基础上进行定制,例如:

var rules = Validator.rules;
rules.div = {
    mandatory: rules.iframe.mandatory
};
var validator = Validator(rules);

开发指南

环境准备

确保安装了Node.js(>=4),然后克隆仓库并安装依赖。

git clone xxx
npm install

单元测试

可以使用NPM Script进行测试,也可以全局安装mocha后直接运行Mocha。

# 使用NPM Script
npm test

# 或者直接运行(需要安装mocha):
mocha

集成测试

目前利用Makefile可以方便地校验cases/下的样例文件,其中:

  • cases/*.html: 样例HTML
  • cases/*.json: 对应样例HTML的校验结果

集成测试我们用 Git 来管理,生成集成测试结果:

make cases
git diff        # 对,就是用 Git 来查看 😀

如果cases/*.json存在 Diff,说明校验有问题或者要升级。 如果是前者那就继续调试,如果是后者那就直接 Commit。

构建浏览器JS

mip-validator依赖于Node.js 4以上, 但本项目通过Browserify提供了在浏览器JS。 可通过下列命令重新生成:

# 输出到 dist/ 目录:mip-validator.min.js, mip-validator.js
make dist

工具脚本

工具脚本位于bin目录下:

bin/cli.js

命令行接口,通过package.json暴露给NPM。

bin/benchmark.js

简单的性能测试,运行cases/htmls下的所有样例, 并统计运行时间。使用方式:

node bin/benchmark.js

bin/md-error.js

错误代码转换为Markdown文件,用于Wiki或其他Doc。


Development Dependencies Requirements Latest Stable Latest Release Licenses
aliasify ^2.1.0 2.1.0 2.1.0 MIT
babelify ^7.3.0 7.3.0 7.3.0 MIT
babel-preset-es2015 ^6.13.2 6.24.0 7.0.0-alpha.1 MIT
browserify ^13.1.0 14.1.0 14.1.0 MIT
chai ^3.5.0 3.5.0 4.0.0-canary.1 MIT
chai-as-promised ^6.0.0 6.0.0 6.0.0 WTFPL
changelog ^1.0.7 1.0.7 1.0.7 MIT
coveralls ^2.11.9 2.12.0 2.12.0 BSD-2-Clause
git-changelog ^1.0.1 1.1.0 1.1.0 MIT
istanbul ^0.4.3 0.4.5 1.1.0-alpha.1 BSD-3-Clause
mocha ^3.2.0 3.2.0 3.2.0 MIT
mock-fs ^3.11.0 4.2.0 4.2.0 MIT
sinon ^1.17.6 2.0.0 2.0.0 BSD-3-Clause
sinon-chai ^2.8.0 2.8.0 2.8.0 WTFPL
supertest ^2.0.1 3.0.0 3.0.0 MIT
uglifyjs ^2.4.10 2.4.10 2.4.10 BSD-3-Clause
Explore the resolved development dependency tree for mip-validator 1.3.1
Dependencies Requirements Latest Stable Latest Release Licenses
commander ^2.9.0 2.9.0 2.9.0 MIT
jschardet ^1.4.1 1.4.2 1.4.2 LGPL-2.1+
lodash ^4.17.2 4.17.4 4.17.4 MIT
parse5 ^3.0.1 3.0.2 3.0.2 MIT
Explore the resolved dependency tree for mip-validator 1.3.1

Releases

  • 1.3.1 - March 21, 2017 06:43
  • 1.3.0 - March 03, 2017 08:27
  • 1.2.23 - January 23, 2017 02:56
  • 1.2.22 - January 16, 2017 05:12
  • 1.2.21 - December 29, 2016 09:27
  • 1.2.20 - December 23, 2016 10:26
  • 1.2.19 - December 12, 2016 10:45
  • 1.2.18 - November 17, 2016 08:45
  • 1.2.17 - November 16, 2016 04:20
  • 1.2.16 - November 14, 2016 04:59
See all 29 releases

Project Statistics

SourceRank 8
Dependencies 4
Dependent projects 2
Dependent repositories 2
Total releases 29
Latest release
First release
Stars 5
Forks 3
Watchers 9
Contributors 2
Repo Size: 2.6 MB

Top Contributors See all

Jun Yang PEI WANG

Something wrong with this page? Make a suggestion

Export .ABOUT file for this library

Last synced: 2017-03-21 06:50:10 UTC

Login to resync this project