├── .DS_Store
├── .gitignore
├── .idea
├── .gitignore
├── inspectionProfiles
│ └── profiles_settings.xml
├── misc.xml
├── modules.xml
├── sailboat.iml
└── vcs.xml
├── README.md
├── apidoc.json
├── common.py
├── components
├── __init__.py
├── auth.py
├── enums.py
├── storage.py
└── urils.py
├── connect.py
├── docs
├── api_data.js
├── api_data.json
├── api_project.js
├── api_project.json
├── css
│ └── style.css
├── fonts
│ ├── glyphicons-halflings-regular.eot
│ ├── glyphicons-halflings-regular.svg
│ ├── glyphicons-halflings-regular.ttf
│ ├── glyphicons-halflings-regular.woff
│ └── glyphicons-halflings-regular.woff2
├── img
│ └── favicon.ico
├── index.html
├── locales
│ ├── ca.js
│ ├── cs.js
│ ├── de.js
│ ├── es.js
│ ├── fr.js
│ ├── it.js
│ ├── locale.js
│ ├── nl.js
│ ├── pl.js
│ ├── pt_br.js
│ ├── ro.js
│ ├── ru.js
│ ├── tr.js
│ ├── vi.js
│ ├── zh.js
│ └── zh_cn.js
├── main.js
├── utils
│ ├── handlebars_helper.js
│ └── send_sample_request.js
└── vendor
│ ├── bootstrap.min.css
│ ├── bootstrap.min.js
│ ├── diff_match_patch.min.js
│ ├── handlebars.min.js
│ ├── jquery.min.js
│ ├── list.min.js
│ ├── lodash.custom.min.js
│ ├── path-to-regexp
│ ├── LICENSE
│ └── index.js
│ ├── polyfill.js
│ ├── prettify.css
│ ├── prettify
│ ├── lang-Splus.js
│ ├── lang-aea.js
│ ├── lang-agc.js
│ ├── lang-apollo.js
│ ├── lang-basic.js
│ ├── lang-cbm.js
│ ├── lang-cl.js
│ ├── lang-clj.js
│ ├── lang-css.js
│ ├── lang-dart.js
│ ├── lang-el.js
│ ├── lang-erl.js
│ ├── lang-erlang.js
│ ├── lang-fs.js
│ ├── lang-go.js
│ ├── lang-hs.js
│ ├── lang-lasso.js
│ ├── lang-lassoscript.js
│ ├── lang-latex.js
│ ├── lang-lgt.js
│ ├── lang-lisp.js
│ ├── lang-ll.js
│ ├── lang-llvm.js
│ ├── lang-logtalk.js
│ ├── lang-ls.js
│ ├── lang-lsp.js
│ ├── lang-lua.js
│ ├── lang-matlab.js
│ ├── lang-ml.js
│ ├── lang-mumps.js
│ ├── lang-n.js
│ ├── lang-nemerle.js
│ ├── lang-pascal.js
│ ├── lang-proto.js
│ ├── lang-r.js
│ ├── lang-rd.js
│ ├── lang-rkt.js
│ ├── lang-rust.js
│ ├── lang-s.js
│ ├── lang-scala.js
│ ├── lang-scm.js
│ ├── lang-sql.js
│ ├── lang-ss.js
│ ├── lang-swift.js
│ ├── lang-tcl.js
│ ├── lang-tex.js
│ ├── lang-vb.js
│ ├── lang-vbs.js
│ ├── lang-vhd.js
│ ├── lang-vhdl.js
│ ├── lang-wiki.js
│ ├── lang-xq.js
│ ├── lang-xquery.js
│ ├── lang-yaml.js
│ ├── lang-yml.js
│ ├── prettify.css
│ ├── prettify.js
│ └── run_prettify.js
│ ├── require.min.js
│ ├── semver.min.js
│ └── webfontloader.js
├── executor
├── __init__.py
├── actuator.py
└── boat.py
├── handler
├── __init__.py
├── deploy.py
├── index.py
├── loghandler.py
├── record.py
├── routers.py
├── timers.py
└── user.py
├── interface.py
├── rements.txt
├── sailboat.ini
├── server.py
├── settings.py
└── supervise
├── __init__.py
├── alarms.py
└── monitors.py
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/asyncins/sailboat/b9734e9bae3703e328cacf1969d26e2b334b889a/.DS_Store
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | pip-wheel-metadata/
24 | share/python-wheels/
25 | *.egg-info/
26 | .installed.cfg
27 | *.egg
28 | MANIFEST
29 |
30 | # PyInstaller
31 | # Usually these files are written by a python script from a template
32 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
33 | *.manifest
34 | *.spec
35 |
36 | # Installer logs
37 | pip-log.txt
38 | pip-delete-this-directory.txt
39 |
40 | # Unit test / coverage reports
41 | htmlcov/
42 | .tox/
43 | .nox/
44 | .coverage
45 | .coverage.*
46 | .cache
47 | nosetests.xml
48 | coverage.xml
49 | *.cover
50 | *.py,cover
51 | .hypothesis/
52 | .pytest_cache/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | target/
76 |
77 | # Jupyter Notebook
78 | .ipynb_checkpoints
79 |
80 | # IPython
81 | profile_default/
82 | ipython_config.py
83 |
84 | # pyenv
85 | .python-version
86 |
87 | # pipenv
88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
91 | # install all needed dependencies.
92 | #Pipfile.lock
93 |
94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95 | __pypackages__/
96 |
97 | # Celery stuff
98 | celerybeat-schedule
99 | celerybeat.pid
100 |
101 | # SageMath parsed files
102 | *.sage.py
103 |
104 | # Environments
105 | .env
106 | .venv
107 | env/
108 | venv/
109 | ENV/
110 | env.bak/
111 | venv.bak/
112 |
113 | # Spyder project settings
114 | .spyderproject
115 | .spyproject
116 |
117 | # Rope project settings
118 | .ropeproject
119 |
120 | # mkdocs documentation
121 | /site
122 |
123 | # mypy
124 | .mypy_cache/
125 | .dmypy.json
126 | dmypy.json
127 |
128 | # Pyre type checker
129 | .pyre/
130 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | # Default ignored files
3 | /workspace.xml
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/sailboat.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Sailboat
2 |
3 | 
4 |
5 | Management Platform For Python Spider Project
6 |
7 | ⛵️Sailboat 意为帆船
8 |
9 | 它是一个专为非框架类 Python 项目准备的轻量级项目管理平台。
10 |
11 | 在没有 Sailboat 之前,你编写的框架类爬虫项目可以通过框架配套的服务进行部署和管理,例如 Scrapy 与 Scrapyd 的形式。
12 |
13 | 但如果你只是想一些小东西 **例如用 Requests 或 Aiohttp 编写网络程序**,不想使用 Scrapy 这样的框架时,你无法将你写好的项目放到服务器上**管理**。
14 |
15 | 或许你可以写一个 Linux Shell,让它可以定时启动。这个过程中你会发现很多问题:
16 |
17 | - 如何获得项目运行产生的日志?
18 | - 有几十个项目要设置定时任务,有什么能去写 Shell 的好方法吗?
19 | - 可能你都不知道部署了哪些项目。
20 | - 甚至你连哪些项目执行过,哪些没执行都不知道。
21 | - 如何才能捕获到项目发生的异常,并及时通知我?
22 | - 散兵游勇,称不上团队,跟别说管理。
23 | - ……
24 |
25 | Sailboat 就是为了解决这些问题而编写的,具体功能如下:
26 |
27 | - 用户注册/登录/更新/查询
28 | - 适合团队作战的角色权限 Superuser/Developer/Other/Anonymous
29 | - 项目文件打包
30 | - 项目部署/查看/删除
31 | - 项目定时调度/删除调度计划/查看调度计划
32 | - 查看执行记录
33 | - 查看项目执行是产生的日志
34 | - 自动监控项目,自动整理异常信息,当产生异常时通过钉钉(默认)或其它方式通知你
35 | - 带有数据展示的工作台,你可以在工作台看到服务器资源信息、项目数据总览和统计类数据
36 |
37 | # 安装
38 |
39 | Python 版本说明:
40 |
41 | > Sailboat 开发时使用的是 Python 3.6,建议在同等版本环境中使用。
42 | > 请自行准备 Python 运行环境,此处不再赘述
43 |
44 | ### 第 1 步
45 |
46 | Sailboat 是一个前后分离的项目,并没有打包成安装包,也就是说无法使用 pip 安装它。首先,你要将 Sailboat clone 到你的服务器:
47 |
48 | ```
49 | # current path /root/www/
50 | $ git clone git@github.com:asyncins/sailboat.git
51 | ```
52 | 假设当前路径为 /root/www,那么命令执行后 www 目录下就会多出 sailboat 目录。
53 |
54 | ### 第 2 步
55 | 项目中使用到的第三方库记录在 sailboat/rements.txt 中,你可以使用:
56 |
57 | ```
58 | $ pip install -r sailboat/rements.txt
59 | ```
60 | 这个命令会帮助你一次性完成项目依赖的安装。
61 |
62 | ### 第 3 步
63 |
64 | 数据库选用的是 MongoDB。在开始前,你需要按照 [MongoDB 官方指引](https://docs.mongodb.com/manual/installation/)在服务器上安装并启动 MongoDB。
65 |
66 |
67 | ### 第 4 步
68 |
69 | Sailboat 基于 Python Web 开发框架 Flask,它的部署必然要安装 uWSGI 和 Nginx。不过你不要慌,这份文档很清晰,照做就是。
70 |
71 | 按照 [Nginx 官方指引](http://nginx.org/en/docs/install.html)在服务器上安装并启动 Nginx。
72 |
73 | 按照 [uWSGI 官方指引](https://uwsgi-docs.readthedocs.io/en/latest/Install.html)在服务器上安装 uWSGI
74 |
75 |
76 | ### 第 5 步 检查配置文件
77 |
78 | Sailboat 已经为你准备好了 Nginx 配置文件 sailboat/sailboat.conf:
79 |
80 | ```
81 | upstream webserver {
82 | # server unix:///path/to/your/mysite/mysite.sock; # for a file socket
83 | server 127.0.0.1:3031; # uwsgi的端口
84 | }
85 |
86 | server {
87 | # the port your site will be served on
88 | listen 5000;
89 | # 端口
90 | server_name 111.231.93.117; # 服务器ip或者域名
91 | charset utf-8;
92 |
93 | # max upload size
94 | client_max_body_size 75M; # 限制最大上传
95 |
96 |
97 | # docs
98 | location /docs {
99 | alias /root/www/sailboat/docs; # 指向文档路径
100 | }
101 |
102 | # Finally, send all non-media requests to the Django server.
103 | location / {
104 | uwsgi_pass webserver;
105 | include uwsgi_params; # uwsgi服务
106 | }
107 | }
108 | ```
109 |
110 | 这里可做调整的配置只有 listen 和 location。
111 |
112 | listen 代表对外端口,例如设置为 5000 时,浏览器访问的网址为 http://www.xxx.com:5000/
113 |
114 | location 代表设定路由,例如:
115 |
116 | ```
117 | # docs
118 | location /docs {
119 | alias /root/www/sailboat/docs; # 指向文档路径
120 | }
121 |
122 | ```
123 | 代表用户访问 http://www.xxx/com/docs 时指向的资源为 /root/www/sailboat/docs
124 |
125 | 为了使配置生效你需要将拷贝到对应的目录,例如: /etc/nginx/conf.d/
126 |
127 | > ⚠️ 注意:/etc/nginx/nginx.conf 文件第一行的用户(默认为 nginx)需要设定为当前用户,例如 root。否则启动后引发 permission 相关报错,导致服务无法正常访问。
128 |
129 | 同样的,Sailboat 已经为你准备好了 uWSGI 配置文件 sailboat/sailboat.ini。
130 |
131 | ### 第 6 步 启动
132 |
133 | 首先启动 uWSGI,对应命令如下:
134 |
135 | ```
136 | $ uwsgi -i /root/www/sailboat.ini &
137 | ```
138 | 命令执行后便可使用 Crtl+c 组合键退回终端命令行,接着刷新 Nginx 配置:
139 |
140 | ```
141 | $ nginx -s reload
142 | ```
143 | 这俩命令执行后便可在浏览器访问 Sailboat 项目了。
144 |
145 |
146 |
147 |
148 | # 界面展示
149 |
150 | # 使用指引
151 |
152 | ### 注册
153 |
154 | ### 登录
155 |
156 | ### 项目打包
157 |
158 | ### 项目部署
159 |
160 | ### 添加一个定时调度
161 |
162 | ### 查看记录或列表
163 |
164 | # 开发故事
165 |
166 | ## 贡献者名单
167 |
168 | ## 联系我们
169 |
170 | # 版权声明
171 |
172 | Sailboat 由韦世东在编书籍衍生而来,基于 Sailboat 的源码解读类文章请联系韦世东 sfhfpc@foxmail.com 获得授权。
173 |
174 | Sailboat 的使用不受版权影响。
175 |
--------------------------------------------------------------------------------
/apidoc.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Sailboat",
3 | "version": "0.1.0",
4 | "description": "Sailboat api document",
5 | "title": "Sailboat api document",
6 | "url" : "http://www.sfhfpc.com/api/v1"
7 | }
8 |
--------------------------------------------------------------------------------
/common.py:
--------------------------------------------------------------------------------
1 | from flask import Flask
2 | from apscheduler.schedulers.background import BackgroundScheduler
3 | from apscheduler.jobstores.mongodb import MongoDBJobStore
4 | from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
5 | from connect import client
6 | from flask_cors import CORS
7 |
8 | # 将任务信息存储到 SQLite
9 | # store = {
10 | # 'default': SQLAlchemyJobStore(url='sqlite:///jobs.sqlite')
11 | # }
12 |
13 | # 将任务信息存储到 MongoDB
14 | store = {"default": MongoDBJobStore(client=client)}
15 | scheduler = BackgroundScheduler(jobstores=store)
16 |
17 |
18 | app = Flask(__name__)
19 | CORS(app, resources={r"/*": {"origins": "*"}})
20 |
21 |
--------------------------------------------------------------------------------
/components/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/asyncins/sailboat/b9734e9bae3703e328cacf1969d26e2b334b889a/components/__init__.py
--------------------------------------------------------------------------------
/components/auth.py:
--------------------------------------------------------------------------------
1 | from datetime import datetime
2 | from flask import request, Response
3 | import jwt
4 |
5 | from settings import SECRET, ALG
6 | from connect import databases
7 | from components.enums import Status, StatusCode
8 |
9 |
10 | def is_overdue(express):
11 | """判断是否过期"""
12 | end = datetime.strptime(express, "%Y-%m-%d %H:%M:%S")
13 | delta = datetime.now() - end
14 | if delta.days < 0 or delta.seconds < 0:
15 | # 时间差值出现负数则视为过期
16 | return True
17 | else:
18 | return False
19 |
20 |
21 | def authorization(func):
22 | """鉴权装饰器"""
23 | def wrapper(*args, **kw):
24 | # 获取为接口设定的权限
25 | permission = args[0].permission.get("permission")
26 | token = request.headers.get("Authorization")
27 | if not token:
28 | return {"message": StatusCode.NoAuth.value[0],
29 | "data": {},
30 | "code": StatusCode.NoAuth.value[1]
31 | }, 403
32 | info = jwt.decode(token, SECRET, algorithms=ALG)
33 | username = info.get("username")
34 | password = info.get("password")
35 | express = info.get("express")
36 | role = info.get("role")
37 | if role < permission.value:
38 | # 通过数学比较符号判断权限级别
39 | return {"message": StatusCode.NoAuth.value[0],
40 | "data": {},
41 | "code": StatusCode.NoAuth.value[1]
42 | }, 403
43 | # 判断令牌是否过期
44 | overdue = is_overdue(express)
45 | if not overdue:
46 | return {"message": StatusCode.TokenOverdue.value[0],
47 | "data": {},
48 | "code": StatusCode.TokenOverdue.value[1]
49 | }, 403
50 | # 查询数据库并进行判断
51 | exists = databases.user.count_documents(
52 | {"username": username, "password": password, "status": Status.On.value})
53 | if not exists:
54 | return {"message": StatusCode.UserStatusOff.value[0],
55 | "data": {},
56 | "code": StatusCode.UserStatusOff.value[1]
57 | }, 400
58 | return func(*args, **kw)
59 | return wrapper
60 |
61 |
62 | def get_user_info(token):
63 | """从签名中获取用户信息"""
64 | info = jwt.decode(token, SECRET, algorithms=ALG)
65 | username = info.get("username")
66 | password = info.get("password")
67 | express = info.get("express")
68 | role = info.get("role")
69 | overdue = is_overdue(express)
70 | if not overdue:
71 | return False
72 | exists = databases.user.count_documents(
73 | {"username": username, "password": password, "status": Status.On.value})
74 | if not exists:
75 | return False
76 | idn = databases.user.find_one({"username": username, "password": password}).get("_id")
77 | return str(idn), username, role
78 |
79 |
80 |
--------------------------------------------------------------------------------
/components/enums.py:
--------------------------------------------------------------------------------
1 | from enum import Enum
2 |
3 |
4 | class Role(Enum):
5 | SuperUser = 100
6 | Developer = 10
7 | Other = 1
8 | Anonymous = 0
9 |
10 |
11 | class Status(Enum):
12 | On = 1
13 | Off = 0
14 |
15 |
16 | class StatusCode(Enum):
17 | NoAuth = ("no auth", 403)
18 | MissingParameter = ("missing parameter", 4001)
19 | IsNotYours = ("is not yours", 4002)
20 | ParameterError = ("parameter error", 4003)
21 | UserStatusOff = ("user status off", 4004)
22 | NotFound = ("not found", 4005)
23 | JsonDecodeError = ("JSONDecode Error", 4006)
24 | PathError = ("path error", 4007)
25 | OperationError = ("operation error", 4008)
26 | TokenOverdue = ("token overdue", 4009)
27 |
28 |
29 |
--------------------------------------------------------------------------------
/components/storage.py:
--------------------------------------------------------------------------------
1 | import os
2 | import logging
3 | import shutil
4 | from settings import FILEPATH, TEMPATH
5 |
6 |
7 | class FileStorages:
8 |
9 | @staticmethod
10 | def put(project, version, content):
11 | """文件存储
12 | """
13 | # 根据项目名称生成路径
14 | room = os.path.join(FILEPATH, project)
15 | if not os.path.exists(room):
16 | # 如果目录不存在则创建
17 | os.makedirs(room)
18 | # 拼接文件完整路径,以时间戳作为文件名
19 | filename = os.path.join(room, "%s.egg" % str(version))
20 | try:
21 | with open(filename, 'wb') as file:
22 | # 写入文件
23 | file.write(content)
24 | except Exception as exc:
25 | # 异常处理,打印异常信息
26 | logging.warning(exc)
27 | return False
28 | return True
29 |
30 | def get(self):
31 | pass
32 |
33 | @staticmethod
34 | def delete(project, version):
35 | """文件删除状态
36 | A - 文件或目录存在且成功删除
37 | B - 文件或目录不存在,无需删除
38 | """
39 | sign = 'B'
40 | room = os.path.join(FILEPATH, project)
41 | if project and version:
42 | # 删除指定文件
43 | filename = os.path.join(room, "%s.egg" % str(version))
44 | if os.path.exists(filename):
45 | sign = 'A'
46 | os.remove(filename)
47 | if project and not version:
48 | # 删除指定目录
49 | if os.path.exists(room):
50 | sign = 'A'
51 | shutil.rmtree(room)
52 | return sign
53 |
54 | @staticmethod
55 | def copy_to_temporary(project, version):
56 | """根据参数将指定文件拷贝到指定目录
57 | """
58 | before = os.path.join(FILEPATH, project, "%s.egg" % version)
59 | after = os.path.join(TEMPATH, "%s.egg" % version)
60 | if not os.path.exists(before):
61 | logging.warning("File %s Not Exists" % before)
62 | return None
63 | if not os.path.exists(TEMPATH):
64 | os.makedirs(TEMPATH)
65 | # 文件拷贝
66 | shutil.copyfile(before, after)
67 | return after
68 |
69 | @staticmethod
70 | def exists(project, version):
71 | file = os.path.join(FILEPATH, project, "%s.egg" % version)
72 | if not os.path.exists(file):
73 | return False
74 | return True
75 |
--------------------------------------------------------------------------------
/components/urils.py:
--------------------------------------------------------------------------------
1 | import hashlib
2 | import hmac
3 | import base64
4 | from urllib.parse import quote_plus
5 |
6 |
7 | def md5_encode(value):
8 | """ MD5 消息摘要"""
9 | h = hashlib.md5()
10 | h.update(value.encode("utf8"))
11 | res = h.hexdigest()
12 | return res
13 |
14 |
15 | def make_ding_sign(timestamps, secret, mode=False):
16 | """钉钉签名计算
17 | 根据钉钉文档指引计算签名信息
18 | 文档参考
19 | https://docs.python.org/3.6/library/hmac.html
20 | https://docs.python.org/3.6/library/urllib.parse.html#urllib.parse.quote
21 | https://ding-doc.dingtalk.com/doc#/faquestions/hxs5v9
22 | """
23 | print("tmps:", timestamps)
24 | if not isinstance(timestamps, str):
25 | timestamps = str(timestamps)
26 | mav = hmac.new(secret.encode("utf8"), digestmod=hashlib.sha256)
27 | mav.update(timestamps.encode("utf8"))
28 | result = mav.digest()
29 | signature = base64.b64encode(result).decode("utf8")
30 | if mode:
31 | signature = quote_plus(signature)
32 | return signature
33 |
--------------------------------------------------------------------------------
/connect.py:
--------------------------------------------------------------------------------
1 | """
2 | https://api.mongodb.com/python/current/tutorial.html#making-a-connection-with-mongoclient
3 | """
4 |
5 | from pymongo import MongoClient
6 | from settings import MONGODB
7 |
8 | client = MongoClient(MONGODB)
9 | databases = client.sailboat
10 |
11 |
--------------------------------------------------------------------------------
/docs/api_project.js:
--------------------------------------------------------------------------------
1 | define({
"name": "Sailboat",
"version": "0.1.0",
"description": "Sailboat api document",
"title": "Sailboat api document",
"url": "http://www.sfhfpc.com/api/v1",
"sampleUrl": false,
"defaultVersion": "0.0.0",
"apidoc": "0.3.0",
"generator": {
"name": "apidoc",
"time": "2019-12-13T12:49:32.440Z",
"url": "http://apidocjs.com",
"version": "0.19.0"
}
});
2 |
--------------------------------------------------------------------------------
/docs/api_project.json:
--------------------------------------------------------------------------------
1 | {
"name": "Sailboat",
"version": "0.1.0",
"description": "Sailboat api document",
"title": "Sailboat api document",
"url": "http://www.sfhfpc.com/api/v1",
"sampleUrl": false,
"defaultVersion": "0.0.0",
"apidoc": "0.3.0",
"generator": {
"name": "apidoc",
"time": "2019-12-13T12:49:32.440Z",
"url": "http://apidocjs.com",
"version": "0.19.0"
}
}
2 |
--------------------------------------------------------------------------------
/docs/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/asyncins/sailboat/b9734e9bae3703e328cacf1969d26e2b334b889a/docs/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/docs/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/asyncins/sailboat/b9734e9bae3703e328cacf1969d26e2b334b889a/docs/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/docs/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/asyncins/sailboat/b9734e9bae3703e328cacf1969d26e2b334b889a/docs/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/docs/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/asyncins/sailboat/b9734e9bae3703e328cacf1969d26e2b334b889a/docs/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/docs/img/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/asyncins/sailboat/b9734e9bae3703e328cacf1969d26e2b334b889a/docs/img/favicon.ico
--------------------------------------------------------------------------------
/docs/locales/ca.js:
--------------------------------------------------------------------------------
1 | define({
2 | ca: {
3 | 'Allowed values:' : 'Valors permesos:',
4 | 'Compare all with predecessor': 'Comparar tot amb versió anterior',
5 | 'compare changes to:' : 'comparar canvis amb:',
6 | 'compared to' : 'comparat amb',
7 | 'Default value:' : 'Valor per defecte:',
8 | 'Description' : 'Descripció',
9 | 'Field' : 'Camp',
10 | 'General' : 'General',
11 | 'Generated with' : 'Generat amb',
12 | 'Name' : 'Nom',
13 | 'No response values.' : 'Sense valors en la resposta.',
14 | 'optional' : 'opcional',
15 | 'Parameter' : 'Paràmetre',
16 | 'Permission:' : 'Permisos:',
17 | 'Response' : 'Resposta',
18 | 'Send' : 'Enviar',
19 | 'Send a Sample Request' : 'Enviar una petició d\'exemple',
20 | 'show up to version:' : 'mostrar versió:',
21 | 'Size range:' : 'Tamany de rang:',
22 | 'Type' : 'Tipus',
23 | 'url' : 'url'
24 | }
25 | });
26 |
--------------------------------------------------------------------------------
/docs/locales/cs.js:
--------------------------------------------------------------------------------
1 | define({
2 | cs: {
3 | 'Allowed values:' : 'Povolené hodnoty:',
4 | 'Compare all with predecessor': 'Porovnat vše s předchozími verzemi',
5 | 'compare changes to:' : 'porovnat změny s:',
6 | 'compared to' : 'porovnat s',
7 | 'Default value:' : 'Výchozí hodnota:',
8 | 'Description' : 'Popis',
9 | 'Field' : 'Pole',
10 | 'General' : 'Obecné',
11 | 'Generated with' : 'Vygenerováno pomocí',
12 | 'Name' : 'Název',
13 | 'No response values.' : 'Nebyly vráceny žádné hodnoty.',
14 | 'optional' : 'volitelné',
15 | 'Parameter' : 'Parametr',
16 | 'Permission:' : 'Oprávnění:',
17 | 'Response' : 'Odpověď',
18 | 'Send' : 'Odeslat',
19 | 'Send a Sample Request' : 'Odeslat ukázkový požadavek',
20 | 'show up to version:' : 'zobrazit po verzi:',
21 | 'Size range:' : 'Rozsah velikosti:',
22 | 'Type' : 'Typ',
23 | 'url' : 'url'
24 | }
25 | });
26 |
--------------------------------------------------------------------------------
/docs/locales/de.js:
--------------------------------------------------------------------------------
1 | define({
2 | de: {
3 | 'Allowed values:' : 'Erlaubte Werte:',
4 | 'Compare all with predecessor': 'Vergleiche alle mit ihren Vorgängern',
5 | 'compare changes to:' : 'vergleiche Änderungen mit:',
6 | 'compared to' : 'verglichen mit',
7 | 'Default value:' : 'Standardwert:',
8 | 'Description' : 'Beschreibung',
9 | 'Field' : 'Feld',
10 | 'General' : 'Allgemein',
11 | 'Generated with' : 'Erstellt mit',
12 | 'Name' : 'Name',
13 | 'No response values.' : 'Keine Rückgabewerte.',
14 | 'optional' : 'optional',
15 | 'Parameter' : 'Parameter',
16 | 'Permission:' : 'Berechtigung:',
17 | 'Response' : 'Antwort',
18 | 'Send' : 'Senden',
19 | 'Send a Sample Request' : 'Eine Beispielanfrage senden',
20 | 'show up to version:' : 'zeige bis zur Version:',
21 | 'Size range:' : 'Größenbereich:',
22 | 'Type' : 'Typ',
23 | 'url' : 'url'
24 | }
25 | });
26 |
--------------------------------------------------------------------------------
/docs/locales/es.js:
--------------------------------------------------------------------------------
1 | define({
2 | es: {
3 | 'Allowed values:' : 'Valores permitidos:',
4 | 'Compare all with predecessor': 'Comparar todo con versión anterior',
5 | 'compare changes to:' : 'comparar cambios con:',
6 | 'compared to' : 'comparado con',
7 | 'Default value:' : 'Valor por defecto:',
8 | 'Description' : 'Descripción',
9 | 'Field' : 'Campo',
10 | 'General' : 'General',
11 | 'Generated with' : 'Generado con',
12 | 'Name' : 'Nombre',
13 | 'No response values.' : 'Sin valores en la respuesta.',
14 | 'optional' : 'opcional',
15 | 'Parameter' : 'Parámetro',
16 | 'Permission:' : 'Permisos:',
17 | 'Response' : 'Respuesta',
18 | 'Send' : 'Enviar',
19 | 'Send a Sample Request' : 'Enviar una petición de ejemplo',
20 | 'show up to version:' : 'mostrar a versión:',
21 | 'Size range:' : 'Tamaño de rango:',
22 | 'Type' : 'Tipo',
23 | 'url' : 'url'
24 | }
25 | });
26 |
--------------------------------------------------------------------------------
/docs/locales/fr.js:
--------------------------------------------------------------------------------
1 | define({
2 | fr: {
3 | 'Allowed values:' : 'Valeurs autorisées :',
4 | 'Compare all with predecessor': 'Tout comparer avec ...',
5 | 'compare changes to:' : 'comparer les changements à :',
6 | 'compared to' : 'comparer à',
7 | 'Default value:' : 'Valeur par défaut :',
8 | 'Description' : 'Description',
9 | 'Field' : 'Champ',
10 | 'General' : 'Général',
11 | 'Generated with' : 'Généré avec',
12 | 'Name' : 'Nom',
13 | 'No response values.' : 'Aucune valeur de réponse.',
14 | 'optional' : 'optionnel',
15 | 'Parameter' : 'Paramètre',
16 | 'Permission:' : 'Permission :',
17 | 'Response' : 'Réponse',
18 | 'Send' : 'Envoyer',
19 | 'Send a Sample Request' : 'Envoyer une requête représentative',
20 | 'show up to version:' : 'Montrer à partir de la version :',
21 | 'Size range:' : 'Ordre de grandeur :',
22 | 'Type' : 'Type',
23 | 'url' : 'url'
24 | }
25 | });
26 |
--------------------------------------------------------------------------------
/docs/locales/it.js:
--------------------------------------------------------------------------------
1 | define({
2 | it: {
3 | 'Allowed values:' : 'Valori permessi:',
4 | 'Compare all with predecessor': 'Confronta tutto con versioni precedenti',
5 | 'compare changes to:' : 'confronta modifiche con:',
6 | 'compared to' : 'confrontato con',
7 | 'Default value:' : 'Valore predefinito:',
8 | 'Description' : 'Descrizione',
9 | 'Field' : 'Campo',
10 | 'General' : 'Generale',
11 | 'Generated with' : 'Creato con',
12 | 'Name' : 'Nome',
13 | 'No response values.' : 'Nessun valore di risposta.',
14 | 'optional' : 'opzionale',
15 | 'Parameter' : 'Parametro',
16 | 'Permission:' : 'Permessi:',
17 | 'Response' : 'Risposta',
18 | 'Send' : 'Invia',
19 | 'Send a Sample Request' : 'Invia una richiesta di esempio',
20 | 'show up to version:' : 'mostra alla versione:',
21 | 'Size range:' : 'Intervallo dimensione:',
22 | 'Type' : 'Tipo',
23 | 'url' : 'url'
24 | }
25 | });
26 |
--------------------------------------------------------------------------------
/docs/locales/locale.js:
--------------------------------------------------------------------------------
1 | define([
2 | './locales/ca.js',
3 | './locales/cs.js',
4 | './locales/de.js',
5 | './locales/es.js',
6 | './locales/fr.js',
7 | './locales/it.js',
8 | './locales/nl.js',
9 | './locales/pl.js',
10 | './locales/pt_br.js',
11 | './locales/ro.js',
12 | './locales/ru.js',
13 | './locales/tr.js',
14 | './locales/vi.js',
15 | './locales/zh.js',
16 | './locales/zh_cn.js'
17 | ], function() {
18 | var langId = (navigator.language || navigator.userLanguage).toLowerCase().replace('-', '_');
19 | var language = langId.substr(0, 2);
20 | var locales = {};
21 |
22 | for (index in arguments) {
23 | for (property in arguments[index])
24 | locales[property] = arguments[index][property];
25 | }
26 | if ( ! locales['en'])
27 | locales['en'] = {};
28 |
29 | if ( ! locales[langId] && ! locales[language])
30 | language = 'en';
31 |
32 | var locale = (locales[langId] ? locales[langId] : locales[language]);
33 |
34 | function __(text) {
35 | var index = locale[text];
36 | if (index === undefined)
37 | return text;
38 | return index;
39 | };
40 |
41 | function setLanguage(language) {
42 | locale = locales[language];
43 | }
44 |
45 | return {
46 | __ : __,
47 | locales : locales,
48 | locale : locale,
49 | setLanguage: setLanguage
50 | };
51 | });
52 |
--------------------------------------------------------------------------------
/docs/locales/nl.js:
--------------------------------------------------------------------------------
1 | define({
2 | nl: {
3 | 'Allowed values:' : 'Toegestane waarden:',
4 | 'Compare all with predecessor': 'Vergelijk alle met voorgaande versie',
5 | 'compare changes to:' : 'vergelijk veranderingen met:',
6 | 'compared to' : 'vergelijk met',
7 | 'Default value:' : 'Standaard waarde:',
8 | 'Description' : 'Omschrijving',
9 | 'Field' : 'Veld',
10 | 'General' : 'Algemeen',
11 | 'Generated with' : 'Gegenereerd met',
12 | 'Name' : 'Naam',
13 | 'No response values.' : 'Geen response waardes.',
14 | 'optional' : 'optioneel',
15 | 'Parameter' : 'Parameter',
16 | 'Permission:' : 'Permissie:',
17 | 'Response' : 'Antwoorden',
18 | 'Send' : 'Sturen',
19 | 'Send a Sample Request' : 'Stuur een sample aanvragen',
20 | 'show up to version:' : 'toon tot en met versie:',
21 | 'Size range:' : 'Maatbereik:',
22 | 'Type' : 'Type',
23 | 'url' : 'url'
24 | }
25 | });
26 |
--------------------------------------------------------------------------------
/docs/locales/pl.js:
--------------------------------------------------------------------------------
1 | define({
2 | pl: {
3 | 'Allowed values:' : 'Dozwolone wartości:',
4 | 'Compare all with predecessor': 'Porównaj z poprzednimi wersjami',
5 | 'compare changes to:' : 'porównaj zmiany do:',
6 | 'compared to' : 'porównaj do:',
7 | 'Default value:' : 'Wartość domyślna:',
8 | 'Description' : 'Opis',
9 | 'Field' : 'Pole',
10 | 'General' : 'Generalnie',
11 | 'Generated with' : 'Wygenerowano z',
12 | 'Name' : 'Nazwa',
13 | 'No response values.' : 'Brak odpowiedzi.',
14 | 'optional' : 'opcjonalny',
15 | 'Parameter' : 'Parametr',
16 | 'Permission:' : 'Uprawnienia:',
17 | 'Response' : 'Odpowiedź',
18 | 'Send' : 'Wyślij',
19 | 'Send a Sample Request' : 'Wyślij przykładowe żądanie',
20 | 'show up to version:' : 'pokaż do wersji:',
21 | 'Size range:' : 'Zakres rozmiaru:',
22 | 'Type' : 'Typ',
23 | 'url' : 'url'
24 | }
25 | });
26 |
--------------------------------------------------------------------------------
/docs/locales/pt_br.js:
--------------------------------------------------------------------------------
1 | define({
2 | 'pt_br': {
3 | 'Allowed values:' : 'Valores permitidos:',
4 | 'Compare all with predecessor': 'Compare todos com antecessores',
5 | 'compare changes to:' : 'comparar alterações com:',
6 | 'compared to' : 'comparado com',
7 | 'Default value:' : 'Valor padrão:',
8 | 'Description' : 'Descrição',
9 | 'Field' : 'Campo',
10 | 'General' : 'Geral',
11 | 'Generated with' : 'Gerado com',
12 | 'Name' : 'Nome',
13 | 'No response values.' : 'Sem valores de resposta.',
14 | 'optional' : 'opcional',
15 | 'Parameter' : 'Parâmetro',
16 | 'Permission:' : 'Permissão:',
17 | 'Response' : 'Resposta',
18 | 'Send' : 'Enviar',
19 | 'Send a Sample Request' : 'Enviar um Exemplo de Pedido',
20 | 'show up to version:' : 'aparecer para a versão:',
21 | 'Size range:' : 'Faixa de tamanho:',
22 | 'Type' : 'Tipo',
23 | 'url' : 'url'
24 | }
25 | });
26 |
--------------------------------------------------------------------------------
/docs/locales/ro.js:
--------------------------------------------------------------------------------
1 | define({
2 | ro: {
3 | 'Allowed values:' : 'Valori permise:',
4 | 'Compare all with predecessor': 'Compară toate cu versiunea precedentă',
5 | 'compare changes to:' : 'compară cu versiunea:',
6 | 'compared to' : 'comparat cu',
7 | 'Default value:' : 'Valoare implicită:',
8 | 'Description' : 'Descriere',
9 | 'Field' : 'Câmp',
10 | 'General' : 'General',
11 | 'Generated with' : 'Generat cu',
12 | 'Name' : 'Nume',
13 | 'No response values.' : 'Nici o valoare returnată.',
14 | 'optional' : 'opțional',
15 | 'Parameter' : 'Parametru',
16 | 'Permission:' : 'Permisiune:',
17 | 'Response' : 'Răspuns',
18 | 'Send' : 'Trimite',
19 | 'Send a Sample Request' : 'Trimite o cerere de probă',
20 | 'show up to version:' : 'arată până la versiunea:',
21 | 'Size range:' : 'Interval permis:',
22 | 'Type' : 'Tip',
23 | 'url' : 'url'
24 | }
25 | });
26 |
--------------------------------------------------------------------------------
/docs/locales/ru.js:
--------------------------------------------------------------------------------
1 | define({
2 | ru: {
3 | 'Allowed values:' : 'Допустимые значения:',
4 | 'Compare all with predecessor': 'Сравнить с предыдущей версией',
5 | 'compare changes to:' : 'сравнить с:',
6 | 'compared to' : 'в сравнении с',
7 | 'Default value:' : 'По умолчанию:',
8 | 'Description' : 'Описание',
9 | 'Field' : 'Название',
10 | 'General' : 'Общая информация',
11 | 'Generated with' : 'Сгенерировано с помощью',
12 | 'Name' : 'Название',
13 | 'No response values.' : 'Нет значений для ответа.',
14 | 'optional' : 'необязательный',
15 | 'Parameter' : 'Параметр',
16 | 'Permission:' : 'Разрешено:',
17 | 'Response' : 'Ответ',
18 | 'Send' : 'Отправить',
19 | 'Send a Sample Request' : 'Отправить тестовый запрос',
20 | 'show up to version:' : 'показать версию:',
21 | 'Size range:' : 'Ограничения:',
22 | 'Type' : 'Тип',
23 | 'url' : 'URL'
24 | }
25 | });
26 |
--------------------------------------------------------------------------------
/docs/locales/tr.js:
--------------------------------------------------------------------------------
1 | define({
2 | tr: {
3 | 'Allowed values:' : 'İzin verilen değerler:',
4 | 'Compare all with predecessor': 'Tümünü öncekiler ile karşılaştır',
5 | 'compare changes to:' : 'değişiklikleri karşılaştır:',
6 | 'compared to' : 'karşılaştır',
7 | 'Default value:' : 'Varsayılan değer:',
8 | 'Description' : 'Açıklama',
9 | 'Field' : 'Alan',
10 | 'General' : 'Genel',
11 | 'Generated with' : 'Oluşturan',
12 | 'Name' : 'İsim',
13 | 'No response values.' : 'Dönüş verisi yok.',
14 | 'optional' : 'opsiyonel',
15 | 'Parameter' : 'Parametre',
16 | 'Permission:' : 'İzin:',
17 | 'Response' : 'Dönüş',
18 | 'Send' : 'Gönder',
19 | 'Send a Sample Request' : 'Örnek istek gönder',
20 | 'show up to version:' : 'bu versiyona kadar göster:',
21 | 'Size range:' : 'Boyut aralığı:',
22 | 'Type' : 'Tip',
23 | 'url' : 'url'
24 | }
25 | });
26 |
--------------------------------------------------------------------------------
/docs/locales/vi.js:
--------------------------------------------------------------------------------
1 | define({
2 | vi: {
3 | 'Allowed values:' : 'Giá trị chấp nhận:',
4 | 'Compare all with predecessor': 'So sánh với tất cả phiên bản trước',
5 | 'compare changes to:' : 'so sánh sự thay đổi với:',
6 | 'compared to' : 'so sánh với',
7 | 'Default value:' : 'Giá trị mặc định:',
8 | 'Description' : 'Chú thích',
9 | 'Field' : 'Trường dữ liệu',
10 | 'General' : 'Tổng quan',
11 | 'Generated with' : 'Được tạo bởi',
12 | 'Name' : 'Tên',
13 | 'No response values.' : 'Không có kết quả trả về.',
14 | 'optional' : 'Tùy chọn',
15 | 'Parameter' : 'Tham số',
16 | 'Permission:' : 'Quyền hạn:',
17 | 'Response' : 'Kết quả',
18 | 'Send' : 'Gửi',
19 | 'Send a Sample Request' : 'Gửi một yêu cầu mẫu',
20 | 'show up to version:' : 'hiển thị phiên bản:',
21 | 'Size range:' : 'Kích cỡ:',
22 | 'Type' : 'Kiểu',
23 | 'url' : 'liên kết'
24 | }
25 | });
26 |
--------------------------------------------------------------------------------
/docs/locales/zh.js:
--------------------------------------------------------------------------------
1 | define({
2 | zh: {
3 | 'Allowed values:' : '允許值:',
4 | 'Compare all with predecessor': '預先比較所有',
5 | 'compare changes to:' : '比較變更:',
6 | 'compared to' : '對比',
7 | 'Default value:' : '預設值:',
8 | 'Description' : '描述',
9 | 'Field' : '欄位',
10 | 'General' : '概括',
11 | 'Generated with' : '生成工具',
12 | 'Name' : '名稱',
13 | 'No response values.' : '無對應資料.',
14 | 'optional' : '選填',
15 | 'Parameter' : '參數',
16 | 'Permission:' : '權限:',
17 | 'Response' : '回應',
18 | 'Send' : '發送',
19 | 'Send a Sample Request' : '發送試用需求',
20 | 'show up to version:' : '顯示到版本:',
21 | 'Size range:' : '區間:',
22 | 'Type' : '類型',
23 | 'url' : '網址'
24 | }
25 | });
26 |
--------------------------------------------------------------------------------
/docs/locales/zh_cn.js:
--------------------------------------------------------------------------------
1 | define({
2 | 'zh_cn': {
3 | 'Allowed values:' : '允许值:',
4 | 'Compare all with predecessor': '与所有较早的比较',
5 | 'compare changes to:' : '将当前版本与指定版本比较:',
6 | 'compared to' : '相比于',
7 | 'Default value:' : '默认值:',
8 | 'Description' : '描述',
9 | 'Field' : '字段',
10 | 'General' : '概要',
11 | 'Generated with' : '基于',
12 | 'Name' : '名称',
13 | 'No response values.' : '无返回值.',
14 | 'optional' : '可选',
15 | 'Parameter' : '参数',
16 | 'Parameters' : '参数',
17 | 'Headers' : '头部参数',
18 | 'Permission:' : '权限:',
19 | 'Response' : '返回',
20 | 'Send' : '发送',
21 | 'Send a Sample Request' : '发送示例请求',
22 | 'show up to version:' : '显示到指定版本:',
23 | 'Size range:' : '取值范围:',
24 | 'Type' : '类型',
25 | 'url' : '网址'
26 | }
27 | });
28 |
--------------------------------------------------------------------------------
/docs/utils/handlebars_helper.js:
--------------------------------------------------------------------------------
1 | define([
2 | 'locales',
3 | 'handlebars',
4 | 'diffMatchPatch'
5 | ], function(locale, Handlebars, DiffMatchPatch) {
6 |
7 | /**
8 | * Return a text as markdown.
9 | * Currently only a little helper to replace apidoc-inline Links (#Group:Name).
10 | * Should be replaced with a full markdown lib.
11 | * @param string text
12 | */
13 | Handlebars.registerHelper('markdown', function(text) {
14 | if ( ! text ) {
15 | return text;
16 | }
17 | text = text.replace(/((\[(.*?)\])?\(#)((.+?):(.+?))(\))/mg, function(match, p1, p2, p3, p4, p5, p6) {
18 | var link = p3 || p5 + '/' + p6;
19 | return '' + link + '';
20 | });
21 | return text;
22 | });
23 |
24 | /**
25 | * start/stop timer for simple performance check.
26 | */
27 | var timer;
28 | Handlebars.registerHelper('startTimer', function(text) {
29 | timer = new Date();
30 | return '';
31 | });
32 |
33 | Handlebars.registerHelper('stopTimer', function(text) {
34 | console.log(new Date() - timer);
35 | return '';
36 | });
37 |
38 | /**
39 | * Return localized Text.
40 | * @param string text
41 | */
42 | Handlebars.registerHelper('__', function(text) {
43 | return locale.__(text);
44 | });
45 |
46 | /**
47 | * Console log.
48 | * @param mixed obj
49 | */
50 | Handlebars.registerHelper('cl', function(obj) {
51 | console.log(obj);
52 | return '';
53 | });
54 |
55 | /**
56 | * Replace underscore with space.
57 | * @param string text
58 | */
59 | Handlebars.registerHelper('underscoreToSpace', function(text) {
60 | return text.replace(/(_+)/g, ' ');
61 | });
62 |
63 | /**
64 | *
65 | */
66 | Handlebars.registerHelper('assign', function(name) {
67 | if(arguments.length > 0) {
68 | var type = typeof(arguments[1]);
69 | var arg = null;
70 | if(type === 'string' || type === 'number' || type === 'boolean') arg = arguments[1];
71 | Handlebars.registerHelper(name, function() { return arg; });
72 | }
73 | return '';
74 | });
75 |
76 | /**
77 | *
78 | */
79 | Handlebars.registerHelper('nl2br', function(text) {
80 | return _handlebarsNewlineToBreak(text);
81 | });
82 |
83 | /**
84 | *
85 | */
86 | Handlebars.registerHelper('if_eq', function(context, options) {
87 | var compare = context;
88 | // Get length if context is an object
89 | if (context instanceof Object && ! (options.hash.compare instanceof Object))
90 | compare = Object.keys(context).length;
91 |
92 | if (compare === options.hash.compare)
93 | return options.fn(this);
94 |
95 | return options.inverse(this);
96 | });
97 |
98 | /**
99 | *
100 | */
101 | Handlebars.registerHelper('if_gt', function(context, options) {
102 | var compare = context;
103 | // Get length if context is an object
104 | if (context instanceof Object && ! (options.hash.compare instanceof Object))
105 | compare = Object.keys(context).length;
106 |
107 | if(compare > options.hash.compare)
108 | return options.fn(this);
109 |
110 | return options.inverse(this);
111 | });
112 |
113 | /**
114 | *
115 | */
116 | var templateCache = {};
117 | Handlebars.registerHelper('subTemplate', function(name, sourceContext) {
118 | if ( ! templateCache[name])
119 | templateCache[name] = Handlebars.compile($('#template-' + name).html());
120 |
121 | var template = templateCache[name];
122 | var templateContext = $.extend({}, this, sourceContext.hash);
123 | return new Handlebars.SafeString( template(templateContext) );
124 | });
125 |
126 | /**
127 | *
128 | */
129 | Handlebars.registerHelper('toLowerCase', function(value) {
130 | return (value && typeof value === 'string') ? value.toLowerCase() : '';
131 | });
132 |
133 | /**
134 | *
135 | */
136 | Handlebars.registerHelper('splitFill', function(value, splitChar, fillChar) {
137 | var splits = value.split(splitChar);
138 | return new Array(splits.length).join(fillChar) + splits[splits.length - 1];
139 | });
140 |
141 | /**
142 | * Convert Newline to HTML-Break (nl2br).
143 | *
144 | * @param {String} text
145 | * @returns {String}
146 | */
147 | function _handlebarsNewlineToBreak(text) {
148 | return ('' + text).replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + '
' + '$2');
149 | }
150 |
151 | /**
152 | *
153 | */
154 | Handlebars.registerHelper('each_compare_list_field', function(source, compare, options) {
155 | var fieldName = options.hash.field;
156 | var newSource = [];
157 | if (source) {
158 | source.forEach(function(entry) {
159 | var values = entry;
160 | values['key'] = entry[fieldName];
161 | newSource.push(values);
162 | });
163 | }
164 |
165 | var newCompare = [];
166 | if (compare) {
167 | compare.forEach(function(entry) {
168 | var values = entry;
169 | values['key'] = entry[fieldName];
170 | newCompare.push(values);
171 | });
172 | }
173 | return _handlebarsEachCompared('key', newSource, newCompare, options);
174 | });
175 |
176 | /**
177 | *
178 | */
179 | Handlebars.registerHelper('each_compare_keys', function(source, compare, options) {
180 | var newSource = [];
181 | if (source) {
182 | var sourceFields = Object.keys(source);
183 | sourceFields.forEach(function(name) {
184 | var values = {};
185 | values['value'] = source[name];
186 | values['key'] = name;
187 | newSource.push(values);
188 | });
189 | }
190 |
191 | var newCompare = [];
192 | if (compare) {
193 | var compareFields = Object.keys(compare);
194 | compareFields.forEach(function(name) {
195 | var values = {};
196 | values['value'] = compare[name];
197 | values['key'] = name;
198 | newCompare.push(values);
199 | });
200 | }
201 | return _handlebarsEachCompared('key', newSource, newCompare, options);
202 | });
203 |
204 | /**
205 | *
206 | */
207 | Handlebars.registerHelper('each_compare_field', function(source, compare, options) {
208 | return _handlebarsEachCompared('field', source, compare, options);
209 | });
210 |
211 | /**
212 | *
213 | */
214 | Handlebars.registerHelper('each_compare_title', function(source, compare, options) {
215 | return _handlebarsEachCompared('title', source, compare, options);
216 | });
217 |
218 | /**
219 | *
220 | */
221 | Handlebars.registerHelper('reformat', function(source, type){
222 | if (type == 'json')
223 | try {
224 | return JSON.stringify(JSON.parse(source.trim()),null, " ");
225 | } catch(e) {
226 |
227 | }
228 | return source
229 | });
230 |
231 | /**
232 | *
233 | */
234 | Handlebars.registerHelper('showDiff', function(source, compare, options) {
235 | var ds = '';
236 | if(source === compare) {
237 | ds = source;
238 | } else {
239 | if( ! source)
240 | return compare;
241 |
242 | if( ! compare)
243 | return source;
244 |
245 | var d = diffMatchPatch.diff_main(compare, source);
246 | diffMatchPatch.diff_cleanupSemantic(d);
247 | ds = diffMatchPatch.diff_prettyHtml(d);
248 | ds = ds.replace(/¶/gm, '');
249 | }
250 | if(options === 'nl2br')
251 | ds = _handlebarsNewlineToBreak(ds);
252 |
253 | return ds;
254 | });
255 |
256 | /**
257 | *
258 | */
259 | function _handlebarsEachCompared(fieldname, source, compare, options)
260 | {
261 | var dataList = [];
262 | var index = 0;
263 | if(source) {
264 | source.forEach(function(sourceEntry) {
265 | var found = false;
266 | if (compare) {
267 | compare.forEach(function(compareEntry) {
268 | if(sourceEntry[fieldname] === compareEntry[fieldname]) {
269 | var data = {
270 | typeSame: true,
271 | source: sourceEntry,
272 | compare: compareEntry,
273 | index: index
274 | };
275 | dataList.push(data);
276 | found = true;
277 | index++;
278 | }
279 | });
280 | }
281 | if ( ! found) {
282 | var data = {
283 | typeIns: true,
284 | source: sourceEntry,
285 | index: index
286 | };
287 | dataList.push(data);
288 | index++;
289 | }
290 | });
291 | }
292 |
293 | if (compare) {
294 | compare.forEach(function(compareEntry) {
295 | var found = false;
296 | if (source) {
297 | source.forEach(function(sourceEntry) {
298 | if(sourceEntry[fieldname] === compareEntry[fieldname])
299 | found = true;
300 | });
301 | }
302 | if ( ! found) {
303 | var data = {
304 | typeDel: true,
305 | compare: compareEntry,
306 | index: index
307 | };
308 | dataList.push(data);
309 | index++;
310 | }
311 | });
312 | }
313 |
314 | var ret = '';
315 | var length = dataList.length;
316 | for (var index in dataList) {
317 | if(index == (length - 1))
318 | dataList[index]['_last'] = true;
319 | ret = ret + options.fn(dataList[index]);
320 | }
321 | return ret;
322 | }
323 |
324 | var diffMatchPatch = new DiffMatchPatch();
325 |
326 | /**
327 | * Overwrite Colors
328 | */
329 | DiffMatchPatch.prototype.diff_prettyHtml = function(diffs) {
330 | var html = [];
331 | var pattern_amp = /&/g;
332 | var pattern_lt = //g;
334 | var pattern_para = /\n/g;
335 | for (var x = 0; x < diffs.length; x++) {
336 | var op = diffs[x][0]; // Operation (insert, delete, equal)
337 | var data = diffs[x][1]; // Text of change.
338 | var text = data.replace(pattern_amp, '&').replace(pattern_lt, '<')
339 | .replace(pattern_gt, '>').replace(pattern_para, '¶
');
340 | switch (op) {
341 | case DIFF_INSERT:
342 | html[x] = '' + text + '';
343 | break;
344 | case DIFF_DELETE:
345 | html[x] = '' + text + '';
346 | break;
347 | case DIFF_EQUAL:
348 | html[x] = '' + text + '';
349 | break;
350 | }
351 | }
352 | return html.join('');
353 | };
354 |
355 | // Exports
356 | return Handlebars;
357 | });
358 |
--------------------------------------------------------------------------------
/docs/utils/send_sample_request.js:
--------------------------------------------------------------------------------
1 | define([
2 | 'jquery',
3 | 'lodash'
4 | ], function($, _) {
5 |
6 | var initDynamic = function() {
7 | // Button send
8 | $(".sample-request-send").off("click");
9 | $(".sample-request-send").on("click", function(e) {
10 | e.preventDefault();
11 | var $root = $(this).parents("article");
12 | var group = $root.data("group");
13 | var name = $root.data("name");
14 | var version = $root.data("version");
15 | sendSampleRequest(group, name, version, $(this).data("sample-request-type"));
16 | });
17 |
18 | // Button clear
19 | $(".sample-request-clear").off("click");
20 | $(".sample-request-clear").on("click", function(e) {
21 | e.preventDefault();
22 | var $root = $(this).parents("article");
23 | var group = $root.data("group");
24 | var name = $root.data("name");
25 | var version = $root.data("version");
26 | clearSampleRequest(group, name, version);
27 | });
28 | }; // initDynamic
29 |
30 | function sendSampleRequest(group, name, version, type)
31 | {
32 | var $root = $('article[data-group="' + group + '"][data-name="' + name + '"][data-version="' + version + '"]');
33 |
34 | // Optional header
35 | var header = {};
36 | $root.find(".sample-request-header:checked").each(function(i, element) {
37 | var group = $(element).data("sample-request-header-group-id");
38 | $root.find("[data-sample-request-header-group=\"" + group + "\"]").each(function(i, element) {
39 | var key = $(element).data("sample-request-header-name");
40 | var value = element.value;
41 | if (typeof element.optional === 'undefined') {
42 | element.optional = true;
43 | }
44 | if ( ! element.optional && element.defaultValue !== '') {
45 | value = element.defaultValue;
46 | }
47 | header[key] = value;
48 | });
49 | });
50 |
51 |
52 | // create JSON dictionary of parameters
53 | var param = {};
54 | var paramType = {};
55 | var bodyFormData = {};
56 | var bodyFormDataType = {};
57 | var bodyJson = '';
58 | $root.find(".sample-request-param:checked").each(function(i, element) {
59 | var group = $(element).data("sample-request-param-group-id");
60 | var contentType = $(element).nextAll('.sample-header-content-type-switch').first().val();
61 | if (contentType == "body-json"){
62 | $root.find("[data-sample-request-body-group=\"" + group + "\"]").not(function(){
63 | return $(this).val() == "" && $(this).is("[data-sample-request-param-optional='true']");
64 | }).each(function(i, element) {
65 | if (isJson(element.value)){
66 | header['Content-Type'] = 'application/json';
67 | bodyJson = element.value;
68 | }
69 | });
70 | }else {
71 | $root.find("[data-sample-request-param-group=\"" + group + "\"]").not(function(){
72 | return $(this).val() == "" && $(this).is("[data-sample-request-param-optional='true']");
73 | }).each(function(i, element) {
74 | var key = $(element).data("sample-request-param-name");
75 | var value = element.value;
76 | if ( ! element.optional && element.defaultValue !== '') {
77 | value = element.defaultValue;
78 | }
79 | if (contentType == "body-form-data"){
80 | header['Content-Type'] = 'multipart/form-data'
81 | bodyFormData[key] = value;
82 | bodyFormDataType[key] = $(element).next().text();
83 | }else {
84 | param[key] = value;
85 | paramType[key] = $(element).next().text();
86 | }
87 | });
88 | }
89 | });
90 |
91 | // grab user-inputted URL
92 | var url = $root.find(".sample-request-url").val();
93 |
94 | //Convert {param} form to :param
95 | url = url.replace(/{/,':').replace(/}/,'');
96 |
97 | // Insert url parameter
98 | var pattern = pathToRegexp(url, null);
99 | var matches = pattern.exec(url);
100 | for (var i = 1; i < matches.length; i++) {
101 | var key = matches[i].substr(1);
102 | if (param[key] !== undefined) {
103 | url = url.replace(matches[i], encodeURIComponent(param[key]));
104 |
105 | // remove URL parameters from list
106 | delete param[key];
107 | }
108 | } // for
109 |
110 |
111 | //add url search parameter
112 | if (header['Content-Type'] == 'application/json' ){
113 | url = url + encodeSearchParams(param);
114 | param = bodyJson;
115 | }else if (header['Content-Type'] == 'multipart/form-data'){
116 | url = url + encodeSearchParams(param);
117 | param = bodyFormData;
118 | }
119 |
120 | $root.find(".sample-request-response").fadeTo(250, 1);
121 | $root.find(".sample-request-response-json").html("Loading...");
122 | refreshScrollSpy();
123 |
124 | // send AJAX request, catch success or error callback
125 | var ajaxRequest = {
126 | url : url,
127 | headers : header,
128 | data : param,
129 | type : type.toUpperCase(),
130 | success : displaySuccess,
131 | error : displayError
132 | };
133 |
134 | $.ajax(ajaxRequest);
135 |
136 |
137 | function displaySuccess(data, status, jqXHR) {
138 | var jsonResponse;
139 | try {
140 | jsonResponse = JSON.parse(jqXHR.responseText);
141 | jsonResponse = JSON.stringify(jsonResponse, null, 4);
142 | } catch (e) {
143 | jsonResponse = jqXHR.responseText;
144 | }
145 | $root.find(".sample-request-response-json").text(jsonResponse);
146 | refreshScrollSpy();
147 | };
148 |
149 | function displayError(jqXHR, textStatus, error) {
150 | var message = "Error " + jqXHR.status + ": " + error;
151 | var jsonResponse;
152 | try {
153 | jsonResponse = JSON.parse(jqXHR.responseText);
154 | jsonResponse = JSON.stringify(jsonResponse, null, 4);
155 | } catch (e) {
156 | jsonResponse = jqXHR.responseText;
157 | }
158 |
159 | if (jsonResponse)
160 | message += "\n" + jsonResponse;
161 |
162 | // flicker on previous error to make clear that there is a new response
163 | if($root.find(".sample-request-response").is(":visible"))
164 | $root.find(".sample-request-response").fadeTo(1, 0.1);
165 |
166 | $root.find(".sample-request-response").fadeTo(250, 1);
167 | $root.find(".sample-request-response-json").text(message);
168 | refreshScrollSpy();
169 | };
170 | }
171 |
172 | function clearSampleRequest(group, name, version)
173 | {
174 | var $root = $('article[data-group="' + group + '"][data-name="' + name + '"][data-version="' + version + '"]');
175 |
176 | // hide sample response
177 | $root.find(".sample-request-response-json").html("");
178 | $root.find(".sample-request-response").hide();
179 |
180 | // reset value of parameters
181 | $root.find(".sample-request-param").each(function(i, element) {
182 | element.value = "";
183 | });
184 |
185 | // restore default URL
186 | var $urlElement = $root.find(".sample-request-url");
187 | $urlElement.val($urlElement.prop("defaultValue"));
188 |
189 | refreshScrollSpy();
190 | }
191 |
192 | function refreshScrollSpy()
193 | {
194 | $('[data-spy="scroll"]').each(function () {
195 | $(this).scrollspy("refresh");
196 | });
197 | }
198 |
199 | function escapeHtml(str) {
200 | var div = document.createElement("div");
201 | div.appendChild(document.createTextNode(str));
202 | return div.innerHTML;
203 | }
204 |
205 |
206 | /**
207 | * is Json
208 | */
209 | function isJson(str) {
210 | if (typeof str == 'string') {
211 | try {
212 | var obj=JSON.parse(str);
213 | if(typeof obj == 'object' && obj ){
214 | return true;
215 | }else{
216 | return false;
217 | }
218 | } catch(e) {
219 | return false;
220 | }
221 | }
222 | }
223 |
224 | /**
225 | * encode Search Params
226 | */
227 | function encodeSearchParams(obj) {
228 | const params = [];
229 | Object.keys(obj).forEach((key) => {
230 | let value = obj[key];
231 | params.push([key, encodeURIComponent(value)].join('='));
232 | })
233 | return params.length === 0 ? '' : '?' + params.join('&');
234 | }
235 |
236 | /**
237 | * Exports.
238 | */
239 | return {
240 | initDynamic: initDynamic
241 | };
242 |
243 | });
244 |
--------------------------------------------------------------------------------
/docs/vendor/path-to-regexp/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/docs/vendor/path-to-regexp/index.js:
--------------------------------------------------------------------------------
1 | var isArray = Array.isArray || function (arr) {
2 | return Object.prototype.toString.call(arr) == '[object Array]';
3 | };
4 |
5 | /**
6 | * Expose `pathToRegexp`.
7 | */
8 | // module.exports = pathToRegexp
9 |
10 | /**
11 | * The main path matching regexp utility.
12 | *
13 | * @type {RegExp}
14 | */
15 | var PATH_REGEXP = new RegExp([
16 | // Match escaped characters that would otherwise appear in future matches.
17 | // This allows the user to escape special characters that won't transform.
18 | '(\\\\.)',
19 | // Match Express-style parameters and un-named parameters with a prefix
20 | // and optional suffixes. Matches appear as:
21 | //
22 | // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?"]
23 | // "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined]
24 | '([\\/.])?(?:\\:(\\w+)(?:\\(((?:\\\\.|[^)])*)\\))?|\\(((?:\\\\.|[^)])*)\\))([+*?])?',
25 | // Match regexp special characters that are always escaped.
26 | '([.+*?=^!:${}()[\\]|\\/])'
27 | ].join('|'), 'g');
28 |
29 | /**
30 | * Escape the capturing group by escaping special characters and meaning.
31 | *
32 | * @param {String} group
33 | * @return {String}
34 | */
35 | function escapeGroup (group) {
36 | return group.replace(/([=!:$\/()])/g, '\\$1');
37 | }
38 |
39 | /**
40 | * Attach the keys as a property of the regexp.
41 | *
42 | * @param {RegExp} re
43 | * @param {Array} keys
44 | * @return {RegExp}
45 | */
46 | function attachKeys (re, keys) {
47 | re.keys = keys;
48 | return re;
49 | }
50 |
51 | /**
52 | * Get the flags for a regexp from the options.
53 | *
54 | * @param {Object} options
55 | * @return {String}
56 | */
57 | function flags (options) {
58 | return options.sensitive ? '' : 'i';
59 | }
60 |
61 | /**
62 | * Pull out keys from a regexp.
63 | *
64 | * @param {RegExp} path
65 | * @param {Array} keys
66 | * @return {RegExp}
67 | */
68 | function regexpToRegexp (path, keys) {
69 | // Use a negative lookahead to match only capturing groups.
70 | var groups = path.source.match(/\((?!\?)/g);
71 |
72 | if (groups) {
73 | for (var i = 0; i < groups.length; i++) {
74 | keys.push({
75 | name: i,
76 | delimiter: null,
77 | optional: false,
78 | repeat: false
79 | });
80 | }
81 | }
82 |
83 | return attachKeys(path, keys);
84 | }
85 |
86 | /**
87 | * Transform an array into a regexp.
88 | *
89 | * @param {Array} path
90 | * @param {Array} keys
91 | * @param {Object} options
92 | * @return {RegExp}
93 | */
94 | function arrayToRegexp (path, keys, options) {
95 | var parts = [];
96 |
97 | for (var i = 0; i < path.length; i++) {
98 | parts.push(pathToRegexp(path[i], keys, options).source);
99 | }
100 |
101 | var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));
102 | return attachKeys(regexp, keys);
103 | }
104 |
105 | /**
106 | * Replace the specific tags with regexp strings.
107 | *
108 | * @param {String} path
109 | * @param {Array} keys
110 | * @return {String}
111 | */
112 | function replacePath (path, keys) {
113 | var index = 0;
114 |
115 | function replace (_, escaped, prefix, key, capture, group, suffix, escape) {
116 | if (escaped) {
117 | return escaped;
118 | }
119 |
120 | if (escape) {
121 | return '\\' + escape;
122 | }
123 |
124 | var repeat = suffix === '+' || suffix === '*';
125 | var optional = suffix === '?' || suffix === '*';
126 |
127 | keys.push({
128 | name: key || index++,
129 | delimiter: prefix || '/',
130 | optional: optional,
131 | repeat: repeat
132 | });
133 |
134 | prefix = prefix ? ('\\' + prefix) : '';
135 | capture = escapeGroup(capture || group || '[^' + (prefix || '\\/') + ']+?');
136 |
137 | if (repeat) {
138 | capture = capture + '(?:' + prefix + capture + ')*';
139 | }
140 |
141 | if (optional) {
142 | return '(?:' + prefix + '(' + capture + '))?';
143 | }
144 |
145 | // Basic parameter support.
146 | return prefix + '(' + capture + ')';
147 | }
148 |
149 | return path.replace(PATH_REGEXP, replace);
150 | }
151 |
152 | /**
153 | * Normalize the given path string, returning a regular expression.
154 | *
155 | * An empty array can be passed in for the keys, which will hold the
156 | * placeholder key descriptions. For example, using `/user/:id`, `keys` will
157 | * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.
158 | *
159 | * @param {(String|RegExp|Array)} path
160 | * @param {Array} [keys]
161 | * @param {Object} [options]
162 | * @return {RegExp}
163 | */
164 | function pathToRegexp (path, keys, options) {
165 | keys = keys || [];
166 |
167 | if (!isArray(keys)) {
168 | options = keys;
169 | keys = [];
170 | } else if (!options) {
171 | options = {};
172 | }
173 |
174 | if (path instanceof RegExp) {
175 | return regexpToRegexp(path, keys, options);
176 | }
177 |
178 | if (isArray(path)) {
179 | return arrayToRegexp(path, keys, options);
180 | }
181 |
182 | var strict = options.strict;
183 | var end = options.end !== false;
184 | var route = replacePath(path, keys);
185 | var endsWithSlash = path.charAt(path.length - 1) === '/';
186 |
187 | // In non-strict mode we allow a slash at the end of match. If the path to
188 | // match already ends with a slash, we remove it for consistency. The slash
189 | // is valid at the end of a path match, not in the middle. This is important
190 | // in non-ending mode, where "/test/" shouldn't match "/test//route".
191 | if (!strict) {
192 | route = (endsWithSlash ? route.slice(0, -2) : route) + '(?:\\/(?=$))?';
193 | }
194 |
195 | if (end) {
196 | route += '$';
197 | } else {
198 | // In non-ending mode, we need the capturing groups to match as much as
199 | // possible by using a positive lookahead to the end or next path segment.
200 | route += strict && endsWithSlash ? '' : '(?=\\/|$)';
201 | }
202 |
203 | return attachKeys(new RegExp('^' + route, flags(options)), keys);
204 | }
205 |
--------------------------------------------------------------------------------
/docs/vendor/polyfill.js:
--------------------------------------------------------------------------------
1 | // From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
2 | if (!Object.keys) {
3 | Object.keys = (function () {
4 | 'use strict';
5 | var hasOwnProperty = Object.prototype.hasOwnProperty,
6 | hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
7 | dontEnums = [
8 | 'toString',
9 | 'toLocaleString',
10 | 'valueOf',
11 | 'hasOwnProperty',
12 | 'isPrototypeOf',
13 | 'propertyIsEnumerable',
14 | 'constructor'
15 | ],
16 | dontEnumsLength = dontEnums.length;
17 |
18 | return function (obj) {
19 | if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {
20 | throw new TypeError('Object.keys called on non-object');
21 | }
22 |
23 | var result = [], prop, i;
24 |
25 | for (prop in obj) {
26 | if (hasOwnProperty.call(obj, prop)) {
27 | result.push(prop);
28 | }
29 | }
30 |
31 | if (hasDontEnumBug) {
32 | for (i = 0; i < dontEnumsLength; i++) {
33 | if (hasOwnProperty.call(obj, dontEnums[i])) {
34 | result.push(dontEnums[i]);
35 | }
36 | }
37 | }
38 | return result;
39 | };
40 | }());
41 | }
42 |
43 | //Production steps of ECMA-262, Edition 5, 15.4.4.18
44 | //Reference: http://es5.github.com/#x15.4.4.18
45 | if (!Array.prototype.forEach) {
46 | Array.prototype.forEach = function (callback, thisArg) {
47 | var T, k;
48 |
49 | if (this == null) {
50 | throw new TypeError(' this is null or not defined');
51 | }
52 |
53 | // 1. Let O be the result of calling ToObject passing the |this| value as the argument.
54 | var O = Object(this);
55 |
56 | // 2. Let lenValue be the result of calling the Get internal method of O with the argument "length".
57 | // 3. Let len be ToUint32(lenValue).
58 | var len = O.length >>> 0;
59 |
60 | // 4. If IsCallable(callback) is false, throw a TypeError exception.
61 | // See: http://es5.github.com/#x9.11
62 | if (typeof callback !== "function") {
63 | throw new TypeError(callback + " is not a function");
64 | }
65 |
66 | // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.
67 | if (arguments.length > 1) {
68 | T = thisArg;
69 | }
70 |
71 | // 6. Let k be 0
72 | k = 0;
73 |
74 | // 7. Repeat, while k < len
75 | while (k < len) {
76 | var kValue;
77 |
78 | // a. Let Pk be ToString(k).
79 | // This is implicit for LHS operands of the in operator
80 | // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk.
81 | // This step can be combined with c
82 | // c. If kPresent is true, then
83 | if (k in O) {
84 | // i. Let kValue be the result of calling the Get internal method of O with argument Pk.
85 | kValue = O[k];
86 |
87 | // ii. Call the Call internal method of callback with T as the this value and
88 | // argument list containing kValue, k, and O.
89 | callback.call(T, kValue, k, O);
90 | }
91 | // d. Increase k by 1.
92 | k++;
93 | }
94 | // 8. return undefined
95 | };
96 | }
97 |
--------------------------------------------------------------------------------
/docs/vendor/prettify.css:
--------------------------------------------------------------------------------
1 | /* Pretty printing styles. Used with prettify.js. */
2 | /* Vim sunburst theme by David Leibovic */
3 |
4 | pre .str, code .str { color: #65B042; } /* string - green */
5 | pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
6 | pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
7 | pre .typ, code .typ { color: #89bdff; } /* type - light blue */
8 | pre .lit, code .lit { color: #3387CC; } /* literal - blue */
9 | pre .pun, code .pun { color: #fff; } /* punctuation - white */
10 | pre .pln, code .pln { color: #fff; } /* plaintext - white */
11 | pre .tag, code .tag { color: #89bdff; } /* html/xml tag - light blue */
12 | pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name - khaki */
13 | pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
14 | pre .dec, code .dec { color: #3387CC; } /* decimal - blue */
15 |
16 | pre.prettyprint, code.prettyprint {
17 | background-color: #000;
18 | -moz-border-radius: 8px;
19 | -webkit-border-radius: 8px;
20 | -o-border-radius: 8px;
21 | -ms-border-radius: 8px;
22 | -khtml-border-radius: 8px;
23 | border-radius: 8px;
24 | }
25 |
26 | pre.prettyprint {
27 | width: 95%;
28 | margin: 1em auto;
29 | padding: 1em;
30 | white-space: pre-wrap;
31 | }
32 |
33 |
34 | /* Specify class=linenums on a pre to get line numbering */
35 | ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
36 | li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
37 | /* Alternate shading for lines */
38 | li.L1,li.L3,li.L5,li.L7,li.L9 { }
39 |
40 | @media print {
41 | pre .str, code .str { color: #060; }
42 | pre .kwd, code .kwd { color: #006; font-weight: bold; }
43 | pre .com, code .com { color: #600; font-style: italic; }
44 | pre .typ, code .typ { color: #404; font-weight: bold; }
45 | pre .lit, code .lit { color: #044; }
46 | pre .pun, code .pun { color: #440; }
47 | pre .pln, code .pln { color: #000; }
48 | pre .tag, code .tag { color: #006; font-weight: bold; }
49 | pre .atn, code .atn { color: #404; }
50 | pre .atv, code .atv { color: #060; }
51 | }
52 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-Splus.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2012 Jeffrey B. Arnold
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\'(?:[^\'\\]|\\[\s\S])*(?:\'|$)/,null,"'"]],[["com",/^#.*/],["kwd",/^(?:if|else|for|while|repeat|in|next|break|return|switch|function)(?![A-Za-z0-9_.])/],["lit",/^0[xX][a-fA-F0-9]+([pP][0-9]+)?[Li]?/],["lit",/^[+-]?([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?[Li]?/],["lit",/^(?:NULL|NA(?:_(?:integer|real|complex|character)_)?|Inf|TRUE|FALSE|NaN|\.\.(?:\.|[0-9]+))(?![A-Za-z0-9_.])/],
18 | ["pun",/^(?:<-|->>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|\*|\+|\^|\/|!|%.*?%|=|~|\$|@|:{1,3}|[\[\](){};,?])/],["pln",/^(?:[A-Za-z]+[A-Za-z0-9_.]*|\.[a-zA-Z_][0-9a-zA-Z\._]*)(?![A-Za-z0-9_.])/],["str",/^`.+`/]]),["r","s","R","S","Splus"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-aea.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2009 Onno Hommes.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\r\n]*/,null,"#"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,
18 | null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["apollo","agc","aea"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-agc.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2009 Onno Hommes.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\r\n]*/,null,"#"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,
18 | null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["apollo","agc","aea"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-apollo.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2009 Onno Hommes.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\r\n]*/,null,"#"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,
18 | null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["apollo","agc","aea"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-basic.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2013 Peter Kofler
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:"(?:[^\\"\r\n]|\\.)*(?:"|$))/,null,'"'],["pln",/^\s+/,null," \r\n\t\u00a0"]],[["com",/^REM[^\r\n]*/,null],["kwd",/^\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\b/,null],["pln",/^[A-Z][A-Z0-9]?(?:\$|%)?/i,null],["lit",/^(?:\d+(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?/i,
18 | null,"0123456789"],["pun",/^.[^\s\w\.$%"]*/,null]]),["basic","cbm"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-cbm.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2013 Peter Kofler
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:"(?:[^\\"\r\n]|\\.)*(?:"|$))/,null,'"'],["pln",/^\s+/,null," \r\n\t\u00a0"]],[["com",/^REM[^\r\n]*/,null],["kwd",/^\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\b/,null],["pln",/^[A-Z][A-Z0-9]?(?:\$|%)?/i,null],["lit",/^(?:\d+(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?/i,
18 | null,"0123456789"],["pun",/^.[^\s\w\.$%"]*/,null]]),["basic","cbm"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-cl.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2008 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
18 | null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-clj.js:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) 2011 Google Inc.
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License");
5 | you may not use this file except in compliance with the License.
6 | You may obtain a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | PR.registerLangHandler(PR.createSimpleLexer([["opn",/^[\(\{\[]+/,null,"([{"],["clo",/^[\)\}\]]+/,null,")]}"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\b/,
17 | null],["typ",/^:[0-9a-zA-Z\-]+/]]),["clj"]);
18 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-css.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2009 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[["str",/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],["str",/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']+)\)/i],["kwd",/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],
18 | ["com",/^(?:\x3c!--|--\x3e)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#(?:[0-9a-f]{3}){1,2}\b/i],["pln",/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],["pun",/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^\)\"\']+/]]),["css-str"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-dart.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2013 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"]],[["com",/^#!(?:.*)/],["kwd",/^\b(?:import|library|part of|part|as|show|hide)\b/i],["com",/^\/\/(?:.*)/],["com",/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],["kwd",/^\b(?:class|interface)\b/i],["kwd",/^\b(?:assert|async|await|break|case|catch|continue|default|do|else|finally|for|if|in|is|new|return|super|switch|sync|this|throw|try|while)\b/i],["kwd",/^\b(?:abstract|const|extends|factory|final|get|implements|native|operator|set|static|typedef|var)\b/i],
18 | ["typ",/^\b(?:bool|double|Dynamic|int|num|Object|String|void)\b/i],["kwd",/^\b(?:false|null|true)\b/i],["str",/^r?[\']{3}[\s|\S]*?[^\\][\']{3}/],["str",/^r?[\"]{3}[\s|\S]*?[^\\][\"]{3}/],["str",/^r?\'(\'|(?:[^\n\r\f])*?[^\\]\')/],["str",/^r?\"(\"|(?:[^\n\r\f])*?[^\\]\")/],["typ",/^[A-Z]\w*/],["pln",/^[a-z_$][a-z0-9_]*/i],["pun",/^[~!%^&*+=|?:<>/-]/],["lit",/^\b0x[0-9a-f]+/i],["lit",/^\b\d+(?:\.\d*)?(?:e[+-]?\d+)?/i],["lit",
19 | /^\b\.\d+(?:e[+-]?\d+)?/i],["pun",/^[(){}\[\],.;]/]]),["dart"]);
20 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-el.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2008 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
18 | null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-erl.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2013 Andrew Allen
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\x0B\x0C\r ]+/,null,"\t\n\x0B\f\r "],["str",/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'"'],["lit",/^[a-z][a-zA-Z0-9_]*/],["lit",/^\'(?:[^\'\\\n\x0C\r]|\\[^&])+\'?/,null,"'"],["lit",/^\?[^ \t\n({]+/,null,"?"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,"0123456789"]],[["com",/^%[^\n]*/],["kwd",/^(?:module|attributes|do|let|in|letrec|apply|call|primop|case|of|end|when|fun|try|catch|receive|after|char|integer|float,atom,string,var)\b/],
18 | ["kwd",/^-[a-z_]+/],["typ",/^[A-Z_][a-zA-Z0-9_]*/],["pun",/^[.,;]/]]),["erlang","erl"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-erlang.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2013 Andrew Allen
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\x0B\x0C\r ]+/,null,"\t\n\x0B\f\r "],["str",/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'"'],["lit",/^[a-z][a-zA-Z0-9_]*/],["lit",/^\'(?:[^\'\\\n\x0C\r]|\\[^&])+\'?/,null,"'"],["lit",/^\?[^ \t\n({]+/,null,"?"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,"0123456789"]],[["com",/^%[^\n]*/],["kwd",/^(?:module|attributes|do|let|in|letrec|apply|call|primop|case|of|end|when|fun|try|catch|receive|after|char|integer|float,atom,string,var)\b/],
18 | ["kwd",/^-[a-z_]+/],["typ",/^[A-Z_][a-zA-Z0-9_]*/],["pun",/^[.,;]/]]),["erlang","erl"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-fs.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2008 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["com",/^#(?:if[\t\n\r \xA0]+(?:[a-z_$][\w\']*|``[^\r\n\t`]*(?:``|$))|else|endif|light)/i,null,"#"],["str",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])(?:\'|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\r\n]*|\(\*[\s\S]*?\*\))/],["kwd",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/],
18 | ["lit",/^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^(?:[a-z_][\w']*[!?#]?|``[^\r\n\t`]*(?:``|$))/i],["pun",/^[^\t\n\r \xA0\"\'\w]+/]]),["fs","ml"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-go.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2010 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["pln",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])+(?:\'|$)|`[^`]*(?:`|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\r\n]*|\/\*[\s\S]*?\*\/)/],["pln",/^(?:[^\/\"\'`]|\/(?![\/\*]))+/i]]),["go"]);
18 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-hs.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2009 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\x0B\x0C\r ]+/,null,"\t\n\x0B\f\r "],["str",/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\'(?:[^\'\\\n\x0C\r]|\\[^&])\'?/,null,"'"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,"0123456789"]],[["com",/^(?:(?:--+(?:[^\r\n\x0C]*)?)|(?:\{-(?:[^-]|-+[^-\}])*-\}))/],["kwd",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^a-zA-Z0-9\']|$)/,
18 | null],["pln",/^(?:[A-Z][\w\']*\.)*[a-zA-Z][\w\']*/],["pun",/^[^\t\n\x0B\x0C\r a-zA-Z0-9\'\"]+/]]),["hs"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-lasso.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2013 Eric Knibbe
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\'(?:[^\'\\]|\\[\s\S])*(?:\'|$)/,null,"'"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\`[^\`]*(?:\`|$)/,null,"`"],["lit",/^0x[\da-f]+|\d+/i,null,"0123456789"],["atn",/^#\d+|[#$][a-z_][\w.]*|#![ \S]+lasso9\b/i,null,"#$"]],[["tag",/^[[\]]|<\?(?:lasso(?:script)?|=)|\?>|noprocess\b|no_square_brackets\b/i],["com",/^\/\/[^\r\n]*|\/\*[\s\S]*?\*\//],
18 | ["atn",/^-(?!infinity)[a-z_][\w.]*|\.\s*'[a-z_][\w.]*'/i],["lit",/^\d*\.\d+(?:e[-+]?\d+)?|infinity\b|NaN\b/i],["atv",/^::\s*[a-z_][\w.]*/i],["lit",/^(?:true|false|none|minimal|full|all|void|and|or|not|bw|nbw|ew|new|cn|ncn|lt|lte|gt|gte|eq|neq|rx|nrx|ft)\b/i],["kwd",/^(?:error_code|error_msg|error_pop|error_push|error_reset|cache|database_names|database_schemanames|database_tablenames|define_tag|define_type|email_batch|encode_set|html_comment|handle|handle_error|header|if|inline|iterate|ljax_target|link|link_currentaction|link_currentgroup|link_currentrecord|link_detail|link_firstgroup|link_firstrecord|link_lastgroup|link_lastrecord|link_nextgroup|link_nextrecord|link_prevgroup|link_prevrecord|log|loop|namespace_using|output_none|portal|private|protect|records|referer|referrer|repeating|resultset|rows|search_args|search_arguments|select|sort_args|sort_arguments|thread_atomic|value_list|while|abort|case|else|if_empty|if_false|if_null|if_true|loop_abort|loop_continue|loop_count|params|params_up|return|return_value|run_children|soap_definetag|soap_lastrequest|soap_lastresponse|tag_name|ascending|average|by|define|descending|do|equals|frozen|group|handle_failure|import|in|into|join|let|match|max|min|on|order|parent|protected|provide|public|require|returnhome|skip|split_thread|sum|take|thread|to|trait|type|where|with|yield|yieldhome)\b/i],
19 | ["typ",/^(?:array|date|decimal|duration|integer|map|pair|string|tag|xml|null|boolean|bytes|keyword|list|locale|queue|set|stack|staticarray|local|var|variable|global|data|self|inherited|currentcapture|givenblock)\b|^\.\.?/i],["pln",/^[a-z_][\w.]*(?:=\s*(?=\())?/i],["pun",/^:=|[-+*\/%=<>&|!?\\]/]]),["lasso","ls","lassoscript"]);
20 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-lassoscript.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2013 Eric Knibbe
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\'(?:[^\'\\]|\\[\s\S])*(?:\'|$)/,null,"'"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\`[^\`]*(?:\`|$)/,null,"`"],["lit",/^0x[\da-f]+|\d+/i,null,"0123456789"],["atn",/^#\d+|[#$][a-z_][\w.]*|#![ \S]+lasso9\b/i,null,"#$"]],[["tag",/^[[\]]|<\?(?:lasso(?:script)?|=)|\?>|noprocess\b|no_square_brackets\b/i],["com",/^\/\/[^\r\n]*|\/\*[\s\S]*?\*\//],
18 | ["atn",/^-(?!infinity)[a-z_][\w.]*|\.\s*'[a-z_][\w.]*'/i],["lit",/^\d*\.\d+(?:e[-+]?\d+)?|infinity\b|NaN\b/i],["atv",/^::\s*[a-z_][\w.]*/i],["lit",/^(?:true|false|none|minimal|full|all|void|and|or|not|bw|nbw|ew|new|cn|ncn|lt|lte|gt|gte|eq|neq|rx|nrx|ft)\b/i],["kwd",/^(?:error_code|error_msg|error_pop|error_push|error_reset|cache|database_names|database_schemanames|database_tablenames|define_tag|define_type|email_batch|encode_set|html_comment|handle|handle_error|header|if|inline|iterate|ljax_target|link|link_currentaction|link_currentgroup|link_currentrecord|link_detail|link_firstgroup|link_firstrecord|link_lastgroup|link_lastrecord|link_nextgroup|link_nextrecord|link_prevgroup|link_prevrecord|log|loop|namespace_using|output_none|portal|private|protect|records|referer|referrer|repeating|resultset|rows|search_args|search_arguments|select|sort_args|sort_arguments|thread_atomic|value_list|while|abort|case|else|if_empty|if_false|if_null|if_true|loop_abort|loop_continue|loop_count|params|params_up|return|return_value|run_children|soap_definetag|soap_lastrequest|soap_lastresponse|tag_name|ascending|average|by|define|descending|do|equals|frozen|group|handle_failure|import|in|into|join|let|match|max|min|on|order|parent|protected|provide|public|require|returnhome|skip|split_thread|sum|take|thread|to|trait|type|where|with|yield|yieldhome)\b/i],
19 | ["typ",/^(?:array|date|decimal|duration|integer|map|pair|string|tag|xml|null|boolean|bytes|keyword|list|locale|queue|set|stack|staticarray|local|var|variable|global|data|self|inherited|currentcapture|givenblock)\b|^\.\.?/i],["pln",/^[a-z_][\w.]*(?:=\s*(?=\())?/i],["pun",/^:=|[-+*\/%=<>&|!?\\]/]]),["lasso","ls","lassoscript"]);
20 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-latex.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2011 Martin S.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\r\n]*/,null,"%"]],[["kwd",/^\\[a-zA-Z@]+/],["kwd",/^\\./],["typ",/^[$&]/],["lit",/[+-]?(?:\.\d+|\d+(?:\.\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],["pun",/^[{}()\[\]=]+/]]),["latex","tex"]);
18 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-lgt.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2014 Paulo Moura
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["str",/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'"'],["lit",/^[a-z][a-zA-Z0-9_]*/],["lit",/^\'(?:[^\'\\\n\x0C\r]|\\[^&])+\'?/,null,"'"],["lit",/^(?:0'.|0b[0-1]+|0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,"0123456789"]],[["com",/^%[^\r\n]*/,null,"%"],["com",/^\/\*[\s\S]*?\*\//],["kwd",/^\s*:-\s(c(a(lls|tegory)|oinductive)|p(ublic|r(ot(ocol|ected)|ivate))|e(l(if|se)|n(coding|sure_loaded)|xport)|i(f|n(clude|itialization|fo))|alias|d(ynamic|iscontiguous)|m(eta_(non_terminal|predicate)|od(e|ule)|ultifile)|reexport|s(et_(logtalk|prolog)_flag|ynchronized)|o(bject|p)|use(s|_module))/],
18 | ["kwd",/^\s*:-\s(e(lse|nd(if|_(category|object|protocol)))|built_in|dynamic|synchronized|threaded)/],["typ",/^[A-Z_][a-zA-Z0-9_]*/],["pun",/^[.,;{}:^<>=\\/+*?#!-]/]]),["logtalk","lgt"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-lisp.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2008 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
18 | null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-ll.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2013 Nikhil Dabas
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^!?\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["com",/^;[^\r\n]*/,null,";"]],[["pln",/^[%@!](?:[-a-zA-Z$._][-a-zA-Z$._0-9]*|\d+)/],["kwd",/^[A-Za-z_][0-9A-Za-z_]*/,null],["lit",/^\d+\.\d+/],["lit",/^(?:\d+|0[xX][a-fA-F0-9]+)/],["pun",/^[()\[\]{},=*<>:]|\.\.\.$/]]),["llvm","ll"]);
18 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-llvm.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2013 Nikhil Dabas
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^!?\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["com",/^;[^\r\n]*/,null,";"]],[["pln",/^[%@!](?:[-a-zA-Z$._][-a-zA-Z$._0-9]*|\d+)/],["kwd",/^[A-Za-z_][0-9A-Za-z_]*/,null],["lit",/^\d+\.\d+/],["lit",/^(?:\d+|0[xX][a-fA-F0-9]+)/],["pun",/^[()\[\]{},=*<>:]|\.\.\.$/]]),["llvm","ll"]);
18 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-logtalk.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2014 Paulo Moura
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["str",/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'"'],["lit",/^[a-z][a-zA-Z0-9_]*/],["lit",/^\'(?:[^\'\\\n\x0C\r]|\\[^&])+\'?/,null,"'"],["lit",/^(?:0'.|0b[0-1]+|0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,"0123456789"]],[["com",/^%[^\r\n]*/,null,"%"],["com",/^\/\*[\s\S]*?\*\//],["kwd",/^\s*:-\s(c(a(lls|tegory)|oinductive)|p(ublic|r(ot(ocol|ected)|ivate))|e(l(if|se)|n(coding|sure_loaded)|xport)|i(f|n(clude|itialization|fo))|alias|d(ynamic|iscontiguous)|m(eta_(non_terminal|predicate)|od(e|ule)|ultifile)|reexport|s(et_(logtalk|prolog)_flag|ynchronized)|o(bject|p)|use(s|_module))/],
18 | ["kwd",/^\s*:-\s(e(lse|nd(if|_(category|object|protocol)))|built_in|dynamic|synchronized|threaded)/],["typ",/^[A-Z_][a-zA-Z0-9_]*/],["pun",/^[.,;{}:^<>=\\/+*?#!-]/]]),["logtalk","lgt"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-ls.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2013 Eric Knibbe
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\'(?:[^\'\\]|\\[\s\S])*(?:\'|$)/,null,"'"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\`[^\`]*(?:\`|$)/,null,"`"],["lit",/^0x[\da-f]+|\d+/i,null,"0123456789"],["atn",/^#\d+|[#$][a-z_][\w.]*|#![ \S]+lasso9\b/i,null,"#$"]],[["tag",/^[[\]]|<\?(?:lasso(?:script)?|=)|\?>|noprocess\b|no_square_brackets\b/i],["com",/^\/\/[^\r\n]*|\/\*[\s\S]*?\*\//],
18 | ["atn",/^-(?!infinity)[a-z_][\w.]*|\.\s*'[a-z_][\w.]*'/i],["lit",/^\d*\.\d+(?:e[-+]?\d+)?|infinity\b|NaN\b/i],["atv",/^::\s*[a-z_][\w.]*/i],["lit",/^(?:true|false|none|minimal|full|all|void|and|or|not|bw|nbw|ew|new|cn|ncn|lt|lte|gt|gte|eq|neq|rx|nrx|ft)\b/i],["kwd",/^(?:error_code|error_msg|error_pop|error_push|error_reset|cache|database_names|database_schemanames|database_tablenames|define_tag|define_type|email_batch|encode_set|html_comment|handle|handle_error|header|if|inline|iterate|ljax_target|link|link_currentaction|link_currentgroup|link_currentrecord|link_detail|link_firstgroup|link_firstrecord|link_lastgroup|link_lastrecord|link_nextgroup|link_nextrecord|link_prevgroup|link_prevrecord|log|loop|namespace_using|output_none|portal|private|protect|records|referer|referrer|repeating|resultset|rows|search_args|search_arguments|select|sort_args|sort_arguments|thread_atomic|value_list|while|abort|case|else|if_empty|if_false|if_null|if_true|loop_abort|loop_continue|loop_count|params|params_up|return|return_value|run_children|soap_definetag|soap_lastrequest|soap_lastresponse|tag_name|ascending|average|by|define|descending|do|equals|frozen|group|handle_failure|import|in|into|join|let|match|max|min|on|order|parent|protected|provide|public|require|returnhome|skip|split_thread|sum|take|thread|to|trait|type|where|with|yield|yieldhome)\b/i],
19 | ["typ",/^(?:array|date|decimal|duration|integer|map|pair|string|tag|xml|null|boolean|bytes|keyword|list|locale|queue|set|stack|staticarray|local|var|variable|global|data|self|inherited|currentcapture|givenblock)\b|^\.\.?/i],["pln",/^[a-z_][\w.]*(?:=\s*(?=\())?/i],["pun",/^:=|[-+*\/%=<>&|!?\\]/]]),["lasso","ls","lassoscript"]);
20 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-lsp.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2008 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
18 | null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-lua.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2008 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,"\"'"]],[["com",/^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/],["str",/^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/],["kwd",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],["lit",/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],
18 | ["pln",/^[a-z_]\w*/i],["pun",/^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/]]),["lua"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-ml.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2008 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["com",/^#(?:if[\t\n\r \xA0]+(?:[a-z_$][\w\']*|``[^\r\n\t`]*(?:``|$))|else|endif|light)/i,null,"#"],["str",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])(?:\'|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\r\n]*|\(\*[\s\S]*?\*\))/],["kwd",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/],
18 | ["lit",/^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^(?:[a-z_][\w']*[!?#]?|``[^\r\n\t`]*(?:``|$))/i],["pun",/^[^\t\n\r \xA0\"\'\w]+/]]),["fs","ml"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-mumps.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2011 Kitware Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^"]|\\.)*")/,null,'"']],[["com",/^;[^\r\n]*/,null,";"],["dec",/^(?:\$(?:D|DEVICE|EC|ECODE|ES|ESTACK|ET|ETRAP|H|HOROLOG|I|IO|J|JOB|K|KEY|P|PRINCIPAL|Q|QUIT|ST|STACK|S|STORAGE|SY|SYSTEM|T|TEST|TL|TLEVEL|TR|TRESTART|X|Y|Z[A-Z]*|A|ASCII|C|CHAR|D|DATA|E|EXTRACT|F|FIND|FN|FNUMBER|G|GET|J|JUSTIFY|L|LENGTH|NA|NAME|O|ORDER|P|PIECE|QL|QLENGTH|QS|QSUBSCRIPT|Q|QUERY|R|RANDOM|RE|REVERSE|S|SELECT|ST|STACK|T|TEXT|TR|TRANSLATE|NaN))\b/i,
18 | null],["kwd",/^(?:[^\$]B|BREAK|C|CLOSE|D|DO|E|ELSE|F|FOR|G|GOTO|H|HALT|H|HANG|I|IF|J|JOB|K|KILL|L|LOCK|M|MERGE|N|NEW|O|OPEN|Q|QUIT|R|READ|S|SET|TC|TCOMMIT|TRE|TRESTART|TRO|TROLLBACK|TS|TSTART|U|USE|V|VIEW|W|WRITE|X|XECUTE)\b/i,null],["lit",/^[+-]?(?:(?:\.\d+|\d+(?:\.\d*)?)(?:E[+\-]?\d+)?)/i],["pln",/^[a-z][a-zA-Z0-9]*/i],["pun",/^[^\w\t\n\r\xA0\"\$;%\^]|_/]]),["mumps"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-n.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2011 Zimin A.V.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:\'(?:[^\\\'\r\n]|\\.)*\'|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,'"'],["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"],["pln",/^\s+/,null," \r\n\t\u00a0"]],[["str",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null],["str",/^<#(?:[^#>])*(?:#>|$)/,null],["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null],["com",/^\/\/[^\r\n]*/,
18 | null],["com",/^\/\*[\s\S]*?(?:\*\/|$)/,null],["kwd",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\b/,
19 | null],["typ",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\b/,null],["lit",/^@[a-z_$][a-z_$@0-9]*/i,null],["typ",/^@[A-Z]+[a-z][A-Za-z_$@0-9]*/,null],["pln",/^'?[A-Za-z_$][a-z_$@0-9]*/i,null],["lit",/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],["pun",/^.[^\s\w\.$@\'\"\`\/\#]*/,null]]),["n","nemerle"]);
20 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-nemerle.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2011 Zimin A.V.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:\'(?:[^\\\'\r\n]|\\.)*\'|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,'"'],["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"],["pln",/^\s+/,null," \r\n\t\u00a0"]],[["str",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null],["str",/^<#(?:[^#>])*(?:#>|$)/,null],["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null],["com",/^\/\/[^\r\n]*/,
18 | null],["com",/^\/\*[\s\S]*?(?:\*\/|$)/,null],["kwd",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\b/,
19 | null],["typ",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\b/,null],["lit",/^@[a-z_$][a-z_$@0-9]*/i,null],["typ",/^@[A-Z]+[a-z][A-Za-z_$@0-9]*/,null],["pln",/^'?[A-Za-z_$][a-z_$@0-9]*/i,null],["lit",/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],["pun",/^.[^\s\w\.$@\'\"\`\/\#]*/,null]]),["n","nemerle"]);
20 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-pascal.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2013 Peter Kofler
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$))/,null,"'"],["pln",/^\s+/,null," \r\n\t\u00a0"]],[["com",/^\(\*[\s\S]*?(?:\*\)|$)|^\{[\s\S]*?(?:\}|$)/,null],["kwd",/^(?:ABSOLUTE|AND|ARRAY|ASM|ASSEMBLER|BEGIN|CASE|CONST|CONSTRUCTOR|DESTRUCTOR|DIV|DO|DOWNTO|ELSE|END|EXTERNAL|FOR|FORWARD|FUNCTION|GOTO|IF|IMPLEMENTATION|IN|INLINE|INTERFACE|INTERRUPT|LABEL|MOD|NOT|OBJECT|OF|OR|PACKED|PROCEDURE|PROGRAM|RECORD|REPEAT|SET|SHL|SHR|THEN|TO|TYPE|UNIT|UNTIL|USES|VAR|VIRTUAL|WHILE|WITH|XOR)\b/i,
18 | null],["lit",/^(?:true|false|self|nil)/i,null],["pln",/^[a-z][a-z0-9]*/i,null],["lit",/^(?:\$[a-f0-9]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?)/i,null,"0123456789"],["pun",/^.[^\s\w\.$@\'\/]*/,null]]),["pascal"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-proto.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2006 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.sourceDecorator({keywords:"bytes,default,double,enum,extend,extensions,false,group,import,max,message,option,optional,package,repeated,required,returns,rpc,service,syntax,to,true",types:/^(bool|(double|s?fixed|[su]?int)(32|64)|float|string)\b/,cStyleComments:!0}),["proto"]);
18 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-r.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2012 Jeffrey B. Arnold
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\'(?:[^\'\\]|\\[\s\S])*(?:\'|$)/,null,"'"]],[["com",/^#.*/],["kwd",/^(?:if|else|for|while|repeat|in|next|break|return|switch|function)(?![A-Za-z0-9_.])/],["lit",/^0[xX][a-fA-F0-9]+([pP][0-9]+)?[Li]?/],["lit",/^[+-]?([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?[Li]?/],["lit",/^(?:NULL|NA(?:_(?:integer|real|complex|character)_)?|Inf|TRUE|FALSE|NaN|\.\.(?:\.|[0-9]+))(?![A-Za-z0-9_.])/],
18 | ["pun",/^(?:<-|->>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|\*|\+|\^|\/|!|%.*?%|=|~|\$|@|:{1,3}|[\[\](){};,?])/],["pln",/^(?:[A-Za-z]+[A-Za-z0-9_.]*|\.[a-zA-Z_][0-9a-zA-Z\._]*)(?![A-Za-z0-9_.])/],["str",/^`.+`/]]),["r","s","R","S","Splus"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-rd.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2012 Jeffrey Arnold
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\r\n]*/,null,"%"]],[["lit",/^\\(?:cr|l?dots|R|tab)\b/],["kwd",/^\\[a-zA-Z@]+/],["kwd",/^#(?:ifn?def|endif)/],["pln",/^\\[{}]/],["pun",/^[{}()\[\]]+/]]),["Rd","rd"]);
18 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-rkt.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2008 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
18 | null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-rust.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2015 Chris Morgan
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([],[["pln",/^[\t\n\r \xA0]+/],["com",/^\/\/.*/],["com",/^\/\*[\s\S]*?(?:\*\/|$)/],["str",/^b"(?:[^\\]|\\(?:.|x[\da-fA-F]{2}))*?"/],["str",/^"(?:[^\\]|\\(?:.|x[\da-fA-F]{2}|u\{\[\da-fA-F]{1,6}\}))*?"/],["str",/^b?r(#*)\"[\s\S]*?\"\1/],["str",/^b'([^\\]|\\(.|x[\da-fA-F]{2}))'/],["str",/^'([^\\]|\\(.|x[\da-fA-F]{2}|u\{[\da-fA-F]{1,6}\}))'/],["tag",/^'\w+?\b/],["kwd",/^(?:match|if|else|as|break|box|continue|extern|fn|for|in|if|impl|let|loop|pub|return|super|unsafe|where|while|use|mod|trait|struct|enum|type|move|mut|ref|static|const|crate)\b/],
18 | ["kwd",/^(?:alignof|become|do|offsetof|priv|pure|sizeof|typeof|unsized|yield|abstract|virtual|final|override|macro)\b/],["typ",/^(?:[iu](8|16|32|64|size)|char|bool|f32|f64|str|Self)\b/],["typ",/^(?:Copy|Send|Sized|Sync|Drop|Fn|FnMut|FnOnce|Box|ToOwned|Clone|PartialEq|PartialOrd|Eq|Ord|AsRef|AsMut|Into|From|Default|Iterator|Extend|IntoIterator|DoubleEndedIterator|ExactSizeIterator|Option|Some|None|Result|Ok|Err|SliceConcatExt|String|ToString|Vec)\b/],["lit",/^(self|true|false|null)\b/],
19 | ["lit",/^\d[0-9_]*(?:[iu](?:size|8|16|32|64))?/],["lit",/^0x[a-fA-F0-9_]+(?:[iu](?:size|8|16|32|64))?/],["lit",/^0o[0-7_]+(?:[iu](?:size|8|16|32|64))?/],["lit",/^0b[01_]+(?:[iu](?:size|8|16|32|64))?/],["lit",/^\d[0-9_]*\.(?![^\s\d.])/],["lit",/^\d[0-9_]*(?:\.\d[0-9_]*)(?:[eE][+-]?[0-9_]+)?(?:f32|f64)?/],["lit",/^\d[0-9_]*(?:\.\d[0-9_]*)?(?:[eE][+-]?[0-9_]+)(?:f32|f64)?/],["lit",/^\d[0-9_]*(?:\.\d[0-9_]*)?(?:[eE][+-]?[0-9_]+)?(?:f32|f64)/],
20 | ["atn",/^[a-z_]\w*!/i],["pln",/^[a-z_]\w*/i],["atv",/^#!?\[[\s\S]*?\]/],["pun",/^[+\-/*=^&|!<>%[\](){}?:.,;]/],["pln",/./]]),["rust"]);
21 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-s.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2012 Jeffrey B. Arnold
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\'(?:[^\'\\]|\\[\s\S])*(?:\'|$)/,null,"'"]],[["com",/^#.*/],["kwd",/^(?:if|else|for|while|repeat|in|next|break|return|switch|function)(?![A-Za-z0-9_.])/],["lit",/^0[xX][a-fA-F0-9]+([pP][0-9]+)?[Li]?/],["lit",/^[+-]?([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?[Li]?/],["lit",/^(?:NULL|NA(?:_(?:integer|real|complex|character)_)?|Inf|TRUE|FALSE|NaN|\.\.(?:\.|[0-9]+))(?![A-Za-z0-9_.])/],
18 | ["pun",/^(?:<-|->>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|\*|\+|\^|\/|!|%.*?%|=|~|\$|@|:{1,3}|[\[\](){};,?])/],["pln",/^(?:[A-Za-z]+[A-Za-z0-9_.]*|\.[a-zA-Z_][0-9a-zA-Z\._]*)(?![A-Za-z0-9_.])/],["str",/^`.+`/]]),["r","s","R","S","Splus"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-scala.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2010 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:(?:""(?:""?(?!")|[^\\"]|\\.)*"{0,3})|(?:[^"\r\n\\]|\\.)*"?))/,null,'"'],["lit",/^`(?:[^\r\n\\`]|\\.)*`?/,null,"`"],["pun",/^[!#%&()*+,\-:;<=>?@\[\\\]^{|}~]+/,null,"!#%&()*+,-:;<=>?@[\\]^{|}~"]],[["str",/^'(?:[^\r\n\\']|\\(?:'|[^\r\n']+))'/],["lit",/^'[a-zA-Z_$][\w$]*(?!['$\w])/],["kwd",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\b/],
18 | ["lit",/^(?:true|false|null|this)\b/],["lit",/^(?:(?:0(?:[0-7]+|X[0-9A-F]+))L?|(?:(?:0|[1-9][0-9]*)(?:(?:\.[0-9]+)?(?:E[+\-]?[0-9]+)?F?|L?))|\\.[0-9]+(?:E[+\-]?[0-9]+)?F?)/i],["typ",/^[$_]*[A-Z][_$A-Z0-9]*[a-z][\w$]*/],["pln",/^[$a-zA-Z_][\w$]*/],["com",/^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/],["pun",/^(?:\.+|\/)/]]),["scala"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-scm.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2008 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
18 | null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-sql.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2008 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/,null,"\"'"]],[["com",/^(?:--[^\r\n]*|\/\*[\s\S]*?(?:\*\/|$))/],["kwd",/^(?:ADD|ALL|ALTER|AND|ANY|APPLY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONNECT|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOLLOWING|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|MATCH|MATCHED|MERGE|NATURAL|NATIONAL|NOCHECK|NONCLUSTERED|NOCYCLE|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PARTITION|PERCENT|PIVOT|PLAN|PRECEDING|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|ROWS?|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|START|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNBOUNDED|UNION|UNIQUE|UNPIVOT|UPDATE|UPDATETEXT|USE|USER|USING|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WITHIN|WRITETEXT|XML)(?=[^\w-]|$)/i,
18 | null],["lit",/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^[a-z_][\w-]*/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0+\-\"\']*/]]),["sql"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-ss.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2008 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
18 | null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-swift.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2015 Google Inc.
4 | Licensed under the Apache License, Version 2.0 (the "License");
5 | you may not use this file except in compliance with the License.
6 | You may obtain a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS,
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | See the License for the specific language governing permissions and
13 | limitations under the License.
14 | */
15 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[ \n\r\t\v\f\0]+/,null," \n\r\t\v\f\x00"],["str",/^"(?:[^"\\]|(?:\\.)|(?:\\\((?:[^"\\)]|\\.)*\)))*"/,null,'"']],[["lit",/^(?:(?:0x[\da-fA-F][\da-fA-F_]*\.[\da-fA-F][\da-fA-F_]*[pP]?)|(?:\d[\d_]*\.\d[\d_]*[eE]?))[+-]?\d[\d_]*/,null],["lit",/^-?(?:(?:0(?:(?:b[01][01_]*)|(?:o[0-7][0-7_]*)|(?:x[\da-fA-F][\da-fA-F_]*)))|(?:\d[\d_]*))/,null],["lit",/^(?:true|false|nil)\b/,null],["kwd",/^\b(?:__COLUMN__|__FILE__|__FUNCTION__|__LINE__|#available|#else|#elseif|#endif|#if|#line|arch|arm|arm64|associativity|as|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|dynamicType|else|enum|fallthrough|final|for|func|get|import|indirect|infix|init|inout|internal|i386|if|in|iOS|iOSApplicationExtension|is|lazy|left|let|mutating|none|nonmutating|operator|optional|OSX|OSXApplicationExtension|override|postfix|precedence|prefix|private|protocol|Protocol|public|required|rethrows|return|right|safe|self|set|static|struct|subscript|super|switch|throw|try|Type|typealias|unowned|unsafe|var|weak|watchOS|while|willSet|x86_64)\b/,
16 | null],["com",/^\/\/.*?[\n\r]/,null],["com",/^\/\*[\s\S]*?(?:\*\/|$)/,null],["pun",/^<<=|<=|<<|>>=|>=|>>|===|==|\.\.\.|&&=|\.\.<|!==|!=|&=|~=|~|\(|\)|\[|\]|{|}|@|#|;|\.|,|:|\|\|=|\?\?|\|\||&&|&\*|&\+|&-|&=|\+=|-=|\/=|\*=|\^=|%=|\|=|->|`|==|\+\+|--|\/|\+|!|\*|%|<|>|&|\||\^|\?|=|-|_/,null],["typ",/^\b(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null]]),["swift"]);
17 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-tcl.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2012 Pyrios
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\{+/,null,"{"],["clo",/^\}+/,null,"}"],["com",/^#[^\r\n]*/,null,"#"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:after|append|apply|array|break|case|catch|continue|error|eval|exec|exit|expr|for|foreach|if|incr|info|proc|return|set|switch|trace|uplevel|upvar|while)\b/,null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],
18 | ["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["tcl"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-tex.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2011 Martin S.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\r\n]*/,null,"%"]],[["kwd",/^\\[a-zA-Z@]+/],["kwd",/^\\./],["typ",/^[$&]/],["lit",/[+-]?(?:\.\d+|\d+(?:\.\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],["pun",/^[{}()\[\]=]+/]]),["latex","tex"]);
18 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-vb.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2009 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0\u2028\u2029]+/,null,"\t\n\r \u00a0\u2028\u2029"],["str",/^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})(?:[\"\u201C\u201D]c|$)|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*(?:[\"\u201C\u201D]|$))/i,null,'"\u201c\u201d'],["com",/^[\'\u2018\u2019](?:_(?:\r\n?|[^\r]?)|[^\r\n_\u2028\u2029])*/,null,"'\u2018\u2019"]],[["kwd",/^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\b/i,
18 | null],["com",/^REM\b[^\r\n\u2028\u2029]*/i],["lit",/^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],["pln",/^(?:(?:[a-z]|_\w)\w*(?:\[[%&@!#]+\])?|\[(?:[a-z]|_\w)\w*\])/i],["pun",/^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],["pun",/^(?:\[|\])/]]),["vb",
19 | "vbs"]);
20 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-vbs.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2009 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0\u2028\u2029]+/,null,"\t\n\r \u00a0\u2028\u2029"],["str",/^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})(?:[\"\u201C\u201D]c|$)|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*(?:[\"\u201C\u201D]|$))/i,null,'"\u201c\u201d'],["com",/^[\'\u2018\u2019](?:_(?:\r\n?|[^\r]?)|[^\r\n_\u2028\u2029])*/,null,"'\u2018\u2019"]],[["kwd",/^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\b/i,
18 | null],["com",/^REM\b[^\r\n\u2028\u2029]*/i],["lit",/^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],["pln",/^(?:(?:[a-z]|_\w)\w*(?:\[[%&@!#]+\])?|\[(?:[a-z]|_\w)\w*\])/i],["pun",/^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],["pun",/^(?:\[|\])/]]),["vb",
19 | "vbs"]);
20 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-vhd.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2010 benoit@ryder.fr
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"]],[["str",/^(?:[BOX]?"(?:[^\"]|"")*"|'.')/i],["com",/^--[^\r\n]*/],["kwd",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\w-]|$)/i,
18 | null],["typ",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\w-]|$)/i,null],["typ",/^\'(?:ACTIVE|ASCENDING|BASE|DELAYED|DRIVING|DRIVING_VALUE|EVENT|HIGH|IMAGE|INSTANCE_NAME|LAST_ACTIVE|LAST_EVENT|LAST_VALUE|LEFT|LEFTOF|LENGTH|LOW|PATH_NAME|POS|PRED|QUIET|RANGE|REVERSE_RANGE|RIGHT|RIGHTOF|SIMPLE_NAME|STABLE|SUCC|TRANSACTION|VAL|VALUE)(?=[^\w-]|$)/i,null],["lit",/^\d+(?:_\d+)*(?:#[\w\\.]+#(?:[+\-]?\d+(?:_\d+)*)?|(?:\.\d+(?:_\d+)*)?(?:E[+\-]?\d+(?:_\d+)*)?)/i],
19 | ["pln",/^(?:[a-z]\w*|\\[^\\]*\\)/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0\-\"\']*/]]),["vhdl","vhd"]);
20 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-vhdl.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2010 benoit@ryder.fr
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"]],[["str",/^(?:[BOX]?"(?:[^\"]|"")*"|'.')/i],["com",/^--[^\r\n]*/],["kwd",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\w-]|$)/i,
18 | null],["typ",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\w-]|$)/i,null],["typ",/^\'(?:ACTIVE|ASCENDING|BASE|DELAYED|DRIVING|DRIVING_VALUE|EVENT|HIGH|IMAGE|INSTANCE_NAME|LAST_ACTIVE|LAST_EVENT|LAST_VALUE|LEFT|LEFTOF|LENGTH|LOW|PATH_NAME|POS|PRED|QUIET|RANGE|REVERSE_RANGE|RIGHT|RIGHTOF|SIMPLE_NAME|STABLE|SUCC|TRANSACTION|VAL|VALUE)(?=[^\w-]|$)/i,null],["lit",/^\d+(?:_\d+)*(?:#[\w\\.]+#(?:[+\-]?\d+(?:_\d+)*)?|(?:\.\d+(?:_\d+)*)?(?:E[+\-]?\d+(?:_\d+)*)?)/i],
19 | ["pln",/^(?:[a-z]\w*|\\[^\\]*\\)/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0\-\"\']*/]]),["vhdl","vhd"]);
20 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-wiki.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2009 Google Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t \xA0a-gi-z0-9]+/,null,"\t \u00a0abcdefgijklmnopqrstuvwxyz0123456789"],["pun",/^[=*~\^\[\]]+/,null,"=*~^[]"]],[["lang-wiki.meta",/(?:^^|\r\n?|\n)(#[a-z]+)\b/],["lit",/^(?:[A-Z][a-z][a-z0-9]+[A-Z][a-z][a-zA-Z0-9]+)\b/],["lang-",/^\{\{\{([\s\S]+?)\}\}\}/],["lang-",/^`([^\r\n`]+)`/],["str",/^https?:\/\/[^\/?#\s]*(?:\/[^?#\s]*)?(?:\?[^#\s]*)?(?:#\S*)?/i],["pln",/^(?:\r\n|[\s\S])[^#=*~^A-Zh\{`\[\r\n]*/]]),["wiki"]);
18 | PR.registerLangHandler(PR.createSimpleLexer([["kwd",/^#[a-z]+/i,null,"#"]],[]),["wiki.meta"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-yaml.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2015 ribrdb @ code.google.com
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pun",/^[:|>?]+/,null,":|>?"],["dec",/^%(?:YAML|TAG)[^#\r\n]+/,null,"%"],["typ",/^[&]\S+/,null,"&"],["typ",/^!\S*/,null,"!"],["str",/^"(?:[^\\"]|\\.)*(?:"|$)/,null,'"'],["str",/^'(?:[^']|'')*(?:'|$)/,null,"'"],["com",/^#[^\r\n]*/,null,"#"],["pln",/^\s+/,null," \t\r\n"]],[["dec",/^(?:---|\.\.\.)(?:[\r\n]|$)/],["pun",/^-/],["kwd",/^[\w-]+:[ \r\n]/],["pln",
18 | /^\w+/]]),["yaml","yml"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/lang-yml.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Copyright (C) 2015 ribrdb @ code.google.com
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 | */
17 | PR.registerLangHandler(PR.createSimpleLexer([["pun",/^[:|>?]+/,null,":|>?"],["dec",/^%(?:YAML|TAG)[^#\r\n]+/,null,"%"],["typ",/^[&]\S+/,null,"&"],["typ",/^!\S*/,null,"!"],["str",/^"(?:[^\\"]|\\.)*(?:"|$)/,null,'"'],["str",/^'(?:[^']|'')*(?:'|$)/,null,"'"],["com",/^#[^\r\n]*/,null,"#"],["pln",/^\s+/,null," \t\r\n"]],[["dec",/^(?:---|\.\.\.)(?:[\r\n]|$)/],["pun",/^-/],["kwd",/^[\w-]+:[ \r\n]/],["pln",
18 | /^\w+/]]),["yaml","yml"]);
19 |
--------------------------------------------------------------------------------
/docs/vendor/prettify/prettify.css:
--------------------------------------------------------------------------------
1 | .pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
--------------------------------------------------------------------------------
/docs/vendor/webfontloader.js:
--------------------------------------------------------------------------------
1 | /* Web Font Loader v1.6.24 - (c) Adobe Systems, Google. License: Apache 2.0 */
2 | (function(){function aa(a,b,d){return a.call.apply(a.bind,arguments)}function ba(a,b,d){if(!a)throw Error();if(2=b.f?e():a.fonts.load(fa(b.a),b.h).then(function(a){1<=a.length?c():setTimeout(k,25)},function(){e()})}k()}),e=new Promise(function(a,c){setTimeout(c,b.f)});Promise.race([e,c]).then(function(){b.g(b.a)},function(){b.j(b.a)})};function R(a,b,d,c,e,f,g){this.v=a;this.B=b;this.c=d;this.a=c;this.s=g||"BESbswy";this.f={};this.w=e||3E3;this.u=f||null;this.o=this.j=this.h=this.g=null;this.g=new N(this.c,this.s);this.h=new N(this.c,this.s);this.j=new N(this.c,this.s);this.o=new N(this.c,this.s);a=new H(this.a.c+",serif",K(this.a));a=P(a);this.g.a.style.cssText=a;a=new H(this.a.c+",sans-serif",K(this.a));a=P(a);this.h.a.style.cssText=a;a=new H("serif",K(this.a));a=P(a);this.j.a.style.cssText=a;a=new H("sans-serif",K(this.a));a=
8 | P(a);this.o.a.style.cssText=a;O(this.g);O(this.h);O(this.j);O(this.o)}var S={D:"serif",C:"sans-serif"},T=null;function U(){if(null===T){var a=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent);T=!!a&&(536>parseInt(a[1],10)||536===parseInt(a[1],10)&&11>=parseInt(a[2],10))}return T}R.prototype.start=function(){this.f.serif=this.j.a.offsetWidth;this.f["sans-serif"]=this.o.a.offsetWidth;this.A=q();la(this)};
9 | function ma(a,b,d){for(var c in S)if(S.hasOwnProperty(c)&&b===a.f[S[c]]&&d===a.f[S[c]])return!0;return!1}function la(a){var b=a.g.a.offsetWidth,d=a.h.a.offsetWidth,c;(c=b===a.f.serif&&d===a.f["sans-serif"])||(c=U()&&ma(a,b,d));c?q()-a.A>=a.w?U()&&ma(a,b,d)&&(null===a.u||a.u.hasOwnProperty(a.a.c))?V(a,a.v):V(a,a.B):na(a):V(a,a.v)}function na(a){setTimeout(p(function(){la(this)},a),50)}function V(a,b){setTimeout(p(function(){v(this.g.a);v(this.h.a);v(this.j.a);v(this.o.a);b(this.a)},a),0)};function W(a,b,d){this.c=a;this.a=b;this.f=0;this.o=this.j=!1;this.s=d}var X=null;W.prototype.g=function(a){var b=this.a;b.g&&w(b.f,[b.a.c("wf",a.c,K(a).toString(),"active")],[b.a.c("wf",a.c,K(a).toString(),"loading"),b.a.c("wf",a.c,K(a).toString(),"inactive")]);L(b,"fontactive",a);this.o=!0;oa(this)};
10 | W.prototype.h=function(a){var b=this.a;if(b.g){var d=y(b.f,b.a.c("wf",a.c,K(a).toString(),"active")),c=[],e=[b.a.c("wf",a.c,K(a).toString(),"loading")];d||c.push(b.a.c("wf",a.c,K(a).toString(),"inactive"));w(b.f,c,e)}L(b,"fontinactive",a);oa(this)};function oa(a){0==--a.f&&a.j&&(a.o?(a=a.a,a.g&&w(a.f,[a.a.c("wf","active")],[a.a.c("wf","loading"),a.a.c("wf","inactive")]),L(a,"active")):M(a.a))};function pa(a){this.j=a;this.a=new ja;this.h=0;this.f=this.g=!0}pa.prototype.load=function(a){this.c=new ca(this.j,a.context||this.j);this.g=!1!==a.events;this.f=!1!==a.classes;qa(this,new ha(this.c,a),a)};
11 | function ra(a,b,d,c,e){var f=0==--a.h;(a.f||a.g)&&setTimeout(function(){var a=e||null,k=c||null||{};if(0===d.length&&f)M(b.a);else{b.f+=d.length;f&&(b.j=f);var h,m=[];for(h=0;h\n main(project, version)\n File \"/Users/async/Documents/GithubProject/sailboat/executor/boat.py\", line 40, in main\n spider = import_module(MODULERNAME)\n File \"/Users/async/anaconda3/envs/slp/lib/python3.6/importlib/__init__.py\", line 126, in import_module\n return _bootstrap._gcd_import(name[level:], package, level)\n File \"\", line 994, in _gcd_import\n File \"\", line 971, in _find_and_load\n File \"\", line 953, in _find_and_load_unlocked\nModuleNotFoundError: No module named 'sail'\n",
41 | "size": "709 byte"
42 | },
43 | "message": "success"
44 | }
45 | """
46 | project = request.args.get("project")
47 | job = request.args.get("job")
48 | if not project or not job:
49 | return {"message": StatusCode.MissingParameter.value[0],
50 | "data": {},
51 | "code": StatusCode.MissingParameter.value[1]
52 | }, 400
53 | filename = os.path.join(LOGPATH, project, "%s.log" % job)
54 | if not os.path.exists(filename):
55 | return {"message": StatusCode.NotFound.value[0],
56 | "data": {},
57 | "code": StatusCode.NotFound.value[1]
58 | }, 400
59 | # 检查所有权
60 | token = request.headers.get("Authorization")
61 | idn, username, role = get_user_info(token)
62 | count = 1
63 | if role != Role.SuperUser.value:
64 | query = {"idn": idn, "username": username, "project": project, "job": job}
65 | count = databases.record.count_documents(query)
66 | if not count:
67 | return {"message": StatusCode.IsNotYours.value[0],
68 | "data": {},
69 | "code": StatusCode.IsNotYours.value[1]
70 | }, 403
71 | with open(filename, "r") as file:
72 | content = file.read()
73 | # 计算日志文件大小
74 | unit = "byte"
75 | size = os.path.getsize(filename)
76 | if size > 1024:
77 | unit = "kb"
78 | size = size // 1024
79 | if size > 1024:
80 | unit = "mb"
81 | size = size // 1024
82 | return {"message": "success",
83 | "data": {"size": "%s %s" % (size, unit), "content": content},
84 | "code": 200}
85 |
86 | @authorization
87 | def delete(self):
88 | """
89 | * @api {delete} /logs/ 删除多个指定的日志文件
90 | * @apiPermission Role.Superuser
91 | * @apiDescription 管理员才能删除日志
92 | * @apiHeader (Header) {String} Authorization Authorization value.
93 | * @apiParam {Json} query 批量删除(指定的)日志文件
94 | @apiParamExample Param-Example:
95 | # 删除指定文件
96 | {
97 | "querys": [
98 | {
99 | "project": "videos",
100 | "job": "3e5aecfb-2f46-42ea-b492-bbcc1e1219ca"
101 | },
102 | {
103 | "project": "football",
104 | "job": "5i8a9cfb-2f46-42ea-b492-b07c1e1201h6"
105 | }
106 | ]
107 | }
108 | * @apiErrorExample {json} Error-Response:
109 | # status code: 400
110 | {
111 | "code": 4003,
112 | "data": {},
113 | "message": "parameter error"
114 | }
115 | * @apiSuccessExample {json} Success-Response:
116 | # status code: 200
117 | {
118 | "code": 200,
119 | "data": {
120 | "count": 1,
121 | "path": [
122 | "videos/3e5aecfb-2f46-42ea-b492-bbcc1e1219ca.log"
123 | ]
124 | },
125 | "message": "success"
126 | }
127 | """
128 | try:
129 | # 确保参数格式正确
130 | querys = request.json.get("querys")
131 | token = request.headers.get("Authorization")
132 | idn, username, role = get_user_info(token)
133 | if role != Role.SuperUser.value:
134 | return {"message": StatusCode.NoAuth.value[0],
135 | "data": {},
136 | "code": StatusCode.NoAuth.value[1]
137 | }, 403
138 | except JSONDecodeError:
139 | return {"message": StatusCode.JsonDecodeError.value[0],
140 | "data": {},
141 | "code": StatusCode.JsonDecodeError.value[1]
142 | }, 400
143 | if not isinstance(querys, list):
144 | return {"message": StatusCode.ParameterError.value[0],
145 | "data": {},
146 | "code": StatusCode.ParameterError.value[1]
147 | }, 400
148 | for query in querys:
149 | # 检查文件是否均存在
150 | project = query.get("project")
151 | job = query.get("job")
152 | if not project or not job:
153 | return {"message": StatusCode.ParameterError.value[0],
154 | "data": {},
155 | "code": StatusCode.ParameterError.value[1]
156 | }, 400
157 | filename = os.path.join(LOGPATH, project, "%s.log" % job)
158 | if not os.path.exists(filename):
159 | return {"message": StatusCode.NotFound.value[0],
160 | "data": {},
161 | "code": StatusCode.NotFound.value[1]
162 | }, 400
163 | result = []
164 | for query in querys:
165 | # 确保文件均存在才删除
166 | project = query.get("project")
167 | job = query.get("job")
168 | if "." in project or "/" in project or "." in job or "/" in job:
169 | # . or / 防止恶意参数删除系统目录
170 | return {"message": StatusCode.PathError.value[0],
171 | "data": {},
172 | "code": StatusCode.PathError.value[1]
173 | }, 400
174 | filename = os.path.join(LOGPATH, project, "%s.log" % job)
175 | os.remove(filename)
176 | drop = "%s/%s.log" % (project, job)
177 | result.append(drop)
178 | return {"message": "success",
179 | "data": {"path": result, "count": len(result)},
180 | "code": 200}
181 |
--------------------------------------------------------------------------------
/handler/record.py:
--------------------------------------------------------------------------------
1 | """
2 | https://flask.palletsprojects.com/en/1.1.x/api/?highlight=route#flask.views.MethodView
3 | https://flask.palletsprojects.com/en/1.1.x/api/#flask.request
4 | https://werkzeug.palletsprojects.com/en/0.16.x/datastructures/#werkzeug.datastructures.FileStorage
5 | https://api.mongodb.com/python/current/api/pymongo/collection.html#pymongo.collection.Collection.insert_one
6 | https://api.mongodb.com/python/current/api/pymongo/collection.html#pymongo.collection.Collection.find
7 | https://api.mongodb.com/python/current/api/pymongo/collection.html?highlight=delete#pymongo.collection.Collection.delete_one
8 | """
9 | import json
10 | from flask.views import MethodView
11 | from flask import request
12 |
13 | from components.storage import FileStorages
14 | from connect import databases
15 | from components.auth import authorization, get_user_info
16 | from components.enums import Role
17 |
18 |
19 | storages = FileStorages()
20 |
21 |
22 | class RecordsHandler(MethodView):
23 | """执行记录视图
24 | """
25 |
26 | permission = {"permission": Role.Other}
27 |
28 | @authorization
29 | def get(self):
30 | """
31 | * @api {get} /record/ 获取执行记录列表
32 | * @apiPermission Role.Developer AND Owner
33 | * @apiDescription 用户只能查看自己设定的调度计划生成的记录
34 | * @apiHeader (Header) {String} Authorization Authorization value.
35 | * @apiParam {String} [username] 用户名
36 | * @apiParam {String} [idn] 用户 ID
37 | * @apiParam {String} [project] 项目名称
38 | * @apiParam {Int} [version] 版本号
39 | * @apiParam {String="cron", "interval", "date"} [mode] 时间类型
40 | * @apiParam {Int} [limit=0] Limit
41 | * @apiParam {Int} [skip=0] Skip
42 | * @apiParam {String="create", "status", "role"} [order=create] 排序字段
43 | * @apiParam {Int=1, -1} [sort=1] 排序方式
44 | * @apiParamExample Param-Example
45 | /record?version=1576206368&order=version&sort=-1
46 | * @apiSuccessExample {json} Success-Response:
47 | # status code: 200
48 | {
49 | "code": 200,
50 | "data": {
51 | "data": [
52 | {
53 | "create": "2019-12-13 09:20:00",
54 | "duration": "0:0:0",
55 | "end": "2019-12-13 09:20:00",
56 | "id": "5df2e74005db1557d78b16d7",
57 | "idn": "5df0ea19b46116479b46c27c",
58 | "inserted": "5df2e70a0286cdc6a686b9df",
59 | "jid": "5a36346b-1f28-41de-a94e-b28c550acc42",
60 | "job": "3e5aecfb-2f46-42ea-b492-bbcc1e1219ca",
61 | "mode": "cron",
62 | "project": "videos",
63 | "rule": {
64 | "hour": "*",
65 | "minute": "*",
66 | "second": "*/30"
67 | },
68 | "start": "2019-12-13 09:20:00",
69 | "username": "sfhfpc",
70 | "version": "1576199082"
71 | },
72 | {
73 | "create": "2019-12-13 09:24:00",
74 | "duration": "0:0:0",
75 | "end": "2019-12-13 09:24:00",
76 | "id": "5df2e83017040767e3bd7076",
77 | "idn": "5df0ea19b46116479b46c27c",
78 | "inserted": "5df2e70a0286cdc6a686b9df",
79 | "jid": "5a36346b-1f28-41de-a94e-b28c550acc42",
80 | "job": "8fe33a65-c568-47af-8e0f-911c064d02a3",
81 | "mode": "cron",
82 | "project": "videos",
83 | "rule": {
84 | "hour": "*",
85 | "minute": "*",
86 | "second": "*/30"
87 | },
88 | "start": "2019-12-13 09:24:00",
89 | "username": "sfhfpc",
90 | "version": "1576199082"
91 | }
92 | ]
93 | },
94 | "message": "success"
95 | }
96 |
97 | """
98 | query = {}
99 | # 检查所有权
100 | token = request.headers.get("Authorization")
101 | auth_idn, auth_username, auth_role = get_user_info(token)
102 | if auth_role != Role.SuperUser.value:
103 | username = auth_username
104 | idn = auth_idn
105 | else:
106 | username = request.args.get('username')
107 | idn = request.args.get('idn')
108 | project = request.args.get('project')
109 | version = request.args.get('version')
110 | mode = request.args.get('mode')
111 |
112 | order = request.args.get('order') or "create"
113 | sor = request.args.get('sort') or 1
114 | limit = request.args.get('limit') or 0
115 | skip = request.args.get('skip') or 0
116 | if project:
117 | query["project"] = project
118 | if version:
119 | query["version"] = version
120 | if mode:
121 | query["mode"] = mode
122 | if username:
123 | query["username"] = username
124 | if idn:
125 | query["idn"] = idn
126 | # 允许用户自定义查询条件
127 | result = databases.record.find(query).limit(int(limit)).skip(int(skip)).sort(order, int(sor))
128 | information = []
129 | for i in result:
130 | info = {
131 | "id": str(i.get('_id')),
132 | "project": i.get("project"),
133 | "version": i.get("version"),
134 | "mode": i.get("mode"),
135 | "rule": i.get("rule"),
136 | "job": i.get("job"),
137 | "jid": i.get("jid"),
138 | "start": i.get("start"),
139 | "duration": i.get("duration"),
140 | "end": i.get("end"),
141 | "inserted": i.get("inserted"),
142 | "idn": i.get("idn"),
143 | "username": i.get("username"),
144 | "create": i.get("create").strftime("%Y-%m-%d %H:%M:%S")}
145 | information.append(info)
146 | return {"message": "success",
147 | "data": information,
148 | "code": 200}
149 |
--------------------------------------------------------------------------------
/handler/routers.py:
--------------------------------------------------------------------------------
1 | from common import app
2 | from .index import IndexHandler
3 | from .deploy import DeployHandler
4 | from .timers import TimersHandler
5 | from .record import RecordsHandler
6 | from .loghandler import LogHandler
7 | from .user import RegisterHandler, UserHandler, LoginHandler
8 |
9 | version = "/api/v1"
10 |
11 | app.add_url_rule(version + '/work', view_func=IndexHandler.as_view(version + '/work'))
12 | app.add_url_rule(version + '/deploy', view_func=DeployHandler.as_view(version + '/deploy'))
13 | app.add_url_rule(version + '/timer', view_func=TimersHandler.as_view(version + '/timer'))
14 | app.add_url_rule(version + '/record', view_func=RecordsHandler.as_view(version + '/record'))
15 | app.add_url_rule(version + '/logs', view_func=LogHandler.as_view(version + '/logs'))
16 | app.add_url_rule(version + '/reg', view_func=RegisterHandler.as_view(version + '/reg'))
17 | app.add_url_rule(version + '/user', view_func=UserHandler.as_view(version + '/user'))
18 | app.add_url_rule(version + '/login', view_func=LoginHandler.as_view(version + '/login'))
--------------------------------------------------------------------------------
/interface.py:
--------------------------------------------------------------------------------
1 | from abc import ABC, abstractmethod
2 |
3 |
4 | class Monitor(ABC):
5 | """异常监控"""
6 |
7 | @abstractmethod
8 | def push(self):
9 | """接收器
10 | 被捕获到的异常信息将会送到这里"""
11 |
12 | @abstractmethod
13 | def extractor(self):
14 | """拆分车间
15 | 根据需求拆分异常信息"""
16 |
17 | @abstractmethod
18 | def recombination(self):
19 | """重组车间
20 | 异常信息将在这里重组"""
21 |
22 |
23 | class Alarm(ABC):
24 | """警报器"""
25 |
26 | @abstractmethod
27 | def __init__(self):
28 | """初始配置"""
29 |
30 | def receive(self):
31 | """接收者
32 | 接收异常信息,将其进行处理后交给发送者"""
33 |
34 | @abstractmethod
35 | def sender(self):
36 | """发送者
37 | 将重组后的信息发送到端"""
--------------------------------------------------------------------------------
/rements.txt:
--------------------------------------------------------------------------------
1 | APScheduler==3.6.3
2 | attrs==19.3.0
3 | Automat==0.8.0
4 | certifi==2019.11.28
5 | cffi==1.13.2
6 | chardet==3.0.4
7 | Click==7.0
8 | constantly==15.1.0
9 | cryptography==2.8
10 | cssselect==1.1.0
11 | Flask==1.1.1
12 | Flask-APScheduler==1.11.0
13 | Flask-Cors==3.0.8
14 | hyperlink==19.0.0
15 | idna==2.8
16 | incremental==17.5.0
17 | itsdangerous==1.1.0
18 | Jinja2==2.10.3
19 | jws==0.1.3
20 | lxml==4.4.2
21 | MarkupSafe==1.1.1
22 | Naked==0.1.31
23 | parsel==1.5.2
24 | Protego==0.1.15
25 | psutil==5.6.7
26 | pyasn1==0.4.8
27 | pyasn1-modules==0.2.7
28 | pycparser==2.19
29 | PyDispatcher==2.0.5
30 | PyHamcrest==1.9.0
31 | PyJWT==1.4.2
32 | pymongo==3.9.0
33 | pyOpenSSL==19.1.0
34 | python-dateutil==2.8.1
35 | pytz==2019.3
36 | PyYAML==5.2
37 | queuelib==1.5.0
38 | requests==2.22.0
39 | Scrapy==1.8.0
40 | scrapyd==1.2.1
41 | service-identity==18.1.0
42 | shellescape==3.4.1
43 | six==1.13.0
44 | SQLAlchemy==1.3.11
45 | Twisted==19.10.0
46 | tzlocal==2.0.0
47 | urllib3==1.25.7
48 | w3lib==1.21.0
49 | Werkzeug==0.16.0
50 | zope.interface==4.7.1
51 |
--------------------------------------------------------------------------------
/sailboat.ini:
--------------------------------------------------------------------------------
1 | [uwsgi]
2 | socket = 127.0.0.1:3031
3 | chdir = /root/www/sailboat
4 | master = true
5 | wsgi-file = /root/www/sailboat/server.py
6 | processes = 4
7 | threads = 2
8 | callable = app
9 | python-autoreload = 1
10 | logto = /root/www/sailboat/uwsgi.log
11 | virtualenv = /usr/local/python3/lib/python3.6/site-packages/envsailboat
12 | stats = 127.0.0.1:9191
13 | enable-threads = true
14 | preload=True
15 | lazy-apps=true
--------------------------------------------------------------------------------
/server.py:
--------------------------------------------------------------------------------
1 | from handler.routers import app
2 |
3 | from common import scheduler
4 |
5 |
6 | if __name__ == "__main__":
7 | scheduler.start()
8 | app.run(port=3031)
9 |
--------------------------------------------------------------------------------
/settings.py:
--------------------------------------------------------------------------------
1 | import os
2 |
3 | CURRENTPATH = os.path.abspath(os.path.dirname(__file__))
4 | FILEPATH = os.path.join(CURRENTPATH, 'files')
5 | TEMPATH = os.path.join(CURRENTPATH, 'temporary')
6 | LOGPATH = os.path.join(CURRENTPATH, 'logs')
7 | RIDEPATH= os.path.join(CURRENTPATH, 'executor', 'boat.py')
8 | MODULERNAME = "sail"
9 | SECRET = "90jl-size-267k-10sc-25xl"
10 | ALG = "HS256"
11 | MONGODB = "mongodb://111.231.93.117:27017/"
12 |
--------------------------------------------------------------------------------
/supervise/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/asyncins/sailboat/b9734e9bae3703e328cacf1969d26e2b334b889a/supervise/__init__.py
--------------------------------------------------------------------------------
/supervise/alarms.py:
--------------------------------------------------------------------------------
1 | import hashlib
2 | import hmac
3 | import time
4 | import base64
5 | import json
6 | import logging
7 | from urllib.parse import quote_plus
8 | import requests
9 | from interface import Alarm
10 |
11 | from supervise.monitors import MarkdownMonitor
12 |
13 |
14 | class DingAlarm(Alarm):
15 |
16 | def __init__(self):
17 | self.access_key = "dingoawo3a8tpzidbmrsyq"
18 | self.secret = "F2T-NvXsHubUNHhvQkfggRUpLeFsOKvpRYv7YEtUAroVtUG2R1PbIQCaDcDgiGQS"
19 | self.token = "https://oapi.dingtalk.com/robot/send?access_token=b96364e106ad36c5a793c2c8a1b3979a5d9c5087f6985446d6824ad74735b828"
20 | self.header = {"Content-Type": "application/json;charset=UTF-8"}
21 | self.monitor = MarkdownMonitor()
22 |
23 | def receive(self, txt, occurrence, timer):
24 | """接收者
25 | 接收异常信息,将其进行处理后交给发送者"""
26 | content = self.monitor.push(txt, occurrence, timer)
27 | self.sender(content)
28 |
29 | @staticmethod
30 | def _sign(timestamps, secret, mode=False):
31 | """钉钉签名计算
32 | 根据钉钉文档指引计算签名信息
33 | 文档参考
34 | https://docs.python.org/3.6/library/hmac.html
35 | https://docs.python.org/3.6/library/urllib.parse.html#urllib.parse.quote
36 | https://ding-doc.dingtalk.com/doc#/faquestions/hxs5v9
37 | """
38 | if not isinstance(timestamps, str):
39 | # 如果钉钉机器人的安全措施为密钥,那么按照文档指引传入的是字符串,反之为数字
40 | # 加密时需要转成字节,所以这里要确保时间戳为字符串
41 | timestamps = str(timestamps)
42 | mav = hmac.new(secret.encode("utf8"), digestmod=hashlib.sha256)
43 | mav.update(timestamps.encode("utf8"))
44 | result = mav.digest()
45 | # 对签名值进行 Base64 编码
46 | signature = base64.b64encode(result).decode("utf8")
47 | if mode:
48 | # 可选择是否将签名值进行 URL 编码
49 | signature = quote_plus(signature)
50 | return signature
51 |
52 | def sender(self, message):
53 | """发送者
54 | 将重组后的信息发送到端"""
55 | timestamps = int(time.time()) * 1000
56 | sign = self._sign(timestamps, self.secret, True)
57 | # 根据钉钉文档构造链接
58 | url = self.token + "×tamp=%s&sign=%s" % (timestamps, sign)
59 | # 通过钉钉机器人将消息发送到钉钉群
60 | resp = requests.post(url, headers=self.header, json=message)
61 | # 根据返回的错误码判断消息发送状态
62 | err = json.loads(resp.text)
63 | if err.get("errcode"):
64 | logging.warning(err)
65 | return False
66 | else:
67 | logging.info("Message Sender Success")
68 | return True
69 |
70 |
--------------------------------------------------------------------------------
/supervise/monitors.py:
--------------------------------------------------------------------------------
1 | from datetime import datetime
2 | from interface import Monitor
3 |
4 |
5 | class MarkdownMonitor(Monitor):
6 |
7 | def __init__(self):
8 | self.keyword = "Alarm"
9 | self.err_image = "http://can.sfhfpc.com/sfhfpc/20191210133853.png"
10 | self.traceback_image = "http://can.sfhfpc.com/sfhfpc/20191210133616.png"
11 |
12 | def push(self, txt, occurrence, timer):
13 | """接收器
14 | 被捕获到的异常信息将会送到这里"""
15 |
16 | # 将信息按行分割
17 | message = []
18 | line = ""
19 | for i in txt:
20 | if i != "\n":
21 | line += i
22 | else:
23 | message.append(line)
24 | line = ""
25 | err, traceback, res = self.extractor(message)
26 | content = self.recombination(err, traceback, res, occurrence, timer)
27 | return content
28 |
29 | def extractor(self, message):
30 | """拆分车间
31 | 根据需求拆分异常信息"""
32 | result = []
33 | err_number = 0
34 | traceback_number = 0
35 | for k, v in enumerate(message):
36 | # 异常分类
37 | if "ERROR" in v:
38 | # 列别数量统计
39 | err_number += 1
40 | # 放入信息队列
41 | result.append(v)
42 | if "Traceback" in v:
43 | # 类别数量统计
44 | traceback_number += 1
45 | # 放入信息队列
46 | result += message[k:]
47 | return err_number, traceback_number, result
48 |
49 | def recombination(self, err, traceback, res, occurrence, timer):
50 | """重组车间
51 | 异常信息将在这里重组"""
52 | title = "Traceback" if traceback else "Error"
53 | image = self.traceback_image if traceback else self.err_image
54 | err_message = "\n\n > ".join(res)
55 | now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
56 | # 按照钉钉文档中的 Markdown 格式示例构造信息
57 | article = "#### TOTAL -- Error Number: {}, Traceback Number: {} \n".format(err, traceback) + \
58 | ">  \n\n".format(image) + \
59 | "> **Error message** \n\n" + \
60 | "> {} \n\n".format(err_message) + \
61 | "> -------- \n\n" + \
62 | "> **Timer**\n\n> {} \n\n".format(timer) +\
63 | "> -------- \n\n" + \
64 | "> **Other information** \n\n" + \
65 | "> Occurrence Time: {} \n\n".format(occurrence) + \
66 | "> Send Time: {} \n\n".format(now) + \
67 | "> Message Type: {}".format(self.keyword)
68 |
69 | content = {
70 | "msgtype": "markdown",
71 | "markdown": {"title": title, "text": article}
72 | }
73 | return content
74 |
--------------------------------------------------------------------------------