浏览代码

update style

deason 6 年之前
父节点
当前提交
5def6a436e
共有 35 个文件被更改,包括 0 次插入8319 次删除
  1. 0 567
      src/main/resources/static/doc.html
  2. 0 0
      src/main/resources/static/styles/ace/ace.min.css
  3. 0 0
      src/main/resources/static/styles/ace/ace.min.js
  4. 0 5
      src/main/resources/static/styles/ace/bootstrap.min.js
  5. 0 13
      src/main/resources/static/styles/bootstrap/js/npm.js
  6. 0 1739
      src/main/resources/static/styles/cdao/DApiUI.js
  7. 0 206
      src/main/resources/static/styles/cdao/swaggerbootstrapui.css
  8. 0 1761
      src/main/resources/static/styles/cdao/swaggerbootstrapui.js
  9. 0 816
      src/main/resources/static/styles/highlight/highlight.js
  10. 0 0
      src/main/resources/static/styles/highlight/highlight.pack.js
  11. 0 99
      src/main/resources/static/styles/highlight/styles/default.css
  12. 0 97
      src/main/resources/static/styles/highlight/styles/docco.css
  13. 0 1437
      src/main/resources/static/styles/highlight/styles/style.css
  14. 二进制
      src/main/resources/static/styles/images/api.ico
  15. 0 6
      src/main/resources/static/styles/jquery/clipboard/clipboard.min.js
  16. 0 1556
      src/main/resources/static/styles/jquery/marked.js
  17. 0 1
      src/main/resources/static/styles/jquery/template-web.js
  18. 二进制
      src/main/resources/static/styles/jquery/treegrid/img/collapse.png
  19. 二进制
      src/main/resources/static/styles/jquery/treegrid/img/expand.png
  20. 二进制
      src/main/resources/static/styles/jquery/treegrid/img/file.png
  21. 二进制
      src/main/resources/static/styles/jquery/treegrid/img/folder.png
  22. 0 4
      src/main/resources/static/styles/jquery/treegrid/jquery.treegrid.bootstrap3.js
  23. 0 6
      src/main/resources/static/styles/jquery/treegrid/jquery.treegrid.css
  24. 0 1
      src/main/resources/static/styles/jquery/treegrid/jquery.treegrid.min.js
  25. 0 3
      src/main/resources/static/styles/jsonview/jquery.jsonview.min.css
  26. 0 0
      src/main/resources/static/styles/jsonview/jquery.jsonview.min.js
  27. 0 1
      src/main/resources/static/styles/layer3.0.3/layer.js
  28. 0 1
      src/main/resources/static/styles/layer3.0.3/mobile/layer.js
  29. 0 0
      src/main/resources/static/styles/layer3.0.3/mobile/need/layer.css
  30. 二进制
      src/main/resources/static/styles/layer3.0.3/skin/default/icon-ext.png
  31. 二进制
      src/main/resources/static/styles/layer3.0.3/skin/default/icon.png
  32. 0 0
      src/main/resources/static/styles/layer3.0.3/skin/default/layer.css
  33. 二进制
      src/main/resources/static/styles/layer3.0.3/skin/default/loading-0.gif
  34. 二进制
      src/main/resources/static/styles/layer3.0.3/skin/default/loading-1.gif
  35. 二进制
      src/main/resources/static/styles/layer3.0.3/skin/default/loading-2.gif

+ 0 - 567
src/main/resources/static/doc.html

@@ -1,567 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
-    <title>API接口文档</title>
-    <link rel="shortcut icon" href="/styles/images/api.ico"/>
-    <script type="text/javascript" src="/styles/jquery/jquery-1.9.1.min.js"></script>
-    <link rel="stylesheet" href="/styles/bootstrap/css/bootstrap.min.css"/>
-    <script type="text/javascript" src="/styles/jquery/clipboard/clipboard.min.js"></script>
-    <script type="text/javascript" src="/styles/layer3.0.3/layer.js"></script>
-    <link rel="stylesheet" href="/styles/jsonview/jquery.jsonview.min.css"/>
-    <script type="text/javascript" src="/styles/jsonview/jquery.jsonview.min.js"></script>
-    <link rel="stylesheet" href="/styles/layer3.0.3/skin/default/layer.css"/>
-    <link rel="stylesheet" href="/styles/highlight/styles/docco.css"/>
-    <link rel="stylesheet" href="/styles/highlight/styles/style.css"/>
-    <link rel="stylesheet" href="/styles/highlight/styles/default.css"/>
-    <script src="/styles/highlight/highlight.pack.js"></script>
-    <script src="/styles/jquery/marked.js"></script>
-    <link rel="stylesheet" href="/styles/cdao/swaggerbootstrapui.css"/>
-    <script src="/styles/jquery/template-web.js"></script>
-</head>
-<body style="overflow: hidden;">
-<div class="bycdao-left" style="height: 100%;overflow-y: auto;overflow-x: hidden;">
-    <ul class="nav nav-list" id="menu">
-        <li>
-            <a href="javascript:void(0)">
-                <i class="icon-text-width"></i>
-                <span class="menu-text"> 简介 </span>
-            </a>
-        </li>
-        <li class="active">
-            <a href="#" class="dropdown-toggle">
-                <i class="icon-file-alt"></i>
-                <span class="menu-text">
-									其他页面
-									<span class="badge badge-primary ">3</span>
-								</span>
-                <b class="arrow icon-angle-down"></b>
-            </a>
-            <ul class="submenu">
-                <li>
-                    <a href="javascript:void(0)">
-                        <i class="icon-double-angle-right"></i>
-                        帮助
-                    </a>
-                </li>
-
-                <li>
-                    <a href="javascript:void(0)">
-                        <i class="icon-double-angle-right"></i>
-                        404错误页面
-                    </a>
-                </li>
-
-                <li>
-                    <a href="javascript:void(0)">
-                        <i class="icon-double-angle-right"></i>
-                        500错误页面
-                    </a>
-                </li>
-            </ul>
-        </li>
-    </ul>
-</div>
-<!--离线文档说明-->
-<script type="text/html" id="offLinecontentScript">
-    <div style="width:99%;margin:0px auto;">
-        <div class="alert alert-info" role="alert">
-            提供markdwon格式类型的离线文档,开发者可拷贝该内容通过其他markdown转换工具进行转换为html或pdf.
-        </div>
-        <div class="input-inline" style="margin-bottom:10px;">
-            <button class="btn btn-primary" type="button" id="btnCopy">拷贝文档</button>
-        </div>
-        <div class='input-inline'>
-            <textarea class='form-control' style='width: 100%;height: 100%;' id="txtOffLineDoc">
-# 简介
-
-**标题**:{{title}}
-
-**简介**:{{description}}
-
-**HOST**:{{host}}
-
-**联系人**:{{contact}}
-
-**接口路径**:{{location}}
-<% for( i = 0; i < tags.length; i++) { var tag=tags[i] ; %># <%= tag.name %><% for( j = 0; j < paths.length; j++) {var path=paths[j]; if(path.tags.indexOf(tag.name)>-1){ %>
-## <%= path.summary %>
-
-**接口说明**:<%= path.description %>
-
-
-**接口地址**:`<%= path.url %>`
-
-
-**请求方式**:`<%= path.methodType %>`
-
-
-**consumes**:`<%= path.consumes %>`
-
-
-**produces**:`<%= path.produces %>`
-
-**请求参数**:
-<% if(path.parameters!=null && path.parameters.length>0){ %>
-| 参数名称         | 说明     |     in |  是否必须      |  类型   |  schema  |
-| ------------ | -------------------------------- |-----------|--------|----|--- |
-<% for( a = 0; a < path.parameters.length; a++) {var param=path.parameters[a]; %>|<%=param.name%>| <%=param.description%>  | <%=param.in%> | <%=param.require%> |<%=param.type%>  | <%=param.schemaValue%>   |
-                <%}%>
-<%}else{%>暂无<%}%><% if(path.refparameters!=null && path.refparameters.length>0){ %>
-**schema属性说明**
-<% for( a = 0; a < path.refparameters.length; a++) { var ref=path.refparameters[a];%>
-**<%=ref.name%>**
-| 参数名称         | 说明    |     in |  是否必须   |  类型  |  schema |
-| ------------ | -------------------------------- |-----------|--------|----|--- |
-<% for( b = 0; b < ref.params.length; b++) { var rp=ref.params[b];%>|<%=rp.name%>| <%=rp.description%>  | <%=rp.in%> | <%=rp.require%> |<%=rp.type%>  | <%=rp.schemaValue%>   |
-                <%}}}%>
-**响应数据**:
-
-```json
-<%= path.responseValue %>
-```
-**响应参数说明**:
-<% if(path.responseParameters!=null && path.responseParameters.length>0){ %>
-| 参数名称         | 说明                             |    类型 |  schema |
-| ------------ | -------------------|-------|----------- |
-<% for( a = 0; a < path.responseParameters.length; a++) { var param=path.responseParameters[a];%>|<%=param.name%>| <%=param.description%>  |<%=param.type%>  | <%=param.schemaValue%>   |
-<%}}else{%>
-暂无
-<%}%>
-<% if(path.responseRefParameters!=null && path.responseRefParameters.length>0){ %>
-**schema属性说明**
-<% for( a = 0; a < path.responseRefParameters.length; a++) { var ref=path.responseRefParameters[a];%>
-**<%=ref.name%>**
-| 参数名称         |  说明          |   类型  |  schema |
-| ------------ | ------------------|--------|----------- |
-<% for( b = 0; b < ref.params.length; b++) { var rp=ref.params[b];%>|<%=rp.name%> | <%=rp.description%>   |<%=rp.type%>  | <%=rp.schemaValue%>   |
-                <%}%>
-<%}}%>
-**响应状态码说明**:
-<% if(path.responseCodes!=null && path.responseCodes.length>0){ %>
-| 状态码         | 说明                             |    schema                         |
-| ------------ | -------------------------------- |---------------------- |
-<% for( a = 0; a < path.responseCodes.length; a++) { var param=path.responseCodes[a];%>| <%=param.code%> | <%=param.description%>  |<%=param.schema%>|
-                <%}%>
-<%}else{%>
-暂无
-<%}%>
-        <%}%>
-    <%}%>
-<%}%>
-            </textarea>
-        </div>
-    </div>
-</script>
-
-<!--文档说明-->
-<script type="text/html" id="contentScript">
-    <div style="padding: 10px 0;border-bottom: 1px dashed #ccc;height: 50px;vertical-align: middle;line-height: 30px;">
-        <div style="    float: left;width: 90%;font-size: 20px;">{{summary}}</div>
-        <!--<div style="float: right;width: 10%;text-align: right;vertical-align: top;">
-            <a id="copyDocHref" style="cursor: pointer;text-decoration: none;" href="javascript:void(0);">复制文档</a>
-        </div>-->
-    </div>
-    <div class="swbu-main" itemprop="articleBody">
-        <div id="contentDoc"></div>
-        <!--<textarea rows="10" cols="10" id="docText">-->
-        <textarea rows="10" cols="10" id="docText" style="display: none;">
-
-**接口说明**:{{description}}
-
-
-**接口地址**:`{{url}}`
-
-
-**请求方式**:`{{methodType}}`
-
-
-**consumes**:`{{consumes}}`
-
-
-**produces**:`{{produces}}`
-
-
-**请求参数**:
-{{ if parameters && parameters.length>0 }}
-| 参数名称         | 说明     |     in |  是否必须      |  类型   |  schema  |
-| ------------ | -------------------------------- |-----------|--------|----|--- |
-{{each parameters}}| {{$value.name}}         |      {{$value.description}}   |     {{$value.in}}        |       {{$value.require}}      | {{$value.type}}   | {{$value.schemaValue}}     |
-            {{/each}}
-{{else}}
-暂无
-{{/if}}
-
-{{ if refparameters && refparameters.length>0 }}
-**schema属性说明**
-  {{each refparameters}}
-**{{$value.name}}**
-
-| 参数名称         | 说明    |     in |  是否必须   |  类型  |  schema |
-| ------------ | -------------------------------- |-----------|--------|----|--- |
-{{each $value.params}}| {{$value.name}}  | {{$value.description}} |   {{$value.in}}    |   {{$value.require}}   |{{$value.type}}  | {{$value.schemaValue}}      |
-            {{/each}}
-{{/each}}
-
-{{/if}}
-
-**响应数据**:
-
-```json
-{{responseValue}}
-```
-
-**响应参数说明**:
-{{ if responseParameters && responseParameters.length>0 }}
-| 参数名称         | 说明                             |    类型 |  schema |
-| ------------ | -------------------|-------|----------- |
-{{each responseParameters}}| {{$value.name}}     |{{$value.description}}      |    {{$value.type}}   |   {{$value.schemaValue}}    |
-            {{/each}}
-{{else}}
-暂无
-{{/if}}
-
-{{ if responseRefParameters && responseRefParameters.length>0 }}
-**schema属性说明**
-  {{each responseRefParameters}}
-**{{$value.name}}**
-
-| 参数名称         |  说明          |   类型  |  schema |
-| ------------ | ------------------|--------|----------- |
-{{each $value.params}}| {{$value.name}}         |     {{$value.description}}      |  {{$value.type}}   | {{$value.schemaValue}}     |
-            {{/each}}
-{{/each}}
-
-{{/if}}
-
-**响应状态码说明**:
-{{ if responseCodes}}
-| 状态码         | 说明                             |    schema                         |
-| ------------ | -------------------------------- |---------------------- |
-{{each responseCodes}}| {{$value.code}}         | {{$value.description}}                        |{{$value.schema}}                          |
-{{/each}}
-{{else}}
-暂无
-{{/if}}
-
-
-</textarea>
-    </div>
-</script>
-
-<!--Debug调试tab-->
-<script type="text/html" id="DebugScript">
-    <div style="width: 100%;margin: 0px auto;margin-top: 10px;">
-        <div class="input-group m-bot15">
-            <span class="input-group-btn">
-                <button class="btn btn-default btn-info" type="button">{{methodType}}</button>
-            </span>
-            <input type="text" id="txtreqUrl" data-originalurl="<%=url.substring(1)%>" class="form-control"
-                   value="<%=url.substring(1)%>">
-            <span class="input-group-btn">
-                <button id="btnRequest" class="btn btn-default btn-primary" type="button"> 发 送 </button>
-            </span>
-        </div>
-        <div style="margin-top: 15px;">
-            <div class="swbu-main">
-                <%if((parameters!=null && parameters.length>0)||(globalParameters!=null && globalParameters.length>0)){
-                var fileform=false;%>
-                <% for( a = 0; a < parameters.length ; a++ ) {var param=parameters[a]; %>
-                <% if(param.type=="MultipartFile"){ fileform=true;}%>
-                <%}%>
-
-                <%if(fileform){%>
-                <form id="uploadForm" target="uploadIframe" action="<%=url.substring(1)%>" type=""
-                      enctype="multipart/form-data" method="{{methodType}}">
-                    <table class="">
-                        <thead>
-                        <tr>
-                            <th></th>
-                            <th>参数名称</th>
-                            <th>参数值</th>
-                            <th>操作</th>
-                        </tr>
-                        </thead>
-                        <tbody id="paramBody">
-                        <!--遍历 是否有全局参数--->
-                        <%if(globalParameters!=null && globalParameters.length>0){ %>
-                        <% for( a = 0; a < globalParameters.length ; a++ ) {var param=globalParameters[a]; %>
-                        <%if(param.in!="header"){%>
-                        <tr data-name="<%=param.name%>" data-in="<%=param.in%>" data-required="<%=param.require%>">
-                            <td width="5%">
-                                <div class="checkbox"><label><input type="checkbox" value="" checked=""></label></div>
-                            </td>
-                            <td width="35%">
-                                <input class="form-control p-key" value="<%=param.name%>">
-                            </td>
-                            <td>
-                                <%if(param.in=="body"){ %>
-                                <%if(param.type=="MultipartFile"){%>
-                                <input name="<%=param.name%>" type="file" class="form-control p-value"
-                                       data-name="<%=param.name%>" placeholder="<%=param.description%>"/>
-                                <%}else {%>
-                                <textarea class="form-control p-value" style="font-size: 16px;" rows="10"
-                                          data-in="<%=param.in%>" data-apiUrl="<%=url.substring(1)%>"
-                                          name="<%=param.name%>" data-name="<%=param.name%>"
-                                          placeholder="<%=param.description%>"><%=param.txtValue%></textarea>
-                                <%}%>
-                                <%}else{%>
-                                <input class="form-control p-value" name="<%=param.name%>" data-in="<%=param.in%>"
-                                       data-apiurl="<%=url.substring(1)%>"
-                                       data-name="<%=param.name%>" placeholder="<%=param.description%>"
-                                       value="<%=param.txtValue%>"/>
-                                <%}%>
-                            </td>
-                            <td width="5%">
-                                <button class="btn btn-danger btn-circle btn-small btn-param-delete" type="button">
-                                    <strong>×</strong></button>
-                            </td>
-                        </tr>
-                        <%}%>
-                        <%}%>
-                        <%}%>
-
-                        <% for( a = 0; a < parameters.length ; a++ ) {var param=parameters[a]; %>
-                        <%if(param.in!="header"){%>
-                        <tr data-name="<%=param.name%>" data-in="<%=param.in%>" data-required="<%=param.require%>"
-                            data-type="<%=param.type%>">
-                            <td width="5%">
-                                <div class="checkbox"><label><input type="checkbox" value="" checked=""></label></div>
-                            </td>
-                            <td width="35%">
-                                <input class="form-control p-key" value="<%=param.name%>">
-                            </td>
-                            <td>
-                                <%if(param.in=="body"){ %>
-                                <%if(param.type=="MultipartFile"){%>
-                                <input name="<%=param.name%>" type="file" class="form-control p-value"
-                                       data-name="<%=param.name%>" placeholder="<%=param.description%>"/>
-                                <%}else {%>
-                                <textarea class="form-control p-value" style="font-size: 16px;" rows="10"
-                                          data-in="<%=param.in%>" data-apiUrl="<%=url.substring(1)%>"
-                                          name="<%=param.name%>" data-name="<%=param.name%>"
-                                          placeholder="<%=param.description%>"><%=param.txtValue%></textarea>
-                                <%}%>
-                                <%}else{%>
-                                <input class="form-control p-value p-<%=param.in%>" name="<%=param.name%>"
-                                       data-in="<%=param.in%>" data-apiurl="<%=url.substring(1)%>"
-                                       data-name="<%=param.name%>" placeholder="<%=param.description%>"
-                                       value="<%=param.txtValue%>"/>
-                                <%}%>
-                            </td>
-                            <td width="5%">
-                                <button class="btn btn-danger btn-circle btn-small btn-param-delete" type="button">
-                                    <strong>×</strong></button>
-                            </td>
-                        </tr>
-                        <%}%>
-
-                        <%}%>
-                        </tbody>
-                    </table>
-                </form>
-                <div id="resptab" class="tabs-container">
-                    <iframe name="uploadIframe" id="uploadIframe"
-                            style="border: none;height: 1%;display: none;"></iframe>
-                </div>
-                <%}else{%>
-                <table class="">
-                    <thead>
-                    <tr>
-                        <th></th>
-                        <th>参数名称</th>
-                        <th>参数值</th>
-                        <th>操作</th>
-                    </tr>
-                    </thead>
-                    <tbody id="paramBody">
-                    <!--遍历 是否有全局参数--->
-                    <%if(globalParameters!=null && globalParameters.length>0){ %>
-                    <% for( a = 0; a < globalParameters.length ; a++ ) {var param=globalParameters[a]; %>
-                    <tr data-name="<%=param.name%>" data-in="<%=param.in%>" data-required="<%=param.require%>">
-                        <td width="5%">
-                            <div class="checkbox"><label><input type="checkbox" value="" checked=""></label></div>
-                        </td>
-                        <td width="35%">
-                            <input class="form-control p-key" value="<%=param.name%>">
-                        </td>
-                        <td>
-                            <%if(param.in=="body"){ %>
-                            <%if(param.type=="MultipartFile"){%>
-                            <input name="<%=param.name%>" type="file" class="form-control p-value"
-                                   data-name="<%=param.name%>" placeholder="<%=param.description%>"/>
-                            <%}else {%>
-                            <textarea class="form-control p-value" style="font-size: 16px;" rows="10"
-                                      data-in="<%=param.in%>" data-apiUrl="<%=url.substring(1)%>"
-                                      name="<%=param.name%>" data-name="<%=param.name%>"
-                                      placeholder="<%=param.description%>"><%=param.txtValue%></textarea>
-                            <%}%>
-                            <%}else{%>
-                            <input class="form-control p-value" name="<%=param.name%>" data-in="<%=param.in%>"
-                                   data-apiurl="<%=url.substring(1)%>"
-                                   data-name="<%=param.name%>" placeholder="<%=param.description%>"
-                                   value="<%=param.txtValue%>"/>
-                            <%}%>
-                        </td>
-                        <td width="5%">
-                            <button class="btn btn-danger btn-circle btn-small btn-param-delete" type="button">
-                                <strong>×</strong></button>
-                        </td>
-                    </tr>
-                    <%}%>
-                    <%}%>
-
-                    <% for( a = 0; a < parameters.length ; a++ ) {var param=parameters[a]; %>
-                    <tr data-name="<%=param.name%>" data-in="<%=param.in%>" data-required="<%=param.require%>">
-                        <td width="5%">
-                            <div class="checkbox"><label><input type="checkbox" value="" checked=""></label></div>
-                        </td>
-                        <td width="35%">
-                            <input class="form-control p-key" value="<%=param.name%>">
-                        </td>
-                        <td>
-                            <%if(param.in=="body"){ %>
-                            <%if(param.type=="MultipartFile"){%>
-                            <input name="<%=param.name%>" type="file" class="form-control p-value"
-                                   data-name="<%=param.name%>" placeholder="<%=param.description%>"/>
-                            <%}else {%>
-                            <textarea class="form-control p-value" style="font-size: 16px;" rows="10"
-                                      data-in="<%=param.in%>" data-apiUrl="<%=url.substring(1)%>"
-                                      name="<%=param.name%>" data-name="<%=param.name%>"
-                                      placeholder="<%=param.description%>"><%=param.txtValue%></textarea>
-                            <%}%>
-                            <%}else{%>
-                            <input class="form-control p-value p-<%=param.in%>" name="<%=param.name%>"
-                                   data-in="<%=param.in%>" data-apiurl="<%=url.substring(1)%>"
-                                   data-name="<%=param.name%>" placeholder="<%=param.description%>"
-                                   value="<%=param.txtValue%>"/>
-                            <%}%>
-                        </td>
-                        <td width="5%">
-                            <button class="btn btn-danger btn-circle btn-small btn-param-delete" type="button">
-                                <strong>×</strong></button>
-                        </td>
-                    </tr>
-                    <%}%>
-                    </tbody>
-                </table>
-                <%}%>
-
-                <%}%>
-            </div>
-        </div>
-        <div id="responsebody">
-        </div>
-    </div>
-</script>
-<!--全局参数-->
-<script type="text/html" id="GlobalParamScript">
-    <div style="width:99%;margin:0px auto;">
-        <div class="alert alert-info" role="alert">
-            提供全局参数Debug功能,目前默认提供header(请求头)、query(form)两种方式的入参.<br/><br/>
-            在此添加全局参数后,默认Debug调试tab页会带上该参数,该全局参数只在该分组下有效,不同的分组需要分别设置
-        </div>
-        <div class="input-inline" style="margin-bottom:10px;">
-            <button class="btn btn-primary" type="button" id="btnAddParam">添加参数</button>
-        </div>
-        <div style="margin-top: 15px;">
-            <div class="swbu-main">
-                <table class="" id="globalTable">
-                    <thead>
-                    <tr>
-                        <th>参数名称</th>
-                        <th>参数值</th>
-                        <th>参数类型</th>
-                        <th>操作</th>
-                    </tr>
-                    </thead>
-                    <tbody id="globalTabBody">
-                    <%if(globalParameters!=null && globalParameters.length>0){ %>
-                    <% for( a = 0; a < globalParameters.length ; a++ ) {var param=globalParameters[a]; %>
-                    <tr>
-                        <td><input class="form-control p-key" value="<%=param.name%>" data-old='<%=param.name%>'></td>
-                        <td><input class="form-control p-key" value="<%=param.value%>"></td>
-                        <td><select class='form-control'>
-                            <option value='header'
-                            <%if(param.in=="header"){%> selected <%}%> >header</option>
-                            <option value='query'
-                            <%if(param.in=="query"){%> selected <%}%>>query</option></select></td>
-                        <td>
-                            <button class="btn btn-circle btn-info btn-small btn-save" type="button">保存</button>&nbsp;&nbsp;<button
-                                class="btn btn-circle btn-danger btn-small btn-cancel" type="button">删除
-                        </button>
-                        </td>
-                    </tr>
-
-                    <%}}%>
-                    </tbody>
-                </table>
-            </div>
-        </div>
-    </div>
-</script>
-
-<!--SwaggerBootstrapUi简介-->
-<script type="text/html" id="SwaggerBootstrapUiIntroScript">
-    <div style="width:99%;margin:0px auto;">
-        <div style="margin-top: 15px;">
-            <div class="swbu-main" itemprop="sbuarticleBody">
-                <div id="sbuDescriptionDoc" style="width: 90%;margin: 0px auto;">
-                    <table>
-                        <tr>
-                            <td colspan="2" style="text-align: center;">{{title}}</td>
-                        </tr>
-                        <tr>
-                            <td>简介</td>
-                            <td>{{description}}</td>
-                        </tr>
-                        <tr>
-                            <td>作者</td>
-                            <td>{{contact}}</td>
-                        </tr>
-                        <tr>
-                            <td>版本</td>
-                            <td>{{version}}</td>
-                        </tr>
-                        <tr>
-                            <td>host</td>
-                            <td>{{host}}</td>
-                        </tr>
-                        <tr>
-                            <td>服务url</td>
-                            <td>{{termsOfService}}</td>
-                        </tr>
-                    </table>
-                </div>
-                <!--<textarea rows="10" cols="10" id="docText">-->
-
-            </div>
-        </div>
-</script>
-<div class="bycdao-main" id="content" style="height: 100%;overflow-y: auto;">
-    <div id="myTab" class="tabs-container" style="width:99%;margin:0px auto;">
-        <ul class="nav nav-tabs">
-            <li class="active">
-                <a data-toggle="tab" href="#tab1" aria-expanded="false"> 接口说明</a>
-            </li>
-            <li class=""><a data-toggle="tab" href="#tab2" aria-expanded="true"> 在线调试</a></li>
-        </ul>
-        <div class="tab-content">
-            <div id="tab1" class="tab-pane active">
-                <div class="panel-body" id="tabBody">
-
-                </div>
-            </div>
-            <div id="tab2" class="tab-pane">
-                <div class="panel-body"><strong>正在开发中,敬请期待......</strong>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-<script type="text/javascript" src="/styles/ace/bootstrap.min.js"></script>
-<script type="text/javascript" src="/styles/ace/ace.min.js"></script>
-<script type="text/javascript" src="/styles/cdao/swaggerbootstrapui.js"></script>
-</body>
-</html>

文件差异内容过多而无法显示
+ 0 - 0
src/main/resources/static/styles/ace/ace.min.css


文件差异内容过多而无法显示
+ 0 - 0
src/main/resources/static/styles/ace/ace.min.js


文件差异内容过多而无法显示
+ 0 - 5
src/main/resources/static/styles/ace/bootstrap.min.js


+ 0 - 13
src/main/resources/static/styles/bootstrap/js/npm.js

@@ -1,13 +0,0 @@
-// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
-require('../../js/transition.js')
-require('../../js/alert.js')
-require('../../js/button.js')
-require('../../js/carousel.js')
-require('../../js/collapse.js')
-require('../../js/dropdown.js')
-require('../../js/modal.js')
-require('../../js/tooltip.js')
-require('../../js/popover.js')
-require('../../js/scrollspy.js')
-require('../../js/tab.js')
-require('../../js/affix.js')

+ 0 - 1739
src/main/resources/static/styles/cdao/DApiUI.js

@@ -1,1739 +0,0 @@
-(function ($) {
-    //初始化类
-    var DApiUI = {};
-
-    DApiUI.init = function () {
-        DApiUI.createGroupTab();
-    };
-
-    /**
-     * 创建分组
-     */
-    DApiUI.createGroupTab = function () {
-        $.ajax({
-            url: "swagger-resources",
-            type: "get",
-            async: false,
-            success: function (data) {
-                //获取分组名称
-                var groupData = data;
-                DApiUI.initGroupSele(groupData);
-            }
-        })
-    };
-
-    /***
-     * 创建面板
-     */
-    DApiUI.creatabTab = function () {
-        var divcontent = $('<div id="myTab" class="tabs-container" style="width:99%;margin:0px auto;"></div>');
-        var ul = $('<ul class="nav nav-tabs"></ul>')
-        ul.append($('<li><a data-toggle="tab" href="#tab1" aria-expanded="false"> 接口说明</a></li>'));
-        ul.append($('<li class=""><a data-toggle="tab" href="#tab2" aria-expanded="true"> 在线调试</a></li>'));
-        divcontent.append(ul);
-        var tabcontent = $('<div class="tab-content"></div>');
-
-        tabcontent.append($('<div id="tab1" class="tab-pane"><div class="panel-body"><strong>接口详细说明</strong><p>Bootstrap 使用到的某些 HTML 元素和 CSS 属性需要将页面设置为 HTML5 文档类型。在你项目中的每个页面都要参照下面的格式进行设置。</p></div></div>'));
-        tabcontent.append($('<div id="tab2" class="tab-pane"><div class="panel-body"><strong>正在开发中,敬请期待......</strong></div></div>'));
-        divcontent.append(tabcontent);
-        //内容覆盖
-        DApiUI.getDoc().html("");
-        DApiUI.getDoc().append(divcontent);
-        DApiUI.log("动态激活...")
-        //liapi.addClass("active");
-        DApiUI.log("动态激活12...")
-        DApiUI.getDoc().find("#myTab a:first").tab('show')
-        //$('#myTab a:first').tab('show')
-
-    }
-
-    /***
-     * 检查对象属性,in并赋予默认值
-     * @param obj
-     * @param key
-     * @param defaultValue
-     * @param checkEmpty
-     * @returns {*}
-     */
-    DApiUI.getValue = function (obj, key, defaultValue, checkEmpty) {
-        var val = defaultValue;
-        if (obj != null && obj != undefined) {
-            if (obj.hasOwnProperty(key)) {
-                val = obj[key];
-                if (checkEmpty) {
-                    if (val == null || val == "") {
-                        val = defaultValue;
-                    }
-                }
-            }
-        }
-        return val;
-    }
-
-
-    /***
-     * 创建简介table页面
-     * @param menu
-     */
-    DApiUI.createDescription = function (menu) {
-        var table = $('<table class="table table-hover table-bordered table-text-center"></table>');
-        var title = "", description = "", name = "", version = "", termsOfService = "";
-        var host = DApiUI.getValue(menu, "host", "", true);
-        if (menu.hasOwnProperty("info")) {
-            var info = menu.info;
-            title = DApiUI.getValue(info, "title", "Swagger-Bootstrap-UI-前后端api接口文档", true);
-            description = DApiUI.getValue(info, "description", "", true);
-            if (info.hasOwnProperty("contact")) {
-                var contact = info["contact"];
-                name = DApiUI.getValue(contact, "name", "", true);
-            }
-            version = DApiUI.getValue(info, "version", "", true);
-            termsOfService = DApiUI.getValue(info, "termsOfService", "", true);
-        }
-        //修改title
-        $("title").html("").html(title)
-        table.append($('<thead><tr><th colspan="2" style="text-align:center">' + title + '</th></tr></thead>'));
-        var tbody = $('<tbody></tbody>');
-        tbody.append($('<tr><th class="active">简介</th><td style="text-align: left">' + description + '</td></tr>'));
-        tbody.append($('<tr><th class="active">作者</th><td style="text-align: left">' + name + '</td></tr>'));
-        tbody.append($('<tr><th class="active">版本</th><td style="text-align: left">' + version + '</td></tr>'));
-        tbody.append($('<tr><th class="active">host</th><td style="text-align: left">' + host + '</td></tr>'))
-        tbody.append($('<tr><th class="active">服务url</th><td style="text-align: left">' + termsOfService + '</td></tr>'));
-        table.append(tbody);
-        var div = $('<div  style="width:99%;margin:0px auto;"></div>')
-        div.append(table);
-        //内容覆盖
-        DApiUI.getDoc().html("");
-        DApiUI.getDoc().append(div);
-        DApiUI.getDoc().data("data", menu);
-    }
-
-    /***
-     * 离线文档功能页面
-     * @param menu
-     */
-    DApiUI.createMarkdownTab = function (menu) {
-        var description = "swagger-bootstrap-ui 提供markdwon格式类型的离线文档,开发者可拷贝该内容通过其他markdown转换工具进行转换为html或pdf.";
-        var divdes = $('<div class="alert alert-info" role="alert">' + description + '</div>');
-        var div = $('<div  style="width:99%;margin:0px auto;"></div>');
-        div.append(divdes);
-        //toolbar按钮组
-        var toolbarDiv = $('<div class="input-inline" style="margin-bottom:10px;">');
-        var copyBtn = $('<button class="btn btn-primary" type="button" id="btnCopy"  data-clipboard-action="copy" data-clipboard-target="#txtDoc">拷贝文档</button></div>');
-        toolbarDiv.append(copyBtn);
-        div.append(toolbarDiv);
-        //添加textarea
-        var txtDiv = $("<div class='input-inline'><textarea class='form-control' style='width: 100%;height: 100%;' id='txtDoc'></textarea></div>")
-        div.append(txtDiv);
-        //内容覆盖
-        DApiUI.getDoc().html("");
-        DApiUI.getDoc().append(div);
-        DApiUI.getDoc().data("data", menu);
-        //初始化copy按钮功能
-        var clipboard = new ClipboardJS('#btnCopy');
-        clipboard.on('success', function (e) {
-            layer.msg("复制成功")
-        });
-        clipboard.on('error', function (e) {
-            layer.msg("复制失败,您当前浏览器版本不兼容,请手动复制.")
-        });
-
-    }
-
-    /***
-     * 获取菜单结构
-     */
-    DApiUI.getMenuConstructs = function () {
-        return DApiUI.getDoc().data("data");
-    }
-
-    DApiUI.toString = function (obj, defaultStr) {
-        if (obj != null && typeof (obj) != "undefined") {
-            return obj.toString();
-        }
-        if (obj == undefined) {
-            return defaultStr;
-        }
-        return defaultStr;
-    }
-
-
-    /***
-     * 初始化分组菜单
-     * @param menu
-     */
-    DApiUI.initGroupSele = function (groupData) {
-        //遍历tags
-        var tags = new Array();
-        //创建分组flag
-        var groupli = $('<li  class="active"></li>');
-        var groupSele = $("<select id='groupSel' style='width:100%;'></select>");
-        $.each(groupData, function (i, group) {
-            var groupOption = $("<option data-url='" + group.location + "' data-name='" + group.name + "'>" + group.name + "</option>");
-            groupSele.append(groupOption);
-        })
-        groupli.append(groupSele);
-        groupSele.on("change", function () {
-            var that = $(this);
-            DApiUI.log(that)
-            var apiurl = that.find("option:selected").attr("data-url");
-            DApiUI.log("分组::");
-            DApiUI.log(apiurl);
-            DApiUI.initApiTree(apiurl);
-        })
-        DApiUI.getMenu().html("");
-        DApiUI.getMenu().append(groupli);
-        var url = groupData[0].location;
-        //默认加载第一个url
-        DApiUI.initApiTree(url);
-    }
-
-    DApiUI.initApiTree = function (url) {
-        var idx = url.indexOf("/");
-        if (idx == 0) {
-            url = url.substr(1);
-        }
-        DApiUI.log("截取后的url:" + url);
-        $.ajax({
-            //url:"v2/api-docs",
-            url: url,
-            dataType: "json",
-            type: "get",
-            async: false,
-            success: function (data) {
-                //var menu=JSON.parse(data)
-                var menu = data;
-                DApiUI.definitions(menu);
-                DApiUI.log(menu);
-                DApiUI.createDescription(menu);
-                DApiUI.createDetailMenu(menu);
-            }
-        })
-    }
-
-    /***
-     * 创建分组详情菜单
-     * @param menu
-     */
-    DApiUI.createDetailMenu = function (menu) {
-        DApiUI.getMenu().find(".detailMenu").remove();
-
-        //简介li
-        var dli = $('<li  class="active detailMenu"><a href="javascript:void(0)"><i class="icon-text-width"></i><span class="menu-text"> 简介 </span></a></li>')
-        dli.on("click", function () {
-            DApiUI.log("简介click")
-            DApiUI.createDescription(menu);
-            dli.addClass("active");
-        })
-        DApiUI.getMenu().append(dli);
-        //离线文档功能
-        var mddocli = $("<li  class=\"detailMenu\"><a href=\"javascript:void(0)\"><i class=\"icon-text-width\"></i><span class=\"menu-text\"> 离线文档(MD) </span></a></li>");
-        mddocli.on("click", function () {
-            DApiUI.log("离线文档功能click")
-            DApiUI.createMarkdownTab(menu);
-            DApiUI.getMenu().find("li").removeClass("active");
-            mddocli.addClass("active");
-        })
-        DApiUI.getMenu().append(mddocli);
-        var methodApis = DApiUI.eachPath(menu);
-
-        $.each(menu.tags, function (i, tag) {
-            var tagInfo = new TagInfo(tag.name, tag.description);
-            //查找childrens
-            $.each(methodApis, function (i, methodApi) {
-                //判断tags是否相同
-                $.each(methodApi.tag, function (i, tagName) {
-                    if (tagName == tagInfo.name) {
-                        tagInfo.childrens.push(methodApi);
-                    }
-                })
-            })
-            var len = tagInfo.childrens.length;
-            if (len == 0) {
-                var li = $('<li class="detailMenu"><a href="javascript:void(0)"><i class="icon-text-width"></i><span class="menu-text"> ' + tagInfo.name + ' </span></a></li>');
-                DApiUI.getMenu().append(li);
-            } else {
-                //存在子标签
-                var li = $('<li  class="detailMenu"></li>');
-                var titleA = $('<a href="#" class="dropdown-toggle"><i class="icon-file-alt"></i><span class="menu-text">' + tagInfo.name + '<span class="badge badge-primary ">' + len + '</span></span><b class="arrow icon-angle-down"></b></a>');
-                li.append(titleA);
-                //循环树
-                var ul = $('<ul class="submenu"></ul>')
-                $.each(tagInfo.childrens, function (i, children) {
-                    var childrenLi = $('<li class="menuLi" ><div class="mhed"><div>' + children.methodType.toUpperCase() + '-<code>' + children.url + '</code></div><div>' + children.summary + '</div></div></li>');
-                    //console.log(children)
-                    //var childrenA=$('<a href="javascript:void(0)"><i class="icon-double-angle-right"></i><div  ><h5><span class="method">['+children.methodType+']</span></h5></div>'+children.summary+'('+children.url+')</a>');
-                    //childrenLi.append(childrenA);
-                    childrenLi.data("data", children);
-                    ul.append(childrenLi);
-                })
-                li.append(ul);
-                DApiUI.getMenu().append(li);
-            }
-        })
-        DApiUI.log("菜单初始化完成...")
-        DApiUI.initLiClick();
-    }
-
-
-    DApiUI.eachPath = function (menu) {
-        var paths = menu.paths;
-        DApiUI.log(paths);
-        //paths是object对象,key是api接口地址,
-        var methodApis = [];
-        for (var key in paths) {
-            var obj = paths[key];
-            //遍历obj,获取api接口访问方式
-            //八中方式类型,直接判断
-            if (obj.hasOwnProperty("get")) {
-                //get方式
-                var apiInfo = new ApiInfo(obj["get"]);
-                apiInfo.methodType = "get";
-                apiInfo.url = key;
-                methodApis.push(apiInfo);
-            }
-
-            if (obj.hasOwnProperty("post")) {
-                //post 方式
-                var apiInfo = new ApiInfo(obj["post"]);
-                apiInfo.methodType = "post";
-                apiInfo.url = key;
-                methodApis.push(apiInfo);
-            }
-            if (obj.hasOwnProperty("put")) {
-                //put
-                var apiInfo = new ApiInfo(obj["put"]);
-                apiInfo.methodType = "put";
-                apiInfo.url = key;
-                methodApis.push(apiInfo);
-            }
-            if (obj.hasOwnProperty("delete")) {
-                //delete
-                var apiInfo = new ApiInfo(obj["delete"]);
-                apiInfo.methodType = "delete";
-                apiInfo.url = key;
-                methodApis.push(apiInfo);
-            }
-            //扩展 支持http其余请求方法接口
-            //add by xiaoymin 2018-4-28 07:16:12
-            if (obj.hasOwnProperty("patch")) {
-                //patch
-                var apiInfo = new ApiInfo(obj["patch"]);
-                apiInfo.methodType = "patch";
-                apiInfo.url = key;
-                methodApis.push(apiInfo);
-            }
-            if (obj.hasOwnProperty("options")) {
-                //OPTIONS
-                var apiInfo = new ApiInfo(obj["options"]);
-                apiInfo.methodType = "options";
-                apiInfo.url = key;
-                methodApis.push(apiInfo);
-            }
-            if (obj.hasOwnProperty("trace")) {
-                //TRACE
-                var apiInfo = new ApiInfo(obj["trace"]);
-                apiInfo.methodType = "trace";
-                apiInfo.url = key;
-                methodApis.push(apiInfo);
-            }
-            if (obj.hasOwnProperty("head")) {
-                //HEAD
-                var apiInfo = new ApiInfo(obj["head"]);
-                apiInfo.methodType = "head";
-                apiInfo.url = key;
-                methodApis.push(apiInfo);
-            }
-            if (obj.hasOwnProperty("connect")) {
-                //CONNECT
-                var apiInfo = new ApiInfo(obj["connect"]);
-                apiInfo.methodType = "connect";
-                apiInfo.url = key;
-                methodApis.push(apiInfo);
-            }
-        }
-        //console.log(methodApis);
-        return methodApis;
-
-    }
-
-    /***
-     * li标签click事件
-     */
-    DApiUI.initLiClick = function () {
-        DApiUI.getMenu().find(".menuLi").bind("click", function (e) {
-            e.preventDefault();
-            var that = $(this);
-            var data = that.data("data");
-            DApiUI.log("Li标签click事件");
-            DApiUI.log(data);
-            //获取parent-Li的class属性值
-            var parentLi = that.parent().parent();
-            DApiUI.log(parentLi);
-            var className = parentLi.prop("class");
-            DApiUI.log(className)
-            DApiUI.getMenu().find("li").removeClass("active");
-            //parentLi.addClass("active");
-            that.addClass("active");
-            DApiUI.createApiInfoTable(data);
-            DApiUI.createDebugTab(data);
-        })
-    }
-
-    DApiUI.getStringValue = function (obj) {
-        var str = "";
-        if (typeof (obj) != 'undefined' && obj != null) {
-            str = obj.toString();
-        }
-        return str;
-    }
-
-
-    /***
-     * 格式化json
-     * @param text_value
-     */
-    function formatterJson(text_value) {
-        var res = "";
-        for (var i = 0, j = 0, k = 0, ii, ele; i < text_value.length; i++) {//k:缩进,j:""个数
-            ele = text_value.charAt(i);
-            if (j % 2 == 0 && ele == "}") {
-                k--;
-                for (ii = 0; ii < k; ii++) ele = "    " + ele;
-                ele = "\n" + ele;
-            }
-            else if (j % 2 == 0 && ele == "{") {
-                ele += "\n";
-                k++;
-                //debugger;
-                for (ii = 0; ii < k; ii++) ele += "    ";
-            }
-            else if (j % 2 == 0 && ele == ",") {
-                ele += "\n";
-                for (ii = 0; ii < k; ii++) ele += "    ";
-            }
-            else if (ele == "\"") j++;
-            res += ele;
-        }
-        return res;
-
-    }
-
-    /**
-     * 创建调试面板
-     */
-    DApiUI.createDebugTab = function (apiInfo) {
-        DApiUI.log("创建调试tab")
-        //方法、请求类型、发送按钮
-        var div = $('<div style="width: 100%;margin: 0px auto;margin-top: 20px;"></div>');
-        var headdiv1 = $('<div class="input-group m-bot15"><span class="input-group-btn"><button class="btn btn-default btn-info" type="button">' + DApiUI.getStringValue(apiInfo.methodType) + '</button></span><input type="text" id="txtreqUrl" class="form-control" value="' + DApiUI.getStringValue(apiInfo.url) + '"/><span class="input-group-btn"><button id="btnRequest" class="btn btn-default btn-primary" type="button"> 发 送 </button></span></div>');
-        div.append(headdiv1);
-
-
-        //请求参数
-        var divp = $('<div class="panel panel-primary"><div class="panel-heading">请求参数</div></div>')
-
-        var divpbody = $('<div class="panel-body"></div>');
-        //是否是文件上传
-        var fileform = false;
-        //判断是否有请求参数
-        if (typeof (apiInfo.parameters) != 'undefined' && apiInfo.parameters != null) {
-            var table = $('<table class="table table-hover table-bordered table-text-center"></table>')
-            var thead = $('<thead><tr><th></th><th>参数名称</th><th>参数值</th><th>操作</th></tr></thead>');
-            table.append(thead);
-            var tbody = $('<tbody id="paramBody"></tbody>');
-            $.each(apiInfo.parameters, function (i, param) {
-                var tr = $('<tr></tr>');
-                tr.data("data", param);
-                //判断parame的in类型
-                //query--text
-                //body--textarea
-                var checkbox = $('<td width="5%"><div class="checkbox"><label><input type="checkbox" value="" checked></label></div></td>');
-                var key = $('<td width="20%"><input class="form-control p-key"   value="' + param.name + '"/></td>')
-                //var value=$('<td><input class="form-control p-value" data-apiUrl="'+apiInfo.url+'" data-name="'+param.name+'" placeholder="'+DApiUI.getStringValue(param['description'])+'"/></td>');
-                var value = $('<td></td>');
-
-                var val = null;
-                if (param["in"] == "body") {
-                    tbody.attr("reqtype", "body");
-                    val = $('<textarea class="form-control p-value" style="font-size: 16px;" rows="10" data-apiUrl="' + apiInfo.url + '" name="' + param.name + '" data-name="' + param.name + '" placeholder="' + DApiUI.getStringValue(param['description']) + '"></textarea>')
-                    //判断是否有schma
-                    if (param.hasOwnProperty("schema")) {
-                        var schema = param["schema"];
-                        var ref = schema["$ref"];
-                        var regex = new RegExp("#/definitions/(.*)$", "ig");
-                        if (regex.test(ref)) {
-                            var refType = RegExp.$1;
-                            //这里判断refType是否是MultipartFile类型,如果是该类型,上传组件
-                            if (refType == "MultipartFile") {
-                                fileform = true;
-                                val = $('<input name="' + param.name + '" type="file" class="form-control p-value" data-apiUrl="' + apiInfo.url + '" data-name="' + param.name + '" placeholder="' + DApiUI.getStringValue(param['description']) + '"/>');
-                            } else {
-                                //find in definitionsArray
-                                var definitionsArray = DApiUI.getDoc().data("definitionsArray");
-                                var deftion = null;
-                                for (var i = 0; i < definitionsArray.length; i++) {
-                                    var definition = definitionsArray[i];
-                                    if (definition.key == refType) {
-                                        deftion = definition.value;
-                                        break;
-                                    }
-                                }
-                                //遍历proprietary
-                                /*create by xjy 此处不能要,不然json数据丢了*/
-                                /*create by xjy 此处不能要,不然json数据丢了*/
-                                /* for (var k in deftion) {
-                                     deftion[k] = "";
-                                 }*/
-                                if (deftion != null) {
-                                    //赋值
-                                    /*create by xjy 新的格式化*/
-                                    // val.val(formatterJson(JSON.stringify(deftion)));
-                                    val.val(JSON.stringify(deftion, null, 4));
-                                }
-                            }
-                        }
-                    }
-
-                } else {
-                    val = $('<input class="form-control p-value" name="' + param.name + '" data-apiUrl="' + apiInfo.url + '" data-name="' + param.name + '" placeholder="' + DApiUI.getStringValue(param['description']) + '"/>');
-                    //判断是否有defaultvalue
-                    if (param.hasOwnProperty("default")) {
-                        var defaultValue = param["default"];
-                        val.val(defaultValue);
-                    }
-                    //这里判断param类型,如果是int类型,只能输入数字
-                }
-                value.append(val);
-                var oper = $('<td width="5%"><button class="btn btn-danger btn-circle btn-lg" type="button"><strong>×</strong></button></td>');
-                //删除事件
-                oper.find("button").on("click", function (e) {
-                    e.preventDefault();
-                    var that = $(this);
-                    that.parent().parent().remove();
-                })
-                //判断参数类型,针对path参数
-                if (param["in"] == "path") {
-                    //赋予change事件
-                    value.find("input").on("keyup", function () {
-                        var t = $(this);
-                        var name = t.data("name");
-                        var apiUrl = t.attr("data-apiUrl");
-                        var realValue = apiUrl.replace("{" + name + "}", t.val());
-                        //查找是否还存在其他path参数
-                        $("#paramBody").find("tr").each(function (i, itr) {
-                            var itrthat = $(this);
-                            var itrdata = itrthat.data("data");
-                            var itrname = itrdata["name"];
-                            if (itrdata["in"] == "path" && itrdata["name"] != name) {
-                                //查找value值
-                                var itrtdvalue = itrthat.find(".p-value").val();
-                                if (itrtdvalue != "") {
-                                    realValue = realValue.replace("{" + itrname + "}", itrtdvalue);
-                                }
-                            }
-                        })
-                        DApiUI.log(realValue);
-                        $("#txtreqUrl").val(realValue);
-                        DApiUI.log("keyup。。。。")
-                    })
-
-                }
-                tr.append(checkbox).append(key).append(value).append(oper);
-                tbody.append(tr);
-            })
-            table.append(tbody);
-            //如果有文件上传,追加form表单
-            if (fileform) {
-                //文件上传使用相对路径
-                var uploadurltemp = apiInfo.url;
-                if (uploadurltemp.indexOf("/") == 0) {
-                    uploadurltemp = uploadurltemp.substr(1);
-                }
-                DApiUI.log("upload上传接口截取后:" + uploadurltemp)
-                var form = $('<form id="uploadForm"  target="uploadIframe" action="' + uploadurltemp + '" type="" enctype="multipart/form-data" method="' + apiInfo.methodType + '"></form>');
-                form.append(table);
-                divpbody.append(form);
-            } else {
-                divpbody.append(table);
-            }
-        } else {
-            divpbody.append($('<strong>暂无参数</strong>'))
-        }
-        divp.append(divpbody);
-        //
-        if (fileform) {
-            //追加iframe
-            var resptabframe = $('<div id="resptab" class="tabs-container" ><iframe name="uploadIframe" id="uploadIframe" style="border: none;height: 1%;display: none;"></iframe></div>')
-            divp.append(resptabframe);
-        }
-        div.append(divp);
-        //创建reesponsebody
-        var respcleanDiv = $('<div id="responsebody"></div>');
-
-        div.append(respcleanDiv);
-
-
-        DApiUI.getDoc().find("#tab2").find(".panel-body").html("")
-        DApiUI.getDoc().find("#tab2").find(".panel-body").append(div);
-
-
-        //发送事件
-        headdiv1.find("#btnRequest").bind("click", function (e) {
-            e.preventDefault();
-            respcleanDiv.html("")
-            DApiUI.log("发送请求");
-            //
-            var params = {};
-            var headerparams = {};
-            var bodyparams = "";
-            //modify by xiaoyumin 2017-8-9 11:28:16
-            //增加表单验证
-            var validateflag = false;
-            var validateobj = {};
-
-            //获取参数
-            var paramBody = DApiUI.getDoc().find("#tab2").find("#paramBody")
-            DApiUI.log("paramsbody..")
-            DApiUI.log(paramBody)
-            //组装请求url
-            var url = DApiUI.getStringValue(apiInfo.url);
-            var cacheData = DApiUI.getDoc().data("data");
-            if (typeof (cacheData.basePath) != "undefined" && cacheData.basePath != "") {
-                if (cacheData.basePath != "/") {
-                    DApiUI.log("NOT ROOT PATH:");
-                    url = cacheData.basePath + DApiUI.getStringValue(apiInfo.url);
-                }
-            }
-
-
-            paramBody.find("tr").each(function () {
-                var paramtr = $(this);
-                var cked = paramtr.find("td:first").find(":checked").prop("checked");
-                DApiUI.log(cked)
-                if (cked) {
-                    //如果选中
-                    var trdata = paramtr.data("data");
-                    DApiUI.log("trdata....")
-                    DApiUI.log(trdata);
-                    //获取key
-                    //var key=paramtr.find("td:eq(1)").find("input").val();
-                    var key = trdata["name"];
-                    //获取value
-                    var value = "";
-                    if (trdata["in"] == "body") {
-                        value = paramtr.find("td:eq(2)").find("textarea").val();
-                        //这里需要判断schema
-                        if (trdata.hasOwnProperty("schema")) {
-                            var schema = trdata["schema"];
-                            if (schema.hasOwnProperty("$ref")) {
-                                var ref = schema["$ref"];
-                                var regex = new RegExp("#/definitions/(.*)$", "ig");
-                                if (regex.test(ref)) {
-                                    var refType = RegExp.$1;
-                                    //这里判断refType是否是MultipartFile类型,如果是该类型,上传组件
-                                    if (refType == "MultipartFile") {
-                                        value = paramtr.find("td:eq(2)").find("input").val();
-                                    }
-                                }
-                            }
-                        }
-                    } else {
-                        value = paramtr.find("td:eq(2)").find("input").val();
-                    }
-                    //var value=paramtr.find("td:eq(2)").find("input").val();
-                    //delete方式参数url传递
-                    if (apiInfo.methodType == "delete") {
-                        //判断是否是path参数
-                        if (trdata["in"] == "path") {
-                            url = url.replace("{" + key + "}", value);
-                        } else {
-                            if (url.indexOf("?") > -1) {
-                                url = url + "&" + key + "=" + value;
-                            } else {
-                                url += "?" + key + "=" + value;
-                            }
-                        }
-                    } else {
-                        if (trdata["in"] == "path") {
-                            url = url.replace("{" + key + "}", value);
-                        } else {
-                            if (trdata["in"] == "body") {
-                                bodyparams += value;
-                            } else {
-                                if (trdata["in"] == "header") {
-                                    headerparams[key] = value;
-                                } else {
-                                    params[key] = value;
-                                }
-                            }
-                        }
-                    }
-                    //判断是否required
-                    if (trdata.hasOwnProperty("required")) {
-                        var required = trdata["required"];
-                        if (required) {
-                            //必须,验证value是否为空
-                            if (value == null || value == "") {
-                                validateflag = true;
-                                var des = trdata["name"]
-                                validateobj = {message: des + "不能为空"};
-                                return false;
-                            }
-                        }
-
-                    }
-                    DApiUI.log("key:" + key + ",value:" + value);
-                }
-            })
-            DApiUI.log("获取参数..")
-            DApiUI.log(params);
-            DApiUI.log(apiInfo)
-
-            DApiUI.log("请求url:" + url);
-            var reqdata = null;
-            //console.log(paramBody.attr("reqtype"))
-            var contType = "application/json; charset=UTF-8";
-            if (paramBody.attr("reqtype") != null && paramBody.attr("reqtype") != undefined && paramBody.attr("reqtype") == "body") {
-                reqdata = bodyparams;
-            } else {
-                reqdata = params;
-                contType = "application/x-www-form-urlencoded; charset=UTF-8";
-            }
-            //console.log(reqdata)
-            if (validateflag) {
-                layer.msg(validateobj.message);
-                return;
-            }
-            //判断是否有表单
-            var form = $("#uploadForm");
-            if (form.length > 0) {
-                form[0].submit();
-                //console.log("表单提交")
-                //iframe监听change事件
-                $("#uploadIframe").on("load", function () {
-                    //console.log("uploadIframe changed....")
-                    $(this).unbind('load');
-                    var framebody = $(this).contents().find("body");
-                    var ret = framebody.html();
-                    //是否存在pre标签
-                    if (framebody.find("pre").length > 0) {
-                        ret = framebody.find("pre").html();
-                    }
-                    var res;
-                    try {
-                        res = JSON.parse(ret);
-                        //console.log(res)
-                        var resptab = $('<div id="resptab" class="tabs-container" ></div>')
-                        var ulresp = $('<ul class="nav nav-tabs">' +
-                            '<li class=""><a data-toggle="tab" href="#tabresp" aria-expanded="false"> 响应内容 </a></li></ul>')
-                        resptab.append(ulresp);
-                        var respcontent = $('<div class="tab-content"></div>');
-                        var resp1 = $('<div id="tabresp" class="tab-pane active"><div class="panel-body"></div></div>');
-                        respcontent.append(resp1);
-                        resptab.append(respcontent)
-                        respcleanDiv.append(resptab);
-
-                        var jsondiv = $('<div></div>');
-                        jsondiv.JSONView(res);
-                        resp1.find(".panel-body").append(jsondiv);
-                        resptab.find("a:first").tab("show");
-                    } catch (err) {
-                        //nothing to do,default to show
-                        respcleanDiv.html(ret);
-                    }
-                })
-            } else {
-                $.ajax({
-                    url: url,
-                    headers: headerparams,
-                    type: DApiUI.getStringValue(apiInfo.methodType),
-                    data: reqdata,
-                    contentType: contType,
-                    success: function (data, status, xhr) {
-                        var resptab = $('<div id="resptab" class="tabs-container" ></div>')
-                        var ulresp = $('<ul class="nav nav-tabs">' +
-                            '<li class=""><a data-toggle="tab" href="#tabresp" aria-expanded="false"> 响应内容 </a></li>' +
-                            '<li class=""><a data-toggle="tab" href="#tabcookie" aria-expanded="true"> Cookies</a></li>' +
-                            '<li class=""><a data-toggle="tab" href="#tabheader" aria-expanded="true"> Headers </a></li></ul>')
-
-                        resptab.append(ulresp);
-                        var respcontent = $('<div class="tab-content"></div>');
-
-                        var resp1 = $('<div id="tabresp" class="tab-pane active"><div class="panel-body"><pre></pre></div></div>');
-                        var resp2 = $('<div id="tabcookie" class="tab-pane active"><div class="panel-body">暂无</div>');
-                        var resp3 = $('<div id="tabheader" class="tab-pane active"><div class="panel-body">暂无</div></div>');
-
-                        respcontent.append(resp1).append(resp2).append(resp3);
-
-                        resptab.append(respcontent)
-
-                        respcleanDiv.append(resptab);
-                        DApiUI.log(xhr);
-                        DApiUI.log(xhr.getAllResponseHeaders());
-                        var allheaders = xhr.getAllResponseHeaders();
-                        if (allheaders != null && typeof (allheaders) != 'undefined' && allheaders != "") {
-                            var headers = allheaders.split("\r\n");
-                            var headertable = $('<table class="table table-hover table-bordered table-text-center"><tr><th>请求头</th><th>value</th></tr></table>');
-                            for (var i = 0; i < headers.length; i++) {
-                                var header = headers[i];
-                                if (header != null && header != "") {
-                                    var headerValu = header.split(":");
-                                    var headertr = $('<tr><th class="active">' + headerValu[0] + '</th><td>' + headerValu[1] + '</td></tr>');
-                                    headertable.append(headertr);
-                                }
-                            }
-                            //设置Headers内容
-                            resp3.find(".panel-body").html("")
-                            resp3.find(".panel-body").append(headertable);
-                        }
-                        var contentType = xhr.getResponseHeader("Content-Type");
-                        DApiUI.log("Content-Type:" + contentType);
-                        DApiUI.log(xhr.hasOwnProperty("responseJSON"))
-                        if (xhr.hasOwnProperty("responseJSON")) {
-                            //如果存在该对象,服务端返回为json格式
-                            resp1.find(".panel-body").html("")
-                            DApiUI.log(xhr["responseJSON"])
-                            var pre = $('<pre></pre>')
-                            var jsondiv = $('<div></div>')
-                            jsondiv.JSONView(xhr["responseJSON"]);
-                            pre.html(JSON.stringify(xhr["responseJSON"], null, 2));
-                            resp1.find(".panel-body").append(jsondiv);
-                        } else {
-                            //判断content-type
-                            //如果是image资源
-                            var regex = new RegExp('image/(jpeg|jpg|png|gif)', 'g');
-                            if (regex.test(contentType)) {
-                                var d = DApiUI.getDoc().data("data");
-                                var imgUrl = "http://" + d.host + apiInfo.url;
-                                var img = document.createElement("img");
-                                img.onload = function (e) {
-                                    window.URL.revokeObjectURL(img.src); // 清除释放
-                                };
-                                img.src = imgUrl;
-                                resp1.find(".panel-body").html("")
-                                resp1.find(".panel-body")[0].appendChild(img);
-                            } else {
-                                //判断是否是text
-                                var regex = new RegExp('.*?text.*', 'g');
-                                if (regex.test(contentType)) {
-                                    resp1.find(".panel-body").html("")
-                                    resp1.find(".panel-body").html(xhr.responseText);
-                                }
-                            }
-
-                        }
-
-                        DApiUI.log("tab show...")
-                        resptab.find("a:first").tab("show");
-                    },
-                    error: function (xhr, textStatus, errorThrown) {
-                        DApiUI.log("error.....")
-                        DApiUI.log(xhr);
-                        DApiUI.log(textStatus);
-                        DApiUI.log(errorThrown);
-                        var resptab = $('<div id="resptab" class="tabs-container" ></div>')
-                        var ulresp = $('<ul class="nav nav-tabs">' +
-                            '<li class=""><a data-toggle="tab" href="#tabresp" aria-expanded="false"> 响应内容 </a></li>' +
-                            '<li class=""><a data-toggle="tab" href="#tabcookie" aria-expanded="true"> Cookies</a></li>' +
-                            '<li class=""><a data-toggle="tab" href="#tabheader" aria-expanded="true"> Headers </a></li></ul>')
-
-                        resptab.append(ulresp);
-                        var respcontent = $('<div class="tab-content"></div>');
-
-                        var resp1 = $('<div id="tabresp" class="tab-pane active"><div class="panel-body"><pre></pre></div></div>');
-                        var resp2 = $('<div id="tabcookie" class="tab-pane active"><div class="panel-body">暂无</div>');
-                        var resp3 = $('<div id="tabheader" class="tab-pane active"><div class="panel-body">暂无</div></div>');
-
-                        respcontent.append(resp1).append(resp2).append(resp3);
-
-                        resptab.append(respcontent)
-
-                        respcleanDiv.append(resptab);
-                        DApiUI.log(xhr);
-                        DApiUI.log(xhr.getAllResponseHeaders());
-                        var allheaders = xhr.getAllResponseHeaders();
-                        if (allheaders != null && typeof (allheaders) != 'undefined' && allheaders != "") {
-                            var headers = allheaders.split("\r\n");
-                            var headertable = $('<table class="table table-hover table-bordered table-text-center"><tr><th>请求头</th><th>value</th></tr></table>');
-                            for (var i = 0; i < headers.length; i++) {
-                                var header = headers[i];
-                                if (header != null && header != "") {
-                                    var headerValu = header.split(":");
-                                    var headertr = $('<tr><th class="active">' + headerValu[0] + '</th><td>' + headerValu[1] + '</td></tr>');
-                                    headertable.append(headertr);
-                                }
-                            }
-                            //设置Headers内容
-                            resp3.find(".panel-body").html("")
-                            resp3.find(".panel-body").append(headertable);
-                        }
-                        var contentType = xhr.getResponseHeader("Content-Type");
-                        DApiUI.log("Content-Type:" + contentType);
-                        var jsonRegex = "";
-                        DApiUI.log(xhr.hasOwnProperty("responseJSON"))
-                        if (xhr.hasOwnProperty("responseJSON")) {
-                            //如果存在该对象,服务端返回为json格式
-                            resp1.find(".panel-body").html("")
-                            DApiUI.log(xhr["responseJSON"])
-                            var jsondiv = $('<div></div>')
-                            jsondiv.JSONView(xhr["responseJSON"]);
-                            resp1.find(".panel-body").append(jsondiv);
-                        } else {
-                            //判断是否是text
-                            var regex = new RegExp('.*?text.*', 'g');
-                            if (regex.test(contentType)) {
-                                resp1.find(".panel-body").html("")
-                                resp1.find(".panel-body").html(xhr.responseText);
-                            }
-                        }
-                        DApiUI.log("tab show...")
-                        resptab.find("a:first").tab("show");
-
-                    }
-                })
-            }
-        })
-
-    }
-
-    DApiUI.createDebugResponseTab = function (parent, data) {
-
-    }
-
-
-    DApiUI.writeUTF8 = function (str, isGetBytes) {
-        var back = [],
-            byteSize = 0;
-        for (var i = 0; i < str.length; i++) {
-            var code = str.charCodeAt(i);
-            if (code >= 0 && code <= 127) {
-                byteSize += 1;
-                back.push(code);
-            } else if (code >= 128 && code <= 2047) {
-                byteSize += 2;
-                back.push((192 | (31 & (code >> 6))));
-                back.push((128 | (63 & code)))
-            } else if (code >= 2048 && code <= 65535) {
-                byteSize += 3;
-                back.push((224 | (15 & (code >> 12))));
-                back.push((128 | (63 & (code >> 6))));
-                back.push((128 | (63 & code)))
-            }
-        }
-        for (i = 0; i < back.length; i++) {
-            if (back[i] > 255) {
-                back[i] &= 255
-            }
-        }
-        if (isGetBytes) {
-            return back
-        }
-        if (byteSize <= 255) {
-            return [0, byteSize].concat(back);
-        } else {
-            return [byteSize >> 8, byteSize & 255].concat(back);
-        }
-    }
-
-    DApiUI.createApiInfoTable = function (apiInfo) {
-        var table = $('<table class="table table-hover table-bordered table-text-center"></table>');
-        var thead = $('<thead><tr><th colspan="2" style="text-align:center">API接口文档</th></tr></thead>');
-        table.append(thead);
-        var tbody = $('<tbody></tbody>');
-
-        var url = $('<tr><th class="active" style="text-align: right;">接口url</th><td style="text-align: left"><code>' + DApiUI.getStringValue(apiInfo.url) + '</code></td></tr>');
-        tbody.append(url);
-
-        var summary = $('<tr><th class="active" style="text-align: right;">接口名称</th><td style="text-align: left">' + DApiUI.getStringValue(apiInfo.summary) + '</td></tr>');
-        tbody.append(summary);
-
-
-        var description = $('<tr><th class="active" style="text-align: right;">说明</th><td style="text-align: left">' + DApiUI.getStringValue(apiInfo.description) + '</td></tr>');
-        tbody.append(description);
-
-        var methodType = $('<tr><th class="active" style="text-align: right;">请求方式</th><td style="text-align: left"><code>' + DApiUI.getStringValue(apiInfo.methodType) + '</code></td></tr>');
-        tbody.append(methodType);
-
-        var consumesArr = DApiUI.getValue(apiInfo, "consumes", new Array(), true);
-
-
-        var consumes = $('<tr><th class="active" style="text-align: right;">consumes</th><td style="text-align: left"><code>' + consumesArr + '</code></td></tr>');
-        tbody.append(consumes);
-
-        var producesArr = DApiUI.getValue(apiInfo, "produces", new Array(), true);
-
-        var produces = $('<tr><th class="active" style="text-align: right;">produces</th><td style="text-align: left"><code>' + producesArr + '</code></td></tr>');
-        tbody.append(produces);
-
-        //请求参数
-        var args = $('<tr><th class="active" style="text-align: right;">请求参数</th></tr>');
-        //判断是否有请求参数
-        if (typeof (apiInfo.parameters) != 'undefined' && apiInfo.parameters != null) {
-            var ptd = $("<td></td>");
-            var ptable = $('<table class="table table-bordered" id="requestModelTable"></table>')
-            var phead = $('<thead><th>参数名称</th><th>说明</th><th>类型</th><th>in</th><th>是否必须</th></thead>');
-            ptable.append(phead);
-            var pbody = $('<tbody></tbody>');
-            var requestArrs = new Array();
-            $.each(apiInfo.parameters, function (i, param) {
-                //判断是否是ref,如果是,列出他的属性说明
-                var refflag = false;
-                //判断是否有type属性,如果有,则后端为实体类形参
-                var ptype = "string";
-                var refType = "";
-                if (param.hasOwnProperty("type")) {
-                    ptype = param["type"];
-                } else {
-                    ///判断是有schma
-                    if (param.hasOwnProperty("schema")) {
-                        var schema = param["schema"];
-                        //是否有type
-                        if (schema.hasOwnProperty("type")) {
-                            ptype = schema["type"];
-                            if (ptype == "array") {
-                                var itm = schema["items"];
-                                if (itm.hasOwnProperty("$ref")) {
-                                    //是否是ref
-                                    var regex = new RegExp("#/definitions/(.*)$", "ig");
-                                    if (regex.test(itm["$ref"])) {
-                                        refflag = true;
-                                        refType = RegExp.$1;
-                                    }
-                                }
-                            }
-                        } else if (schema.hasOwnProperty("$ref")) {
-                            //是否是ref
-                            var regex = new RegExp("#/definitions/(.*)$", "ig");
-                            if (regex.test(schema["$ref"])) {
-                                refflag = true;
-                                ptype = RegExp.$1;
-                            }
-                        }
-                    }
-                }
-                var ptr = null;
-                //列出属性
-                var pobject = {
-                    id: generUUID(),
-                    field: param.name,
-                    description: DApiUI.getStringValue(param['description']),
-                    type: ptype,
-                    in: DApiUI.getStringValue(param['in']),
-                    required: param['required'],
-                    pid: ""
-                };
-                requestArrs.push(pobject);
-                /*if (refflag){
-                    ptr=$('<tr><td>'+param.name+'</td><td style="text-align: center;">'+DApiUI.getStringValue(param['description'])+'</td><td>'+ptype+'</td><td>'+DApiUI.getStringValue(param['in'])+'</td><td>'+param['required']+'</td></tr>');
-                    pbody.append(ptr);
-                    var definitionsArray=DApiUI.getDoc().data("definitionsArray");
-                    var mcs=DApiUI.getMenuConstructs();
-                    for(var k in mcs.definitions){
-                        if(ptype==k){
-                            var tp=mcs.definitions[ptype];
-                            var props=tp["properties"];
-                            for(var prop in props){
-                                var pvalue=props[prop];
-                                var tr=$("<tr></tr>")
-                                tr.append($("<td style='text-align: right;'>"+prop+"</td>"))
-                                tr.append($("<td>"+DApiUI.toString(pvalue.description,"")+"</td>"));
-                                var type=DApiUI.toString(pvalue.type,"string");
-                                tr.append($("<td>"+type+"</td>"));
-                                tr.append($("<td>"+DApiUI.getStringValue(param['in'])+"</td>"));
-                                tr.append($("<td>"+param['required']+"</td>"));
-                                pbody.append(tr);
-                            }
-                        }
-                    }
-                }else{
-                    ptr=$('<tr><td>'+param.name+'</td><td style="text-align: center;">'+DApiUI.getStringValue(param['description'])+'</td><td>'+ptype+'</td><td>'+DApiUI.getStringValue(param['in'])+'</td><td>'+param['required']+'</td></tr>');
-                    pbody.append(ptr);
-                }*/
-                if (refflag) {
-                    myFun(pobject, refType, param, requestArrs);
-                    /* var mcs=DApiUI.getMenuConstructs();
-                     for(var k in mcs.definitions){
-                         if(ptype==k){
-                             var tp=mcs.definitions[ptype];
-                             var props=tp["properties"];
-                             for(var prop in props){
-                                 var pvalue=props[prop];
-                                 var type=DApiUI.toString(pvalue.type,"string");
-                                 var cobj={id:generUUID(),field:prop,description:DApiUI.toString(pvalue.description,""),type:type,in:DApiUI.getStringValue(param['in']),required:param['required'],pid:pobject.id};
-                                 requestArrs.push(cobj);
-                             }
-                         }
-                     }*/
-                }
-            })
-            if (requestArrs.length > 0) {
-                for (var i = 0; i < requestArrs.length; i++) {
-                    var arrInfo = requestArrs[i];
-                    var treeClassId = "treegrid-" + arrInfo.id;
-                    var treeClassPId = "";
-                    if (arrInfo.pid != "") {
-                        treeClassPId = "treegrid-parent-" + arrInfo.pid;
-                    }
-                    var tr = $("<tr class='" + treeClassId + " " + treeClassPId + "'></tr>");
-                    tr.append("<td>" + arrInfo.field + "</td><td>" + arrInfo.description + "</td><td>" + arrInfo.type + "</td><td>" + arrInfo.in + "</td><td>" + arrInfo.required + "</td>");
-                    pbody.append(tr);
-                }
-            } else {
-                tbody.append("<tr><td colspan='5'>暂无</td></tr>")
-            }
-            ptable.append(pbody);
-            ptd.append(ptable);
-            args.append(ptd);
-        } else {
-            args.append($('<td  style="text-align: left">暂无</td>'));
-        }
-        tbody.append(args);
-        //响应数据结构
-        var responseConstruct = $('<tr><th class="active" style="text-align: right;">响应Model</th></tr>');
-        var responseConstructtd = $('<td  style="text-align: left"></td>')
-        responseConstructtd.append(DApiUI.createResponseDefinition(apiInfo));
-        responseConstruct.append(responseConstructtd);
-        tbody.append(responseConstruct)
-
-        //响应参数 add by xiaoymin 2017-8-20 16:17:18
-        var respParams = $('<tr><th class="active" style="text-align: right;">响应参数说明</th></tr>');
-        var respPart = $('<td  style="text-align: left"></td>');
-        respPart.append(DApiUI.createResponseDefinitionDetail(apiInfo));
-        respParams.append(respPart);
-
-        tbody.append(respParams);
-
-        //响应状态码
-        var response = $('<tr><th class="active" style="text-align: right;">响应</th></tr>');
-        if (typeof (apiInfo.responses) != 'undefined' && apiInfo.responses != null) {
-            var resp = apiInfo.responses;
-            var ptd = $("<td></td>");
-            var ptable = $('<table class="table table-bordered"></table>')
-            var phead = $('<thead><th>状态码</th><th>说明</th><th>schema</th></thead>');
-            ptable.append(phead);
-            var pbody = $('<tbody></tbody>');
-            for (var status in resp) {
-                var rescrobj = resp[status];
-                var schematd = $("<td></td>");
-                //判断是否存在schma
-                if (rescrobj.hasOwnProperty("schema")) {
-                    var schema = rescrobj["schema"];
-                    var regex = new RegExp("#/definitions/(.*)$", "ig");
-                    if (regex.test(schema["$ref"])) {
-                        var ptype = RegExp.$1;
-                        schematd.append(ptype);
-                    }
-                }
-                var tr = $("<tr></tr>")
-                var statusTd = $("<td>" + status + "</td>");
-                var description = $("<td>" + rescrobj["description"] + "</td>");
-                tr.append(statusTd).append(description).append(schematd);
-                pbody.append(tr);
-
-            }
-            /*if(resp.hasOwnProperty("200")){
-                var ptr=$('<tr><td>200</td><td>http响应成功</td><td></td></tr>');
-                pbody.append(ptr);
-            }
-            //400
-            pbody.append($('<tr><td>400</td><td>Bad Request 请求出现语法错误,一般是请求参数不对</td><td></td></tr>'));
-            //404
-            pbody.append($('<tr><td>404</td><td>Not Found 无法找到指定位置的资源</td><td></td></tr>'));
-            //401
-            pbody.append($('<tr><td>401</td><td>Unauthorized 访问被拒绝</td><td></td></tr>'));
-            //403
-            pbody.append($('<tr><td>403</td><td>Forbidden 资源不可用</td><td></td></tr>'));
-            //500
-            pbody.append($('<tr><td>500</td><td>服务器内部错误,请联系Java后台开发人员!!!</td><td></td></tr>'));*/
-            ptable.append(pbody);
-            ptd.append(ptable);
-            response.append(ptd);
-        } else {
-            response.append($("<td>暂无</td>"));
-        }
-        tbody.append(response);
-        table.append(tbody);
-
-        DApiUI.creatabTab();
-        //内容覆盖
-        //DApiUI.getDoc().html("");
-        //查找接口doc
-        DApiUI.getDoc().find("#tab1").find(".panel-body").html("")
-        DApiUI.getDoc().find("#tab1").find(".panel-body").append(table);
-        //DApiUI.getDoc().append(table);
-
-        setTimeout(function () {
-            DApiUI.log("执行treegrid方法...")
-            //请求参数调用treegruid方法
-            $("#requestModelTable").treegrid({
-                expanderExpandedClass: 'glyphicon glyphicon-minus',
-                expanderCollapsedClass: 'glyphicon glyphicon-plus'
-            });
-        }, 100);
-
-    }
-
-    /***
-     * 响应参数详情
-     * @param apiInfo
-     */
-    DApiUI.createResponseDefinitionDetail = function (apiInfo) {
-        var resp = apiInfo.responses;
-        var div = $("<div class='panel'></div>");
-        if (resp.hasOwnProperty("200")) {
-            var ok = resp["200"];
-            if (ok.hasOwnProperty("schema")) {
-                var schema = ok["schema"];
-                var ref = schema["$ref"];
-                var regex = new RegExp("#/definitions/(.*)$", "ig");
-                if (regex.test(ref)) {
-                    var refType = RegExp.$1;
-                    var definitionsArray = DApiUI.getDoc().data("definitionsArray");
-                    var mcs = DApiUI.getMenuConstructs();
-                    for (var k in mcs.definitions) {
-                        if (refType == k) {
-                            var table = $("<table class=\"table table-bordered\" id='modelPropertisTab'>");
-                            table.append('<thead><tr><th>参数名称</th><th>类型</th><th>说明</th></tr></thead>');
-                            var tp = mcs.definitions[refType];
-                            var props = tp["properties"];
-
-                            var arrInfos = new Array();
-
-                            var tbody = $("<tbody></tbody>")
-                            for (var prop in props) {
-                                deepTree("", prop, props, mcs.definitions, arrInfos);
-                            }
-                            if (arrInfos.length > 0) {
-                                for (var i = 0; i < arrInfos.length; i++) {
-                                    var arrInfo = arrInfos[i];
-                                    var treeClassId = "treegrid-" + arrInfo.id;
-                                    var treeClassPId = "";
-                                    if (arrInfo.pid != "") {
-                                        treeClassPId = "treegrid-parent-" + arrInfo.pid;
-                                    }
-                                    var tr = $("<tr class='" + treeClassId + " " + treeClassPId + "'></tr>");
-                                    tr.append("<td>" + arrInfo.field + "</td><td>" + arrInfo.type + "</td><td>" + arrInfo.description + "</td>");
-                                    tbody.append(tr);
-                                }
-                            } else {
-                                tbody.append("<tr><td colspan='3'>暂无</td></tr>")
-                            }
-
-                            /*for(var prop in props){
-                                deepTree("",prop,props,mcs.definitions,arrInfos);
-                                var pvalue=props[prop];
-                                var tr=$("<tr></tr>")
-                                //只遍历一级属性
-                                //判断是否是ref
-                                if(pvalue.hasOwnProperty("$ref")){
-                                    var param_ref = pvalue["$ref"];
-                                    var regex1 = new RegExp("#/definitions/(.*)$", "ig");
-                                    if(regex1.test((param_ref))){
-                                        var ptype=RegExp.$1;
-                                        tr.append($("<td>"+prop+"</td>"))
-                                        tr.append($("<td>"+ptype+"</td>"))
-                                        tr.append($("<td></td>"))
-                                        tbody.append(tr);
-                                        for(var j in mcs.definitions) {
-                                            if (ptype == j) {
-                                                var tpp=mcs.definitions[ptype];
-                                                var pp_props=tpp["properties"];
-                                                for(var prop1 in pp_props) {
-                                                    var tr1=$("<tr></tr>")
-                                                    var pvalue1 = pp_props[prop1];
-                                                    tr1.append($("<td style='text-align: right;'>" + prop1 + "</td>"));
-                                                    tr1.append($("<td>"+DApiUI.getValue(pvalue1,"type","string",true)+"</td>"));
-                                                    tr1.append($("<td>"+DApiUI.getValue(pvalue1,"description","",true)+"</td>"));
-                                                    tbody.append(tr1);
-                                                }
-                                            }
-                                        }
-                                    }
-                                }else{
-                                    tr.append($("<td>"+prop+"</td>"))
-                                    var type=DApiUI.toString(pvalue.type,"string");
-                                    tr.append($("<td>"+type+"</td>"));
-                                    tr.append($("<td>"+DApiUI.toString(pvalue.description,"")+"</td>"));
-                                    tbody.append(tr);
-                                }
-                            }*/
-                            DApiUI.log("deepTree")
-                            DApiUI.log(arrInfos)
-                            table.append(tbody);
-                            div.append(table)
-                            setTimeout(function () {
-                                DApiUI.log("执行treegrid方法...")
-                                table.treegrid({
-                                    expanderExpandedClass: 'glyphicon glyphicon-minus',
-                                    expanderCollapsedClass: 'glyphicon glyphicon-plus'
-                                });
-                            }, 100);
-                        }
-                    }
-                }
-            }
-        }
-        return div;
-    }
-
-
-    function deepTree(pid, prop, props, definitions, arrs) {
-        var regex1 = new RegExp("#/definitions/(.*)$", "ig");
-        var pvalue = props[prop];
-        if (pvalue.hasOwnProperty("$ref")) {
-            DApiUI.log("deepTree--ref---" + prop)
-            var param_ref = pvalue["$ref"];
-            if (regex1.test((param_ref))) {
-                var ptype = RegExp.$1;
-                var arrObj = {id: generUUID(), field: prop, type: ptype, description: "", pid: pid};
-                arrs.push(arrObj);
-                for (var j in definitions) {
-                    if (ptype == j) {
-                        var tpp = definitions[ptype];
-                        var pp_props = tpp["properties"];
-                        for (var prop1 in pp_props) {
-                            if (prop1 != prop) {
-                                deepTree(arrObj.id, prop1, pp_props, definitions, arrs);
-                            }
-                        }
-                    }
-                }
-            }
-        } else {
-            DApiUI.log("deepTree--single---" + prop)
-            //属性名称prop
-            var id = generUUID();
-            var type = DApiUI.toString(pvalue.type, "string");
-            var description = DApiUI.toString(pvalue.description, "");
-            var obj = {id: id, type: type, field: prop, description: description, pid: pid};
-            arrs.push(obj);
-            //判断是否是数组
-            if (type == "array") {
-                DApiUI.log("array...")
-                var items = pvalue["items"];
-                DApiUI.log(pvalue);
-                DApiUI.log(items);
-                DApiUI.log(pvalue.items);
-                if (items.hasOwnProperty("$ref")) {
-                    var item_ref = items["$ref"];
-                    DApiUI.log(item_ref);
-                    if (regex1.test((item_ref))) {
-                        var ptype = RegExp.$1;
-                        DApiUI.log(ptype);
-                        //获取到对象类名
-                        for (var j in definitions) {
-                            if (ptype == j) {
-                                var tpp = definitions[ptype];
-                                var pp_props = tpp["properties"];
-                                for (var prop1 in pp_props) {
-                                    if (prop1 != prop) {
-                                        deepTree(obj.id, prop1, pp_props, definitions, arrs);
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-
-            }
-        }
-    }
-
-
-    function randomNumber() {
-        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
-    }
-
-    /***
-     *
-     * 生成uuid
-     * @returns {string}
-     */
-    function generUUID() {
-        return (randomNumber() + randomNumber() + "-" + randomNumber() + "-" + randomNumber() + "-" + randomNumber() + "-" + randomNumber() + randomNumber() + randomNumber());
-    }
-
-    /***
-     * 递归
-     */
-    function deepProperties(ref, obj) {
-        var regex = new RegExp("#/definitions/(.*)$", "ig");
-        if (regex.test(ref)) {
-            var refType = RegExp.$1;
-            var definitionsArray = DApiUI.getDoc().data("definitionsArray");
-
-        }
-    }
-
-
-    DApiUI.createResponseDefinition = function (apiInfo) {
-        var resp = apiInfo.responses;
-        var div = $("<div class='panel'>暂无</div>");
-        if (resp.hasOwnProperty("200")) {
-            var ok = resp["200"];
-            if (ok.hasOwnProperty("schema")) {
-                var schema = ok["schema"];
-                var ref = schema["$ref"];
-                var regex = new RegExp("#/definitions/(.*)$", "ig");
-                if (regex.test(ref)) {
-                    var refType = RegExp.$1;
-                    //这里去definitionsArrar查找,如果未找到,直接展示refType
-                    var flag = false;
-                    var htmlValue = refType;
-                    var definitionsArray = DApiUI.getDoc().data("definitionsArray");
-                    for (var i = 0; i < definitionsArray.length; i++) {
-                        var definition = definitionsArray[i];
-                        if (definition.key == refType) {
-                            flag = true;
-                            htmlValue = definition.value;
-                            break;
-
-                        }
-                    }
-                    div.html("")
-                    if (flag) {
-                        div.JSONView(htmlValue);
-                    } else {
-                        div.html(refType);
-                    }
-                } else {
-                    //未发现ref属性
-                    if (schema.hasOwnProperty("type")) {
-                        div.html("")
-                        var type = schema["type"];
-                        if (type == "array") {
-                            var items = schema["items"];
-                            ref = items["$ref"];
-                            var regex = new RegExp("#/definitions/(.*)$", "ig");
-                            if (regex.test(ref)) {
-                                var refType = RegExp.$1;
-                                //这里去definitionsArrar查找,如果未找到,直接展示refType
-                                var flag = false;
-                                var htmlValue = refType;
-                                var definitionsArray = DApiUI.getDoc().data("definitionsArray");
-                                for (var i = 0; i < definitionsArray.length; i++) {
-                                    var definition = definitionsArray[i];
-                                    if (definition.key == refType) {
-                                        flag = true;
-                                        htmlValue = definition.value;
-                                        break;
-
-                                    }
-                                }
-                                div.html("")
-                                if (flag) {
-                                    var obj = new Array();
-                                    obj.push(htmlValue);
-                                    div.JSONView(obj);
-                                } else {
-                                    div.html(refType);
-                                }
-                            }
-
-                        } else {
-                            div.html(type);
-                        }
-                    }
-                }
-            }
-        }
-        return div;
-    }
-
-
-    DApiUI.definitions = function (menu) {
-        var definitionsArray = new Array();
-        DApiUI.log("definitionsArray....")
-        if (menu != null && typeof (menu) != "undefined" && menu.hasOwnProperty("definitions")) {
-            var definitions = menu["definitions"];
-            for (var definition in definitions) {
-                var defiType = new definitionType();
-                defiType.key = definition;
-                //获取value
-                var value = definitions[definition];
-                if (checkUndefined(value)) {
-                    //是否有properties
-                    if (value.hasOwnProperty("properties")) {
-                        var properties = value["properties"];
-                        var defiTypeValue = {};
-                        for (var property in properties) {
-                            var propobj = properties[property];
-                            //默认string类型
-                            var propValue = "";
-                            //判断是否有类型
-                            if (propobj.hasOwnProperty("type")) {
-                                var type = propobj["type"];
-                                //判断是否有example
-                                if (propobj.hasOwnProperty("example")) {
-                                    propValue = propobj["example"];
-                                } else if (checkIsBasicType(type)) {
-                                    propValue = getBasicTypeValue(type);
-                                } else {
-                                    if (type == "array") {
-                                        propValue = new Array();
-                                        var items = propobj["items"];
-                                        var ref = items["$ref"];
-                                        var regex = new RegExp("#/definitions/(.*)$", "ig");
-                                        if (regex.test(ref)) {
-                                            var refType = RegExp.$1;
-                                            //这里需要递归判断是否是本身,如果是,则退出递归查找
-                                            if (refType != definition) {
-                                                propValue.push(findRefDefinition(refType, definitions, false));
-                                            } else {
-                                                propValue.push(findRefDefinition(refType, definitions, true));
-                                            }
-                                        }
-                                    }
-                                }
-
-                            } else {
-                                if (propobj.hasOwnProperty("$ref")) {
-                                    var ref = propobj["$ref"];
-                                    var regex = new RegExp("#/definitions/(.*)$", "ig");
-                                    if (regex.test(ref)) {
-                                        var refType = RegExp.$1;
-                                        //这里需要递归判断是否是本身,如果是,则退出递归查找
-                                        if (refType != definition) {
-                                            propValue = findRefDefinition(refType, definitions, false);
-                                        } else {
-                                            propValue = findRefDefinition(refType, definitions, true);
-                                        }
-
-                                    }
-                                } else {
-                                    propValue = {};
-                                }
-                            }
-                            defiTypeValue[property] = propValue;
-                        }
-                        defiType.value = defiTypeValue;
-                    } else {
-                        defiType.value = {};
-                    }
-                }
-                definitionsArray.push(defiType);
-            }
-        }
-        DApiUI.getDoc().data("definitionsArray", definitionsArray);
-    }
-
-    DApiUI.getDefinitions = function () {
-        return DApiUI.getDoc().data("definitionsArray");
-    }
-
-    function checkIsBasicType(type) {
-        var basicTypes = ["string", "integer", "number", "object", "boolean"];
-        var flag = false;
-        if ($.inArray(type, basicTypes) > -1) {
-            flag = true;
-        }
-        return flag;
-    }
-
-    function getBasicTypeValue(type) {
-        var propValue = "";
-        //是否是基本类型
-        if (type == "integer") {
-            propValue = 0;
-        }
-        if (type == "boolean") {
-            propValue = true;
-        }
-        if (type == "object") {
-            propValue = {};
-        }
-        if (type == "number") {
-            propValue = parseFloat(0);
-        }
-        return propValue;
-    }
-
-    function findRefDefinition(definitionName, definitions, flag) {
-        var defaultValue = "";
-        for (var definition in definitions) {
-            if (definitionName == definition) {
-                var value = definitions[definition];
-                //是否有properties
-                if (value.hasOwnProperty("properties")) {
-                    var properties = value["properties"];
-                    var defiTypeValue = {};
-                    for (var property in properties) {
-                        var propobj = properties[property];
-                        //默认string类型
-                        var propValue = "";
-                        //判断是否有类型
-                        if (propobj.hasOwnProperty("type")) {
-                            var type = propobj["type"];
-                            //判断是否有example
-                            if (propobj.hasOwnProperty("example")) {
-                                propValue = propobj["example"];
-                            } else if (checkIsBasicType(type)) {
-                                propValue = getBasicTypeValue(type);
-                            } else {
-                                if (type == "array") {
-                                    propValue = new Array();
-                                    var items = propobj["items"];
-                                    var ref = items["$ref"];
-                                    var regex = new RegExp("#/definitions/(.*)$", "ig");
-                                    if (regex.test(ref)) {
-                                        var refType = RegExp.$1;
-                                        if (!flag) {
-                                            //非递归查找
-                                            if (refType != definitionName) {
-                                                propValue.push(findRefDefinition(refType, definitions, flag));
-                                            } else {
-                                                propValue.push(findRefDefinition(refType, definitions, true));
-                                            }
-                                        }
-
-                                    }
-                                }
-                            }
-
-                        } else {
-
-                        }
-                        defiTypeValue[property] = propValue;
-                    }
-                    defaultValue = defiTypeValue;
-                } else {
-                    defaultValue = {};
-                }
-            }
-        }
-        return defaultValue;
-    }
-
-    function checkUndefined(obj) {
-        var flag = false;
-        if (obj != null && typeof (obj) != "undefined") {
-            flag = true;
-        }
-        return flag;
-    }
-
-
-    function definitionType() {
-        this.key = "";
-        this.value = {};
-    }
-
-
-    /***
-     * 获取默认请求参数类型
-     * @param obj
-     * @returns {string}
-     */
-    DApiUI.getDefaultRequiredType = function (obj) {
-        var t = "string";
-        if (typeof (obj) != 'undefined' && obj != null) {
-            t = obj.toString();
-        }
-        return t;
-    }
-
-    /***
-     * 查找子类
-     * @param tagInfo
-     * @param menu
-     */
-    DApiUI.initChildrens = function (tagInfo, menu) {
-
-    }
-
-    DApiUI.getDoc = function () {
-        return $("#content");
-    }
-    DApiUI.getMenu = function () {
-        return $("#menu");
-    }
-
-    DApiUI.log = function (msg) {
-        if (window.console) {
-            console.log(msg);
-        }
-    }
-    DApiUI.init();
-
-
-    /***
-     * 标签组信息
-     * @constructor
-     */
-    function TagInfo(name, description) {
-        this.name = name;
-        this.description = description;
-        this.childrens = new Array();
-    }
-
-
-    /***
-     * api实体信息
-     * @param options
-     * @constructor
-     */
-    function ApiInfo(options) {
-        //判断options
-        this.tag = [];
-        this.url = "";
-        this.description = "";
-        this.operationId = "";
-        this.parameters = new Array();
-        this.produces = new Array();
-        this.responses = {};
-        this.methodType = "post";
-        this.consumes = new Array();
-        this.summary = "";
-        if (options != null && typeof (options) != 'undefined') {
-            this.tag = options.tags;
-            this.description = options.description;
-            this.operationId = options.operationId;
-            this.summary = options.summary;
-            this.parameters = options.parameters;
-            this.produces = options.produces;
-            this.responses = options.responses;
-            this.consumes = options.consumes;
-        }
-
-    }
-
-    /*create by xujingyang 2018/06/30  修复参数类属性还是实体类不显示的问题,递归获取*/
-    function myFun(pobject, ptype, param, requestArrs) {
-        var mcs = DApiUI.getMenuConstructs();
-        for (var k in mcs.definitions) {
-            if (ptype == k) {
-                var tp = mcs.definitions[ptype];
-                var props = tp["properties"];
-                for (var prop in props) {
-                    var pvalue = props[prop];
-                    var type = DApiUI.toString(pvalue.type, "string");
-                    var cobj = {
-                        id: generUUID(),
-                        field: prop,
-                        description: DApiUI.toString(pvalue.description, ""),
-                        type: type,
-                        in: DApiUI.getStringValue(param['in']),
-                        required: param['required'],
-                        pid: pobject.id
-                    };
-                    requestArrs.push(cobj);
-                    if (pvalue.hasOwnProperty("items")) {
-                        var myItems = pvalue["items"];
-                        if (myItems.hasOwnProperty("$ref")) {
-                            //是否是ref
-                            var regex = new RegExp("#/definitions/(.*)$", "ig");
-                            if (regex.test(myItems["$ref"])) {
-                                refflag = true;
-                                ptype2 = RegExp.$1;
-                                myFun(cobj, ptype2, param, requestArrs);
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-
-})(jQuery)

+ 0 - 206
src/main/resources/static/styles/cdao/swaggerbootstrapui.css

@@ -1,206 +0,0 @@
-.bycdao-left {
-    width: 310px;
-    margin-top: 0px;
-    position: fixed;
-    background: #337ab7;
-    height: 100%;
-    transition: all 0.2s;
-}
-.bycdao-main {
-    margin-left: 310px;
-    padding-top: 5px;
-    /* padding-left: 15px;*/
-    padding-right: 15px;
-    transition: all 0.2s;
-}
-
-.tab-content {
-    /* border: 1px solid #c5d0dc; */
-    /* padding: 16px 12px; */
-    position: relative;
-    z-index: 11;
-}
-.nav-list {
-    margin: 0;
-    padding: 0;
-    list-style: none;
-}
-.nav-list>li {
-    display: block;
-    padding: 0;
-    margin: 0;
-    border: 0;
-    border-top: 1px solid #fcfcfc;
-    border-bottom: 1px solid #e5e5e5;
-    position: relative;
-}
-.nav-list>li.active {
-    background-color: #fff;
-}
-
-.nav-list>li.active>a, .nav-list>li.active>a:hover, .nav-list>li.active>a:focus, .nav-list>li.active>a:active {
-    background-color: #fff;
-    color: #2b7dbc;
-    font-weight: bold;
-    font-size: 13px;
-}
-
-.nav-list>li>a {
-    display: block;
-    height: 38px;
-    line-height: 36px;
-    padding: 0 16px 0 7px;
-    background-color: #f9f9f9;
-    color: #585858;
-    text-shadow: none!important;
-    font-size: 13px;
-    text-decoration: none;
-}
-.nav-list>li>a, .nav-list .nav-header {
-    margin: 0;
-}
-
-.nav-list>li.open>a {
-    background-color: #fafafa;
-    color: #1963aa;
-}
-
-.nav-list>li>a>[class*="icon-"]:first-child {
-    display: inline-block;
-    vertical-align: middle;
-    min-width: 30px;
-    text-align: center;
-    font-size: 18px;
-    font-weight: normal;
-    margin-right: 2px;
-}
-.nav-list>li a>.arrow {
-    display: inline-block;
-    width: 14px!important;
-    height: 14px;
-    line-height: 14px;
-    text-shadow: none;
-    font-size: 18px;
-    position: absolute;
-    right: 11px;
-    top: 11px;
-    padding: 0;
-    color: #666;
-}
-.nav-list a .badge, .nav-list a .label {
-    font-size: 12px;
-    padding-left: 6px;
-    padding-right: 6px;
-    position: absolute;
-    top: 9px;
-    right: 11px;
-    opacity: .88;
-}
-
-.label-primary, .badge-primary {
-    background-color: #428bca!important;
-}
-.badge {
-    text-shadow: none;
-    font-size: 12px;
-    padding-top: 1px;
-    padding-bottom: 3px;
-    font-weight: normal;
-    line-height: 15px;
-
-}
-.badge-primary, .label-primary {
-    background-color: #1ab394;
-}
-.nav-list>li>.submenu:before {
-    content: "";
-    display: block;
-    position: absolute;
-    z-index: 1;
-    left: 18px;
-    top: 0;
-    bottom: 0;
-    border: 1px dotted #9dbdd6;
-    border-width: 0 0 0 1px;
-}
-.nav-list li .submenu {
-    overflow: hidden;
-}
-
-.nav-list>li.active:after {
-    display: inline-block;
-    content: "";
-    position: absolute;
-    right: -2px;
-    top: -1px;
-    bottom: 0;
-    z-index: 1;
-    border: 2px solid #2b7dbc;
-    border-width: 0 2px 0 0;
-}
-.nav-list>li .submenu {
-    display: none;
-    list-style: none;
-    margin: 0;
-    padding: 0;
-    position: relative;
-    background-color: #fff;
-    border-top: 1px solid #e5e5e5;
-}
-
-.nav-list>li .submenu>li {
-    margin-left: 0;
-    position: relative;
-}
-.nav-list>li>.submenu>li:before {
-    content: "";
-    display: inline-block;
-    position: absolute;
-    width: 7px;
-    left: 20px;
-    top: 17px;
-    border-top: 1px dotted #9dbdd6;
-}
-
-li [class^="icon-"], li [class*=" icon-"], .nav-list li [class^="icon-"], .nav-list li [class*=" icon-"] {
-    width: auto;
-}
-.nav-tabs>li>a:hover {
-    /* background-color: #FFF; */
-    /* color: #4c8fbd; */
-    /* border-color: #c5d0dc; */
-}
-.menuLi{
-    border: 1px solid #f3f3f4;
-    padding: 1px 2px;
-    margin-bottom: 2px;
-    margin-top: 3px;
-}
-.menuLi .mhed{
-    cursor: pointer;
-    padding-left: 30px;
-}
-
-code {
-    padding: 2px 4px;
-    font-size: 90%;
-    color: #c7254e;
-    background-color: #fff;
-    border-radius: 4px;
-}
-
-
-.swu-left{
-    float: left;
-}
-
-.swu-menu{
-    display: block;
-    width: 55px;
-}
-.swu-hei{
-    height: 20px;
-}
-.swu-wd-20{
-    width: 20px;
-}

+ 0 - 1761
src/main/resources/static/styles/cdao/swaggerbootstrapui.js

@@ -1,1761 +0,0 @@
-/***
- * create by xiaoymin on 2018-7-4 15:32:07
- * 重构swagger-bootstrap-ui组件,为以后动态扩展更高效,扩展接口打下基础
- */
-(function ($) {
-
-    var SwaggerBootstrapUi = function () {
-        //swagger请求api地址
-        this.url = "swagger-resources";
-        //文档id
-        this.docId = "content";
-
-        this.menuId = "menu";
-        //实例分组
-        this.instances = new Array();
-        //当前分组实例
-        this.currentInstance = null;
-    }
-    /***
-     * swagger-bootstrap-ui的main方法,初始化文档所有功能,类似于SpringBoot的main方法
-     */
-    SwaggerBootstrapUi.prototype.main = function () {
-        var that = this;
-        //加载分组接口
-        that.analysisGroup();
-        //创建分组元素
-        that.createGroupElement();
-    }
-    /***
-     * 调用swagger的分组接口,获取swagger分组信息,包括分组名称,接口url地址,版本号等
-     */
-    SwaggerBootstrapUi.prototype.analysisGroup = function () {
-        var that = this;
-        $.ajax({
-            url: that.url,
-            type: "get",
-            async: false,
-            success: function (data) {
-                //获取分组名称
-                var groupData = data;
-                $.each(groupData, function (i, group) {
-                    var g = new SwaggerBootstrapUiInstance(group.name, group.location, group.swaggerVersion);
-                    that.instances.push(g);
-                })
-            }
-        })
-    }
-    /***
-     * 基础实例赋值
-     * @param menu
-     */
-    SwaggerBootstrapUi.prototype.setInstanceBasicPorperties = function (menu) {
-        var that = this;
-        var title = "", description = "", name = "", version = "", termsOfService = "";
-        var host = $.getValue(menu, "host", "", true);
-        if (menu.hasOwnProperty("info")) {
-            var info = menu.info;
-            title = $.getValue(info, "title", "API接口文档", true);
-            description = $.getValue(info, "description", "", true);
-            if (info.hasOwnProperty("contact")) {
-                var contact = info["contact"];
-                name = $.getValue(contact, "name", "", true);
-            }
-            version = $.getValue(info, "version", "", true);
-            termsOfService = $.getValue(info, "termsOfService", "", true);
-        }
-        that.currentInstance.host = host;
-        that.currentInstance.title = title;
-        that.currentInstance.description = description;
-        that.currentInstance.contact = name;
-        that.currentInstance.version = version;
-        that.currentInstance.termsOfService = termsOfService;
-    }
-    /***
-     * 加载swagger的分组详情接口
-     * @param instance 分组接口请求实例
-     */
-    SwaggerBootstrapUi.prototype.analysisApi = function (instance) {
-        var that = this;
-        //赋值
-        that.currentInstance = instance;
-        if (!that.currentInstance.load) {
-            var api = instance.location;
-            //这里判断url请求是否已加载过
-            //防止出现根路径的情况
-            var idx = api.indexOf("/");
-            if (idx == 0) {
-                api = api.substr(1);
-            }
-            that.log("截取后的url:" + api);
-            $.ajax({
-                //url:"v2/api-docs",
-                url: api,
-                dataType: "json",
-                type: "get",
-                async: false,
-                success: function (data) {
-                    //var menu=JSON.parse(data)
-                    var menu = data;
-                    that.setInstanceBasicPorperties(menu);
-                    that.analysisDefinition(menu);
-                    //DApiUI.definitions(menu);
-                    that.log(menu);
-                    that.createDescriptionElement();
-                    //当前实例已加载
-                    that.currentInstance.load = true;
-                    //创建swaggerbootstrapui主菜单
-                    that.createDetailMenu();
-                }
-            })
-        } else {
-            that.createDescriptionElement();
-            that.createDetailMenu();
-        }
-    }
-    /***
-     * 创建左侧菜单按钮
-     * @param menu
-     */
-    SwaggerBootstrapUi.prototype.createDetailMenu = function () {
-        var that = this;
-        that.getMenu().find(".detailMenu").remove();
-        //简介li
-        var dli = $('<li  class="active detailMenu"><a href="javascript:void(0)"><i class="icon-text-width"></i><span class="menu-text"> 简介 </span></a></li>')
-        dli.on("click", function () {
-            that.log("简介click");
-            that.createDescriptionElement();
-            that.getMenu().find("li").removeClass("active");
-            dli.addClass("active");
-        });
-        that.getMenu().append(dli);
-
-        /*//全局参数菜单功能
-        var globalArgsLi=$("<li  class=\"detailMenu\"><a href=\"javascript:void(0)\"><i class=\"icon-text-width\"></i><span class=\"menu-text\"> 全局参数设置 </span></a></li>");
-        globalArgsLi.on("click",function () {
-            that.getMenu().find("li").removeClass("active");
-            globalArgsLi.addClass("active");
-            that.createGlobalParametersElement();
-        });
-        that.getMenu().append(globalArgsLi);
-        //离线文档功能
-        var mddocli=$("<li  class=\"detailMenu\"><a href=\"javascript:void(0)\"><i class=\"icon-text-width\"></i><span class=\"menu-text\"> 离线文档(MD) </span></a></li>");
-        mddocli.on("click",function () {
-            that.log("离线文档功能click");
-            that.createMarkdownTab();
-            that.getMenu().find("li").removeClass("active");
-            mddocli.addClass("active");
-        });
-        that.getMenu().append(mddocli);*/
-
-        $.each(that.currentInstance.tags, function (i, tag) {
-            var len = tag.childrens.length;
-            if (len == 0) {
-                var li = $('<li class="detailMenu"><a href="javascript:void(0)"><i class="icon-text-width"></i><span class="menu-text"> ' + tag.name + ' </span></a></li>');
-                that.getMenu().append(li);
-            } else {
-                //存在子标签
-                var li = $('<li  class="detailMenu"></li>');
-                var titleA = $('<a href="#" class="dropdown-toggle"><i class="icon-file-alt"></i><span class="menu-text">' + tag.name + '<span class="badge badge-primary ">' + len + '</span></span><b class="arrow icon-angle-down"></b></a>');
-                li.append(titleA);
-                //循环树
-                var ul = $('<ul class="submenu"></ul>');
-                $.each(tag.childrens, function (i, children) {
-                    /*var childrenLi=$('<li class="menuLi" ><div class="mhed"><div class="swu-hei"><span class="swu-menu swu-left">'+children.methodType.toUpperCase()+'</span><span class="swu-menu swu-left"><code>'+children.url+'</code></span></div><div>'+children.summary+'</div></div></li>');*/
-                    var curTitle = children.summary;
-                    if (curTitle.length > 15) {
-                        curTitle = curTitle.substring(0, 15) + '...';
-                    }
-                    var childrenLi = $('<li class="menuLi" ><div class="mhed"><div>' + (i + 1) + '、' + curTitle + '</div></div></li>');
-                    childrenLi.data("data", children);
-                    ul.append(childrenLi);
-                });
-                li.append(ul);
-                that.getMenu().append(li);
-            }
-        })
-        that.log("菜单初始化完成...");
-        //DApiUI.initLiClick();
-        that.initializationMenuClickEvents();
-    }
-    /***
-     * 创建全局参数
-     */
-    SwaggerBootstrapUi.prototype.createGlobalParametersElement = function () {
-        var that = this;
-        that.log(that.currentInstance)
-        //内容覆盖
-        that.getDoc().html("");
-        setTimeout(function () {
-            var html = template('GlobalParamScript', that.currentInstance);
-            that.getDoc().html(html);
-
-            that.log("注册btnAddParam-click事件")
-            that.log(that.getDoc().find("#btnAddParam"))
-            //初始化添加按钮click事件
-            that.getDoc().find("#btnAddParam").on("click", function (e) {
-                e.preventDefault();
-                that.log("btnAddParam-click")
-                var tr = $("<tr></tr>");
-                //输入参数名称
-                var nameTd = $("<td><input class=\"form-control p-key\" value=\"\" data-old=''></td>");
-                //参数值
-                var valueTd = $("<td><input class=\"form-control p-key\" value=\"\"></td>");
-                //参数类型
-                var typeTd = $("<td><select class='form-control'><option value='header'>header</option><option value='query'>query</option></select></td>");
-                //操作
-                var operateTd = $("<td>&nbsp;&nbsp;</td>")
-                var btnSave = $("<button class=\"btn btn-circle btn-info btn-small btn-save\" type=\"button\">保存</button>");
-                var btnCancel = $("<button class=\"btn btn-circle  btn-danger btn-small btn-cancel\" type=\"button\">删除</button>");
-                operateTd.append(btnSave).append("&nbsp;&nbsp;").append(btnCancel);
-                tr.append(nameTd).append(valueTd).append(typeTd).append(operateTd);
-                that.getDoc().find("#globalTabBody").append(tr);
-                //保存事件
-                btnSave.on("click", function (e) {
-                    e.preventDefault();
-                    var save = $(this);
-                    var ptr = save.parent().parent();
-                    var name = ptr.find("td:eq(0)").find("input:first").val();
-                    var oldname = ptr.find("td:eq(0)").find("input:first").data("old");
-                    var value = ptr.find("td:eq(1)").find("input:first").val();
-                    var type = ptr.find("td:eq(2)").find("select:first").val();
-                    that.log("name:" + name + ",value:" + value + ",type:" + type + ",oldname:" + oldname);
-                    if (name == null || name == "") {
-                        layer.msg("请输入全局参数名称");
-                        return false;
-                    }
-                    if (value == null || value == "") {
-                        layer.msg("请输入全局参数值");
-                        return false;
-                    }
-                    var globalParameterInstance = new SwaggerBootstrapUiParameter();
-                    globalParameterInstance.name = name;
-                    globalParameterInstance.in = type;
-                    globalParameterInstance.value = value;
-                    globalParameterInstance.type = "string";
-                    globalParameterInstance.require = true;
-                    //判断old
-                    if (oldname != null && oldname != "" && oldname != name) {
-                        //删除旧参数
-                        that.deleteGlobalParamsByName(oldname);
-                    }
-                    if (!that.checkGlobalParamExists(globalParameterInstance)) {
-                        that.currentInstance.globalParameters.push(globalParameterInstance);
-                    } else {
-                        //存在,更新该参数的值
-                        that.updateGlobalParams(globalParameterInstance);
-                    }
-                    that.log("目前全局参数..")
-                    that.log(that.currentInstance.globalParameters);
-                    layer.msg("保存成功")
-                })
-                //取消时间
-                btnCancel.on("click", function (e) {
-                    e.preventDefault();
-                    var cancel = $(this);
-                    that.log(cancel)
-                    var ptr = cancel.parent().parent();
-                    var name = ptr.find("td:eq(0)").find("input:first").val();
-                    var oldname = ptr.find("td:eq(0)").find("input:first").data("old");
-                    if (oldname != name) {
-                        that.deleteGlobalParamsByName(oldname)
-                    }
-                    if (name != undefined && name != null && name != "") {
-                        that.deleteGlobalParamsByName(name);
-                    }
-                    cancel.parent().parent().remove();
-                    layer.msg("删除成功")
-                })
-            })
-
-            //全局保存事件
-            that.getDoc().find(".btn-save").on("click", function (e) {
-                var save = $(this);
-                var ptr = save.parent().parent();
-                var name = ptr.find("td:eq(0)").find("input:first").val();
-                var oldname = ptr.find("td:eq(0)").find("input:first").data("old");
-                var value = ptr.find("td:eq(1)").find("input:first").val();
-                var type = ptr.find("td:eq(2)").find("select:first").val();
-                that.log("name:" + name + ",value:" + value + ",type:" + type + ",oldname:" + oldname);
-                if (name == null || name == "") {
-                    layer.msg("请输入全局参数名称");
-                    return false;
-                }
-                if (value == null || value == "") {
-                    layer.msg("请输入全局参数值");
-                    return false;
-                }
-                var globalParameterInstance = new SwaggerBootstrapUiParameter();
-                globalParameterInstance.name = name;
-                globalParameterInstance.in = type;
-                globalParameterInstance.value = value;
-                that.log(oldname != name)
-                //判断old
-                if (oldname != name) {
-                    //删除旧参数
-                    that.deleteGlobalParamsByName(oldname);
-                }
-                if (!that.checkGlobalParamExists(globalParameterInstance)) {
-                    that.currentInstance.globalParameters.push(globalParameterInstance);
-                } else {
-                    //存在,更新该参数的值
-                    that.updateGlobalParams(globalParameterInstance);
-                }
-                that.log("目前全局参数..")
-                that.log(that.currentInstance.globalParameters);
-                layer.msg("保存成功")
-            })
-            //全局取消事件
-            that.getDoc().find(".btn-cancel").on("click", function (e) {
-                e.preventDefault();
-                var cancel = $(this);
-                that.log(cancel)
-                var ptr = cancel.parent().parent();
-                var name = ptr.find("td:eq(0)").find("input:first").val();
-                var oldname = ptr.find("td:eq(0)").find("input:first").data("old");
-                if (oldname != null && oldname != "") {
-                    that.deleteGlobalParamsByName(oldname)
-                }
-                if (name != undefined && name != null && name != "") {
-                    that.deleteGlobalParamsByName(name);
-                }
-                cancel.parent().parent().remove();
-                layer.msg("删除成功")
-            })
-
-        }, 100)
-
-
-    }
-    /***
-     * 判断全局参数是否存在
-     * @param param
-     */
-    SwaggerBootstrapUi.prototype.checkGlobalParamExists = function (param) {
-        var that = this;
-        var flag = false;
-        $.each(that.currentInstance.globalParameters, function (i, gp) {
-            if (gp.name == param.name) {
-                flag = true;
-            }
-        })
-        return flag;
-    }
-    SwaggerBootstrapUi.prototype.updateGlobalParams = function (param) {
-        var that = this;
-        $.each(that.currentInstance.globalParameters, function (i, gp) {
-            if (gp.name == param.name) {
-                gp.in = param.in;
-                gp.value = param.value;
-            }
-        })
-    }
-    /***
-     * 根据名称删除全局参数数组
-     * @param name
-     */
-    SwaggerBootstrapUi.prototype.deleteGlobalParamsByName = function (name) {
-        var that = this;
-        for (var i = 0; i < that.currentInstance.globalParameters.length; i++) {
-            var gp = that.currentInstance.globalParameters[i];
-            if (gp.name == name) {
-                that.currentInstance.globalParameters.splice(i, 1);
-            }
-        }
-    }
-    /***
-     * 初始化菜单点击事件
-     */
-    SwaggerBootstrapUi.prototype.initializationMenuClickEvents = function () {
-        var that = this;
-        that.getMenu().find(".menuLi").bind("click", function (e) {
-            e.preventDefault();
-            var menu = $(this);
-            var data = menu.data("data");
-            that.log("Li标签click事件");
-            that.log(data);
-            //获取parent-Li的class属性值
-            var parentLi = menu.parent().parent();
-            that.log(parentLi);
-            var className = parentLi.prop("class");
-            that.log(className)
-            that.getMenu().find("li").removeClass("active");
-            //parentLi.addClass("active");
-            menu.addClass("active");
-            that.createApiInfoTable(data);
-            //DApiUI.createDebugTab(data);
-        })
-    }
-
-    SwaggerBootstrapUi.prototype.createApiInfoTable = function (apiInfo) {
-        var that = this;
-        that.createTabElement();
-        //查找接口doc
-        that.getDoc().find("#tab1").find(".panel-body").html("")
-        setTimeout(function () {
-            var html = template('contentScript', apiInfo);
-            that.getDoc().find("#tab1").find(".panel-body").html(html)
-            that.markdownDocInit();
-        }, 100)
-        that.log(that.currentInstance);
-        //实现复制文档功能
-        //初始化copy按钮功能
-        var clipboard = new ClipboardJS('#copyDocHref', {
-            text: function () {
-                return $("#docText").val();
-            }
-        });
-        clipboard.on('success', function (e) {
-            layer.msg("复制成功")
-        });
-        clipboard.on('error', function (e) {
-            layer.msg("复制失败,您当前浏览器版本不兼容,请手动复制.")
-        });
-
-        //创建调试页面
-        //赋值全局参数
-        apiInfo.globalParameters = that.currentInstance.globalParameters;
-        that.getDoc().find("#tab2").find(".panel-body").html("");
-        var html = template('DebugScript', apiInfo);
-        that.getDoc().find("#tab2").find(".panel-body").html(html);
-        that.requestSend(apiInfo);
-
-    }
-
-    /***
-     * 发送请求
-     * @constructor
-     */
-    SwaggerBootstrapUi.prototype.requestSend = function (apiInfo) {
-        var that = this;
-        var btnRequest = that.getDoc().find("#tab2").find(".panel-body").find("#btnRequest");
-        var respcleanDiv = that.getDoc().find("#tab2").find(".panel-body").find("#responsebody");
-        btnRequest.on("click", function (e) {
-            e.preventDefault();
-            respcleanDiv.html("")
-
-            var params = {};
-            var headerparams = {};
-            var bodyparams = "";
-            //modify by xiaoyumin 2017-8-9 11:28:16
-            //增加表单验证
-            var validateflag = false;
-            var validateobj = {};
-
-            //获取参数
-            var paramBody = that.getDoc().find("#tab2").find("#paramBody")
-            that.log("paramsbody..")
-            that.log(paramBody)
-            //获取url
-            var url = $("#txtreqUrl").val();
-            if (url == null || url == "") {
-                layer.msg("请求url地址不能为空");
-                return false;
-            }
-            var bodyRequest = false;
-            paramBody.find("tr").each(function () {
-                var paramtr = $(this);
-                var cked = paramtr.find("td:first").find(":checked").prop("checked");
-                that.log(cked)
-                if (cked) {
-                    //如果选中
-                    var trdata = {
-                        name: paramtr.data("name"),
-                        in: paramtr.data("in"),
-                        required: paramtr.data("required"),
-                        type: paramtr.data("type")
-                    };
-                    that.log("trdata....")
-                    that.log(trdata);
-                    //获取key
-                    //var key=paramtr.find("td:eq(1)").find("input").val();
-                    var key = trdata["name"];
-                    //获取value
-                    var value = "";
-                    if (trdata["in"] == "body") {
-                        value = paramtr.find("td:eq(2)").find("textarea").val();
-                        //这里需要判断schema
-                        //直接判断那类型
-                        if (trdata.type == "MultipartFile") {
-                            value = paramtr.find("td:eq(2)").find("input").val();
-                        }
-                    } else {
-                        value = paramtr.find("td:eq(2)").find("input").val();
-                    }
-
-                    if (apiInfo.methodType == "delete") {
-                        //判断是否是path参数
-                        if (trdata["in"] == "path") {
-                            url = url.replace("{" + key + "}", value);
-                        } else {
-                            if (url.indexOf("?") > -1) {
-                                url = url + "&" + key + "=" + value;
-                            } else {
-                                url += "?" + key + "=" + value;
-                            }
-                        }
-                    } else {
-                        if (trdata["in"] == "path") {
-                            url = url.replace("{" + key + "}", value);
-                        } else {
-                            if (trdata["in"] == "body") {
-                                bodyparams += value;
-                                bodyRequest = true;
-                            } else {
-                                if (trdata["in"] == "header") {
-                                    headerparams[key] = value;
-                                } else {
-                                    params[key] = value;
-                                }
-                            }
-                        }
-                    }
-                    //判断是否required
-                    if (trdata.hasOwnProperty("required")) {
-                        var required = trdata["required"];
-                        if (required) {
-                            //必须,验证value是否为空
-                            if (value == null || value == "") {
-                                validateflag = true;
-                                var des = trdata["name"]
-                                validateobj = {message: des + "不能为空"};
-                                return false;
-                            }
-                        }
-
-                    }
-                    that.log("key:" + key + ",value:" + value);
-                }
-            })
-            that.log("获取参数..")
-            that.log(params);
-            that.log(apiInfo)
-            that.log("请求url:" + url);
-            var reqdata = null;
-            var contType = "application/json; charset=UTF-8";
-            if (bodyRequest) {
-                reqdata = bodyparams;
-            } else {
-                reqdata = params;
-                contType = "application/x-www-form-urlencoded; charset=UTF-8";
-            }
-            //console.log(reqdata)
-            if (validateflag) {
-                layer.msg(validateobj.message);
-                return;
-            }
-
-            //判断是否有表单
-            var form = $("#uploadForm");
-            if (form.length > 0) {
-                form[0].submit();
-                //console.log("表单提交")
-                //iframe监听change事件
-                $("#uploadIframe").on("load", function () {
-                    //console.log("uploadIframe changed....")
-                    $(this).unbind('load');
-                    var framebody = $(this).contents().find("body");
-                    var ret = framebody.html();
-                    //是否存在pre标签
-                    if (framebody.find("pre").length > 0) {
-                        ret = framebody.find("pre").html();
-                    }
-                    var res;
-                    try {
-                        res = JSON.parse(ret);
-                        //console.log(res)
-                        var resptab = $('<div id="resptab" class="tabs-container" ></div>')
-                        var ulresp = $('<ul class="nav nav-tabs">' +
-                            '<li class=""><a data-toggle="tab" href="#tabresp" aria-expanded="false"> 响应内容 </a></li></ul>')
-                        resptab.append(ulresp);
-                        var respcontent = $('<div class="tab-content"></div>');
-                        var resp1 = $('<div id="tabresp" class="tab-pane active"><div class="panel-body"></div></div>');
-                        respcontent.append(resp1);
-                        resptab.append(respcontent)
-                        respcleanDiv.append(resptab);
-
-                        var jsondiv = $('<div></div>');
-                        jsondiv.JSONView(res);
-                        resp1.find(".panel-body").append(jsondiv);
-                        resptab.find("a:first").tab("show");
-                    } catch (err) {
-                        //nothing to do,default to show
-                        respcleanDiv.html(ret);
-                    }
-                })
-            } else {
-                $.ajax({
-                    url: url,
-                    headers: headerparams,
-                    type: $.getStringValue(apiInfo.methodType),
-                    data: reqdata,
-                    contentType: contType,
-                    success: function (data, status, xhr) {
-                        var resptab = $('<div id="resptab" class="tabs-container" ></div>')
-                        var ulresp = $('<ul class="nav nav-tabs">' +
-                            '<li class=""><a data-toggle="tab" href="#tabresp" aria-expanded="false"> 响应内容 </a></li>' +
-                            '<li class=""><a data-toggle="tab" href="#tabcookie" aria-expanded="true"> Cookies</a></li>' +
-                            '<li class=""><a data-toggle="tab" href="#tabheader" aria-expanded="true"> Headers </a></li></ul>')
-
-                        resptab.append(ulresp);
-                        var respcontent = $('<div class="tab-content"></div>');
-
-                        var resp1 = $('<div id="tabresp" class="tab-pane active"><div class="panel-body"><pre></pre></div></div>');
-                        var resp2 = $('<div id="tabcookie" class="tab-pane active"><div class="panel-body">暂无</div>');
-                        var resp3 = $('<div id="tabheader" class="tab-pane active"><div class="panel-body">暂无</div></div>');
-
-                        respcontent.append(resp1).append(resp2).append(resp3);
-
-                        resptab.append(respcontent)
-
-                        respcleanDiv.append(resptab);
-                        that.log(xhr);
-                        that.log(xhr.getAllResponseHeaders());
-                        var allheaders = xhr.getAllResponseHeaders();
-                        if (allheaders != null && typeof (allheaders) != 'undefined' && allheaders != "") {
-                            var headers = allheaders.split("\r\n");
-                            var headertable = $('<table class="table table-hover table-bordered table-text-center"><tr><th>请求头</th><th>value</th></tr></table>');
-                            for (var i = 0; i < headers.length; i++) {
-                                var header = headers[i];
-                                if (header != null && header != "") {
-                                    var headerValu = header.split(":");
-                                    var headertr = $('<tr><th class="active">' + headerValu[0] + '</th><td>' + headerValu[1] + '</td></tr>');
-                                    headertable.append(headertr);
-                                }
-                            }
-                            //设置Headers内容
-                            resp3.find(".panel-body").html("")
-                            resp3.find(".panel-body").append(headertable);
-                        }
-                        var contentType = xhr.getResponseHeader("Content-Type");
-                        that.log("Content-Type:" + contentType);
-                        that.log(xhr.hasOwnProperty("responseJSON"))
-                        if (xhr.hasOwnProperty("responseJSON")) {
-                            //如果存在该对象,服务端返回为json格式
-                            resp1.find(".panel-body").html("")
-                            that.log(xhr["responseJSON"])
-                            var pre = $('<pre></pre>')
-                            var jsondiv = $('<div></div>')
-                            jsondiv.JSONView(xhr["responseJSON"]);
-                            pre.html(JSON.stringify(xhr["responseJSON"], null, 2));
-                            resp1.find(".panel-body").append(jsondiv);
-                        } else {
-                            //判断content-type
-                            //如果是image资源
-                            var regex = new RegExp('image/(jpeg|jpg|png|gif)', 'g');
-                            if (regex.test(contentType)) {
-                                var d = DApiUI.getDoc().data("data");
-                                var imgUrl = "http://" + d.host + apiInfo.url;
-                                var img = document.createElement("img");
-                                img.onload = function (e) {
-                                    window.URL.revokeObjectURL(img.src); // 清除释放
-                                };
-                                img.src = imgUrl;
-                                resp1.find(".panel-body").html("")
-                                resp1.find(".panel-body")[0].appendChild(img);
-                            } else {
-                                //判断是否是text
-                                var regex = new RegExp('.*?text.*', 'g');
-                                if (regex.test(contentType)) {
-                                    resp1.find(".panel-body").html("")
-                                    resp1.find(".panel-body").html(xhr.responseText);
-                                }
-                            }
-
-                        }
-
-                        that.log("tab show...")
-                        resptab.find("a:first").tab("show");
-                    },
-                    error: function (xhr, textStatus, errorThrown) {
-                        that.log("error.....")
-                        that.log(xhr);
-                        that.log(textStatus);
-                        that.log(errorThrown);
-                        var resptab = $('<div id="resptab" class="tabs-container" ></div>')
-                        var ulresp = $('<ul class="nav nav-tabs">' +
-                            '<li class=""><a data-toggle="tab" href="#tabresp" aria-expanded="false"> 响应内容 </a></li>' +
-                            '<li class=""><a data-toggle="tab" href="#tabcookie" aria-expanded="true"> Cookies</a></li>' +
-                            '<li class=""><a data-toggle="tab" href="#tabheader" aria-expanded="true"> Headers </a></li></ul>')
-
-                        resptab.append(ulresp);
-                        var respcontent = $('<div class="tab-content"></div>');
-
-                        var resp1 = $('<div id="tabresp" class="tab-pane active"><div class="panel-body"><pre></pre></div></div>');
-                        var resp2 = $('<div id="tabcookie" class="tab-pane active"><div class="panel-body">暂无</div>');
-                        var resp3 = $('<div id="tabheader" class="tab-pane active"><div class="panel-body">暂无</div></div>');
-
-                        respcontent.append(resp1).append(resp2).append(resp3);
-
-                        resptab.append(respcontent)
-
-                        respcleanDiv.append(resptab);
-                        that.log(xhr);
-                        that.log(xhr.getAllResponseHeaders());
-                        var allheaders = xhr.getAllResponseHeaders();
-                        if (allheaders != null && typeof (allheaders) != 'undefined' && allheaders != "") {
-                            var headers = allheaders.split("\r\n");
-                            var headertable = $('<table class="table table-hover table-bordered table-text-center"><tr><th>请求头</th><th>value</th></tr></table>');
-                            for (var i = 0; i < headers.length; i++) {
-                                var header = headers[i];
-                                if (header != null && header != "") {
-                                    var headerValu = header.split(":");
-                                    var headertr = $('<tr><th class="active">' + headerValu[0] + '</th><td>' + headerValu[1] + '</td></tr>');
-                                    headertable.append(headertr);
-                                }
-                            }
-                            //设置Headers内容
-                            resp3.find(".panel-body").html("")
-                            resp3.find(".panel-body").append(headertable);
-                        }
-                        var contentType = xhr.getResponseHeader("Content-Type");
-                        that.log("Content-Type:" + contentType);
-                        var jsonRegex = "";
-                        that.log(xhr.hasOwnProperty("responseJSON"))
-                        if (xhr.hasOwnProperty("responseJSON")) {
-                            //如果存在该对象,服务端返回为json格式
-                            resp1.find(".panel-body").html("")
-                            that.log(xhr["responseJSON"])
-                            var jsondiv = $('<div></div>')
-                            jsondiv.JSONView(xhr["responseJSON"]);
-                            resp1.find(".panel-body").append(jsondiv);
-                        } else {
-                            //判断是否是text
-                            var regex = new RegExp('.*?text.*', 'g');
-                            if (regex.test(contentType)) {
-                                resp1.find(".panel-body").html("")
-                                resp1.find(".panel-body").html(xhr.responseText);
-                            }
-                        }
-                        that.log("tab show...")
-                        resptab.find("a:first").tab("show");
-
-                    }
-                })
-            }
-
-
-        })
-        //删除按钮功能实现
-        that.getDoc().find("#tab2").find(".btn-param-delete").on("click", function (e) {
-            e.preventDefault();
-            var btndelete = $(this);
-            btndelete.parent().parent().remove();
-        })
-        //path替换url-功能
-        that.getDoc().find("#tab2").find(".p-path").on("keyup", function (e) {
-            var t = $(this);
-            var name = t.data("name");
-            var apiUrl = $("#txtreqUrl").data("originalurl");
-            var realValue = apiUrl.replace("{" + name + "}", t.val());
-            //查找是否还存在其他path参数
-            $("#paramBody").find("tr").each(function (i, itr) {
-                var itrthat = $(this);
-                var itrdata = {
-                    name: itrthat.data("name"),
-                    in: itrthat.data("in"),
-                    required: itrthat.data("required"),
-                    type: itrthat.data("type")
-                };
-                //var itrdata=itrthat.data("data");
-                var itrname = itrdata["name"];
-                if (itrdata["in"] == "path" && itrdata["name"] != name) {
-                    //查找value值
-                    var itrtdvalue = itrthat.find(".p-value").val();
-                    if (itrtdvalue != "") {
-                        realValue = realValue.replace("{" + itrname + "}", itrtdvalue);
-                    }
-                }
-            })
-            that.log(realValue);
-            $("#txtreqUrl").val(realValue);
-            that.log("keyup。。。。")
-
-        })
-
-    }
-
-    SwaggerBootstrapUi.prototype.markdownDocInit = function () {
-        var that = this;
-        //md2Html的配置
-        hljs.configure({useBR: false});
-        hljs.initHighlightingOnLoad();
-        marked.setOptions({
-            renderer: new marked.Renderer(),
-            gfm: true,
-            emoji: true,
-            tables: true,
-            breaks: false,
-            pedantic: false,
-            sanitize: true,
-            smartLists: true,
-            smartypants: false,
-            highlight: function (code, lang) {
-                try {
-                    if (lang)
-                        return hljs.highlight(lang, code).value;
-                } catch (e) {
-                    return hljs.highlightAuto(code).value;
-                }
-                return hljs.highlightAuto(code).value;
-            }
-        });
-        $("#docText").each(function () {
-            var md = $(this).val();
-            if (md) {
-                $("#contentDoc").html(marked(md));
-                $('pre code').each(function (i, block) {
-                    hljs.highlightBlock(block);
-                });
-            }
-        });
-        $("code").css("background-color", "transparent");
-    }
-
-    SwaggerBootstrapUi.prototype.createTabElement = function () {
-        var that = this;
-        var divcontent = $('<div id="myTab" class="tabs-container" style="width:99%;margin:0px auto;"></div>');
-        var ul = $('<ul class="nav nav-tabs"></ul>')
-        ul.append($('<li><a data-toggle="tab" href="#tab1" aria-expanded="false"> 接口说明</a></li>'));
-        ul.append($('<li class=""><a data-toggle="tab" href="#tab2" aria-expanded="true"> 在线调试</a></li>'));
-        divcontent.append(ul);
-        var tabcontent = $('<div class="tab-content"></div>');
-
-        tabcontent.append($('<div id="tab1" class="tab-pane"><div class="panel-body"><strong>接口详细说明</strong><p>Bootstrap 使用到的某些 HTML 元素和 CSS 属性需要将页面设置为 HTML5 文档类型。在你项目中的每个页面都要参照下面的格式进行设置。</p></div></div>'));
-        tabcontent.append($('<div id="tab2" class="tab-pane"><div class="panel-body"><strong>正在开发中,敬请期待......</strong></div></div>'));
-        divcontent.append(tabcontent);
-        //内容覆盖
-        that.getDoc().html("");
-        that.getDoc().append(divcontent);
-        that.log("动态激活...")
-        //liapi.addClass("active");
-        that.log("动态激活12...")
-        that.getDoc().find("#myTab a:first").tab('show')
-
-    }
-    /***
-     * 创建markdown文本框
-     * @param apiInfo
-     */
-    SwaggerBootstrapUi.prototype.createMarkdownTxt = function (apiInfo) {
-
-    }
-
-    SwaggerBootstrapUi.prototype.creatabTab = function () {
-        var that = this;
-        var divcontent = $('<div id="myTab" class="tabs-container" style="width:99%;margin:0px auto;"></div>');
-        var ul = $('<ul class="nav nav-tabs"></ul>')
-        ul.append($('<li><a data-toggle="tab" href="#tab1" aria-expanded="false"> 接口说明</a></li>'));
-        ul.append($('<li class=""><a data-toggle="tab" href="#tab2" aria-expanded="true"> 在线调试</a></li>'));
-        divcontent.append(ul);
-        var tabcontent = $('<div class="tab-content"></div>');
-
-        tabcontent.append($('<div id="tab1" class="tab-pane"><div class="panel-body"><strong>接口详细说明</strong><p>Bootstrap 使用到的某些 HTML 元素和 CSS 属性需要将页面设置为 HTML5 文档类型。在你项目中的每个页面都要参照下面的格式进行设置。</p></div></div>'));
-        tabcontent.append($('<div id="tab2" class="tab-pane"><div class="panel-body"><strong>正在开发中,敬请期待......</strong></div></div>'));
-        divcontent.append(tabcontent);
-        //内容覆盖
-        that.getDoc().html("");
-        that.getDoc().append(divcontent);
-        that.log("动态激活...")
-        //liapi.addClass("active");
-        that.log("动态激活12...")
-        that.getDoc().find("#myTab a:first").tab('show')
-        //$('#myTab a:first').tab('show')
-
-    }
-    /***
-     * 创建简介页面
-     */
-    SwaggerBootstrapUi.prototype.createDescriptionElement = function () {
-        var that = this;
-        /*var table=$('<table class="table table-hover table-bordered table-text-center"></table>');
-        //修改title
-        $("title").html("").html(that.currentInstance.title)
-        table.append($('<thead><tr><th colspan="2" style="text-align:center">'+that.currentInstance.title+'</th></tr></thead>'));
-        var tbody=$('<tbody></tbody>');
-        tbody.append($('<tr><th class="active">简介</th><td style="text-align: left">'+that.currentInstance.description+'</td></tr>'));
-        tbody.append($('<tr><th class="active">作者</th><td style="text-align: left">'+that.currentInstance.contact+'</td></tr>'));
-        tbody.append($('<tr><th class="active">版本</th><td style="text-align: left">'+that.currentInstance.version+'</td></tr>'));
-        tbody.append($('<tr><th class="active">host</th><td style="text-align: left">'+that.currentInstance.host+'</td></tr>'))
-        tbody.append($('<tr><th class="active">服务url</th><td style="text-align: left">'+that.currentInstance.termsOfService+'</td></tr>'));
-        table.append(tbody);
-        var div=$('<div  style="width:99%;margin:0px auto;"></div>')
-        div.append(table);*/
-        //内容覆盖
-        that.getDoc().html("");
-        //that.getDoc().append(div);
-
-        setTimeout(function () {
-            var html = template('SwaggerBootstrapUiIntroScript', that.currentInstance);
-            that.getDoc().html(html)
-            //that.introMarkdownDocInit();
-        }, 100)
-
-
-    }
-
-    SwaggerBootstrapUi.prototype.introMarkdownDocInit = function () {
-        var that = this;
-        //md2Html的配置
-        hljs.configure({useBR: false});
-        hljs.initHighlightingOnLoad();
-        marked.setOptions({
-            renderer: new marked.Renderer(),
-            gfm: true,
-            emoji: true,
-            tables: true,
-            breaks: false,
-            pedantic: false,
-            sanitize: true,
-            smartLists: true,
-            smartypants: false,
-            highlight: function (code, lang) {
-                try {
-                    if (lang)
-                        return hljs.highlight(lang, code).value;
-                } catch (e) {
-                    return hljs.highlightAuto(code).value;
-                }
-                return hljs.highlightAuto(code).value;
-            }
-        });
-        $("#docSbuText").each(function () {
-            var md = $(this).val();
-            if (md) {
-                $("#sbuDescriptionDoc").html(marked(md));
-                $('pre code').each(function (i, block) {
-                    hljs.highlightBlock(block);
-                });
-            }
-        });
-        $("code").css("background-color", "transparent");
-    }
-
-    /***
-     * 创建离线文档页面
-     * 点击离线文档菜单时,创建该页面
-     */
-    SwaggerBootstrapUi.prototype.createMarkdownTab = function () {
-        var that = this;
-        /*var description="swagger-bootstrap-ui 提供markdwon格式类型的离线文档,开发者可拷贝该内容通过其他markdown转换工具进行转换为html或pdf.";
-        var divdes=$('<div class="alert alert-info" role="alert">'+description+'</div>');
-        var div=$('<div  style="width:99%;margin:0px auto;"></div>');
-        div.append(divdes);
-        //toolbar按钮组
-        var toolbarDiv=$('<div class="input-inline" style="margin-bottom:10px;">');
-        var copyBtn=$('<button class="btn btn-primary" type="button" id="btnCopy"  data-clipboard-action="copy" data-clipboard-target="#txtDoc">拷贝文档</button></div>');
-        toolbarDiv.append(copyBtn);
-        div.append(toolbarDiv);
-        //添加textarea
-        var txtDiv=$("<div class='input-inline'><textarea class='form-control' style='width: 100%;height: 100%;' id='txtDoc'></textarea></div>")
-        div.append(txtDiv);*/
-        //内容覆盖
-        that.getDoc().html("");
-        setTimeout(function () {
-            var html = template('offLinecontentScript', that.currentInstance);
-            that.getDoc().html(html);
-        }, 100)
-        var clipboard = new ClipboardJS('#btnCopy', {
-            text: function () {
-                return $("#txtOffLineDoc").val();
-            }
-        });
-        clipboard.on('success', function (e) {
-            layer.msg("复制成功")
-        });
-        clipboard.on('error', function (e) {
-            layer.msg("复制失败,您当前浏览器版本不兼容,请手动复制.")
-        });
-    }
-    /***
-     * 解析实例属性
-     */
-    SwaggerBootstrapUi.prototype.analysisDefinition = function (menu) {
-        var that = this;
-        //解析definition
-        if (menu != null && typeof (menu) != "undefined" && menu.hasOwnProperty("definitions")) {
-            var definitions = menu["definitions"];
-            for (var name in definitions) {
-                var swud = new SwaggerBootstrapUiDefinition();
-                swud.name = name;
-                //获取value
-                var value = definitions[name];
-                if ($.checkUndefined(value)) {
-                    swud.description = $.propValue("description", value, "");
-                    swud.type = $.propValue("type", value, "");
-                    //是否有properties
-                    if (value.hasOwnProperty("properties")) {
-                        var properties = value["properties"];
-                        var defiTypeValue = {};
-                        for (var property in properties) {
-                            var spropObj = new SwaggerBootstrapUiProperty();
-                            spropObj.name = property;
-                            var propobj = properties[property];
-                            spropObj.type = $.propValue("type", propobj, "string");
-                            spropObj.description = $.propValue("description", propobj, "");
-                            spropObj.example = $.propValue("example", propobj, "");
-                            spropObj.format = $.propValue("format", propobj, "");
-
-                            //默认string类型
-                            var propValue = "";
-                            //判断是否有类型
-                            if (propobj.hasOwnProperty("type")) {
-                                var type = propobj["type"];
-                                //判断是否有example
-                                if (propobj.hasOwnProperty("example")) {
-                                    propValue = propobj["example"];
-                                } else if ($.checkIsBasicType(type)) {
-                                    propValue = $.getBasicTypeValue(type);
-                                } else {
-                                    if (type == "array") {
-                                        propValue = new Array();
-                                        var items = propobj["items"];
-                                        var ref = items["$ref"];
-                                        var regex = new RegExp("#/definitions/(.*)$", "ig");
-                                        if (regex.test(ref)) {
-                                            var refType = RegExp.$1;
-                                            spropObj.refType = refType;
-                                            //这里需要递归判断是否是本身,如果是,则退出递归查找
-                                            if (refType != name) {
-                                                propValue.push(that.findRefDefinition(refType, definitions, false));
-                                            } else {
-                                                propValue.push(that.findRefDefinition(refType, definitions, true));
-                                            }
-                                        }
-                                    }
-                                }
-
-                            }
-                            else {
-                                if (propobj.hasOwnProperty("$ref")) {
-                                    var ref = propobj["$ref"];
-                                    var regex = new RegExp("#/definitions/(.*)$", "ig");
-                                    if (regex.test(ref)) {
-                                        var refType = RegExp.$1;
-                                        spropObj.refType = refType;
-                                        //这里需要递归判断是否是本身,如果是,则退出递归查找
-                                        if (refType != name) {
-                                            propValue = that.findRefDefinition(refType, definitions, false);
-                                        } else {
-                                            propValue = that.findRefDefinition(refType, definitions, true);
-                                        }
-
-                                    }
-                                } else {
-                                    propValue = {};
-                                }
-                            }
-                            spropObj.value = propValue;
-                            //addprop
-                            swud.properties.push(spropObj);
-                            defiTypeValue[property] = propValue;
-                        }
-                        swud.value = defiTypeValue;
-                    }
-                }
-                that.currentInstance.difArrs.push(swud);
-            }
-        }
-        //解析tags标签
-        if (menu != null && typeof (menu) != "undefined" && menu.hasOwnProperty("tags")) {
-            var tags = menu["tags"];
-            $.each(tags, function (i, tag) {
-                var swuTag = new SwaggerBootstrapUiTag(tag.name, tag.description);
-                that.currentInstance.tags.push(swuTag);
-            })
-
-        }
-        //解析paths属性
-        if (menu != null && typeof (menu) != "undefined" && menu.hasOwnProperty("paths")) {
-            var paths = menu["paths"];
-            for (var path in paths) {
-                var pathObject = paths[path];
-                var swpinfo = new SwaggerBootstrapUiApiInfo();
-                swpinfo.url = path;
-                var apiInfo = null;
-                if (pathObject.hasOwnProperty("get")) {
-                    //get方式
-                    apiInfo = pathObject["get"]
-                    swpinfo.methodType = "get";
-                }
-                if (pathObject.hasOwnProperty("post")) {
-                    //post 方式
-                    apiInfo = pathObject["post"]
-                    swpinfo.methodType = "post";
-                }
-                if (pathObject.hasOwnProperty("put")) {
-                    //put
-                    apiInfo = pathObject["put"]
-                    swpinfo.methodType = "put";
-                }
-                if (pathObject.hasOwnProperty("delete")) {
-                    //delete
-                    apiInfo = pathObject["delete"]
-                    swpinfo.methodType = "delete";
-                }
-                //扩展 支持http其余请求方法接口
-                //add by xiaoymin 2018-4-28 07:16:12
-                if (pathObject.hasOwnProperty("patch")) {
-                    //patch
-                    apiInfo = pathObject["patch"]
-                    swpinfo.methodType = "patch";
-                }
-                if (pathObject.hasOwnProperty("options")) {
-                    //OPTIONS
-                    apiInfo = pathObject["options"]
-                    swpinfo.methodType = "options";
-                }
-                if (pathObject.hasOwnProperty("trace")) {
-                    //TRACE
-                    apiInfo = pathObject["trace"]
-                    swpinfo.methodType = "trace";
-                }
-                if (pathObject.hasOwnProperty("head")) {
-                    //HEAD
-                    apiInfo = pathObject["head"]
-                    swpinfo.methodType = "head";
-                }
-                if (pathObject.hasOwnProperty("connect")) {
-                    //CONNECT
-                    apiInfo = pathObject["connect"]
-                    swpinfo.methodType = "connect";
-                }
-                if (apiInfo != null) {
-                    swpinfo.consumes = apiInfo.consumes;
-                    swpinfo.description = apiInfo.description;
-                    swpinfo.operationId = apiInfo.operationId;
-                    swpinfo.summary = apiInfo.summary;
-                    swpinfo.tags = apiInfo.tags;
-                    swpinfo.produces = apiInfo.produces;
-                    if (apiInfo.hasOwnProperty("parameters")) {
-                        var pameters = apiInfo["parameters"];
-                        $.each(pameters, function (i, m) {
-                            var minfo = new SwaggerBootstrapUiParameter();
-                            minfo.name = m.name;
-                            minfo.type = m.type;
-                            minfo.in = m.in;
-                            minfo.require = m.required;
-                            minfo.description = m.description;
-                            if (m.hasOwnProperty("schema")) {
-                                //存在schema属性,请求对象是实体类
-                                minfo.schema = true;
-                                var schemaObject = m["schema"];
-                                var schemaType = schemaObject["type"];
-                                if (schemaType == "array") {
-                                    minfo.type = schemaType;
-                                    var schItem = schemaObject["items"];
-                                    var ref = schItem["$ref"];
-                                    var className = $.getClassName(ref);
-                                    minfo.schemaValue = className;
-                                    var def = that.getDefinitionByName(className);
-                                    if (def != null) {
-                                        minfo.def = def;
-                                        minfo.value = def.value;
-                                    }
-                                } else {
-                                    if (schemaObject.hasOwnProperty("$ref")) {
-                                        var ref = m["schema"]["$ref"];
-                                        var className = $.getClassName(ref);
-                                        minfo.type = className;
-                                        var def = that.getDefinitionByName(className);
-                                        if (def != null) {
-                                            minfo.def = def;
-                                            minfo.value = def.value;
-                                        }
-                                    } else {
-                                        if (schemaObject.hasOwnProperty("type")) {
-                                            minfo.type = schemaObject["type"];
-                                        }
-                                        minfo.value = "";
-                                    }
-                                }
-                            }
-                            if (minfo.in == "body") {
-                                //判断属性是否是array
-                                if (minfo.type == "array") {
-                                    var txtArr = new Array();
-                                    txtArr.push(minfo.value);
-                                    //JSON显示
-                                    minfo.txtValue = JSON.stringify(txtArr, null, 4)
-                                } else {
-                                    //引用类型
-                                    if (!$.checkIsBasicType(minfo.type)) {
-                                        minfo.txtValue = JSON.stringify(minfo.value, null, 4);
-                                    }
-                                }
-                            }
-                            swpinfo.parameters.push(minfo);
-                            //判断当前属性是否是schema
-                            if (minfo.schema) {
-                                deepRefParameter(minfo, that, minfo.def, swpinfo);
-                            }
-                        })
-                    }
-
-                    var definitionType = null;
-                    var arr = false;
-                    //解析responsecode
-                    if (typeof (apiInfo.responses) != 'undefined' && apiInfo.responses != null) {
-                        var resp = apiInfo.responses;
-                        for (var status in resp) {
-                            var swaggerResp = new SwaggerBootstrapUiResponseCode();
-                            var rescrobj = resp[status];
-                            swaggerResp.code = status;
-                            swaggerResp.description = rescrobj["description"];
-                            if (rescrobj.hasOwnProperty("schema")) {
-                                var schema = rescrobj["schema"];
-                                //单引用类型
-                                //判断是否是数组类型
-                                var regex = new RegExp("#/definitions/(.*)$", "ig");
-                                if (schema.hasOwnProperty("$ref")) {
-                                    if (regex.test(schema["$ref"])) {
-                                        var ptype = RegExp.$1;
-                                        definitionType = ptype;
-                                        swaggerResp.schema = ptype;
-                                    }
-                                } else if (schema.hasOwnProperty("type")) {
-                                    var t = schema["type"];
-                                    if (t == "array") {
-                                        arr = true;
-                                        if (schema.hasOwnProperty("items")) {
-                                            var items = schema["items"];
-                                            if (regex.test(items["$ref"])) {
-                                                var ptype = RegExp.$1;
-                                                definitionType = ptype;
-                                                swaggerResp.schema = ptype;
-                                            }
-                                        }
-                                    }
-                                }
-
-                            }
-                            swpinfo.responseCodes.push(swaggerResp);
-                        }
-                    }
-
-                    if (definitionType != null) {
-                        //查询
-                        for (var i = 0; i < that.currentInstance.difArrs.length; i++) {
-                            var ref = that.currentInstance.difArrs[i];
-                            if (ref.name == definitionType) {
-                                if (arr) {
-                                    var na = new Array();
-                                    na.push(ref.value);
-                                    swpinfo.responseValue = JSON.stringify(na, null, 4);
-                                } else {
-                                    swpinfo.responseValue = JSON.stringify(ref.value, null, 4);
-                                }
-                            }
-                        }
-                        //响应参数
-                        var def = that.getDefinitionByName(definitionType);
-                        if (def != null) {
-                            if (def.hasOwnProperty("properties")) {
-                                var props = def["properties"];
-                                $.each(props, function (i, p) {
-                                    var resParam = new SwaggerBootstrapUiParameter();
-                                    resParam.name = p.name;
-                                    if (!checkParamArrsExists(swpinfo.responseParameters, resParam)) {
-                                        swpinfo.responseParameters.push(resParam);
-                                        resParam.type = p.type;
-                                        resParam.description = p.description;
-                                        if (!$.checkIsBasicType(p.refType)) {
-                                            resParam.schemaValue = p.refType;
-                                            var deepDef = that.getDefinitionByName(p.refType);
-                                            deepResponseRefParameter(swpinfo, that, deepDef, resParam);
-                                        }
-                                    }
-                                })
-
-                            }
-                        }
-
-                    }
-                    that.currentInstance.paths.push(swpinfo);
-                }
-            }
-
-        }
-        //tag分组
-        $.each(that.currentInstance.tags, function (i, tag) {
-            //查找childrens
-            $.each(that.currentInstance.paths, function (k, methodApi) {
-                //判断tags是否相同
-                $.each(methodApi.tags, function (x, tagName) {
-                    if (tagName == tag.name) {
-                        tag.childrens.push(methodApi);
-                    }
-                })
-            })
-        });
-    }
-
-
-    /***
-     * 是否已经存在
-     * @param arr
-     * @param param
-     * @returns {boolean}
-     */
-    function checkParamArrsExists(arr, param) {
-        var flag = false;
-        if (arr != null && arr.length > 0) {
-            $.each(arr, function (i, a) {
-                if (a.name == param.name) {
-                    flag = true;
-                }
-            })
-        }
-        return flag;
-    }
-
-    function deepResponseRefParameter(swpinfo, that, def, resParam) {
-        if (def != null) {
-            if (def.hasOwnProperty("properties")) {
-                var refParam = new SwaggerBootstrapUiRefParameter();
-                refParam.name = def.name;
-                if (!checkParamArrsExists(swpinfo.responseRefParameters, refParam)) {
-                    swpinfo.responseRefParameters.push(refParam);
-                    if (def.hasOwnProperty("properties")) {
-                        var props = def["properties"];
-                        $.each(props, function (i, p) {
-                            var refp = new SwaggerBootstrapUiParameter();
-                            refp.name = p.name;
-                            refp.type = p.type;
-                            refp.description = p.description;
-                            //add之前需要判断是否已添加,递归情况有可能重复
-                            refParam.params.push(refp);
-                            //判断类型是否基础类型
-                            if (!$.checkIsBasicType(p.refType)) {
-                                refp.schemaValue = p.refType;
-                                if (resParam.name != refp.name) {
-                                    var deepDef = that.getDefinitionByName(p.refType);
-                                    deepResponseRefParameter(swpinfo, that, deepDef, refp);
-                                }
-                            }
-                        })
-                    }
-                }
-            }
-        }
-    }
-
-    /***
-     * 递归查询
-     * @param minfo
-     * @param that
-     * @param def
-     */
-    function deepRefParameter(minfo, that, def, apiInfo) {
-        if (def != null) {
-            var refParam = new SwaggerBootstrapUiRefParameter();
-            refParam.name = def.name;
-            if (!checkParamArrsExists(apiInfo.refparameters, refParam)) {
-                apiInfo.refparameters.push(refParam);
-                if (def.hasOwnProperty("properties")) {
-                    var props = def["properties"];
-                    $.each(props, function (i, p) {
-                        var refp = new SwaggerBootstrapUiParameter();
-                        refp.name = p.name;
-                        refp.type = p.type;
-                        refp.in = minfo.in;
-                        refp.require = minfo.require;
-                        refp.description = p.description;
-                        refParam.params.push(refp);
-                        //判断类型是否基础类型
-                        if (!$.checkIsBasicType(p.refType)) {
-                            refp.schemaValue = p.refType;
-                            if (minfo.name != refp.name) {
-                                var deepDef = that.getDefinitionByName(p.refType);
-                                deepRefParameter(refp, that, deepDef, apiInfo);
-                            }
-                        }
-                    })
-                }
-            }
-        }
-    }
-
-    /***
-     * 根据类名查找definition
-     */
-    SwaggerBootstrapUi.prototype.getDefinitionByName = function (name) {
-        var that = this;
-        var def = null;
-        $.each(that.currentInstance.difArrs, function (i, d) {
-            if (d.name == name) {
-                def = d;
-                return;
-            }
-        })
-        return def;
-    }
-    /***
-     * 递归查询definition
-     * @param refType
-     * @param definitions
-     * @param flag
-     */
-    SwaggerBootstrapUi.prototype.findRefDefinition = function (definitionName, definitions, flag) {
-        var that = this;
-        var defaultValue = "";
-        for (var definition in definitions) {
-            if (definitionName == definition) {
-                var value = definitions[definition];
-                //是否有properties
-                if (value.hasOwnProperty("properties")) {
-                    var properties = value["properties"];
-                    var defiTypeValue = {};
-                    for (var property in properties) {
-                        var propobj = properties[property];
-                        //默认string类型
-                        var propValue = "";
-                        //判断是否有类型
-                        if (propobj.hasOwnProperty("type")) {
-                            var type = propobj["type"];
-                            //判断是否有example
-                            if (propobj.hasOwnProperty("example")) {
-                                propValue = propobj["example"];
-                            } else if ($.checkIsBasicType(type)) {
-                                propValue = $.getBasicTypeValue(type);
-                            } else {
-                                if (type == "array") {
-                                    propValue = new Array();
-                                    var items = propobj["items"];
-                                    var ref = items["$ref"];
-                                    var regex = new RegExp("#/definitions/(.*)$", "ig");
-                                    if (regex.test(ref)) {
-                                        var refType = RegExp.$1;
-                                        if (!flag) {
-                                            //非递归查找
-                                            if (refType != definitionName) {
-                                                propValue.push(that.findRefDefinition(refType, definitions, flag));
-                                            } else {
-                                                propValue.push(that.findRefDefinition(refType, definitions, true));
-                                            }
-                                        }
-
-                                    }
-                                }
-                            }
-
-                        } else {
-
-                        }
-                        defiTypeValue[property] = propValue;
-                    }
-                    defaultValue = defiTypeValue;
-                } else {
-                    defaultValue = {};
-                }
-            }
-        }
-        return defaultValue;
-    }
-    /***
-     * 创建swagger分组页面元素
-     */
-    SwaggerBootstrapUi.prototype.createGroupElement = function () {
-        var that = this;
-        //创建分组flag
-        var groupli = $('<li  class="active"></li>');
-        var groupSele = $("<select id='groupSel' style='width:100%;' class=\"form-control\"></select>");
-        $.each(that.instances, function (i, group) {
-            var groupOption = $("<option data-url='" + group.location + "' data-name='" + group.name + "'>" + group.name + "</option>");
-            groupSele.append(groupOption);
-        })
-        groupli.append(groupSele);
-        groupSele.on("change", function () {
-            var t = $(this);
-            var name = t.find("option:selected").attr("data-name");
-            that.log("分组::");
-            that.log(name);
-            var instance = that.selectInstanceByGroupName(name);
-            that.log(instance);
-            that.analysisApi(instance);
-        })
-        that.getMenu().html("");
-        that.getMenu().append(groupli);
-        //默认加载第一个url
-        that.analysisApi(that.instances[0]);
-    }
-    /***
-     * 获取当前分组实例
-     * @param name
-     * @returns {*}
-     */
-    SwaggerBootstrapUi.prototype.selectInstanceByGroupName = function (name) {
-        var that = this;
-        var instance = null;
-        $.each(that.instances, function (i, group) {
-            if (group.name == name) {
-                instance = group;
-                return;
-            }
-        })
-        return instance;
-    }
-    /***
-     * 添加左侧菜单功能
-     */
-    SwaggerBootstrapUi.prototype.addMenu = function () {
-
-    }
-    /***
-     * 控制台打印
-     * @param msg
-     */
-    SwaggerBootstrapUi.prototype.log = function (msg) {
-        if (window.console) {
-            //正式版不开启console功能
-            //console.log(msg);
-        }
-    }
-    /***
-     * 获取菜单元素
-     */
-    SwaggerBootstrapUi.prototype.getMenu = function () {
-        var menuId = this.menuId;
-        return $("#" + menuId);
-    }
-    /***
-     * 获取当前swagger页面主页面元素
-     * @returns {*|HTMLElement}
-     */
-    SwaggerBootstrapUi.prototype.getDoc = function () {
-        return $("#" + this.docId);
-    }
-    /***
-     * swagger 分组对象
-     * @param name 分组对象名称
-     * @param location url地址
-     * @param version 版本号
-     * @constructor
-     */
-    var SwaggerBootstrapUiInstance = function (name, location, version) {
-        //默认未加载
-        this.load = false;
-        //分组名称
-        this.name = name;
-        //分组url地址
-        this.location = location;
-        this.groupVersion = version;
-        //分组url请求实例
-        this.basePath = "";
-        this.host = "";
-        this.swagger = "";
-        this.description = "";
-        this.title = "";
-        this.version = "";
-        this.termsOfService = "";
-        this.contact = "";
-        //当前definistion数组
-        // SwaggerBootstrapUiDefinition 集合
-        this.difArrs = new Array();
-        //标签分类信息组
-        //SwaggerBootstrapUiTag 集合
-        this.tags = new Array();
-        //接口url信息
-        //存储SwaggerBootstrapUiApiInfo 集合
-        this.paths = new Array();
-        //全局参数,存放SwaggerBootstrapUiParameter集合
-        this.globalParameters = new Array();
-
-    }
-    /***
-     * 返回对象解析属性
-     * @constructor
-     */
-    var SwaggerBootstrapUiDefinition = function () {
-        //类型名称
-        this.name = "";
-        //介绍
-        this.description = "";
-        //类型
-        this.type = "";
-        //属性 --SwaggerBootstrapUiProperty 集合
-        this.properties = new Array();
-
-        this.value = null;
-
-    }
-    /***
-     * definition对象属性
-     * @constructor
-     */
-    var SwaggerBootstrapUiProperty = function () {
-        //默认基本类型,非引用
-        this.basic = true;
-        this.name = "";
-        this.type = "";
-        this.refType = null;
-        this.description = "";
-        this.example = "";
-        this.format = "";
-        //默认值
-        this.value = null;
-        //引用类
-        this.property = null;
-    }
-    /***
-     * swagger的tag标签
-     * @param name
-     * @param description
-     * @constructor
-     */
-    var SwaggerBootstrapUiTag = function (name, description) {
-        this.name = name;
-        this.description = description;
-        this.childrens = new Array();
-    }
-    /***
-     * Swagger接口基础信息
-     * @constructor
-     */
-    var SwaggerBootstrapUiApiInfo = function () {
-        this.url = null;
-        this.methodType = null;
-        this.description = null;
-        this.summary = null;
-        this.consumes = null;
-        this.operationId = null;
-        this.produces = null;
-        this.tags = null;
-        this.parameters = new Array();
-        //针对parameter属性有引用类型的参数,继续以table 的形式展现
-        //存放SwaggerBootstrapUiRefParameter 集合
-        this.refparameters = new Array();
-        this.responseCodes = new Array();
-        this.responseValue = null;
-        //响应字段说明
-        this.responseParameters = new Array();
-        this.responseRefParameters = new Array();
-
-
-    }
-
-    var SwaggerBootstrapUiRefParameter = function () {
-        this.name = null;
-        //存放SwaggerBootstrapUiParameter集合
-        this.params = new Array();
-    }
-
-    /***
-     * Swagger请求参数
-     * @constructor
-     */
-    var SwaggerBootstrapUiParameter = function () {
-        this.name = null;
-        this.require = null;
-        this.type = null;
-        this.in = null;
-        this.schema = false;
-        this.schemaValue = null;
-        this.value = null;
-        //引用类
-        this.def = null;
-        //des
-        this.description = null;
-        //文本框值
-        this.txtValue = null;
-    }
-    /***
-     * 响应码
-     * @constructor
-     */
-    var SwaggerBootstrapUiResponseCode = function () {
-        this.code = null;
-        this.description = null;
-        this.schema = null;
-    }
-
-    /***
-     * 公共方法
-     */
-    $.extend({
-        checkUndefined: function (obj) {
-            var flag = false;
-            if (obj != null && typeof (obj) != "undefined") {
-                flag = true;
-            }
-            return flag;
-        },
-        propValue: function (key, obj, defaultValue) {
-            var t = defaultValue;
-            if (obj.hasOwnProperty(key)) {
-                t = obj[key];
-            }
-            return t;
-        },
-        checkIsBasicType: function (type) {
-            var basicTypes = ["string", "integer", "number", "object", "boolean"];
-            var flag = false;
-            if (type != null) {
-                if ($.inArray(type, basicTypes) > -1) {
-                    flag = true;
-                }
-            }
-            return flag;
-        },
-        getBasicTypeValue: function (type) {
-            var propValue = "";
-            //是否是基本类型
-            if (type == "integer") {
-                propValue = 0;
-            }
-            if (type == "boolean") {
-                propValue = true;
-            }
-            if (type == "object") {
-                propValue = {};
-            }
-            if (type == "number") {
-                propValue = parseFloat(0);
-            }
-            return propValue;
-        },
-        getValue: function (obj, key, defaultValue, checkEmpty) {
-            var val = defaultValue;
-            if (obj != null && obj != undefined) {
-                if (obj.hasOwnProperty(key)) {
-                    val = obj[key];
-                    if (checkEmpty) {
-                        if (val == null || val == "") {
-                            val = defaultValue;
-                        }
-                    }
-                }
-            }
-            return val;
-        },
-        getClassName: function (item) {
-            var regex = new RegExp("#/definitions/(.*)$", "ig");
-            if (regex.test(item)) {
-                var ptype = RegExp.$1;
-                return ptype;
-            }
-            return null;
-        },
-        getStringValue: function (obj) {
-            var str = "";
-            if (typeof (obj) != 'undefined' && obj != null) {
-                str = obj.toString();
-            }
-            return str;
-        },
-        randomNumber: function () {
-            return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
-        },
-        generUUID: function () {
-            return ($.randomNumber() + $.randomNumber() + "-" + $.randomNumber() + "-" + $.randomNumber() + "-" + $.randomNumber() + "-" + $.randomNumber() + $.randomNumber() + $.randomNumber());
-        }
-    })
-
-
-    window.SwaggerBootstrapUi = SwaggerBootstrapUi;
-
-    /**
-     * 运行
-     */
-    new SwaggerBootstrapUi().main();
-})(jQuery)

+ 0 - 816
src/main/resources/static/styles/highlight/highlight.js

@@ -1,816 +0,0 @@
-/*
-Syntax highlighting with language autodetection.
-https://highlightjs.org/
-*/
-
-(function(factory) {
-
-  // Find the global object for export to both the browser and web workers.
-  var globalObject = typeof window === 'object' && window ||
-                     typeof self === 'object' && self;
-
-  // Setup highlight.js for different environments. First is Node.js or
-  // CommonJS.
-  if(typeof exports !== 'undefined') {
-    factory(exports);
-  } else if(globalObject) {
-    // Export hljs globally even when using AMD for cases when this script
-    // is loaded with others that may still expect a global hljs.
-    globalObject.hljs = factory({});
-
-    // Finally register the global hljs with AMD.
-    if(typeof define === 'function' && define.amd) {
-      define([], function() {
-        return globalObject.hljs;
-      });
-    }
-  }
-
-}(function(hljs) {
-  // Convenience variables for build-in objects
-  var ArrayProto = [],
-      objectKeys = Object.keys;
-
-  // Global internal variables used within the highlight.js library.
-  var languages = {},
-      aliases   = {};
-
-  // Regular expressions used throughout the highlight.js library.
-  var noHighlightRe    = /^(no-?highlight|plain|text)$/i,
-      languagePrefixRe = /\blang(?:uage)?-([\w-]+)\b/i,
-      fixMarkupRe      = /((^(<[^>]+>|\t|)+|(?:\n)))/gm;
-
-  var spanEndTag = '</span>';
-
-  // Global options used when within external APIs. This is modified when
-  // calling the `hljs.configure` function.
-  var options = {
-    classPrefix: 'hljs-',
-    tabReplace: null,
-    useBR: false,
-    languages: undefined
-  };
-
-
-  /* Utility functions */
-
-  function escape(value) {
-    return value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
-  }
-
-  function tag(node) {
-    return node.nodeName.toLowerCase();
-  }
-
-  function testRe(re, lexeme) {
-    var match = re && re.exec(lexeme);
-    return match && match.index === 0;
-  }
-
-  function isNotHighlighted(language) {
-    return noHighlightRe.test(language);
-  }
-
-  function blockLanguage(block) {
-    var i, match, length, _class;
-    var classes = block.className + ' ';
-
-    classes += block.parentNode ? block.parentNode.className : '';
-
-    // language-* takes precedence over non-prefixed class names.
-    match = languagePrefixRe.exec(classes);
-    if (match) {
-      return getLanguage(match[1]) ? match[1] : 'no-highlight';
-    }
-
-    classes = classes.split(/\s+/);
-
-    for (i = 0, length = classes.length; i < length; i++) {
-      _class = classes[i]
-
-      if (isNotHighlighted(_class) || getLanguage(_class)) {
-        return _class;
-      }
-    }
-  }
-
-  function inherit(parent) {  // inherit(parent, override_obj, override_obj, ...)
-    var key;
-    var result = {};
-    var objects = Array.prototype.slice.call(arguments, 1);
-
-    for (key in parent)
-      result[key] = parent[key];
-    objects.forEach(function(obj) {
-      for (key in obj)
-        result[key] = obj[key];
-    });
-    return result;
-  }
-
-  /* Stream merging */
-
-  function nodeStream(node) {
-    var result = [];
-    (function _nodeStream(node, offset) {
-      for (var child = node.firstChild; child; child = child.nextSibling) {
-        if (child.nodeType === 3)
-          offset += child.nodeValue.length;
-        else if (child.nodeType === 1) {
-          result.push({
-            event: 'start',
-            offset: offset,
-            node: child
-          });
-          offset = _nodeStream(child, offset);
-          // Prevent void elements from having an end tag that would actually
-          // double them in the output. There are more void elements in HTML
-          // but we list only those realistically expected in code display.
-          if (!tag(child).match(/br|hr|img|input/)) {
-            result.push({
-              event: 'stop',
-              offset: offset,
-              node: child
-            });
-          }
-        }
-      }
-      return offset;
-    })(node, 0);
-    return result;
-  }
-
-  function mergeStreams(original, highlighted, value) {
-    var processed = 0;
-    var result = '';
-    var nodeStack = [];
-
-    function selectStream() {
-      if (!original.length || !highlighted.length) {
-        return original.length ? original : highlighted;
-      }
-      if (original[0].offset !== highlighted[0].offset) {
-        return (original[0].offset < highlighted[0].offset) ? original : highlighted;
-      }
-
-      /*
-      To avoid starting the stream just before it should stop the order is
-      ensured that original always starts first and closes last:
-
-      if (event1 == 'start' && event2 == 'start')
-        return original;
-      if (event1 == 'start' && event2 == 'stop')
-        return highlighted;
-      if (event1 == 'stop' && event2 == 'start')
-        return original;
-      if (event1 == 'stop' && event2 == 'stop')
-        return highlighted;
-
-      ... which is collapsed to:
-      */
-      return highlighted[0].event === 'start' ? original : highlighted;
-    }
-
-    function open(node) {
-      function attr_str(a) {return ' ' + a.nodeName + '="' + escape(a.value).replace('"', '&quot;') + '"';}
-      result += '<' + tag(node) + ArrayProto.map.call(node.attributes, attr_str).join('') + '>';
-    }
-
-    function close(node) {
-      result += '</' + tag(node) + '>';
-    }
-
-    function render(event) {
-      (event.event === 'start' ? open : close)(event.node);
-    }
-
-    while (original.length || highlighted.length) {
-      var stream = selectStream();
-      result += escape(value.substring(processed, stream[0].offset));
-      processed = stream[0].offset;
-      if (stream === original) {
-        /*
-        On any opening or closing tag of the original markup we first close
-        the entire highlighted node stack, then render the original tag along
-        with all the following original tags at the same offset and then
-        reopen all the tags on the highlighted stack.
-        */
-        nodeStack.reverse().forEach(close);
-        do {
-          render(stream.splice(0, 1)[0]);
-          stream = selectStream();
-        } while (stream === original && stream.length && stream[0].offset === processed);
-        nodeStack.reverse().forEach(open);
-      } else {
-        if (stream[0].event === 'start') {
-          nodeStack.push(stream[0].node);
-        } else {
-          nodeStack.pop();
-        }
-        render(stream.splice(0, 1)[0]);
-      }
-    }
-    return result + escape(value.substr(processed));
-  }
-
-  /* Initialization */
-
-  function expand_mode(mode) {
-    if (mode.variants && !mode.cached_variants) {
-      mode.cached_variants = mode.variants.map(function(variant) {
-        return inherit(mode, {variants: null}, variant);
-      });
-    }
-    return mode.cached_variants || (mode.endsWithParent && [inherit(mode)]) || [mode];
-  }
-
-  function compileLanguage(language) {
-
-    function reStr(re) {
-        return (re && re.source) || re;
-    }
-
-    function langRe(value, global) {
-      return new RegExp(
-        reStr(value),
-        'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '')
-      );
-    }
-
-    function compileMode(mode, parent) {
-      if (mode.compiled)
-        return;
-      mode.compiled = true;
-
-      mode.keywords = mode.keywords || mode.beginKeywords;
-      if (mode.keywords) {
-        var compiled_keywords = {};
-
-        var flatten = function(className, str) {
-          if (language.case_insensitive) {
-            str = str.toLowerCase();
-          }
-          str.split(' ').forEach(function(kw) {
-            var pair = kw.split('|');
-            compiled_keywords[pair[0]] = [className, pair[1] ? Number(pair[1]) : 1];
-          });
-        };
-
-        if (typeof mode.keywords === 'string') { // string
-          flatten('keyword', mode.keywords);
-        } else {
-          objectKeys(mode.keywords).forEach(function (className) {
-            flatten(className, mode.keywords[className]);
-          });
-        }
-        mode.keywords = compiled_keywords;
-      }
-      mode.lexemesRe = langRe(mode.lexemes || /\w+/, true);
-
-      if (parent) {
-        if (mode.beginKeywords) {
-          mode.begin = '\\b(' + mode.beginKeywords.split(' ').join('|') + ')\\b';
-        }
-        if (!mode.begin)
-          mode.begin = /\B|\b/;
-        mode.beginRe = langRe(mode.begin);
-        if (!mode.end && !mode.endsWithParent)
-          mode.end = /\B|\b/;
-        if (mode.end)
-          mode.endRe = langRe(mode.end);
-        mode.terminator_end = reStr(mode.end) || '';
-        if (mode.endsWithParent && parent.terminator_end)
-          mode.terminator_end += (mode.end ? '|' : '') + parent.terminator_end;
-      }
-      if (mode.illegal)
-        mode.illegalRe = langRe(mode.illegal);
-      if (mode.relevance == null)
-        mode.relevance = 1;
-      if (!mode.contains) {
-        mode.contains = [];
-      }
-      mode.contains = Array.prototype.concat.apply([], mode.contains.map(function(c) {
-        return expand_mode(c === 'self' ? mode : c)
-      }));
-      mode.contains.forEach(function(c) {compileMode(c, mode);});
-
-      if (mode.starts) {
-        compileMode(mode.starts, parent);
-      }
-
-      var terminators =
-        mode.contains.map(function(c) {
-          return c.beginKeywords ? '\\.?(' + c.begin + ')\\.?' : c.begin;
-        })
-        .concat([mode.terminator_end, mode.illegal])
-        .map(reStr)
-        .filter(Boolean);
-      mode.terminators = terminators.length ? langRe(terminators.join('|'), true) : {exec: function(/*s*/) {return null;}};
-    }
-
-    compileMode(language);
-  }
-
-  /*
-  Core highlighting function. Accepts a language name, or an alias, and a
-  string with the code to highlight. Returns an object with the following
-  properties:
-
-  - relevance (int)
-  - value (an HTML string with highlighting markup)
-
-  */
-  function highlight(name, value, ignore_illegals, continuation) {
-
-    function subMode(lexeme, mode) {
-      var i, length;
-
-      for (i = 0, length = mode.contains.length; i < length; i++) {
-        if (testRe(mode.contains[i].beginRe, lexeme)) {
-          return mode.contains[i];
-        }
-      }
-    }
-
-    function endOfMode(mode, lexeme) {
-      if (testRe(mode.endRe, lexeme)) {
-        while (mode.endsParent && mode.parent) {
-          mode = mode.parent;
-        }
-        return mode;
-      }
-      if (mode.endsWithParent) {
-        return endOfMode(mode.parent, lexeme);
-      }
-    }
-
-    function isIllegal(lexeme, mode) {
-      return !ignore_illegals && testRe(mode.illegalRe, lexeme);
-    }
-
-    function keywordMatch(mode, match) {
-      var match_str = language.case_insensitive ? match[0].toLowerCase() : match[0];
-      return mode.keywords.hasOwnProperty(match_str) && mode.keywords[match_str];
-    }
-
-    function buildSpan(classname, insideSpan, leaveOpen, noPrefix) {
-      var classPrefix = noPrefix ? '' : options.classPrefix,
-          openSpan    = '<span class="' + classPrefix,
-          closeSpan   = leaveOpen ? '' : spanEndTag
-
-      openSpan += classname + '">';
-
-      return openSpan + insideSpan + closeSpan;
-    }
-
-    function processKeywords() {
-      var keyword_match, last_index, match, result;
-
-      if (!top.keywords)
-        return escape(mode_buffer);
-
-      result = '';
-      last_index = 0;
-      top.lexemesRe.lastIndex = 0;
-      match = top.lexemesRe.exec(mode_buffer);
-
-      while (match) {
-        result += escape(mode_buffer.substring(last_index, match.index));
-        keyword_match = keywordMatch(top, match);
-        if (keyword_match) {
-          relevance += keyword_match[1];
-          result += buildSpan(keyword_match[0], escape(match[0]));
-        } else {
-          result += escape(match[0]);
-        }
-        last_index = top.lexemesRe.lastIndex;
-        match = top.lexemesRe.exec(mode_buffer);
-      }
-      return result + escape(mode_buffer.substr(last_index));
-    }
-
-    function processSubLanguage() {
-      var explicit = typeof top.subLanguage === 'string';
-      if (explicit && !languages[top.subLanguage]) {
-        return escape(mode_buffer);
-      }
-
-      var result = explicit ?
-                   highlight(top.subLanguage, mode_buffer, true, continuations[top.subLanguage]) :
-                   highlightAuto(mode_buffer, top.subLanguage.length ? top.subLanguage : undefined);
-
-      // Counting embedded language score towards the host language may be disabled
-      // with zeroing the containing mode relevance. Usecase in point is Markdown that
-      // allows XML everywhere and makes every XML snippet to have a much larger Markdown
-      // score.
-      if (top.relevance > 0) {
-        relevance += result.relevance;
-      }
-      if (explicit) {
-        continuations[top.subLanguage] = result.top;
-      }
-      return buildSpan(result.language, result.value, false, true);
-    }
-
-    function processBuffer() {
-      result += (top.subLanguage != null ? processSubLanguage() : processKeywords());
-      mode_buffer = '';
-    }
-
-    function startNewMode(mode) {
-      result += mode.className? buildSpan(mode.className, '', true): '';
-      top = Object.create(mode, {parent: {value: top}});
-    }
-
-    function processLexeme(buffer, lexeme) {
-
-      mode_buffer += buffer;
-
-      if (lexeme == null) {
-        processBuffer();
-        return 0;
-      }
-
-      var new_mode = subMode(lexeme, top);
-      if (new_mode) {
-        if (new_mode.skip) {
-          mode_buffer += lexeme;
-        } else {
-          if (new_mode.excludeBegin) {
-            mode_buffer += lexeme;
-          }
-          processBuffer();
-          if (!new_mode.returnBegin && !new_mode.excludeBegin) {
-            mode_buffer = lexeme;
-          }
-        }
-        startNewMode(new_mode, lexeme);
-        return new_mode.returnBegin ? 0 : lexeme.length;
-      }
-
-      var end_mode = endOfMode(top, lexeme);
-      if (end_mode) {
-        var origin = top;
-        if (origin.skip) {
-          mode_buffer += lexeme;
-        } else {
-          if (!(origin.returnEnd || origin.excludeEnd)) {
-            mode_buffer += lexeme;
-          }
-          processBuffer();
-          if (origin.excludeEnd) {
-            mode_buffer = lexeme;
-          }
-        }
-        do {
-          if (top.className) {
-            result += spanEndTag;
-          }
-          if (!top.skip && !top.subLanguage) {
-            relevance += top.relevance;
-          }
-          top = top.parent;
-        } while (top !== end_mode.parent);
-        if (end_mode.starts) {
-          startNewMode(end_mode.starts, '');
-        }
-        return origin.returnEnd ? 0 : lexeme.length;
-      }
-
-      if (isIllegal(lexeme, top))
-        throw new Error('Illegal lexeme "' + lexeme + '" for mode "' + (top.className || '<unnamed>') + '"');
-
-      /*
-      Parser should not reach this point as all types of lexemes should be caught
-      earlier, but if it does due to some bug make sure it advances at least one
-      character forward to prevent infinite looping.
-      */
-      mode_buffer += lexeme;
-      return lexeme.length || 1;
-    }
-
-    var language = getLanguage(name);
-    if (!language) {
-      throw new Error('Unknown language: "' + name + '"');
-    }
-
-    compileLanguage(language);
-    var top = continuation || language;
-    var continuations = {}; // keep continuations for sub-languages
-    var result = '', current;
-    for(current = top; current !== language; current = current.parent) {
-      if (current.className) {
-        result = buildSpan(current.className, '', true) + result;
-      }
-    }
-    var mode_buffer = '';
-    var relevance = 0;
-    try {
-      var match, count, index = 0;
-      while (true) {
-        top.terminators.lastIndex = index;
-        match = top.terminators.exec(value);
-        if (!match)
-          break;
-        count = processLexeme(value.substring(index, match.index), match[0]);
-        index = match.index + count;
-      }
-      processLexeme(value.substr(index));
-      for(current = top; current.parent; current = current.parent) { // close dangling modes
-        if (current.className) {
-          result += spanEndTag;
-        }
-      }
-      return {
-        relevance: relevance,
-        value: result,
-        language: name,
-        top: top
-      };
-    } catch (e) {
-      if (e.message && e.message.indexOf('Illegal') !== -1) {
-        return {
-          relevance: 0,
-          value: escape(value)
-        };
-      } else {
-        throw e;
-      }
-    }
-  }
-
-  /*
-  Highlighting with language detection. Accepts a string with the code to
-  highlight. Returns an object with the following properties:
-
-  - language (detected language)
-  - relevance (int)
-  - value (an HTML string with highlighting markup)
-  - second_best (object with the same structure for second-best heuristically
-    detected language, may be absent)
-
-  */
-  function highlightAuto(text, languageSubset) {
-    languageSubset = languageSubset || options.languages || objectKeys(languages);
-    var result = {
-      relevance: 0,
-      value: escape(text)
-    };
-    var second_best = result;
-    languageSubset.filter(getLanguage).forEach(function(name) {
-      var current = highlight(name, text, false);
-      current.language = name;
-      if (current.relevance > second_best.relevance) {
-        second_best = current;
-      }
-      if (current.relevance > result.relevance) {
-        second_best = result;
-        result = current;
-      }
-    });
-    if (second_best.language) {
-      result.second_best = second_best;
-    }
-    return result;
-  }
-
-  /*
-  Post-processing of the highlighted markup:
-
-  - replace TABs with something more useful
-  - replace real line-breaks with '<br>' for non-pre containers
-
-  */
-  function fixMarkup(value) {
-    return !(options.tabReplace || options.useBR)
-      ? value
-      : value.replace(fixMarkupRe, function(match, p1) {
-          if (options.useBR && match === '\n') {
-            return '<br>';
-          } else if (options.tabReplace) {
-            return p1.replace(/\t/g, options.tabReplace);
-          }
-          return '';
-      });
-  }
-
-  function buildClassName(prevClassName, currentLang, resultLang) {
-    var language = currentLang ? aliases[currentLang] : resultLang,
-        result   = [prevClassName.trim()];
-
-    if (!prevClassName.match(/\bhljs\b/)) {
-      result.push('hljs');
-    }
-
-    if (prevClassName.indexOf(language) === -1) {
-      result.push(language);
-    }
-
-    return result.join(' ').trim();
-  }
-
-  /*
-  Applies highlighting to a DOM node containing code. Accepts a DOM node and
-  two optional parameters for fixMarkup.
-  */
-  function highlightBlock(block) {
-    var node, originalStream, result, resultNode, text;
-    var language = blockLanguage(block);
-
-    if (isNotHighlighted(language))
-        return;
-
-    if (options.useBR) {
-      node = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
-      node.innerHTML = block.innerHTML.replace(/\n/g, '').replace(/<br[ \/]*>/g, '\n');
-    } else {
-      node = block;
-    }
-    text = node.textContent;
-    result = language ? highlight(language, text, true) : highlightAuto(text);
-
-    originalStream = nodeStream(node);
-    if (originalStream.length) {
-      resultNode = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
-      resultNode.innerHTML = result.value;
-      result.value = mergeStreams(originalStream, nodeStream(resultNode), text);
-    }
-    result.value = fixMarkup(result.value);
-
-    block.innerHTML = result.value;
-    block.className = buildClassName(block.className, language, result.language);
-    block.result = {
-      language: result.language,
-      re: result.relevance
-    };
-    if (result.second_best) {
-      block.second_best = {
-        language: result.second_best.language,
-        re: result.second_best.relevance
-      };
-    }
-  }
-
-  /*
-  Updates highlight.js global options with values passed in the form of an object.
-  */
-  function configure(user_options) {
-    options = inherit(options, user_options);
-  }
-
-  /*
-  Applies highlighting to all <pre><code>..</code></pre> blocks on a page.
-  */
-  function initHighlighting() {
-    if (initHighlighting.called)
-      return;
-    initHighlighting.called = true;
-
-    var blocks = document.querySelectorAll('pre code');
-    ArrayProto.forEach.call(blocks, highlightBlock);
-  }
-
-  /*
-  Attaches highlighting to the page load event.
-  */
-  function initHighlightingOnLoad() {
-    addEventListener('DOMContentLoaded', initHighlighting, false);
-    addEventListener('load', initHighlighting, false);
-  }
-
-  function registerLanguage(name, language) {
-    var lang = languages[name] = language(hljs);
-    if (lang.aliases) {
-      lang.aliases.forEach(function(alias) {aliases[alias] = name;});
-    }
-  }
-
-  function listLanguages() {
-    return objectKeys(languages);
-  }
-
-  function getLanguage(name) {
-    name = (name || '').toLowerCase();
-    return languages[name] || languages[aliases[name]];
-  }
-
-  /* Interface definition */
-
-  hljs.highlight = highlight;
-  hljs.highlightAuto = highlightAuto;
-  hljs.fixMarkup = fixMarkup;
-  hljs.highlightBlock = highlightBlock;
-  hljs.configure = configure;
-  hljs.initHighlighting = initHighlighting;
-  hljs.initHighlightingOnLoad = initHighlightingOnLoad;
-  hljs.registerLanguage = registerLanguage;
-  hljs.listLanguages = listLanguages;
-  hljs.getLanguage = getLanguage;
-  hljs.inherit = inherit;
-
-  // Common regexps
-  hljs.IDENT_RE = '[a-zA-Z]\\w*';
-  hljs.UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\w*';
-  hljs.NUMBER_RE = '\\b\\d+(\\.\\d+)?';
-  hljs.C_NUMBER_RE = '(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)'; // 0x..., 0..., decimal, float
-  hljs.BINARY_NUMBER_RE = '\\b(0b[01]+)'; // 0b...
-  hljs.RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~';
-
-  // Common modes
-  hljs.BACKSLASH_ESCAPE = {
-    begin: '\\\\[\\s\\S]', relevance: 0
-  };
-  hljs.APOS_STRING_MODE = {
-    className: 'string',
-    begin: '\'', end: '\'',
-    illegal: '\\n',
-    contains: [hljs.BACKSLASH_ESCAPE]
-  };
-  hljs.QUOTE_STRING_MODE = {
-    className: 'string',
-    begin: '"', end: '"',
-    illegal: '\\n',
-    contains: [hljs.BACKSLASH_ESCAPE]
-  };
-  hljs.PHRASAL_WORDS_MODE = {
-    begin: /\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/
-  };
-  hljs.COMMENT = function (begin, end, inherits) {
-    var mode = hljs.inherit(
-      {
-        className: 'comment',
-        begin: begin, end: end,
-        contains: []
-      },
-      inherits || {}
-    );
-    mode.contains.push(hljs.PHRASAL_WORDS_MODE);
-    mode.contains.push({
-      className: 'doctag',
-      begin: '(?:TODO|FIXME|NOTE|BUG|XXX):',
-      relevance: 0
-    });
-    return mode;
-  };
-  hljs.C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$');
-  hljs.C_BLOCK_COMMENT_MODE = hljs.COMMENT('/\\*', '\\*/');
-  hljs.HASH_COMMENT_MODE = hljs.COMMENT('#', '$');
-  hljs.NUMBER_MODE = {
-    className: 'number',
-    begin: hljs.NUMBER_RE,
-    relevance: 0
-  };
-  hljs.C_NUMBER_MODE = {
-    className: 'number',
-    begin: hljs.C_NUMBER_RE,
-    relevance: 0
-  };
-  hljs.BINARY_NUMBER_MODE = {
-    className: 'number',
-    begin: hljs.BINARY_NUMBER_RE,
-    relevance: 0
-  };
-  hljs.CSS_NUMBER_MODE = {
-    className: 'number',
-    begin: hljs.NUMBER_RE + '(' +
-      '%|em|ex|ch|rem'  +
-      '|vw|vh|vmin|vmax' +
-      '|cm|mm|in|pt|pc|px' +
-      '|deg|grad|rad|turn' +
-      '|s|ms' +
-      '|Hz|kHz' +
-      '|dpi|dpcm|dppx' +
-      ')?',
-    relevance: 0
-  };
-  hljs.REGEXP_MODE = {
-    className: 'regexp',
-    begin: /\//, end: /\/[gimuy]*/,
-    illegal: /\n/,
-    contains: [
-      hljs.BACKSLASH_ESCAPE,
-      {
-        begin: /\[/, end: /\]/,
-        relevance: 0,
-        contains: [hljs.BACKSLASH_ESCAPE]
-      }
-    ]
-  };
-  hljs.TITLE_MODE = {
-    className: 'title',
-    begin: hljs.IDENT_RE,
-    relevance: 0
-  };
-  hljs.UNDERSCORE_TITLE_MODE = {
-    className: 'title',
-    begin: hljs.UNDERSCORE_IDENT_RE,
-    relevance: 0
-  };
-  hljs.METHOD_GUARD = {
-    // excludes method names from keyword processing
-    begin: '\\.\\s*' + hljs.UNDERSCORE_IDENT_RE,
-    relevance: 0
-  };
-
-  return hljs;
-}));

文件差异内容过多而无法显示
+ 0 - 0
src/main/resources/static/styles/highlight/highlight.pack.js


+ 0 - 99
src/main/resources/static/styles/highlight/styles/default.css

@@ -1,99 +0,0 @@
-/*
-
-Original highlight.js style (c) Ivan Sagalaev <maniac@softwaremaniacs.org>
-
-*/
-
-.hljs {
-  display: block;
-  overflow-x: auto;
-  padding: 0.5em;
-  background: #F0F0F0;
-}
-
-
-/* Base color: saturation 0; */
-
-.hljs,
-.hljs-subst {
-  color: #444;
-}
-
-.hljs-comment {
-  color: #888888;
-}
-
-.hljs-keyword,
-.hljs-attribute,
-.hljs-selector-tag,
-.hljs-meta-keyword,
-.hljs-doctag,
-.hljs-name {
-  font-weight: bold;
-}
-
-
-/* User color: hue: 0 */
-
-.hljs-type,
-.hljs-string,
-.hljs-number,
-.hljs-selector-id,
-.hljs-selector-class,
-.hljs-quote,
-.hljs-template-tag,
-.hljs-deletion {
-  color: #880000;
-}
-
-.hljs-title,
-.hljs-section {
-  color: #880000;
-  font-weight: bold;
-}
-
-.hljs-regexp,
-.hljs-symbol,
-.hljs-variable,
-.hljs-template-variable,
-.hljs-link,
-.hljs-selector-attr,
-.hljs-selector-pseudo {
-  color: #BC6060;
-}
-
-
-/* Language color: hue: 90; */
-
-.hljs-literal {
-  color: #78A960;
-}
-
-.hljs-built_in,
-.hljs-bullet,
-.hljs-code,
-.hljs-addition {
-  color: #397300;
-}
-
-
-/* Meta color: hue: 200 */
-
-.hljs-meta {
-  color: #1f7199;
-}
-
-.hljs-meta-string {
-  color: #4d99bf;
-}
-
-
-/* Misc effects */
-
-.hljs-emphasis {
-  font-style: italic;
-}
-
-.hljs-strong {
-  font-weight: bold;
-}

+ 0 - 97
src/main/resources/static/styles/highlight/styles/docco.css

@@ -1,97 +0,0 @@
-/*
-Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars)
-*/
-
-.hljs {
-  display: block;
-  overflow-x: auto;
-  padding: 0.5em;
-  color: #000;
-  background: #f8f8ff;
-}
-
-.hljs-comment,
-.hljs-quote {
-  color: #408080;
-  font-style: italic;
-}
-
-.hljs-keyword,
-.hljs-selector-tag,
-.hljs-literal,
-.hljs-subst {
-  color: #954121;
-}
-
-.hljs-number {
-  color: #40a070;
-}
-
-.hljs-string,
-.hljs-doctag {
-  color: #219161;
-}
-
-.hljs-selector-id,
-.hljs-selector-class,
-.hljs-section,
-.hljs-type {
-  color: #19469d;
-}
-
-.hljs-params {
-  color: #00f;
-}
-
-.hljs-title {
-  color: #458;
-  font-weight: bold;
-}
-
-.hljs-tag,
-.hljs-name,
-.hljs-attribute {
-  color: #000080;
-  font-weight: normal;
-}
-
-.hljs-variable,
-.hljs-template-variable {
-  color: #008080;
-}
-
-.hljs-regexp,
-.hljs-link {
-  color: #b68;
-}
-
-.hljs-symbol,
-.hljs-bullet {
-  color: #990073;
-}
-
-.hljs-built_in,
-.hljs-builtin-name {
-  color: #0086b3;
-}
-
-.hljs-meta {
-  color: #999;
-  font-weight: bold;
-}
-
-.hljs-deletion {
-  background: #fdd;
-}
-
-.hljs-addition {
-  background: #dfd;
-}
-
-.hljs-emphasis {
-  font-style: italic;
-}
-
-.hljs-strong {
-  font-weight: bold;
-}

+ 0 - 1437
src/main/resources/static/styles/highlight/styles/style.css

@@ -1,1437 +0,0 @@
-html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p,
-	blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn,
-	em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var,
-	dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption,
-	tbody, tfoot, thead, tr, th, td {
-	margin: 0;
-	padding: 0;
-	border: 0;
-	outline: 0;
-	font-weight: inherit;
-	font-style: inherit;
-	font-family: inherit;
-	font-size: 100%;
-	vertical-align: baseline;
-}
-
-input {
-	padding: 0;
-	border: 1px solid #10af88;
-}
-
-body {
-	line-height: 1;
-	color: #000;
-	background: #fff;
-}
-
-ol, ul {
-	list-style: none;
-}
-
-table {
-	border-collapse: separate;
-	border-spacing: 0;
-	vertical-align: middle;
-}
-
-caption, th, td {
-	text-align: left;
-	font-weight: normal;
-	vertical-align: middle;
-	border-right: 1px solid #ddd;
-	border-bottom: 1px solid #ddd;
-}
-
-a img {
-	border: none;
-}
-
-body {
-	width: 100%;
-}
-
-body:before, body:after {
-	content: "";
-	display: table;
-}
-
-body:after {
-	clear: both;
-}
-
-#page-banner, #banner {
-	border-bottom: 1px solid #ccc;
-	background-color: #eee;
-	-webkit-background-size: 500px;
-	-moz-background-size: 500px;
-	background-size: 500px;
-}
-
-@media all and (-webkit-min-device-pixel-ratio:1.5) , (
-		min--moz-device-pixel-ratio :1.5) , ( -o-min-device-pixel-ratio
-		:1.5/1) , ( min-device-pixel-ratio :1.5) , ( min-resolution :138dpi) ,
-		( min-resolution :1.5dppx) {
-	#page-banner, #banner, #page-banner, #banner {
-		-webkit-background-size: auto auto;
-		-moz-background-size: auto auto;
-		background-size: auto auto;
-	}
-}
-
-#main-nav-toggle:before, #github-btn:before, #search-btn:before,
-	#page-edit-link:before, .swbu-main blockquote:before,
-	#page-footer-prev:before, #page-footer-next:after, #news-subscribe-link:before,
-	.api-deprecated-msg:before, #banner-getting-started-btn:before,
-	.intro-feature:before, .footer-link:before {
-	font-family: icomoon;
-	font-style: normal;
-	font-weight: normal;
-	font-variant: normal;
-	text-transform: none;
-	-webkit-font-smoothing: antialiased;
-	-moz-osx-font-smoothing: grayscale;
-}
-
-#page-edit-link, #news-subscribe-link {
-	color: #aaa;
-	text-shadow: 1px 0 #eee;
-	width: 24px;
-	height: 24px;
-	line-height: 24px;
-	text-align: center;
-	text-decoration: none;
-	-webkit-transition: color 0.2s;
-	-moz-transition: color 0.2s;
-	-ms-transition: color 0.2s;
-	transition: color 0.2s;
-	position: absolute;
-	top: 0;
-	bottom: 0;
-	right: 0;
-	margin: auto;
-	font-size: 24px;
-}
-
-#page-edit-link:hover, #news-subscribe-link:hover {
-	color: #888;
-}
-
-/* @media ( max-width : 768px) {
-	#page-edit-link, #news-subscribe-link, #page-edit-link,
-		#news-subscribe-link {
-		display: none;
-	}
-} */
-body {
-	font: 14px "Helvetica Neue", Helvetica, Arial, sans-serif;
-	-webkit-text-size-adjust: 100%;
-}
-
-.outer {
-	margin: 0 auto;
-}
-
-.outer:before, .outer:after {
-	content: "";
-	display: table;
-}
-
-.outer:after {
-	clear: both;
-}
-
-.inner {
-	display: inline;
-	float: left;
-	width: 100%;
-}
-
-#header {
-	background: #fff;
-	border-bottom: 1px solid #ccc;
-	font-family: Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;
-	padding-top: 30px;
-	padding-bottom: 30px;
-	position: relative;
-}
-
-#logo-wrap {
-	text-align: center;
-	position: relative;
-}
-
-#logo-wrap {
-	float: left;
-}
-
-#logo {
-	text-indent: 100%;
-	white-space: nowrap;
-	overflow: hidden;
-	width: 127px;
-	height: 30px;
-	background-image: url("images/logo.png");
-	display: block;
-}
-
-@media all and (-webkit-min-device-pixel-ratio:1.5) , (
-		min--moz-device-pixel-ratio :1.5) , ( -o-min-device-pixel-ratio
-		:1.5/1) , ( min-device-pixel-ratio :1.5) , ( min-resolution :138dpi) ,
-		( min-resolution :1.5dppx) {
-	#logo {
-		background-image: url("images/logo@2x.png");
-		-webkit-background-size: 127px 30px;
-		-moz-background-size: 127px 30px;
-		background-size: 127px 30px;
-	}
-}
-
-#main-nav-toggle {
-	float: right;
-	width: 30px;
-	height: 30px;
-	text-align: center;
-	color: #999;
-	cursor: pointer;
-	position: absolute;
-	top: 0;
-	bottom: 0;
-	right: 0;
-	margin: auto;
-	-webkit-user-select: none;
-	-moz-user-select: none;
-	-ms-user-select: none;
-	user-select: none;
-	font-size: 24px;
-}
-
-#main-nav-toggle:before {
-	width: 24px;
-	height: 24px;
-	position: absolute;
-	top: 0;
-	left: 0;
-	right: 0;
-	bottom: 0;
-	margin: auto;
-	content: "\f0c9";
-}
-
-#main-nav-toggle:hover, #main-nav-toggle:active {
-	color: #555;
-}
-
-#main-nav-toggle {
-	display: none;
-}
-
-#main-nav.on {
-	display: block;
-}
-
-/* @media ( max-width : 768px) {
-	#main-nav {
-		position: absolute;
-		top: 100%;
-		left: 0;
-		right: 0;
-		margin-top: -20px;
-		border-bottom: 1px solid #ddd;
-		background: #fff;
-		display: none;
-		z-index: 1;
-	}
-} */
-#main-nav {
-	float: right;
-	margin: 0;
-}
-
-#main-nav-list {
-	float: left;
-}
-
-.main-nav-item {
-	margin: 10px;
-}
-
-.main-nav-item {
-	float: left;
-	margin: 0 15px;
-}
-
-.main-nav-link {
-	display: block;
-	font-weight: bold;
-	text-transform: uppercase;
-	text-decoration: none;
-	color: #999;
-	text-align: center;
-	padding: 10px 15px;
-	line-height: 1;
-	-webkit-transition: 0.2s;
-	-moz-transition: 0.2s;
-	-ms-transition: 0.2s;
-	transition: 0.2s;
-}
-
-.main-nav-link {
-	padding: 10px 0;
-}
-
-.main-nav-link:hover, .main-nav-link:active {
-	color: #10af88;
-}
-
-.main-nav-link:hover, .main-nav-link:active {
-	background: #10af88;
-	color: #fff;
-	-webkit-border-radius: 4px;
-	border-radius: 4px;
-}
-
-#github-btn, #search-btn {
-	float: left;
-	display: none;
-	width: 18px;
-	height: 18px;
-	text-align: center;
-	padding: 8px;
-	line-height: 18px;
-	cursor: pointer;
-	color: #999;
-	-webkit-transition: color 0.2s;
-	-moz-transition: color 0.2s;
-	-ms-transition: color 0.2s;
-	transition: color 0.2s;
-	text-decoration: none;
-}
-
-#github-btn:hover, #search-btn:hover {
-	color: #10af88;
-}
-
-#github-btn:before, #search-btn:before {
-	font-size: 18px;
-}
-
-#github-btn, #search-btn, #github-btn, #search-btn {
-	display: block;
-}
-
-#github-btn:before {
-	content: "\f113";
-}
-
-#search-btn:before {
-	content: "\f002";
-}
-
-#page-banner {
-	padding: 30px 0;
-	text-align: center;
-}
-
-#page-banner {
-	padding: 20px 0;
-	text-align: left;
-}
-
-#page-banner-inner {
-	position: relative;
-}
-
-#swbu-title {
-	color: #555;
-	font: 300 20px Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;
-	text-shadow: 1px 0 #eee;
-	line-height: 1em;
-}
-
-#page-edit-link:before {
-	content: "\f040";
-}
-
-.page-content {
-	display: inline;
-}
-
-.swbu-main {
-	line-height: 1.6em;
-	color: #444;
-}
-
-.swbu-main p{
-	white-space: pre-wrap;
-}
-
-.swbu-main p, .swbu-main ol, .swbu-main ul, .swbu-main dl,
-	.swbu-main table, .swbu-main blockquote, .swbu-main iframe,
-	.swbu-main .highlight {
-	line-height: 1.9em;
-	margin: 1.6em 0;
-}
-
-.swbu-main td p{
-	margin: 0.1em 0;
-}
-
-.swbu-main h1 {
-	font-size: 2em;
-}
-
-.swbu-main h2 {
-	font-size: 1.5em;
-}
-
-.swbu-main h3 {
-	font-size: 1.3em;
-}
-
-.swbu-main h1, .swbu-main h2, .swbu-main h3, .swbu-main h4,
-	.swbu-main h5, .swbu-main h6 {
-	line-height: 1em;
-	font-weight: bold;
-	margin: 1em 0;
-}
-
-.swbu-main a {
-	color: #10af88;
-	text-decoration: none;
-}
-
-.swbu-main a:hover {
-	text-decoration: underline;
-}
-
-.swbu-main strong {
-	font-weight: bold;
-}
-
-.swbu-main em {
-	font-style: italic;
-}
-
-.swbu-main ul, .swbu-main ol, .swbu-main dl {
-	margin-left: 20px;
-}
-
-.swbu-main ul ul, .swbu-main ol ul, .swbu-main dl ul, .swbu-main ul ol,
-	.swbu-main ol ol, .swbu-main dl ol, .swbu-main ul dl, .swbu-main ol dl,
-	.swbu-main dl dl {
-	margin-top: 0;
-	margin-bottom: 0;
-}
-
-.swbu-main ul {
-	list-style: disc;
-}
-
-.swbu-main ol {
-	list-style: decimal;
-}
-
-.swbu-main dl {
-	list-style: square;
-}
-
-.swbu-main li p {
-	margin: 0;
-}
-
-.swbu-main li table, .swbu-main li blockquote, .swbu-main li iframe,
-	.swbu-main li .highlight {
-	margin: 1em 0;
-}
-
-.swbu-main blockquote {
-	border: 1px solid #ddd;
-	border-left: 4px solid #ddd;
-	padding: 0 20px;
-	position: relative;
-}
-
-.swbu-main blockquote {
-	margin-left: 40px;
-}
-
-.swbu-main blockquote footer {
-	margin: 1em 0;
-	font-style: italic;
-}
-
-.swbu-main blockquote footer cite a {
-	color: #999;
-}
-
-.swbu-main .note.success {
-	border-left-color: #50af51;
-}
-
-.swbu-main .note.info {
-	border-left-color: #5bc0de;
-}
-
-.swbu-main .note.warn {
-	border-left-color: #f0ad4e;
-}
-
-.swbu-main .note.danger {
-	border-left-color: #d9534f;
-}
-
-.swbu-main .note-title {
-	margin: 1em 0;
-	display: block;
-	font-size: 1.3em;
-	font-weight: bold;
-}
-
-.swbu-main table {
-	width: 100%;
-	border-top: 1px solid #ddd;
-	border-left: 1px solid #ddd;
-}
-
-.swbu-main table th {
-	font-weight: bold;
-	background: #eee;
-}
-
-.swbu-main table th, .swbu-main table td {
-	padding: 5px 15px;
-}
-
-.swbu-main table tr:nth-child(2n) {
-	/*background: #eee;*/
-	
-}
-
-#page-footer {
-	border-top: 1px solid #ddd;
-	color: #999;
-	padding: 1em 0 30px;
-	text-align: center;
-}
-
-#page-footer:before, #page-footer:after {
-	content: "";
-	display: table;
-}
-
-#page-footer:after {
-	clear: both;
-}
-
-#page-footer-updated {
-	font-size: 0.9em;
-	display: none;
-}
-
-#page-footer-updated {
-	display: inline;
-}
-
-#page-footer-prev, #page-footer-next {
-	font-family: Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;
-	font-size: 1em;
-	color: #10af88;
-	font-weight: bold;
-	text-transform: uppercase;
-	text-decoration: none;
-}
-
-#page-footer-prev {
-	float: left;
-}
-
-#page-footer-prev:before {
-	content: "\f060";
-	padding-right: 10px;
-}
-
-#page-footer-next {
-	float: right;
-}
-
-#page-footer-next:after {
-	content: "\f061";
-	padding-left: 10px;
-}
-
-#page-mobile-menu {
-	width: 100%;
-	margin: 30px 0 0;
-	display: none;
-}
-/* 
-@media ( max-width : 768px) {
-	#page-mobile-menu {
-		display: block;
-	}
-} */
-.toc-wrap {
-	float: right;
-	-webkit-border-radius: 4px;
-	border-radius: 4px;
-	background: #eee;
-	border: 1px solid #ddd;
-	margin: 1.6em 0 1em 2em;
-	padding: 10px 15px;
-	line-height: 1.6em;
-}
-
-.toc-title {
-	font-weight: bold;
-	color: #444;
-}
-
-.toc-link {
-	color: #10af88;
-	text-decoration: none;
-	font-size: 0.9em;
-}
-
-.toc-link:hover {
-	text-decoration: underline;
-}
-
-.toc-child {
-	margin-left: 1em;
-}
-
-#sidebar {
-	margin: 0 1.2254901960784%;
-	font-family: Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;
-	padding: 30px 0 40px;
-}
-
-/* @media ( max-width : 768px) {
-	#sidebar {
-		display: none;
-	}
-} */
-.sidebar-title {
-	display: block;
-	margin: 10px 0;
-	color: #666;
-	position: relative;
-	padding-left: 20px;
-	font-size: 102%;
-	overflow: hidden;
-	text-overflow: ellipsis;
-	white-space: nowrap;
-}
-
-.sidebar-title:before {
-	content: "";
-	width: 8px;
-	height: 8px;
-	background: #666;
-	-webkit-border-radius: 50%;
-	border-radius: 50%;
-	position: absolute;
-	top: 7px;
-	left: 0;
-}
-
-.sidebar-link {
-	color: #666;
-	text-decoration: none;
-	display: block;
-	font-weight: 300;
-	padding: 5px 15px;
-	border-left: 2px solid #ddd;
-	margin-left: 3px;
-	overflow: hidden;
-	text-overflow: ellipsis;
-	white-space: nowrap;
-}
-
-.sidebar-link:hover, .sidebar-link.current {
-	color: #10af88;
-	border-color: #10af88;
-}
-
-.sidebar-link.current {
-	font-weight: bold;
-	border-left-color: #10af88;
-}
-
-#news-subscribe-link:before {
-	content: "\f09e";
-}
-
-#post-list {
-	padding-bottom: 30px;
-}
-
-.post {
-	padding: 20px 0;
-	width: 860px;
-	margin: 0 auto;
-}
-
-.post.full {
-	padding: 60px 0 30px;
-}
-
-.post-header {
-	text-align: center;
-}
-
-.post-title {
-	font: 300 2em Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;
-	line-height: 1.2em;
-	color: #444;
-	text-decoration: none;
-	-webkit-transition: color 0.2s;
-	-moz-transition: color 0.2s;
-	-ms-transition: color 0.2s;
-	transition: color 0.2s;
-}
-
-a.post-title:hover {
-	color: #10af88;
-}
-
-.post-date-wrap {
-	padding: 20px 0;
-}
-
-.post-date {
-	font: 300 0.9em Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;
-	line-height: 1em;
-	color: #999;
-	text-decoration: none;
-	position: relative;
-	background: #fff;
-	padding: 0 8px;
-	-webkit-transition: color 0.2s;
-	-moz-transition: color 0.2s;
-	-ms-transition: color 0.2s;
-	transition: color 0.2s;
-}
-
-.post-date:hover {
-	color: #444;
-}
-
-.post-footer {
-	padding: 20px 0 40px;
-}
-
-#api-header {
-	margin: 1.6em 0;
-}
-
-#api-header:before, #api-header:after {
-	content: "";
-	display: table;
-}
-
-#api-header:after {
-	clear: both;
-}
-
-#api-title {
-	color: #444;
-	font-size: 2em;
-	font-weight: bold;
-	margin-bottom: 4px;
-}
-
-.api-meta {
-	color: #999;
-	font-size: 0.85em;
-	line-height: 1.6em;
-	float: left;
-}
-
-.api-meta a {
-	color: #10af88;
-	text-decoration: none;
-}
-
-.api-meta a:hover {
-	text-decoration: underline;
-}
-
-.api-options {
-	float: right;
-	font-size: 0.85em;
-	color: #444;
-}
-
-.api-section-title {
-	border-top: 1px solid #ddd;
-	padding-top: 1em;
-}
-
-.api-item {
-	margin: 2.5em 0;
-}
-
-.api-item.private, .api-item.protected, .api-item.deprecated {
-	display: none;
-}
-
-.api-item-title {
-	font-weight: normal;
-	margin-bottom: 6px;
-	display: inline;
-	font-family: "Source Code Pro", Monaco, Menlo, Consolas, monospace;
-}
-
-.api-item-title a {
-	color: #444;
-}
-
-.api-item-params {
-	font-family: "Source Code Pro", Monaco, Menlo, Consolas, monospace;
-}
-
-.api-deprecated-msg {
-	margin: 1.6em 0;
-	color: #444;
-}
-
-.api-deprecated-msg:before {
-	content: "\f06a";
-	color: #f00;
-}
-
-.api-deprecated-msg strong {
-	font-weight: bold;
-	color: #f00;
-}
-
-.api-item-type {
-	color: #999;
-}
-
-.api-item-type a, .api-item-type span {
-	border-bottom: 1px dotted #999;
-}
-
-.api-item-type a:hover {
-	text-decoration: none;
-}
-
-.api-item-type span {
-	color: #444;
-}
-
-.api-item-flag {
-	background: #999;
-	color: #fff;
-	-webkit-border-radius: 3px;
-	border-radius: 3px;
-	font-size: 0.85em;
-	margin: 0 6px;
-	padding: 3px 5px;
-}
-
-.api-item-meta {
-	color: #999;
-	font-size: 0.85em;
-	line-height: 1.6em;
-}
-
-.api-item-meta a {
-	color: #10af88;
-	text-decoration: none;
-}
-
-.api-item-meta a:hover {
-	text-decoration: underline;
-}
-
-.api-item-subtitle {
-	margin: 1.6em 0;
-}
-
-#banner {
-	padding-top: 50px;
-	padding-bottom: 50px;
-}
-
-#banner {
-	padding-top: 150px;
-}
-
-#banner-title {
-	color: #555;
-	font: 300 35px Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;
-	text-shadow: 1px 0 #eee;
-	line-height: 1.3;
-}
-
-#banner-getting-started-prefix, #banner-getting-started-input {
-	font-family: "Source Code Pro", Monaco, Menlo, Consolas, monospace;
-	font-size: 14px;
-	line-height: 40px;
-}
-
-#banner-getting-started-prefix, #banner-getting-started-input,
-	#banner-getting-started-prefix, #banner-getting-started-input {
-	font-size: 16px;
-}
-
-#banner-getting-started {
-	padding-top: 30px;
-}
-
-#banner-getting-started:before, #banner-getting-started:after {
-	content: "";
-	display: table;
-}
-
-#banner-getting-started:after {
-	clear: both;
-}
-
-#banner-getting-started-prefix {
-	float: left;
-	background: #c8c8c8;
-	padding-left: 15px;
-	color: #999;
-}
-
-#banner-getting-started-input {
-	float: left;
-	float: left;
-	background: #c8c8c8;
-	color: #555;
-	border: none;
-	padding: 0 15px;
-	margin: 0;
-	height: 40px;
-	-webkit-border-radius: 0;
-	border-radius: 0;
-}
-
-#banner-getting-started-btn {
-	float: left;
-	background: #bbb;
-	color: #777;
-	text-decoration: none;
-	width: 40px;
-	height: 40px;
-	text-align: center;
-	line-height: 40px;
-	font-size: 16px;
-}
-
-#banner-getting-started-btn:hover {
-	background: #aaa;
-	color: #555;
-}
-
-#banner-getting-started-btn:before {
-	content: "\f061";
-}
-
-#banner-share {
-	padding: 100px 0 0;
-	display: none;
-}
-
-#banner-share {
-	display: block;
-}
-
-.intro-wrap {
-	padding: 20px 0;
-}
-
-.intro-wrap {
-	padding: 40px 0;
-}
-
-.intro-feature-wrap {
-	display: inline;
-	float: left;
-	width: 97.5490196078431%;
-	margin: 0 1.2254901960784%;
-}
-
-.intro-feature-wrap {
-	display: inline;
-	float: left;
-	width: 47.5490196078431%;
-	margin: 0 1.2254901960784%;
-}
-
-.intro-feature {
-	margin: 20px 0;
-	padding-left: 50px;
-	position: relative;
-}
-
-.intro-feature {
-	margin: 40px 0;
-}
-
-.intro-feature:before {
-	font-size: 30px;
-	position: absolute;
-	top: 0;
-	left: 0;
-	color: #10af88;
-}
-
-#intro-feature-fast:before {
-	content: "\e604";
-}
-
-#intro-feature-markdown:before {
-	content: "\e606";
-}
-
-#intro-feature-deploy:before {
-	content: "\e603";
-}
-
-#intro-feature-plugin:before {
-	content: "\e605";
-}
-
-.intro-feature-title {
-	font-weight: 300;
-	font-family: Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;
-	color: #10af88;
-	font-size: 24px;
-	padding-bottom: 20px;
-	line-height: 1.3em;
-}
-
-.intro-feature-desc {
-	color: #444;
-	line-height: 2em;
-}
-
-#intro-cmd-wrap {
-	margin: 20px auto;
-	width: 700px;
-	overflow: auto;
-	background: #eee;
-	padding: 15px 0;
-}
-
-#intro-cmd-wrap {
-	margin: 40px auto;
-}
-
-.intro-cmd-item {
-	line-height: 1.8;
-	font-family: "Source Code Pro", Monaco, Menlo, Consolas, monospace;
-	font-size: 16px;
-	color: #444;
-	white-space: nowrap;
-}
-
-.intro-cmd-item:before {
-	content: "$";
-	padding-right: 10px;
-	color: #10af88;
-}
-
-#intro-btn-wrap {
-	text-align: center;
-	padding: 25px 0;
-}
-
-#intro-btn {
-	display: inline-block;
-	padding: 15px 30px;
-	font-family: Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;
-	font-weight: bold;
-	border: 3px solid #10af88;
-	-webkit-border-radius: 3px;
-	border-radius: 3px;
-	color: #10af88;
-	font-size: 16px;
-	text-transform: uppercase;
-	-webkit-transition: 0.2s;
-	-moz-transition: 0.2s;
-	-ms-transition: 0.2s;
-	transition: 0.2s;
-	text-decoration: none;
-	line-height: 1;
-}
-
-#intro-btn:hover {
-	color: #fff;
-	background: #10af88;
-}
-
-#footer {
-	padding: 30px 0;
-	font-family: Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;
-	color: #999;
-	line-height: 1.5;
-	border-top: 1px solid #ccc;
-	text-align: center;
-	margin-top: 10px;
-}
-
-#footer {
-	text-align: center;
-}
-
-#footer-copyright {
-	float: center;
-}
-
-#footer-copyright a {
-	color: #777;
-	text-decoration: none;
-}
-
-#footer-copyright a:hover {
-	text-decoration: underline;
-	color: #10af88;
-}
-/* 
-@media ( max-width : 768px) {
-	#footer-links {
-		margin-top: 25px;
-	}
-} */
-#footer-links {
-	float: right;
-	margin-right: -10px;
-}
-
-.footer-link {
-	text-decoration: none;
-	width: 30px;
-	height: 30px;
-	font-size: 30px;
-	line-height: 30px;
-	display: inline-block;
-	text-align: center;
-	color: #999;
-	margin: 0 10px;
-	-webkit-transition: color 0.2s;
-	-moz-transition: color 0.2s;
-	-ms-transition: color 0.2s;
-	transition: color 0.2s;
-}
-
-.footer-link:hover {
-	color: #10af88;
-}
-
-.footer-link span {
-	display: none;
-}
-
-#footer-link-twitter:before {
-	content: "\f099";
-}
-
-#footer-link-github:before {
-	content: "\f113";
-}
-
-pre, code {
-	font-family: "Source Code Pro", Monaco, Menlo, Consolas, monospace;
-	color: #4d4d4c;
-	background: #eee;
-	font-size: 13px;
-}
-
-code {
-	-webkit-border-radius: 2px;
-	border-radius: 2px;
-	padding: 0 5px;
-}
-
-pre {
-	padding: 10px 15px;
-	line-height: 22px;
-	-webkit-border-radius: 4px;
-	border-radius: 4px;
-	border: 1px solid #ddd;
-}
-
-pre code {
-	border: none;
-	display: block;
-	padding: 0;
-}
-
-.highlight {
-	background: #eee;
-	border: 1px solid #ddd;
-	-webkit-border-radius: 4px;
-	border-radius: 4px;
-	padding: 10px 15px;
-	color: #4d4d4c;
-	overflow: auto;
-	margin: 0;
-}
-
-.highlight figcaption {
-	margin: -5px 0 5px;
-	font-size: 0.9em;
-	color: #999;
-}
-
-.highlight figcaption:before, .highlight figcaption:after {
-	content: "";
-	display: table;
-}
-
-.highlight figcaption:after {
-	clear: both;
-}
-
-.highlight figcaption a {
-	float: right;
-}
-
-.highlight pre {
-	padding: 0;
-	border: none;
-	background: none;
-}
-
-.highlight .line {
-	height: 22px;
-}
-
-pre .comment, pre .title {
-	color: #8e908c;
-}
-
-pre .variable, pre .attribute, pre .tag, pre .regexp, pre .ruby .constant,
-	pre .xml .tag .title, pre .xml .pi, pre .xml .doctype, pre .html .doctype,
-	pre .css .id, pre .css .class, pre .css .pseudo {
-	color: #c82829;
-}
-
-pre .number, pre .preprocessor, pre .built_in, pre .literal, pre .params,
-	pre .constant {
-	color: #f5871f;
-}
-
-pre .class, pre .ruby .class .title, pre .css .rules .attribute {
-	color: #718c00;
-}
-
-pre .string, pre .value, pre .inheritance, pre .header, pre .ruby .symbol,
-	pre .xml .cdata {
-	color: #718c00;
-}
-
-pre .css .hexcolor {
-	color: #3e999f;
-}
-
-pre .function, pre .python .decorator, pre .python .title, pre .ruby .function .title,
-	pre .ruby .title .keyword, pre .perl .sub, pre .javascript .title, pre .coffeescript .title
-	{
-	color: #4271ae;
-}
-
-pre .keyword, pre .javascript .function {
-	color: #8959a8;
-}
-
-.call_out_icon {
-	position: absolute;
-	left: -40px;
-	top: 20px;
-	font-size: 25px;
-}
-
-em.d_callout_icon_info {
-	color: #5bc0de
-}
-
-em.d_callout_icon_warn {
-	color: #f0ad4e
-}
-
-em.d_callout_icon_danger {
-	color: #d9534f
-}
-
-em.d_callout_icon_success {
-	color: #50af51
-}
-
-.document_a {
-	border-left: none;
-	padding: 0 0 0 2px;
-	margin: 10px 0
-}
-
-.document_em {
-	margin-right: 12px;
-}
-
-.version_s {
-	margin-left: 10px;
-}
-
-.search_area input[type='text'] {
-	float: left;
-	height: 25px;
-	width: 200px;
-	padding: 0 10px;
-	margin-top: 5px;
-}
-
-.search_area input[type='button'] {
-	float: left;
-	height: 27px;
-	background-color: #11a782;
-	border: 0 none;
-	color: #ffffff;
-	cursor: pointer;
-	padding: 5px 10px;
-	margin-top: 5px;
-}
-
-.search_area input[type='button']:HOVER {
-	background-color: #10af88;
-}
-
-.search_results .highlight {
-	color: #dd4b39;
-	border: none;
-	background: none;
-	padding: 0;
-}
-
-.search_results li {
-	margin-bottom: 10px;
-}
-
-.search_results a {
-	font-size: 16px;
-}
-
-.up_btn {
-	position: fixed;
-	bottom: 180px;
-	right: 120px;
-	font-size: 30px;
-	cursor: pointer;
-	display: none;
-	color: #666;
-}
-
-.up_btn:HOVER {
-	color: #10af88;
-}
-
-.dl_icon {
-	line-height: 36px;
-	float: right;
-	padding: 0 15px;
-	font-size: 20px;
-}
-
-.dl_icon a {
-	color: #10af88;
-}
-
-.clear {
-	clear: both;
-}
-
-/* 页面响应式样式 */
-@media ( min-width : 768px) {
-	#sidebar {
-		display: block;
-		float: left;
-		width: 22.5490196078431%;
-	}
-	.outer {
-		width: 1045px;
-		padding: 0 25px;
-	}
-	.page-content {
-		width: 73%;
-		float: right;
-	}
-	#main-nav {
-		display: block;
-	}
-	#dl_icon {
-		display: block;
-	}
-	#navi_icon {
-		display: none;
-	}
-	.up_btn {
-		right: 120px;
-	}
-	.version_s{
-		display: inline;
-	}
-	.bdshare-slide-button{
-		display: block !important;
-	}
-}
-
-@media ( max-width : 768px) {
-	#sidebar {
-		width: 90%;
-	}
-	.outer {
-		width: 95%;
-		padding: 0;
-	}
-	.page-content {
-		width: 95%;
-	}
-	#main-nav {
-		display: none;
-	}
-	#dl_icon {
-		display: none;
-	}
-	#navi_icon {
-		display: block;
-	}
-	.up_btn {
-		right: 40px;
-	}
-	.version_s{
-		display: none;
-	}
-	.navi_show{
-		display: block;
-	}
-	.navi_hidden{
-		display: none;
-	}
-	.icon_active{
-		color: #10af88;
-	}
-	.icon_no_active{
-		color: #aaa;
-	}
-	.navi_icon{
-		line-height: 36px;
-		float: left;
-		padding: 0 5px 0 0;
-		font-size: 20px;
-		cursor: pointer;
-	}
-	/* 百度分享按钮,小屏幕不出现 */ 
-	.bdshare-slide-button{
-		display: none !important;
-	}
-}
-
-pre code{
-	overflow: auto;
-}

二进制
src/main/resources/static/styles/images/api.ico


文件差异内容过多而无法显示
+ 0 - 6
src/main/resources/static/styles/jquery/clipboard/clipboard.min.js


+ 0 - 1556
src/main/resources/static/styles/jquery/marked.js

@@ -1,1556 +0,0 @@
-/**
- * marked - a markdown parser
- * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)
- * https://github.com/markedjs/marked
- */
-
-;(function(root) {
-'use strict';
-
-/**
- * Block-Level Grammar
- */
-
-var block = {
-  newline: /^\n+/,
-  code: /^( {4}[^\n]+\n*)+/,
-  fences: noop,
-  hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,
-  heading: /^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,
-  nptable: noop,
-  blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,
-  list: /^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,
-  html: '^ {0,3}(?:' // optional indentation
-    + '<(script|pre|style)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)' // (1)
-    + '|comment[^\\n]*(\\n+|$)' // (2)
-    + '|<\\?[\\s\\S]*?\\?>\\n*' // (3)
-    + '|<![A-Z][\\s\\S]*?>\\n*' // (4)
-    + '|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\n*' // (5)
-    + '|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)' // (6)
-    + '|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$)' // (7) open tag
-    + '|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$)' // (7) closing tag
-    + ')',
-  def: /^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,
-  table: noop,
-  lheading: /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,
-  paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading| {0,3}>|<\/?(?:tag)(?: +|\n|\/?>)|<(?:script|pre|style|!--))[^\n]+)*)/,
-  text: /^[^\n]+/
-};
-
-block._label = /(?!\s*\])(?:\\[\[\]]|[^\[\]])+/;
-block._title = /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/;
-block.def = edit(block.def)
-  .replace('label', block._label)
-  .replace('title', block._title)
-  .getRegex();
-
-block.bullet = /(?:[*+-]|\d+\.)/;
-block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;
-block.item = edit(block.item, 'gm')
-  .replace(/bull/g, block.bullet)
-  .getRegex();
-
-block.list = edit(block.list)
-  .replace(/bull/g, block.bullet)
-  .replace('hr', '\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))')
-  .replace('def', '\\n+(?=' + block.def.source + ')')
-  .getRegex();
-
-block._tag = 'address|article|aside|base|basefont|blockquote|body|caption'
-  + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'
-  + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'
-  + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'
-  + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'
-  + '|track|ul';
-block._comment = /<!--(?!-?>)[\s\S]*?-->/;
-block.html = edit(block.html, 'i')
-  .replace('comment', block._comment)
-  .replace('tag', block._tag)
-  .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/)
-  .getRegex();
-
-block.paragraph = edit(block.paragraph)
-  .replace('hr', block.hr)
-  .replace('heading', block.heading)
-  .replace('lheading', block.lheading)
-  .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks
-  .getRegex();
-
-block.blockquote = edit(block.blockquote)
-  .replace('paragraph', block.paragraph)
-  .getRegex();
-
-/**
- * Normal Block Grammar
- */
-
-block.normal = merge({}, block);
-
-/**
- * GFM Block Grammar
- */
-
-block.gfm = merge({}, block.normal, {
-  fences: /^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\n? *\1 *(?:\n+|$)/,
-  paragraph: /^/,
-  heading: /^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/
-});
-
-block.gfm.paragraph = edit(block.paragraph)
-  .replace('(?!', '(?!'
-    + block.gfm.fences.source.replace('\\1', '\\2') + '|'
-    + block.list.source.replace('\\1', '\\3') + '|')
-  .getRegex();
-
-/**
- * GFM + Tables Block Grammar
- */
-
-block.tables = merge({}, block.gfm, {
-  nptable: /^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,
-  table: /^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/
-});
-
-/**
- * Pedantic grammar
- */
-
-block.pedantic = merge({}, block.normal, {
-  html: edit(
-    '^ *(?:comment *(?:\\n|\\s*$)'
-    + '|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)' // closed tag
-    + '|<tag(?:"[^"]*"|\'[^\']*\'|\\s[^\'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))')
-    .replace('comment', block._comment)
-    .replace(/tag/g, '(?!(?:'
-      + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'
-      + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'
-      + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b')
-    .getRegex(),
-  def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/
-});
-
-/**
- * Block Lexer
- */
-
-function Lexer(options) {
-  this.tokens = [];
-  this.tokens.links = {};
-  this.options = options || marked.defaults;
-  this.rules = block.normal;
-
-  if (this.options.pedantic) {
-    this.rules = block.pedantic;
-  } else if (this.options.gfm) {
-    if (this.options.tables) {
-      this.rules = block.tables;
-    } else {
-      this.rules = block.gfm;
-    }
-  }
-}
-
-/**
- * Expose Block Rules
- */
-
-Lexer.rules = block;
-
-/**
- * Static Lex Method
- */
-
-Lexer.lex = function(src, options) {
-  var lexer = new Lexer(options);
-  return lexer.lex(src);
-};
-
-/**
- * Preprocessing
- */
-
-Lexer.prototype.lex = function(src) {
-  src = src
-    .replace(/\r\n|\r/g, '\n')
-    .replace(/\t/g, '    ')
-    .replace(/\u00a0/g, ' ')
-    .replace(/\u2424/g, '\n');
-
-  return this.token(src, true);
-};
-
-/**
- * Lexing
- */
-
-Lexer.prototype.token = function(src, top) {
-  src = src.replace(/^ +$/gm, '');
-  var next,
-      loose,
-      cap,
-      bull,
-      b,
-      item,
-      space,
-      i,
-      tag,
-      l,
-      isordered,
-      istask,
-      ischecked;
-
-  while (src) {
-    // newline
-    if (cap = this.rules.newline.exec(src)) {
-      src = src.substring(cap[0].length);
-      if (cap[0].length > 1) {
-        this.tokens.push({
-          type: 'space'
-        });
-      }
-    }
-
-    // code
-    if (cap = this.rules.code.exec(src)) {
-      src = src.substring(cap[0].length);
-      cap = cap[0].replace(/^ {4}/gm, '');
-      this.tokens.push({
-        type: 'code',
-        text: !this.options.pedantic
-          ? rtrim(cap, '\n')
-          : cap
-      });
-      continue;
-    }
-
-    // fences (gfm)
-    if (cap = this.rules.fences.exec(src)) {
-      src = src.substring(cap[0].length);
-      this.tokens.push({
-        type: 'code',
-        lang: cap[2],
-        text: cap[3] || ''
-      });
-      continue;
-    }
-
-    // heading
-    if (cap = this.rules.heading.exec(src)) {
-      src = src.substring(cap[0].length);
-      this.tokens.push({
-        type: 'heading',
-        depth: cap[1].length,
-        text: cap[2]
-      });
-      continue;
-    }
-
-    // table no leading pipe (gfm)
-    if (top && (cap = this.rules.nptable.exec(src))) {
-      item = {
-        type: 'table',
-        header: splitCells(cap[1].replace(/^ *| *\| *$/g, '')),
-        align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
-        cells: cap[3] ? cap[3].replace(/\n$/, '').split('\n') : []
-      };
-
-      if (item.header.length === item.align.length) {
-        src = src.substring(cap[0].length);
-
-        for (i = 0; i < item.align.length; i++) {
-          if (/^ *-+: *$/.test(item.align[i])) {
-            item.align[i] = 'right';
-          } else if (/^ *:-+: *$/.test(item.align[i])) {
-            item.align[i] = 'center';
-          } else if (/^ *:-+ *$/.test(item.align[i])) {
-            item.align[i] = 'left';
-          } else {
-            item.align[i] = null;
-          }
-        }
-
-        for (i = 0; i < item.cells.length; i++) {
-          item.cells[i] = splitCells(item.cells[i], item.header.length);
-        }
-
-        this.tokens.push(item);
-
-        continue;
-      }
-    }
-
-    // hr
-    if (cap = this.rules.hr.exec(src)) {
-      src = src.substring(cap[0].length);
-      this.tokens.push({
-        type: 'hr'
-      });
-      continue;
-    }
-
-    // blockquote
-    if (cap = this.rules.blockquote.exec(src)) {
-      src = src.substring(cap[0].length);
-
-      this.tokens.push({
-        type: 'blockquote_start'
-      });
-
-      cap = cap[0].replace(/^ *> ?/gm, '');
-
-      // Pass `top` to keep the current
-      // "toplevel" state. This is exactly
-      // how markdown.pl works.
-      this.token(cap, top);
-
-      this.tokens.push({
-        type: 'blockquote_end'
-      });
-
-      continue;
-    }
-
-    // list
-    if (cap = this.rules.list.exec(src)) {
-      src = src.substring(cap[0].length);
-      bull = cap[2];
-      isordered = bull.length > 1;
-
-      this.tokens.push({
-        type: 'list_start',
-        ordered: isordered,
-        start: isordered ? +bull : ''
-      });
-
-      // Get each top-level item.
-      cap = cap[0].match(this.rules.item);
-
-      next = false;
-      l = cap.length;
-      i = 0;
-
-      for (; i < l; i++) {
-        item = cap[i];
-
-        // Remove the list item's bullet
-        // so it is seen as the next token.
-        space = item.length;
-        item = item.replace(/^ *([*+-]|\d+\.) +/, '');
-
-        // Outdent whatever the
-        // list item contains. Hacky.
-        if (~item.indexOf('\n ')) {
-          space -= item.length;
-          item = !this.options.pedantic
-            ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')
-            : item.replace(/^ {1,4}/gm, '');
-        }
-
-        // Determine whether the next list item belongs here.
-        // Backpedal if it does not belong in this list.
-        if (this.options.smartLists && i !== l - 1) {
-          b = block.bullet.exec(cap[i + 1])[0];
-          if (bull !== b && !(bull.length > 1 && b.length > 1)) {
-            src = cap.slice(i + 1).join('\n') + src;
-            i = l - 1;
-          }
-        }
-
-        // Determine whether item is loose or not.
-        // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/
-        // for discount behavior.
-        loose = next || /\n\n(?!\s*$)/.test(item);
-        if (i !== l - 1) {
-          next = item.charAt(item.length - 1) === '\n';
-          if (!loose) loose = next;
-        }
-
-        // Check for task list items
-        istask = /^\[[ xX]\] /.test(item);
-        ischecked = undefined;
-        if (istask) {
-          ischecked = item[1] !== ' ';
-          item = item.replace(/^\[[ xX]\] +/, '');
-        }
-
-        this.tokens.push({
-          type: loose
-            ? 'loose_item_start'
-            : 'list_item_start',
-          task: istask,
-          checked: ischecked
-        });
-
-        // Recurse.
-        this.token(item, false);
-
-        this.tokens.push({
-          type: 'list_item_end'
-        });
-      }
-
-      this.tokens.push({
-        type: 'list_end'
-      });
-
-      continue;
-    }
-
-    // html
-    if (cap = this.rules.html.exec(src)) {
-      src = src.substring(cap[0].length);
-      this.tokens.push({
-        type: this.options.sanitize
-          ? 'paragraph'
-          : 'html',
-        pre: !this.options.sanitizer
-          && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),
-        text: cap[0]
-      });
-      continue;
-    }
-
-    // def
-    if (top && (cap = this.rules.def.exec(src))) {
-      src = src.substring(cap[0].length);
-      if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);
-      tag = cap[1].toLowerCase().replace(/\s+/g, ' ');
-      if (!this.tokens.links[tag]) {
-        this.tokens.links[tag] = {
-          href: cap[2],
-          title: cap[3]
-        };
-      }
-      continue;
-    }
-
-    // table (gfm)
-    if (top && (cap = this.rules.table.exec(src))) {
-      item = {
-        type: 'table',
-        header: splitCells(cap[1].replace(/^ *| *\| *$/g, '')),
-        align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
-        cells: cap[3] ? cap[3].replace(/(?: *\| *)?\n$/, '').split('\n') : []
-      };
-
-      if (item.header.length === item.align.length) {
-        src = src.substring(cap[0].length);
-
-        for (i = 0; i < item.align.length; i++) {
-          if (/^ *-+: *$/.test(item.align[i])) {
-            item.align[i] = 'right';
-          } else if (/^ *:-+: *$/.test(item.align[i])) {
-            item.align[i] = 'center';
-          } else if (/^ *:-+ *$/.test(item.align[i])) {
-            item.align[i] = 'left';
-          } else {
-            item.align[i] = null;
-          }
-        }
-
-        for (i = 0; i < item.cells.length; i++) {
-          item.cells[i] = splitCells(
-            item.cells[i].replace(/^ *\| *| *\| *$/g, ''),
-            item.header.length);
-        }
-
-        this.tokens.push(item);
-
-        continue;
-      }
-    }
-
-    // lheading
-    if (cap = this.rules.lheading.exec(src)) {
-      src = src.substring(cap[0].length);
-      this.tokens.push({
-        type: 'heading',
-        depth: cap[2] === '=' ? 1 : 2,
-        text: cap[1]
-      });
-      continue;
-    }
-
-    // top-level paragraph
-    if (top && (cap = this.rules.paragraph.exec(src))) {
-      src = src.substring(cap[0].length);
-      this.tokens.push({
-        type: 'paragraph',
-        text: cap[1].charAt(cap[1].length - 1) === '\n'
-          ? cap[1].slice(0, -1)
-          : cap[1]
-      });
-      continue;
-    }
-
-    // text
-    if (cap = this.rules.text.exec(src)) {
-      // Top-level should never reach here.
-      src = src.substring(cap[0].length);
-      this.tokens.push({
-        type: 'text',
-        text: cap[0]
-      });
-      continue;
-    }
-
-    if (src) {
-      throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));
-    }
-  }
-
-  return this.tokens;
-};
-
-/**
- * Inline-Level Grammar
- */
-
-var inline = {
-  escape: /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,
-  autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/,
-  url: noop,
-  tag: '^comment'
-    + '|^</[a-zA-Z][\\w:-]*\\s*>' // self-closing tag
-    + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag
-    + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. <?php ?>
-    + '|^<![a-zA-Z]+\\s[\\s\\S]*?>' // declaration, e.g. <!DOCTYPE html>
-    + '|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>', // CDATA section
-  link: /^!?\[(label)\]\(href(?:\s+(title))?\s*\)/,
-  reflink: /^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,
-  nolink: /^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,
-  strong: /^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)|^__([^\s])__(?!_)|^\*\*([^\s])\*\*(?!\*)/,
-  em: /^_([^\s][\s\S]*?[^\s_])_(?!_)|^_([^\s_][\s\S]*?[^\s])_(?!_)|^\*([^\s][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*][\s\S]*?[^\s])\*(?!\*)|^_([^\s_])_(?!_)|^\*([^\s*])\*(?!\*)/,
-  code: /^(`+)\s*([\s\S]*?[^`]?)\s*\1(?!`)/,
-  br: /^ {2,}\n(?!\s*$)/,
-  del: noop,
-  text: /^[\s\S]+?(?=[\\<!\[`*]|\b_| {2,}\n|$)/
-};
-
-inline._escapes = /\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;
-
-inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;
-inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;
-inline.autolink = edit(inline.autolink)
-  .replace('scheme', inline._scheme)
-  .replace('email', inline._email)
-  .getRegex();
-
-inline._attribute = /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/;
-
-inline.tag = edit(inline.tag)
-  .replace('comment', block._comment)
-  .replace('attribute', inline._attribute)
-  .getRegex();
-
-inline._label = /(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|[^\[\]\\])*?/;
-inline._href = /\s*(<(?:\\[<>]?|[^\s<>\\])*>|(?:\\[()]?|\([^\s\x00-\x1f()\\]*\)|[^\s\x00-\x1f()\\])*?)/;
-inline._title = /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;
-
-inline.link = edit(inline.link)
-  .replace('label', inline._label)
-  .replace('href', inline._href)
-  .replace('title', inline._title)
-  .getRegex();
-
-inline.reflink = edit(inline.reflink)
-  .replace('label', inline._label)
-  .getRegex();
-
-/**
- * Normal Inline Grammar
- */
-
-inline.normal = merge({}, inline);
-
-/**
- * Pedantic Inline Grammar
- */
-
-inline.pedantic = merge({}, inline.normal, {
-  strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
-  em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,
-  link: edit(/^!?\[(label)\]\((.*?)\)/)
-    .replace('label', inline._label)
-    .getRegex(),
-  reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/)
-    .replace('label', inline._label)
-    .getRegex()
-});
-
-/**
- * GFM Inline Grammar
- */
-
-inline.gfm = merge({}, inline.normal, {
-  escape: edit(inline.escape).replace('])', '~|])').getRegex(),
-  url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/)
-    .replace('email', inline._email)
-    .getRegex(),
-  _backpedal: /(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,
-  del: /^~~(?=\S)([\s\S]*?\S)~~/,
-  text: edit(inline.text)
-    .replace(']|', '~]|')
-    .replace('|', '|https?://|ftp://|www\\.|[a-zA-Z0-9.!#$%&\'*+/=?^_`{\\|}~-]+@|')
-    .getRegex()
-});
-
-/**
- * GFM + Line Breaks Inline Grammar
- */
-
-inline.breaks = merge({}, inline.gfm, {
-  br: edit(inline.br).replace('{2,}', '*').getRegex(),
-  text: edit(inline.gfm.text).replace('{2,}', '*').getRegex()
-});
-
-/**
- * Inline Lexer & Compiler
- */
-
-function InlineLexer(links, options) {
-  this.options = options || marked.defaults;
-  this.links = links;
-  this.rules = inline.normal;
-  this.renderer = this.options.renderer || new Renderer();
-  this.renderer.options = this.options;
-
-  if (!this.links) {
-    throw new Error('Tokens array requires a `links` property.');
-  }
-
-  if (this.options.pedantic) {
-    this.rules = inline.pedantic;
-  } else if (this.options.gfm) {
-    if (this.options.breaks) {
-      this.rules = inline.breaks;
-    } else {
-      this.rules = inline.gfm;
-    }
-  }
-}
-
-/**
- * Expose Inline Rules
- */
-
-InlineLexer.rules = inline;
-
-/**
- * Static Lexing/Compiling Method
- */
-
-InlineLexer.output = function(src, links, options) {
-  var inline = new InlineLexer(links, options);
-  return inline.output(src);
-};
-
-/**
- * Lexing/Compiling
- */
-
-InlineLexer.prototype.output = function(src) {
-  var out = '',
-      link,
-      text,
-      href,
-      title,
-      cap;
-
-  while (src) {
-    // escape
-    if (cap = this.rules.escape.exec(src)) {
-      src = src.substring(cap[0].length);
-      out += cap[1];
-      continue;
-    }
-
-    // autolink
-    if (cap = this.rules.autolink.exec(src)) {
-      src = src.substring(cap[0].length);
-      if (cap[2] === '@') {
-        text = escape(this.mangle(cap[1]));
-        href = 'mailto:' + text;
-      } else {
-        text = escape(cap[1]);
-        href = text;
-      }
-      out += this.renderer.link(href, null, text);
-      continue;
-    }
-
-    // url (gfm)
-    if (!this.inLink && (cap = this.rules.url.exec(src))) {
-      cap[0] = this.rules._backpedal.exec(cap[0])[0];
-      src = src.substring(cap[0].length);
-      if (cap[2] === '@') {
-        text = escape(cap[0]);
-        href = 'mailto:' + text;
-      } else {
-        text = escape(cap[0]);
-        if (cap[1] === 'www.') {
-          href = 'http://' + text;
-        } else {
-          href = text;
-        }
-      }
-      out += this.renderer.link(href, null, text);
-      continue;
-    }
-
-    // tag
-    if (cap = this.rules.tag.exec(src)) {
-      if (!this.inLink && /^<a /i.test(cap[0])) {
-        this.inLink = true;
-      } else if (this.inLink && /^<\/a>/i.test(cap[0])) {
-        this.inLink = false;
-      }
-      src = src.substring(cap[0].length);
-      out += this.options.sanitize
-        ? this.options.sanitizer
-          ? this.options.sanitizer(cap[0])
-          : escape(cap[0])
-        : cap[0]
-      continue;
-    }
-
-    // link
-    if (cap = this.rules.link.exec(src)) {
-      src = src.substring(cap[0].length);
-      this.inLink = true;
-      href = cap[2];
-      if (this.options.pedantic) {
-        link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href);
-
-        if (link) {
-          href = link[1];
-          title = link[3];
-        } else {
-          title = '';
-        }
-      } else {
-        title = cap[3] ? cap[3].slice(1, -1) : '';
-      }
-      href = href.trim().replace(/^<([\s\S]*)>$/, '$1');
-      out += this.outputLink(cap, {
-        href: InlineLexer.escapes(href),
-        title: InlineLexer.escapes(title)
-      });
-      this.inLink = false;
-      continue;
-    }
-
-    // reflink, nolink
-    if ((cap = this.rules.reflink.exec(src))
-        || (cap = this.rules.nolink.exec(src))) {
-      src = src.substring(cap[0].length);
-      link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
-      link = this.links[link.toLowerCase()];
-      if (!link || !link.href) {
-        out += cap[0].charAt(0);
-        src = cap[0].substring(1) + src;
-        continue;
-      }
-      this.inLink = true;
-      out += this.outputLink(cap, link);
-      this.inLink = false;
-      continue;
-    }
-
-    // strong
-    if (cap = this.rules.strong.exec(src)) {
-      src = src.substring(cap[0].length);
-      out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1]));
-      continue;
-    }
-
-    // em
-    if (cap = this.rules.em.exec(src)) {
-      src = src.substring(cap[0].length);
-      out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]));
-      continue;
-    }
-
-    // code
-    if (cap = this.rules.code.exec(src)) {
-      src = src.substring(cap[0].length);
-      out += this.renderer.codespan(escape(cap[2].trim(), true));
-      continue;
-    }
-
-    // br
-    if (cap = this.rules.br.exec(src)) {
-      src = src.substring(cap[0].length);
-      out += this.renderer.br();
-      continue;
-    }
-
-    // del (gfm)
-    if (cap = this.rules.del.exec(src)) {
-      src = src.substring(cap[0].length);
-      out += this.renderer.del(this.output(cap[1]));
-      continue;
-    }
-
-    // text
-    if (cap = this.rules.text.exec(src)) {
-      src = src.substring(cap[0].length);
-      out += this.renderer.text(escape(this.smartypants(cap[0])));
-      continue;
-    }
-
-    if (src) {
-      throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));
-    }
-  }
-
-  return out;
-};
-
-InlineLexer.escapes = function(text) {
-  return text ? text.replace(InlineLexer.rules._escapes, '$1') : text;
-}
-
-/**
- * Compile Link
- */
-
-InlineLexer.prototype.outputLink = function(cap, link) {
-  var href = link.href,
-      title = link.title ? escape(link.title) : null;
-
-  return cap[0].charAt(0) !== '!'
-    ? this.renderer.link(href, title, this.output(cap[1]))
-    : this.renderer.image(href, title, escape(cap[1]));
-};
-
-/**
- * Smartypants Transformations
- */
-
-InlineLexer.prototype.smartypants = function(text) {
-  if (!this.options.smartypants) return text;
-  return text
-    // em-dashes
-    .replace(/---/g, '\u2014')
-    // en-dashes
-    .replace(/--/g, '\u2013')
-    // opening singles
-    .replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018')
-    // closing singles & apostrophes
-    .replace(/'/g, '\u2019')
-    // opening doubles
-    .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c')
-    // closing doubles
-    .replace(/"/g, '\u201d')
-    // ellipses
-    .replace(/\.{3}/g, '\u2026');
-};
-
-/**
- * Mangle Links
- */
-
-InlineLexer.prototype.mangle = function(text) {
-  if (!this.options.mangle) return text;
-  var out = '',
-      l = text.length,
-      i = 0,
-      ch;
-
-  for (; i < l; i++) {
-    ch = text.charCodeAt(i);
-    if (Math.random() > 0.5) {
-      ch = 'x' + ch.toString(16);
-    }
-    out += '&#' + ch + ';';
-  }
-
-  return out;
-};
-
-/**
- * Renderer
- */
-
-function Renderer(options) {
-  this.options = options || marked.defaults;
-}
-
-Renderer.prototype.code = function(code, lang, escaped) {
-  if (this.options.highlight) {
-    var out = this.options.highlight(code, lang);
-    if (out != null && out !== code) {
-      escaped = true;
-      code = out;
-    }
-  }
-
-  if (!lang) {
-    return '<pre><code>'
-      + (escaped ? code : escape(code, true))
-      + '</code></pre>';
-  }
-
-  return '<pre><code class="'
-    + this.options.langPrefix
-    + escape(lang, true)
-    + '">'
-    + (escaped ? code : escape(code, true))
-    + '</code></pre>\n';
-};
-
-Renderer.prototype.blockquote = function(quote) {
-  return '<blockquote>\n' + quote + '</blockquote>\n';
-};
-
-Renderer.prototype.html = function(html) {
-  return html;
-};
-
-Renderer.prototype.heading = function(text, level, raw) {
-  if (this.options.headerIds) {
-    return '<h'
-      + level
-      + ' id="'
-      + this.options.headerPrefix
-      + raw.toLowerCase().replace(/[^\w]+/g, '-')
-      + '">'
-      + text
-      + '</h'
-      + level
-      + '>\n';
-  }
-  // ignore IDs
-  return '<h' + level + '>' + text + '</h' + level + '>\n';
-};
-
-Renderer.prototype.hr = function() {
-  return this.options.xhtml ? '<hr/>\n' : '<hr>\n';
-};
-
-Renderer.prototype.list = function(body, ordered, start) {
-  var type = ordered ? 'ol' : 'ul',
-      startatt = (ordered && start !== 1) ? (' start="' + start + '"') : '';
-  return '<' + type + startatt + '>\n' + body + '</' + type + '>\n';
-};
-
-Renderer.prototype.listitem = function(text) {
-  return '<li>' + text + '</li>\n';
-};
-
-Renderer.prototype.checkbox = function(checked) {
-  return '<input '
-    + (checked ? 'checked="" ' : '')
-    + 'disabled="" type="checkbox"'
-    + (this.options.xhtml ? ' /' : '')
-    + '> ';
-}
-
-Renderer.prototype.paragraph = function(text) {
-  return '<p>' + text + '</p>\n';
-};
-
-Renderer.prototype.table = function(header, body) {
-  if (body) body = '<tbody>' + body + '</tbody>';
-
-  return '<table>\n'
-    + '<thead>\n'
-    + header
-    + '</thead>\n'
-    + body
-    + '</table>\n';
-};
-
-Renderer.prototype.tablerow = function(content) {
-  return '<tr>\n' + content + '</tr>\n';
-};
-
-Renderer.prototype.tablecell = function(content, flags) {
-  var type = flags.header ? 'th' : 'td';
-  var tag = flags.align
-    ? '<' + type + ' align="' + flags.align + '">'
-    : '<' + type + '>';
-  return tag + content + '</' + type + '>\n';
-};
-
-// span level renderer
-Renderer.prototype.strong = function(text) {
-  return '<strong>' + text + '</strong>';
-};
-
-Renderer.prototype.em = function(text) {
-  return '<em>' + text + '</em>';
-};
-
-Renderer.prototype.codespan = function(text) {
-  return '<code>' + text + '</code>';
-};
-
-Renderer.prototype.br = function() {
-  return this.options.xhtml ? '<br/>' : '<br>';
-};
-
-Renderer.prototype.del = function(text) {
-  return '<del>' + text + '</del>';
-};
-
-Renderer.prototype.link = function(href, title, text) {
-  if (this.options.sanitize) {
-    try {
-      var prot = decodeURIComponent(unescape(href))
-        .replace(/[^\w:]/g, '')
-        .toLowerCase();
-    } catch (e) {
-      return text;
-    }
-    if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {
-      return text;
-    }
-  }
-  if (this.options.baseUrl && !originIndependentUrl.test(href)) {
-    href = resolveUrl(this.options.baseUrl, href);
-  }
-  try {
-    href = encodeURI(href).replace(/%25/g, '%');
-  } catch (e) {
-    return text;
-  }
-  var out = '<a href="' + escape(href) + '"';
-  if (title) {
-    out += ' title="' + title + '"';
-  }
-  out += '>' + text + '</a>';
-  return out;
-};
-
-Renderer.prototype.image = function(href, title, text) {
-  if (this.options.baseUrl && !originIndependentUrl.test(href)) {
-    href = resolveUrl(this.options.baseUrl, href);
-  }
-  var out = '<img src="' + href + '" alt="' + text + '"';
-  if (title) {
-    out += ' title="' + title + '"';
-  }
-  out += this.options.xhtml ? '/>' : '>';
-  return out;
-};
-
-Renderer.prototype.text = function(text) {
-  return text;
-};
-
-/**
- * TextRenderer
- * returns only the textual part of the token
- */
-
-function TextRenderer() {}
-
-// no need for block level renderers
-
-TextRenderer.prototype.strong =
-TextRenderer.prototype.em =
-TextRenderer.prototype.codespan =
-TextRenderer.prototype.del =
-TextRenderer.prototype.text = function (text) {
-  return text;
-}
-
-TextRenderer.prototype.link =
-TextRenderer.prototype.image = function(href, title, text) {
-  return '' + text;
-}
-
-TextRenderer.prototype.br = function() {
-  return '';
-}
-
-/**
- * Parsing & Compiling
- */
-
-function Parser(options) {
-  this.tokens = [];
-  this.token = null;
-  this.options = options || marked.defaults;
-  this.options.renderer = this.options.renderer || new Renderer();
-  this.renderer = this.options.renderer;
-  this.renderer.options = this.options;
-}
-
-/**
- * Static Parse Method
- */
-
-Parser.parse = function(src, options) {
-  var parser = new Parser(options);
-  return parser.parse(src);
-};
-
-/**
- * Parse Loop
- */
-
-Parser.prototype.parse = function(src) {
-  this.inline = new InlineLexer(src.links, this.options);
-  // use an InlineLexer with a TextRenderer to extract pure text
-  this.inlineText = new InlineLexer(
-    src.links,
-    merge({}, this.options, {renderer: new TextRenderer()})
-  );
-  this.tokens = src.reverse();
-
-  var out = '';
-  while (this.next()) {
-    out += this.tok();
-  }
-
-  return out;
-};
-
-/**
- * Next Token
- */
-
-Parser.prototype.next = function() {
-  return this.token = this.tokens.pop();
-};
-
-/**
- * Preview Next Token
- */
-
-Parser.prototype.peek = function() {
-  return this.tokens[this.tokens.length - 1] || 0;
-};
-
-/**
- * Parse Text Tokens
- */
-
-Parser.prototype.parseText = function() {
-  var body = this.token.text;
-
-  while (this.peek().type === 'text') {
-    body += '\n' + this.next().text;
-  }
-
-  return this.inline.output(body);
-};
-
-/**
- * Parse Current Token
- */
-
-Parser.prototype.tok = function() {
-  switch (this.token.type) {
-    case 'space': {
-      return '';
-    }
-    case 'hr': {
-      return this.renderer.hr();
-    }
-    case 'heading': {
-      return this.renderer.heading(
-        this.inline.output(this.token.text),
-        this.token.depth,
-        unescape(this.inlineText.output(this.token.text)));
-    }
-    case 'code': {
-      return this.renderer.code(this.token.text,
-        this.token.lang,
-        this.token.escaped);
-    }
-    case 'table': {
-      var header = '',
-          body = '',
-          i,
-          row,
-          cell,
-          j;
-
-      // header
-      cell = '';
-      for (i = 0; i < this.token.header.length; i++) {
-        cell += this.renderer.tablecell(
-          this.inline.output(this.token.header[i]),
-          { header: true, align: this.token.align[i] }
-        );
-      }
-      header += this.renderer.tablerow(cell);
-
-      for (i = 0; i < this.token.cells.length; i++) {
-        row = this.token.cells[i];
-
-        cell = '';
-        for (j = 0; j < row.length; j++) {
-          cell += this.renderer.tablecell(
-            this.inline.output(row[j]),
-            { header: false, align: this.token.align[j] }
-          );
-        }
-
-        body += this.renderer.tablerow(cell);
-      }
-      return this.renderer.table(header, body);
-    }
-    case 'blockquote_start': {
-      body = '';
-
-      while (this.next().type !== 'blockquote_end') {
-        body += this.tok();
-      }
-
-      return this.renderer.blockquote(body);
-    }
-    case 'list_start': {
-      body = '';
-      var ordered = this.token.ordered,
-          start = this.token.start;
-
-      while (this.next().type !== 'list_end') {
-        body += this.tok();
-      }
-
-      return this.renderer.list(body, ordered, start);
-    }
-    case 'list_item_start': {
-      body = '';
-
-      if (this.token.task) {
-        body += this.renderer.checkbox(this.token.checked);
-      }
-
-      while (this.next().type !== 'list_item_end') {
-        body += this.token.type === 'text'
-          ? this.parseText()
-          : this.tok();
-      }
-
-      return this.renderer.listitem(body);
-    }
-    case 'loose_item_start': {
-      body = '';
-
-      while (this.next().type !== 'list_item_end') {
-        body += this.tok();
-      }
-
-      return this.renderer.listitem(body);
-    }
-    case 'html': {
-      // TODO parse inline content if parameter markdown=1
-      return this.renderer.html(this.token.text);
-    }
-    case 'paragraph': {
-      return this.renderer.paragraph(this.inline.output(this.token.text));
-    }
-    case 'text': {
-      return this.renderer.paragraph(this.parseText());
-    }
-  }
-};
-
-/**
- * Helpers
- */
-
-function escape(html, encode) {
-  return html
-    .replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&amp;')
-    .replace(/</g, '&lt;')
-    .replace(/>/g, '&gt;')
-    .replace(/"/g, '&quot;')
-    .replace(/'/g, '&#39;');
-}
-
-function unescape(html) {
-  // explicitly match decimal, hex, and named HTML entities
-  return html.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig, function(_, n) {
-    n = n.toLowerCase();
-    if (n === 'colon') return ':';
-    if (n.charAt(0) === '#') {
-      return n.charAt(1) === 'x'
-        ? String.fromCharCode(parseInt(n.substring(2), 16))
-        : String.fromCharCode(+n.substring(1));
-    }
-    return '';
-  });
-}
-
-function edit(regex, opt) {
-  regex = regex.source || regex;
-  opt = opt || '';
-  return {
-    replace: function(name, val) {
-      val = val.source || val;
-      val = val.replace(/(^|[^\[])\^/g, '$1');
-      regex = regex.replace(name, val);
-      return this;
-    },
-    getRegex: function() {
-      return new RegExp(regex, opt);
-    }
-  };
-}
-
-function resolveUrl(base, href) {
-  if (!baseUrls[' ' + base]) {
-    // we can ignore everything in base after the last slash of its path component,
-    // but we might need to add _that_
-    // https://tools.ietf.org/html/rfc3986#section-3
-    if (/^[^:]+:\/*[^/]*$/.test(base)) {
-      baseUrls[' ' + base] = base + '/';
-    } else {
-      baseUrls[' ' + base] = rtrim(base, '/', true);
-    }
-  }
-  base = baseUrls[' ' + base];
-
-  if (href.slice(0, 2) === '//') {
-    return base.replace(/:[\s\S]*/, ':') + href;
-  } else if (href.charAt(0) === '/') {
-    return base.replace(/(:\/*[^/]*)[\s\S]*/, '$1') + href;
-  } else {
-    return base + href;
-  }
-}
-var baseUrls = {};
-var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;
-
-function noop() {}
-noop.exec = noop;
-
-function merge(obj) {
-  var i = 1,
-      target,
-      key;
-
-  for (; i < arguments.length; i++) {
-    target = arguments[i];
-    for (key in target) {
-      if (Object.prototype.hasOwnProperty.call(target, key)) {
-        obj[key] = target[key];
-      }
-    }
-  }
-
-  return obj;
-}
-
-function splitCells(tableRow, count) {
-  // ensure that every cell-delimiting pipe has a space
-  // before it to distinguish it from an escaped pipe
-  var row = tableRow.replace(/\|/g, function (match, offset, str) {
-        var escaped = false,
-            curr = offset;
-        while (--curr >= 0 && str[curr] === '\\') escaped = !escaped;
-        if (escaped) {
-          // odd number of slashes means | is escaped
-          // so we leave it alone
-          return '|';
-        } else {
-          // add space before unescaped |
-          return ' |';
-        }
-      }),
-      cells = row.split(/ \|/),
-      i = 0;
-
-  if (cells.length > count) {
-    cells.splice(count);
-  } else {
-    while (cells.length < count) cells.push('');
-  }
-
-  for (; i < cells.length; i++) {
-    // leading or trailing whitespace is ignored per the gfm spec
-    cells[i] = cells[i].trim().replace(/\\\|/g, '|');
-  }
-  return cells;
-}
-
-// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').
-// /c*$/ is vulnerable to REDOS.
-// invert: Remove suffix of non-c chars instead. Default falsey.
-function rtrim(str, c, invert) {
-  if (str.length === 0) {
-    return '';
-  }
-
-  // Length of suffix matching the invert condition.
-  var suffLen = 0;
-
-  // Step left until we fail to match the invert condition.
-  while (suffLen < str.length) {
-    var currChar = str.charAt(str.length - suffLen - 1);
-    if (currChar === c && !invert) {
-      suffLen++;
-    } else if (currChar !== c && invert) {
-      suffLen++;
-    } else {
-      break;
-    }
-  }
-
-  return str.substr(0, str.length - suffLen);
-}
-
-/**
- * Marked
- */
-
-function marked(src, opt, callback) {
-  // throw error in case of non string input
-  if (typeof src === 'undefined' || src === null) {
-    throw new Error('marked(): input parameter is undefined or null');
-  }
-  if (typeof src !== 'string') {
-    throw new Error('marked(): input parameter is of type '
-      + Object.prototype.toString.call(src) + ', string expected');
-  }
-
-  if (callback || typeof opt === 'function') {
-    if (!callback) {
-      callback = opt;
-      opt = null;
-    }
-
-    opt = merge({}, marked.defaults, opt || {});
-
-    var highlight = opt.highlight,
-        tokens,
-        pending,
-        i = 0;
-
-    try {
-      tokens = Lexer.lex(src, opt)
-    } catch (e) {
-      return callback(e);
-    }
-
-    pending = tokens.length;
-
-    var done = function(err) {
-      if (err) {
-        opt.highlight = highlight;
-        return callback(err);
-      }
-
-      var out;
-
-      try {
-        out = Parser.parse(tokens, opt);
-      } catch (e) {
-        err = e;
-      }
-
-      opt.highlight = highlight;
-
-      return err
-        ? callback(err)
-        : callback(null, out);
-    };
-
-    if (!highlight || highlight.length < 3) {
-      return done();
-    }
-
-    delete opt.highlight;
-
-    if (!pending) return done();
-
-    for (; i < tokens.length; i++) {
-      (function(token) {
-        if (token.type !== 'code') {
-          return --pending || done();
-        }
-        return highlight(token.text, token.lang, function(err, code) {
-          if (err) return done(err);
-          if (code == null || code === token.text) {
-            return --pending || done();
-          }
-          token.text = code;
-          token.escaped = true;
-          --pending || done();
-        });
-      })(tokens[i]);
-    }
-
-    return;
-  }
-  try {
-    if (opt) opt = merge({}, marked.defaults, opt);
-    return Parser.parse(Lexer.lex(src, opt), opt);
-  } catch (e) {
-    e.message += '\nPlease report this to https://github.com/markedjs/marked.';
-    if ((opt || marked.defaults).silent) {
-      return '<p>An error occurred:</p><pre>'
-        + escape(e.message + '', true)
-        + '</pre>';
-    }
-    throw e;
-  }
-}
-
-/**
- * Options
- */
-
-marked.options =
-marked.setOptions = function(opt) {
-  merge(marked.defaults, opt);
-  return marked;
-};
-
-marked.getDefaults = function () {
-  return {
-    baseUrl: null,
-    breaks: false,
-    gfm: true,
-    headerIds: true,
-    headerPrefix: '',
-    highlight: null,
-    langPrefix: 'language-',
-    mangle: true,
-    pedantic: false,
-    renderer: new Renderer(),
-    sanitize: false,
-    sanitizer: null,
-    silent: false,
-    smartLists: false,
-    smartypants: false,
-    tables: true,
-    xhtml: false
-  };
-}
-
-marked.defaults = marked.getDefaults();
-
-/**
- * Expose
- */
-
-marked.Parser = Parser;
-marked.parser = Parser.parse;
-
-marked.Renderer = Renderer;
-marked.TextRenderer = TextRenderer;
-
-marked.Lexer = Lexer;
-marked.lexer = Lexer.lex;
-
-marked.InlineLexer = InlineLexer;
-marked.inlineLexer = InlineLexer.output;
-
-marked.parse = marked;
-
-if (typeof module !== 'undefined' && typeof exports === 'object') {
-  module.exports = marked;
-} else if (typeof define === 'function' && define.amd) {
-  define(function() { return marked; });
-} else {
-  root.marked = marked;
-}
-})(this || (typeof window !== 'undefined' ? window : global));

文件差异内容过多而无法显示
+ 0 - 1
src/main/resources/static/styles/jquery/template-web.js


二进制
src/main/resources/static/styles/jquery/treegrid/img/collapse.png


二进制
src/main/resources/static/styles/jquery/treegrid/img/expand.png


二进制
src/main/resources/static/styles/jquery/treegrid/img/file.png


二进制
src/main/resources/static/styles/jquery/treegrid/img/folder.png


+ 0 - 4
src/main/resources/static/styles/jquery/treegrid/jquery.treegrid.bootstrap3.js

@@ -1,4 +0,0 @@
-$.extend($.fn.treegrid.defaults, {
-    expanderExpandedClass: 'glyphicon glyphicon-chevron-down',
-    expanderCollapsedClass: 'glyphicon glyphicon-chevron-right'
-});

+ 0 - 6
src/main/resources/static/styles/jquery/treegrid/jquery.treegrid.css

@@ -1,6 +0,0 @@
-.treegrid-indent {width:16px; height: 16px; display: inline-block; position: relative;}
-
-.treegrid-expander {width:16px; height: 16px; display: inline-block; position: relative; cursor: pointer;}
-
-.treegrid-expander-expanded{background-image: url(img/collapse.png); }
-.treegrid-expander-collapsed{background-image: url(img/expand.png);}

文件差异内容过多而无法显示
+ 0 - 1
src/main/resources/static/styles/jquery/treegrid/jquery.treegrid.min.js


+ 0 - 3
src/main/resources/static/styles/jsonview/jquery.jsonview.min.css

@@ -1,3 +0,0 @@
-@charset "UTF-8";.jsonview{font-family:monospace;font-size:1.1em;white-space:pre-wrap}.jsonview .prop{font-weight:700;text-decoration:none;color: #4a0;
-                                                                                          font-weight: bold;font-size: 16px;
-                                                                                          display: inline;}.jsonview .null,.jsonview .undefined{color:red}.jsonview .bool,.jsonview .num{color: #f63;font-size:16px;font-weight: bold;}.jsonview .string{color: #f63;font-size:16px;white-space:pre-wrap;}.jsonview .string.multiline{display:inline-block;vertical-align:text-top}.jsonview .collapser{position:absolute;left:-1em;cursor:pointer}.jsonview .collapsible{transition:height 1.2s;transition:width 1.2s}.jsonview .collapsible.collapsed{height:.8em;width:1em;display:inline-block;overflow:hidden;margin:0}.jsonview .collapsible.collapsed:before{content:"…";width:1em;margin-left:.2em}.jsonview .collapser.collapsed{transform:rotate(0)}.jsonview .q{display:inline-block;width:0;color:transparent}.jsonview li{position:relative}.jsonview ul{list-style:none;margin:0 0 0 2em;padding:0}.jsonview h1{font-size:1.2em}

文件差异内容过多而无法显示
+ 0 - 0
src/main/resources/static/styles/jsonview/jquery.jsonview.min.js


文件差异内容过多而无法显示
+ 0 - 1
src/main/resources/static/styles/layer3.0.3/layer.js


文件差异内容过多而无法显示
+ 0 - 1
src/main/resources/static/styles/layer3.0.3/mobile/layer.js


文件差异内容过多而无法显示
+ 0 - 0
src/main/resources/static/styles/layer3.0.3/mobile/need/layer.css


二进制
src/main/resources/static/styles/layer3.0.3/skin/default/icon-ext.png


二进制
src/main/resources/static/styles/layer3.0.3/skin/default/icon.png


文件差异内容过多而无法显示
+ 0 - 0
src/main/resources/static/styles/layer3.0.3/skin/default/layer.css


二进制
src/main/resources/static/styles/layer3.0.3/skin/default/loading-0.gif


二进制
src/main/resources/static/styles/layer3.0.3/skin/default/loading-1.gif


二进制
src/main/resources/static/styles/layer3.0.3/skin/default/loading-2.gif


部分文件因为文件数量过多而无法显示