├── .gitignore ├── static ├── img │ ├── i.png │ └── type_white.svg ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.ttf │ └── glyphicons-halflings-regular.woff ├── styles │ ├── style.css │ ├── prettify-jsdoc.css │ ├── prettify-tomorrow.css │ └── jaguar.css └── scripts │ ├── prettify │ ├── lang-css.js │ ├── Apache-License-2.0.txt │ └── prettify.js │ ├── linenumber.js │ ├── main.js │ ├── underscore-min.js │ ├── underscore-min.map │ └── bootstrap.min.js ├── demo └── sample │ ├── Namespace.js │ ├── Car.js │ ├── Child.js │ └── Parent.js ├── tmpl ├── example.tmpl ├── type.tmpl ├── source.tmpl ├── mainpage.tmpl ├── tutorial.tmpl ├── examples.tmpl ├── members.tmpl ├── navigation.tmpl ├── exceptions.tmpl ├── navigation-item.tmpl ├── method.tmpl ├── params.tmpl ├── returns.tmpl ├── properties.tmpl ├── layout.tmpl ├── details.tmpl └── container.tmpl ├── jsdoc-plugin ├── ko.js ├── group.js ├── hook.js ├── codepen.js └── support.js ├── less ├── footer.less ├── common.less ├── jaguar.less ├── navigation.less └── main.less ├── egjsDocHelper.js ├── conf.json ├── LICENSE ├── package.json ├── README.md ├── Gruntfile.js ├── NOTICE-egjs-jsdoc-template └── publish.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | demo/dist/ 3 | .DS_Store -------------------------------------------------------------------------------- /static/img/i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naver/egjs-jsdoc-template/HEAD/static/img/i.png -------------------------------------------------------------------------------- /demo/sample/Namespace.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @namespace 3 | */ 4 | var namespace = namespace || {}; 5 | -------------------------------------------------------------------------------- /tmpl/example.tmpl: -------------------------------------------------------------------------------- 1 | 2 |
3 | -------------------------------------------------------------------------------- /static/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naver/egjs-jsdoc-template/HEAD/static/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /static/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naver/egjs-jsdoc-template/HEAD/static/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /static/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naver/egjs-jsdoc-template/HEAD/static/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /jsdoc-plugin/ko.js: -------------------------------------------------------------------------------- 1 | exports.defineTags = function(dictionary) { 2 | dictionary.defineTag("ko", { 3 | onTagged: function(doclet, tag) { 4 | doclet.ko = tag.value; 5 | } 6 | }); 7 | }; -------------------------------------------------------------------------------- /jsdoc-plugin/group.js: -------------------------------------------------------------------------------- 1 | exports.defineTags = function(dictionary) { 2 | dictionary.defineTag("group", { 3 | onTagged: function(doclet, tag) { 4 | doclet.group = tag.value; 5 | } 6 | }); 7 | }; -------------------------------------------------------------------------------- /less/footer.less: -------------------------------------------------------------------------------- 1 | @import "common.less"; 2 | 3 | footer { 4 | margin: 15px 0; 5 | padding-top: 15px; 6 | border-top: 1px solid #e1e1e1; 7 | .font-description(); 8 | font-size: 0.8em; 9 | color: gray; 10 | } -------------------------------------------------------------------------------- /tmpl/type.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | | 7 | -------------------------------------------------------------------------------- /jsdoc-plugin/hook.js: -------------------------------------------------------------------------------- 1 | exports.defineTags = function(dictionary) { 2 | dictionary.defineTag('hook', { 3 | isNamespace: true, 4 | onTagged: function(doclet, tag) { 5 | doclet.addTag( 'kind', tag.title ); 6 | } 7 | }); 8 | }; 9 | -------------------------------------------------------------------------------- /less/common.less: -------------------------------------------------------------------------------- 1 | @navWidth: 250px; 2 | @colorSubtitle: rgb(119, 156, 52); 3 | @colorRed: rgb(238, 125, 125); 4 | @colorLink: #2a6496; 5 | @colorBgNavi: #1a1a1a; 6 | 7 | .font-description () { 8 | font-family: "freight-text-pro",Georgia,Cambria,"Times New Roman",Times,serif 9 | } -------------------------------------------------------------------------------- /tmpl/source.tmpl: -------------------------------------------------------------------------------- 1 | 4 |
5 |
6 |
7 |
8 |
9 | -------------------------------------------------------------------------------- /jsdoc-plugin/codepen.js: -------------------------------------------------------------------------------- 1 | exports.defineTags = function(dictionary) { 2 | dictionary.defineTag("codepen", { 3 | onTagged: function(doclet, tag) { 4 | var tagVal = eval('tag.value'); 5 | doclet.codepen = eval("(" + tagVal + ")"); 6 | } 7 | }); 8 | }; -------------------------------------------------------------------------------- /tmpl/mainpage.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |

8 | 9 | 10 | 11 |
12 |
13 |
14 | -------------------------------------------------------------------------------- /tmpl/tutorial.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 0) { ?> 5 | 10 | 11 | 12 |

13 |
14 | 15 |
16 | 17 |
18 | 19 |
20 | -------------------------------------------------------------------------------- /less/jaguar.less: -------------------------------------------------------------------------------- 1 | @import "common.less"; 2 | 3 | // normalize 4 | html, body { 5 | font: 1em "jaf-bernino-sans","Lucida Grande","Lucida Sans Unicode","Lucida Sans",Geneva,Verdana,sans-serif; 6 | background-color: #fff; 7 | } 8 | ul, ol { 9 | margin: 0; 10 | padding: 0; 11 | } 12 | li { 13 | list-style-type: none; 14 | } 15 | 16 | #wrap { 17 | position: relative; 18 | } 19 | 20 | @import "navigation.less"; 21 | @import "main.less"; 22 | @import "footer.less"; -------------------------------------------------------------------------------- /tmpl/examples.tmpl: -------------------------------------------------------------------------------- 1 | 6 |

7 | 8 | 9 | ') === -1) { ?> 10 |
11 | 12 | /g, '
') ?>
13 |     
14 | 


--------------------------------------------------------------------------------
/static/styles/style.css:
--------------------------------------------------------------------------------
 1 | @charset "utf-8";
 2 | /* COMMON */
 3 | body,p,h1,h2,h3,h4,h5,h6,ul,ol,li,dl,dt,dd,table,th,td,form,fieldset,legend,input,textarea,button,select{margin:0;padding:0}
 4 | body,input,textarea,select,button,table,h1,h2,h3,h4,h5{font-family:HelveticaNeue-Light,AppleSDGothicNeo-Light,sans-serif;font-size:15px;line-height:1.267em}
 5 | body{position:relative;background-color:#ececec;color:#000;-webkit-text-size-adjust:none}
 6 | html{font-size:10px;line-height:15px}
 7 | table{border-collapse:collapse}
 8 | img,fieldset{border:0}
 9 | ul,ol{list-style:none}
10 | em,address{font-style:normal}
11 | a{color:inherit;text-decoration:none}
12 | img{vertical-align:top}
13 | mark{color:inherit;font-weight:bold;background:none}


--------------------------------------------------------------------------------
/static/scripts/prettify/lang-css.js:
--------------------------------------------------------------------------------
1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n"]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com",
2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]);
3 | 


--------------------------------------------------------------------------------
/egjsDocHelper.js:
--------------------------------------------------------------------------------
 1 | var helper = require('jsdoc/util/templateHelper');
 2 | 
 3 | module.exports = {
 4 | 	getDescriptionByLang : function(description) {
 5 | 		var enDesc = description.replace(/(.|\n)*?<\/ko>/, "");
 6 | 		var koMatch = description.match(/((.|\n)*?)<\/ko>/, "");
 7 | 		var koDesc = koMatch && "

" + koMatch[1] + "

"; 8 | 9 | return [enDesc, koDesc]; 10 | }, 11 | getSignatureReturns: function(d, ignores) { 12 | var returnTypes = []; 13 | 14 | if (d.returns) { 15 | d.returns.forEach(function(r) { 16 | if (r && r.type && r.type.names) { 17 | if (!returnTypes.length) { 18 | returnTypes = r.type.names; 19 | } 20 | } 21 | }); 22 | } 23 | 24 | if (returnTypes && returnTypes.length) { 25 | returnTypes = returnTypes.map(function(r) { 26 | if (ignores.indexOf(r) > -1) { 27 | return helper.htmlsafe(r); 28 | } else { 29 | return helper.linkto(r, helper.htmlsafe(r)); 30 | } 31 | }); 32 | } 33 | 34 | return returnTypes; 35 | } 36 | }; 37 | -------------------------------------------------------------------------------- /static/scripts/linenumber.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var counter = 0; 3 | var numbered; 4 | var source = document.getElementsByClassName('prettyprint source'); 5 | 6 | if (source && source[0]) { 7 | var linenums = config.linenums; 8 | 9 | if (linenums) { 10 | source = source[0].getElementsByTagName('ol')[0]; 11 | 12 | numbered = Array.prototype.slice.apply(source.children); 13 | numbered = numbered.map(function(item) { 14 | counter++; 15 | item.id = 'line' + counter; 16 | }); 17 | } else { 18 | source = source[0].getElementsByTagName('code')[0]; 19 | 20 | numbered = source.innerHTML.split('\n'); 21 | numbered = numbered.map(function(item) { 22 | counter++; 23 | return '' + item; 24 | }); 25 | 26 | source.innerHTML = numbered.join('\n'); 27 | } 28 | } 29 | })(); 30 | -------------------------------------------------------------------------------- /conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "tags": { 3 | "allowUnknownTags" : true 4 | }, 5 | "plugins": ["plugins/markdown", "plugins/ko", "plugins/codepen", "plugins/group", "plugins/hook", "plugins/support"], 6 | "templates": { 7 | "cleverLinks": true, 8 | "monospaceLinks": true, 9 | "default": { 10 | "outputSourceFiles" : true 11 | }, 12 | "applicationName": "Demo", 13 | "disqus": "", 14 | "googleAnalytics": "", 15 | "openGraph": { 16 | "title": "", 17 | "type": "website", 18 | "image": "", 19 | "site_name": "", 20 | "url": "" 21 | }, 22 | "meta": { 23 | "title": "", 24 | "description": "", 25 | "keyword": "" 26 | }, 27 | "link": { 28 | "canonical": ""/*Representative URL*/, 29 | "home": "https://naver.github.io/egjs/" 30 | }, 31 | "linenums": true, 32 | "defaultLanguage" : "ko" 33 | }, 34 | "opts": { 35 | "ignores": [], 36 | "expendsItemMembers": false 37 | }, 38 | "markdown": { 39 | "parser": "gfm", 40 | "hardwrap": true, 41 | "tags": ["examples", "ko"] 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /jsdoc-plugin/support.js: -------------------------------------------------------------------------------- 1 | exports.defineTags = function(dictionary) { 2 | dictionary.defineTag("support", { 3 | onTagged: function(doclet, tag) { 4 | var tagVal = eval('tag.value'); 5 | // console.warn("TAGVAL", tagVal); 6 | // console.warn("DOCLET", doclet); 7 | // console.warn("TAG", tag); 8 | tagVal = eval("(" + tagVal + ")"); 9 | 10 | var name; 11 | for(var p in tagVal) { 12 | switch (p) { 13 | case "ie" : name = "Desktop - Internet Explorer"; break; 14 | case "edge" : name = "Desktop - Edge"; break; 15 | case "ch" : name = "Desktop - Chrome"; break; 16 | case "ff" : name = "Desktop - Firefox"; break; 17 | case "sf" : name = "Desktop - Safari"; break; 18 | case "ios" : name = "iOS"; break; 19 | case "an" : name = "Andorid"; break; 20 | case "n-ios" : name = "NAVER - iOS"; break; 21 | case "n-an" : name = "NAVER - Android"; break; 22 | } 23 | tagVal[name] = tagVal[p]; 24 | delete tagVal[p]; 25 | } 26 | doclet.support = tagVal; 27 | } 28 | }); 29 | }; -------------------------------------------------------------------------------- /demo/sample/Car.js: -------------------------------------------------------------------------------- 1 | (function (w) { 2 | /** 3 | * quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo 4 | consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse 5 | * @class 6 | * @group GroupX 7 | * @name namespace.Car 8 | * 9 | */ 10 | w.namespace.Car = function () { 11 | }; 12 | 13 | w.namespace.Car.prototype = /** @lends namespace.Car.prototype */{ 14 | /** 15 | * Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 16 | */ 17 | testMethod: function () { 18 | }, 19 | 20 | testMethodUnNotated: function () { 21 | }, 22 | 23 | testEvent: function () { 24 | /** 25 | * tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 26 | * @name namespace.Car#testEvent 27 | * @event 28 | * @param {Event} e event 29 | */ 30 | test.trigger(); 31 | } 32 | }; 33 | })(window); 34 | -------------------------------------------------------------------------------- /demo/sample/Child.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 3 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam 4 | * @class 5 | * @group GroupY 6 | * @extends Parent 7 | */ 8 | var Child = function () { 9 | }; 10 | 11 | Child.prototype = /** @lends Child.prototype */{ 12 | /** 13 | * cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidata 14 | * @property {Boolean} 15 | */ 16 | testPropertyInChild: '', 17 | 18 | /** 19 | * cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non 20 | */ 21 | testMethodInChild: function (paramUnNotation) { 22 | return {}; 23 | }, 24 | 25 | /** 26 | * proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 27 | * @return {Object} result 28 | * @return {String} [result.property] 29 | * @return {Number} result.property2=123 cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non 30 | */ 31 | returnObject: function () { 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | egjs 2 | 3 | Copyright (c) 2015 NAVER Corp. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | -------------------------------------------------------------------------------- /tmpl/members.tmpl: -------------------------------------------------------------------------------- 1 | ' + self.linkto(name, self.htmlsafe(name)) + ' '; 9 | }); 10 | } 11 | ?> 12 | 13 |
14 |
15 |

16 |
17 | 18 |

19 | 20 |
21 |
22 | 23 |
24 | 25 |
26 | 27 | 28 |
29 | 30 |
31 | 32 | 33 | 34 | 35 | 36 |
Example 1? 's':'' ?>
37 | 38 | 39 |
40 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "egjs-jsdoc-template", 3 | "version": "1.4.4", 4 | "description": "egjs template for JSDoc 3", 5 | "main": "Gruntfile.js", 6 | "dependencies": { 7 | "taffydb": "https://github.com/hegemonic/taffydb/tarball/7d100bcee0e997ee4977e273cdce60bd8933050e", 8 | "marked": "~0.3.9", 9 | "catharsis": "~0.8.7" 10 | }, 11 | "devDependencies": { 12 | "connect-livereload": "~0.3.2", 13 | "grunt": "~0.4.2", 14 | "grunt-cli": "^1.2.0", 15 | "grunt-contrib-clean": "~0.5.0", 16 | "grunt-contrib-connect": "~0.6.0", 17 | "grunt-contrib-copy": "~0.5.0", 18 | "grunt-contrib-less": "~0.9.0", 19 | "grunt-contrib-uglify": "~0.2.7", 20 | "grunt-contrib-watch": "~0.5.3", 21 | "grunt-jsdoc": "1.1.0" 22 | }, 23 | "scripts": { 24 | "jsdoc": "rm -rf demo/dist2 && jsdoc demo/sample -d demo/dist2 -c conf.json -t ./ --debug --verbose", 25 | "test": "echo \"Error: no test specified\" && exit 1" 26 | }, 27 | "keywords": [ 28 | "jsdoc", 29 | "jsdoc3", 30 | "jaguar.js", 31 | "template", 32 | "egjs" 33 | ], 34 | "author": "NAVER Corp", 35 | "license": "MIT", 36 | "readmeFilename": "README.md", 37 | "repository": { 38 | "type": "git", 39 | "url": "https://github.com/egjs/egjs-jsdoc-template" 40 | }, 41 | "bugs": { 42 | "url": "https://github.com/egjs/egjs-jsdoc-template/issues" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # egjs-jsdoc-template 2 | 3 | ## 개요 4 | jsdoc3 기반의 템플릿 중 [jaguar-jsdoc](https://github.com/davidshimjs/jaguarjs-jsdoc) 템플릿의 기능을 기반으로 한 jsdoc template 개발 프로젝트이다. 5 | 6 | > jsdoc template 은 jsdoc 에서 주석을 파싱한 결과물을 기반으로 UI 를 구성하는 모듈을 의미한다. 원하는 UI 를 적용하고 싶은 경우 템플릿 구현이 필요하다. 7 | > 8 | > publish.js 에서 exports 된 ```publish``` 함수가 template 진입점이며, jsdoc 에서 파싱된 데이터(TAFFY type)를 파라미터로 전달 받는다. 9 | 10 | ## 적용 사례 11 | 12 | [egjs API](http://naver.github.io/egjs/latest/doc/) 13 | 14 | ## 목적 15 | 1. 기능 및 UI 를 egjs API 문서를 표현하는데 보다 최적화된 형태로 변경한다. 16 | 2. jsdoc3 기반으로 문서 API 를 작성하고자 하는 사내 모든 분들 중 egjs 와 동일하거나 유사한 기능이 필요한 분들을 위한 레퍼런스가 된다. 17 | 18 | ## 주요 특징 19 | jaguar-jsdoc 과 구분되는 egjs-jsdoc-template 의 기능은 다음과 같다. 20 | 21 | 1. 네비게이션 메뉴 Grouping 기능 : 동일한 범주끼리 묶어서 보여준다. 22 | * 지정된 그룹이 하나도 없으면 grouping 되지 않음 23 | * 그룹이 지정되지 않은 대상은 Global (기본 그룹명)으로 그룹핑 24 | * 알파벳 순서로 정렬 (단, Global 은 제일 마지막 순서) 25 | 2. Parameter Style : 테이블 --> 리스트 형태(기존 Jindo API 문서나 jQuery 문서 형태) 26 | 3. 네비게이션 메뉴 API 위치 고정 : 현재 클릭 시 해당 API 가 메뉴 최상단으로 이동(jaguar-jsdoc)하지 않고, 지정된 위치에 고정된다. 27 | 4. 한국어 처리 : 주석의 기본은 영문으로 하며 태그를 이용하여 한글 주석을 표기한다. 28 | 29 | ## Project Setting 30 | grunt-cli 를 각자 global로 설치 후, 다음 명령어를 이용하여 프로젝트를 설정한다. 31 | ``` 32 | npm installl egjs-jsdoc-template 33 | cd egjs-jsdoc-template 34 | npm install 35 | ``` 36 | 37 | ## 문서 생성하기 38 | grunt의 build 를 실행하여, 문서를 생성한다. 39 | ``` 40 | grunt 41 | ``` 42 | - 실행이 정상적으로 완료되면 `demo/dist` 디렉토리에 샘플 문서가 생성된다. 43 | 44 | > Gruntfile.js 의 작업원본 JS 파일 경로(SRC_PATH), 와 결과물 경로 (DEST_PATH)를 지정할 수 있다. 45 | > 46 | > var DIST_PATH = 'demo/dist'; 47 | var SRC_PATH = 'demo/sample'; 48 | 49 | [![Analytics](https://ga-beacon.appspot.com/UA-70842526-6/egjs-jsdoc-template/readme)](https://github.com/egjs/egjs-jsdoc-template) 50 | -------------------------------------------------------------------------------- /tmpl/navigation.tmpl: -------------------------------------------------------------------------------- 1 | 4 | 44 | -------------------------------------------------------------------------------- /static/img/type_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 10 | 11 | 14 | 17 | 19 | 20 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tmpl/exceptions.tmpl: -------------------------------------------------------------------------------- 1 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 50 | 51 | 52 | 53 | 54 |
TypeTypeDescription
47 |
48 |
49 |
55 | -------------------------------------------------------------------------------- /static/styles/prettify-jsdoc.css: -------------------------------------------------------------------------------- 1 | /* JSDoc prettify.js theme */ 2 | 3 | /* plain text */ 4 | .pln { 5 | color: #000000; 6 | font-weight: normal; 7 | font-style: normal; 8 | } 9 | 10 | /* string content */ 11 | .str { 12 | color: #006400; 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | 17 | /* a keyword */ 18 | .kwd { 19 | color: #000000; 20 | font-weight: bold; 21 | font-style: normal; 22 | } 23 | 24 | /* a comment */ 25 | .com { 26 | font-weight: normal; 27 | font-style: italic; 28 | } 29 | 30 | /* a type name */ 31 | .typ { 32 | color: #000000; 33 | font-weight: normal; 34 | font-style: normal; 35 | } 36 | 37 | /* a literal value */ 38 | .lit { 39 | color: #006400; 40 | font-weight: normal; 41 | font-style: normal; 42 | } 43 | 44 | /* punctuation */ 45 | .pun { 46 | color: #000000; 47 | font-weight: bold; 48 | font-style: normal; 49 | } 50 | 51 | /* lisp open bracket */ 52 | .opn { 53 | color: #000000; 54 | font-weight: bold; 55 | font-style: normal; 56 | } 57 | 58 | /* lisp close bracket */ 59 | .clo { 60 | color: #000000; 61 | font-weight: bold; 62 | font-style: normal; 63 | } 64 | 65 | /* a markup tag name */ 66 | .tag { 67 | color: #006400; 68 | font-weight: normal; 69 | font-style: normal; 70 | } 71 | 72 | /* a markup attribute name */ 73 | .atn { 74 | color: #006400; 75 | font-weight: normal; 76 | font-style: normal; 77 | } 78 | 79 | /* a markup attribute value */ 80 | .atv { 81 | color: #006400; 82 | font-weight: normal; 83 | font-style: normal; 84 | } 85 | 86 | /* a declaration */ 87 | .dec { 88 | color: #000000; 89 | font-weight: bold; 90 | font-style: normal; 91 | } 92 | 93 | /* a variable name */ 94 | .var { 95 | color: #000000; 96 | font-weight: normal; 97 | font-style: normal; 98 | } 99 | 100 | /* a function name */ 101 | .fun { 102 | color: #000000; 103 | font-weight: bold; 104 | font-style: normal; 105 | } 106 | 107 | /* Specify class=linenums on a pre to get line numbering */ 108 | ol.linenums { 109 | margin-top: 0; 110 | margin-bottom: 0; 111 | } 112 | -------------------------------------------------------------------------------- /less/navigation.less: -------------------------------------------------------------------------------- 1 | @import "common.less"; 2 | 3 | ::-webkit-scrollbar { 4 | width: 8px; 5 | background-color: transparent; 6 | } 7 | 8 | ::-webkit-scrollbar-thumb { 9 | background-color: gray; 10 | border-radius: 4px; 11 | } 12 | 13 | .navigation { 14 | position: fixed; 15 | float: left; 16 | width: @navWidth; 17 | height: 100%; 18 | background-color: @colorBgNavi; 19 | 20 | .applicationName { 21 | margin: 0; 22 | margin-top: 15px; 23 | padding: 10px 15px; 24 | font: bold 1.25em Helvetica; 25 | color: #fff; 26 | 27 | a { 28 | color: #fff; 29 | } 30 | } 31 | 32 | .search { 33 | padding: 10px 15px; 34 | 35 | input { 36 | background-color: #333; 37 | color: #fff; 38 | border-color: #555; 39 | } 40 | } 41 | 42 | .list { 43 | padding: 10px 15px 0 15px; 44 | position: relative; 45 | overflow: auto; 46 | width: 100%; 47 | } 48 | 49 | li.item { 50 | margin-bottom: 8px; 51 | padding-bottom: 8px; 52 | border-bottom: 1px solid #333; 53 | 54 | a { 55 | color: #bbb; 56 | &:hover { 57 | color: #fff; 58 | } 59 | } 60 | .title { 61 | cursor: pointer; 62 | position: relative; 63 | a { 64 | color: #e1e1e1; 65 | &:hover { 66 | color: #fff; 67 | } 68 | } 69 | display: block; 70 | font-size: 0.8em; 71 | 72 | .static { 73 | display: block; 74 | border-radius: 3px; 75 | background-color: @colorSubtitle; 76 | color: #000; 77 | font-size: 0.7em; 78 | padding: 2px 4px; 79 | float: right; 80 | } 81 | } 82 | 83 | .subtitle { 84 | margin-top: 10px; 85 | font: bold 0.65em Helvetica; 86 | color: @colorSubtitle; 87 | display: block; 88 | } 89 | 90 | 91 | ul { 92 | & > li { 93 | font-size: 0.7em; 94 | padding-left: 8px; 95 | margin-top: 2px; 96 | } 97 | } 98 | 99 | .itemMembers { 100 | display: none; 101 | } 102 | } 103 | } -------------------------------------------------------------------------------- /demo/sample/Parent.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 3 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam 4 | * @class 5 | * @codepen {"id":"rVOpPK", "ko":"플리킹 기본 예제", "en":"Flicking default example", "collectionId":"ArxyLK", "height" : 403} 6 | * @support {"ie": "7+", "ch" : "latest", "ff" : "latest", "sf" : "latest", "edge" : "latest", "ios" : "7+", "an" : "2.3+ (except 3.0)", "n-ios" : "latest", "n-an" : "latest"} 7 | * @group GroupY 8 | */ 9 | var Parent = function () { 10 | }; 11 | 12 | Parent.prototype = /** @lends Parent.prototype */{ 13 | /** 14 | * cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidata 15 | * @property {String} testProperty Description for Property Property 에 대한 설명 16 | */ 17 | testProperty: '', 18 | 19 | /** 20 | * Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 21 | * @param {String|String[]} [paramA=Default Value] tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam 22 | * @param {namespace.Car} [paramB] quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo 23 | * @param {Function} [paramCallback] 24 | * @param {String} paramCallback.firstParam First parameter첫번째 파라미터 25 | * @param {String} paramCallback.secondParam Second parameter두번째 파라미터 26 | * @return {Array|Object} Return value as non-object type. (or an object without properties) Non-object 타입 27 | */ 28 | testMethod: function (paramA, paramB, paramCallback) { 29 | return {}; 30 | }, 31 | 32 | /** 33 | * This method will return object value. 34 | * @return {Object} test returns object. 35 | * @return {Boolean} test.foo property description 36 | * @return {Number} test.bar optional property 37 | */ 38 | testReturnValue: function () { 39 | }, 40 | 41 | /** 42 | * @return Plain Text without type definition 43 | */ 44 | testReturnPlainText: function () { 45 | }, 46 | 47 | /** 48 | * @example 49 | * JSDoc3 Captions 50 | * var a = 0; 51 | * 52 | * for (var i = 0; i < 10; i++) { 53 | * a++; 54 | * } 55 | * 56 | * @example 57 | * jaguarjs-doc uses markdown style. 58 | * 59 | * ``` 60 | * var a = 0; 61 | * 62 | * for (var i = 0; i < 10; i++) { 63 | * a++; 64 | * } 65 | * ``` 66 | */ 67 | testExample: function () { 68 | } 69 | }; 70 | -------------------------------------------------------------------------------- /tmpl/navigation-item.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 |
  • 7 | 8 | 9 | 10 | static 11 | 12 | 13 |
      "> 14 | 17 | Members 18 | 21 |
    • 22 | 26 |
    27 |
      "> 28 | 31 | Typedefs 32 | 35 |
    • 36 | 40 |
    41 |
      "> 42 | 45 | Methods 46 | 50 |
    • inherited
    • 51 | 55 |
    56 |
      "> 57 | 60 | Events 61 | 64 |
    • 65 | 69 |
    70 | 71 | 74 |
      "> 75 | Hooks 76 | 79 |
    • 80 | 83 |
    84 | 85 | 88 |
  • 89 | -------------------------------------------------------------------------------- /static/styles/prettify-tomorrow.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Theme */ 2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 3 | /* Pretty printing styles. Used with prettify.js. */ 4 | /* SPAN elements with the classes below are added by prettyprint. */ 5 | /* plain text */ 6 | .pln { 7 | color: #4d4d4c; } 8 | 9 | @media screen { 10 | /* string content */ 11 | .str { 12 | color: #718c00; } 13 | 14 | /* a keyword */ 15 | .kwd { 16 | color: #8959a8; } 17 | 18 | /* a comment */ 19 | .com { 20 | color: #8e908c; } 21 | 22 | /* a type name */ 23 | .typ { 24 | color: #4271ae; } 25 | 26 | /* a literal value */ 27 | .lit { 28 | color: #f5871f; } 29 | 30 | /* punctuation */ 31 | .pun { 32 | color: #4d4d4c; } 33 | 34 | /* lisp open bracket */ 35 | .opn { 36 | color: #4d4d4c; } 37 | 38 | /* lisp close bracket */ 39 | .clo { 40 | color: #4d4d4c; } 41 | 42 | /* a markup tag name */ 43 | .tag { 44 | color: #c82829; } 45 | 46 | /* a markup attribute name */ 47 | .atn { 48 | color: #f5871f; } 49 | 50 | /* a markup attribute value */ 51 | .atv { 52 | color: #3e999f; } 53 | 54 | /* a declaration */ 55 | .dec { 56 | color: #f5871f; } 57 | 58 | /* a variable name */ 59 | .var { 60 | color: #c82829; } 61 | 62 | /* a function name */ 63 | .fun { 64 | color: #4271ae; } } 65 | /* Use higher contrast and text-weight for printable form. */ 66 | @media print, projection { 67 | .str { 68 | color: #060; } 69 | 70 | .kwd { 71 | color: #006; 72 | font-weight: bold; } 73 | 74 | .com { 75 | color: #600; 76 | font-style: italic; } 77 | 78 | .typ { 79 | color: #404; 80 | font-weight: bold; } 81 | 82 | .lit { 83 | color: #044; } 84 | 85 | .pun, .opn, .clo { 86 | color: #440; } 87 | 88 | .tag { 89 | color: #006; 90 | font-weight: bold; } 91 | 92 | .atn { 93 | color: #404; } 94 | 95 | .atv { 96 | color: #060; } } 97 | /* Style */ 98 | /* 99 | pre.prettyprint { 100 | background: white; 101 | font-family: Menlo, Monaco, Consolas, monospace; 102 | font-size: 12px; 103 | line-height: 1.5; 104 | border: 1px solid #ccc; 105 | padding: 10px; } 106 | */ 107 | 108 | /* Specify class=linenums on a pre to get line numbering */ 109 | ol.linenums { 110 | margin-top: 0; 111 | margin-bottom: 0; } 112 | 113 | /* IE indents via margin-left */ 114 | li.L0, 115 | li.L1, 116 | li.L2, 117 | li.L3, 118 | li.L4, 119 | li.L5, 120 | li.L6, 121 | li.L7, 122 | li.L8, 123 | li.L9 { 124 | /* */ } 125 | 126 | /* Alternate shading for lines */ 127 | li.L1, 128 | li.L3, 129 | li.L5, 130 | li.L7, 131 | li.L9 { 132 | /* */ } 133 | 134 | pre.source { 135 | border: 0; 136 | } 137 | -------------------------------------------------------------------------------- /tmpl/method.tmpl: -------------------------------------------------------------------------------- 1 | 5 |
    6 |
    7 |

    8 | 9 | 10 | 11 | 12 |

    13 | 14 | 15 |
    16 | , 17 |
    18 | 19 |
    20 | 21 | 22 |

    23 | 24 |
    25 |
    26 | 27 | 28 |
    29 | 30 |
    31 | 32 |
    33 | 34 |
    35 | 36 | 37 |
    38 | 39 |
    40 | 41 | 42 | 43 |
    Type:
    44 |
      45 |
    • 46 | 47 |
    • 48 |
    49 | 50 | 51 | 52 |
    This:
    53 |
    54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
    Fires:
    62 |
      63 |
    • 64 |
    65 | 66 | 67 | 68 |
    Listens to Events:
    69 |
      70 |
    • 71 |
    72 | 73 | 74 | 75 |
    Listeners of This Event:
    76 |
      77 |
    • 78 |
    79 | 80 | 81 | 82 |
    Throws:
    83 | 84 | 85 | 86 | 87 | = 1) { ?>
    Returns:
    88 | 89 | 90 | 91 | 92 |
    Example 1? 's':'' ?>
    93 | 94 | 95 | 96 | 97 |
    98 | -------------------------------------------------------------------------------- /tmpl/params.tmpl: -------------------------------------------------------------------------------- 1 | 40 | 41 |
      42 | 47 |
    • 48 | 49 |
      50 | 51 | 52 | (default: ) 53 | 54 | 55 | 56 | 57 | optional 58 | 59 | 60 | nullable 61 | 62 | 63 | 64 | repeatable 65 | 66 | 67 |
      68 | 69 | 70 |
      Type:
      71 | 72 | 73 | 74 |
      75 | (.|\n)*?<\/ko>/, ""); 77 | var koMatch = param.description.match(/((.|\n)*?)<\/ko>/, ""); 78 | var koDesc = koMatch && "

      " + koMatch[1] + "

      "; 79 | ?> 80 |
      81 |
      82 | 83 |
      84 | 85 | 86 | 87 | 88 | 89 |
    • 90 | 91 |
    -------------------------------------------------------------------------------- /tmpl/returns.tmpl: -------------------------------------------------------------------------------- 1 | /g, ''); 10 | 11 | var isNamed = ret.name ? true : false; 12 | var name = ret.name || ret.description; 13 | var startSpacePos = name.indexOf(' '); 14 | 15 | if (parentReturn !== null && name.indexOf(parentReturn.name + '.') === 0) { 16 | ret.name = isNamed ? name.substr(parentReturn.name.length + 1) : name.substr(parentReturn.name.length + 1, startSpacePos - (parentReturn.name.length + 1)); 17 | 18 | if (!isNamed) { 19 | ret.description = ret.description.substr(startSpacePos + 1); 20 | } 21 | 22 | ret.isSubReturns = true; 23 | parentReturn.subReturns = parentReturn.subReturns || []; 24 | parentReturn.subReturns.push(ret); 25 | returns[i] = null; 26 | } else if (returns.length > 1 || ret.isSubReturns) { 27 | if (!isNamed) { 28 | ret.name = ret.description.substr(0, startSpacePos !== -1 ? startSpacePos : ret.description.length); 29 | ret.description = startSpacePos !== -1 ? ret.description.substr(startSpacePos + 1) : ''; 30 | } 31 | 32 | parentReturn = ret; 33 | } 34 | } 35 | 36 | if (ret.name) { 37 | hasName = true; 38 | } 39 | 40 | if (ret.type) { 41 | hasType = true; 42 | } 43 | }); 44 | ?> 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 63 | 64 | 65 | 79 | 93 | 94 | 95 | 96 |
    NameTypeDescription
    66 | 69 | 70 | 71 | 72 | 73 | 74 | | 75 | 78 | 80 | 85 |
    86 |
    87 | 88 | 89 | 90 | 91 | 92 |
    97 | 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /tmpl/properties.tmpl: -------------------------------------------------------------------------------- 1 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 79 | 80 | 81 | 90 | 91 | 92 | 93 | 98 | 99 | 100 | 113 | 114 | 115 | 116 | 117 |
    NameTypeArgumentDefaultDescription
    75 | 76 | 77 | 78 | 82 | 83 | <optional>
    84 | 85 | 86 | 87 | <nullable>
    88 | 89 |
    94 | 95 | 96 | 97 | 101 | 106 |
    107 |
    108 | 109 | 110 | 111 |
    Properties
    112 |
    -------------------------------------------------------------------------------- /static/scripts/main.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | var $wrap = $("#wrap"), 3 | $langToggle = $("#toggle"); 4 | 5 | // initial language 6 | setLanguage(getUserLanguage()); 7 | 8 | $langToggle.on("click",function(){ 9 | $wrap.hasClass("toggle") ? setLanguage("ko") : setLanguage("en"); 10 | }); 11 | 12 | function setLanguage(langCode) { 13 | if (langCode.indexOf("ko") === 0) { 14 | //Set Korean 15 | $wrap.removeClass("toggle"); 16 | $langToggle.text("English"); 17 | } else { 18 | //Set English 19 | $wrap.addClass("toggle"); 20 | $langToggle.text("한국어"); 21 | } 22 | localStorage.setItem("egjs-api-language", langCode); 23 | } 24 | 25 | function getUserLanguage() { 26 | return localStorage.getItem("egjs-api-language") || navigator.language || ""; 27 | } 28 | 29 | $('#search').on('keyup', function (e) { 30 | var value = $(this).val(); 31 | var $el = $('.navigation'); 32 | 33 | if (value) { 34 | var regexp = new RegExp(value, 'i'); 35 | $el.find('li, .itemMembers').hide(); 36 | 37 | $el.find('li').each(function (i, v) { 38 | var $item = $(v); 39 | 40 | if ($item.data('name') && regexp.test($item.data('name'))) { 41 | $item.show(); 42 | $item.closest('.itemMembers').show(); 43 | $item.closest('.item').show(); 44 | } 45 | }); 46 | } else { 47 | $el.find('.item, .itemMembers').show(); 48 | } 49 | 50 | $el.find('.list').scrollTop(0); 51 | }); 52 | 53 | // Toggle when click an item element 54 | // $('.navigation').on('click', '.title', function (e) { 55 | // $(this).parent().find('.itemMembers').toggle(); 56 | // }); 57 | 58 | // Show an item related a current documentation automatically 59 | var filename = $('.page-title').data('filename').replace(/\.[a-z]+$/, ''); 60 | var $currentItem = $('.navigation .item[data-name="' + filename + '"]:eq(0)'); 61 | // if ($currentItem.length) { 62 | // $currentItem 63 | // .remove() 64 | // .prependTo('.navigation .list') 65 | // .show() 66 | // .find('.itemMembers') 67 | // .show(); 68 | // } 69 | // Retain a menu order 2015.04.29. jongmoon. 70 | if ($currentItem.length) { 71 | $currentItem 72 | .show() 73 | .find('.itemMembers') 74 | .slideDown(); 75 | } 76 | 77 | // Auto resizing on navigation 78 | var _onResize = function () { 79 | var height = $(window).height(); 80 | var $el = $('.navigation'); 81 | 82 | $el.height(height).find('.list').height(height - 133); 83 | }; 84 | 85 | $(window).on('resize', _onResize); 86 | _onResize(); 87 | 88 | // disqus code 89 | if (config.disqus) { 90 | $(window).on('load', function () { 91 | var disqus_shortname = config.disqus; // required: replace example with your forum shortname 92 | var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; 93 | dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; 94 | (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); 95 | var s = document.createElement('script'); s.async = true; 96 | s.type = 'text/javascript'; 97 | s.src = '//' + disqus_shortname + '.disqus.com/count.js'; 98 | document.getElementsByTagName('BODY')[0].appendChild(s); 99 | }); 100 | } 101 | }); 102 | -------------------------------------------------------------------------------- /tmpl/layout.tmpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <?js= (title + (env.conf.templates.meta && env.conf.templates.meta.title && " | ") + (env.conf.templates.meta && env.conf.templates.meta.title)) ?> 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 37 | 38 | 39 | 40 | 51 | 52 | 53 | 54 |
    55 | 56 |
    57 |

    58 | 59 | 60 | 61 | 62 |
    63 | 64 | comments powered by Disqus 65 | 66 | 67 | 68 |
    69 | Documentation generated by JSDoc on 70 |
    71 |
    72 |
    73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /tmpl/details.tmpl: -------------------------------------------------------------------------------- 1 | 6 |
    7 | 11 |
    Properties:
    12 | 13 |
    14 | 15 | 16 | 17 | 18 |
    Version:
    19 |
    20 | 21 | 22 | 23 |
    Since:
    24 |
    25 | 26 | 27 | 28 |
    Deprecated
    • Yes
      32 | 33 | 34 | 35 |
      Author:
      36 |
      37 |
        38 |
      • 39 |
      40 |
      41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
      License:
      50 |
      51 | 52 | 53 | 54 |
      Default Value:
      55 |
      56 | 57 | 58 | 59 |
      Tutorials:
      60 |
      61 |
        62 |
      • 63 |
      64 |
      65 | 66 | 67 | 68 |
      See:
      69 |
      70 |
        74 |
      • 75 |
        76 |
        77 |
      • 78 |
      79 |
      80 | 81 | 82 | 83 |
      TODO
      84 |
      85 |
        86 |
      • 87 |
      88 |
      89 | 90 | 91 | 92 | 93 |

      Codepen:

      94 | See the Pen eg.Flicking by egjs (@egjs) on CodePen.

      \ 101 | '; 102 | } ?> 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 |
      111 |
      112 | 113 | 114 | 115 | 116 |
      117 | -------------------------------------------------------------------------------- /Gruntfile.js: -------------------------------------------------------------------------------- 1 | /** 2 | * http://gruntjs.com/configuring-tasks 3 | */ 4 | module.exports = function (grunt) { 5 | var path = require('path'); 6 | var DIST_PATH = 'demo/dist'; 7 | var SRC_PATH = 'demo/sample'; 8 | 9 | grunt.initConfig({ 10 | pkg: grunt.file.readJSON('package.json'), 11 | 12 | connect: { 13 | options: { 14 | hostname: '*' 15 | }, 16 | demo: { 17 | options: { 18 | port: 8000, 19 | base: DIST_PATH, 20 | middleware: function (connect, options) { 21 | return [ 22 | require('connect-livereload')(), 23 | connect.static(path.resolve(options.base)) 24 | ]; 25 | } 26 | } 27 | } 28 | }, 29 | 30 | watch: { 31 | options: { 32 | livereload: true 33 | }, 34 | less: { 35 | files: ['less/**/*.less'], 36 | tasks: ['less'] 37 | }, 38 | 39 | lesscopy: { 40 | files: ['static/styles/jaguar.css'], 41 | tasks: ['copy:css'] 42 | }, 43 | 44 | jscopy: { 45 | files: ['static/scripts/main.js'], 46 | tasks: ['copy:js'] 47 | }, 48 | 49 | jsdoc: { 50 | files: ['**/*.tmpl', '*.js'], 51 | tasks: ['jsdoc'] 52 | }, 53 | 54 | doc: { 55 | files: ['demo/sample/**/*.js'], 56 | tasks: ['demo'] 57 | } 58 | }, 59 | 60 | clean: { 61 | doc: { 62 | src: DIST_PATH 63 | } 64 | }, 65 | 66 | jsdoc: { 67 | doc: { 68 | src: [ 69 | SRC_PATH + '/**/*.js', 70 | 71 | // You can add README.md file for index page at documentations. 72 | 'README.md' 73 | ], 74 | options: { 75 | verbose: true, 76 | destination: DIST_PATH, 77 | configure: 'conf.json', 78 | template: './', 79 | 'private': false 80 | } 81 | }, 82 | /** 83 | * egjs 빌드시 사용하는 옵션 84 | */ 85 | egjs: { 86 | src: ['../egjs/src/**/*.js', 'README.md'], 87 | options: { 88 | verbose: true, 89 | destination: DIST_PATH, 90 | configure: 'conf.json', 91 | template: './', 92 | 'private': false 93 | } 94 | } 95 | }, 96 | 97 | less: { 98 | dist: { 99 | src: 'less/**/jaguar.less', 100 | dest: 'static/styles/jaguar.css' 101 | } 102 | }, 103 | 104 | copy: { 105 | css: { 106 | src: 'static/styles/jaguar.css', 107 | dest: DIST_PATH + '/styles/jaguar.css' 108 | }, 109 | 110 | js: { 111 | src: 'static/scripts/main.js', 112 | dest: DIST_PATH + '/scripts/main.js' 113 | }, 114 | 115 | plugin: { 116 | files: [{ 117 | src: 'jsdoc-plugin/*.js', 118 | dest: 'node_modules/grunt-jsdoc/node_modules/jsdoc/plugins/', 119 | flatten : true, 120 | expand : true 121 | }] 122 | }, 123 | /* 124 | * Alternative task to apply on changed module dir in NPM3 125 | */ 126 | pluginForNewNPM: { 127 | files: [{ 128 | src: 'jsdoc-plugin/*.js', 129 | dest: 'node_modules/jsdoc/plugins/', 130 | flatten : true, 131 | expand : true 132 | }] 133 | } 134 | } 135 | }); 136 | 137 | // Load task libraries 138 | [ 139 | 'grunt-contrib-connect', 140 | 'grunt-contrib-watch', 141 | 'grunt-contrib-copy', 142 | 'grunt-contrib-clean', 143 | 'grunt-contrib-less', 144 | 'grunt-jsdoc', 145 | ].forEach(function (taskName) { 146 | grunt.loadNpmTasks(taskName); 147 | }); 148 | 149 | // Definitions of tasks 150 | // grunt.registerTask('default', 'Watch project files', [ 151 | // 'demo', 152 | // 'connect:demo', 153 | // 'watch' 154 | // ]); 155 | 156 | 157 | grunt.registerTask('default', 'Create documentations for yours', [ 158 | /*'less',*/ 159 | 'clean:doc', 160 | 'copy:plugin', 161 | 'copy:pluginForNewNPM', 162 | 'jsdoc:doc' 163 | ]); 164 | 165 | grunt.registerTask('egjs', 'Create documentations for egjs', [ 166 | /*'less',*/ 167 | 'clean:doc', 168 | 'copy:plugin', 169 | 'copy:pluginForNewNPM', 170 | 'jsdoc:egjs' 171 | ]); 172 | }; 173 | -------------------------------------------------------------------------------- /NOTICE-egjs-jsdoc-template: -------------------------------------------------------------------------------- 1 | THE FOLLOWING SETS FORTH ATTRIBUTION NOTICES FOR THIRD PARTY SOFTWARE THAT MAY BE CONTAINED IN THIS APPLICATION. 2 | 3 | ===== 4 | 5 | The following software may be included in this application: jaguarjs-jsdoc from https://github.com/davidshimjs/jaguarjs-jsdoc 6 | This software contains the following license and notice below: 7 | 8 | Copyright (c) 2013 Sangmin, Shim 9 | 10 | Permission is hereby granted, free of charge, to any person obtaining a copy of 11 | this software and associated documentation files (the "Software"), to deal in 12 | the Software without restriction, including without limitation the rights to 13 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 14 | the Software, and to permit persons to whom the Software is furnished to do so, 15 | subject to the following conditions: 16 | 17 | The above copyright notice and this permission notice shall be included in all 18 | copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 22 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 23 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 24 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 25 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26 | 27 | 28 | ===== 29 | 30 | The following software may be included in this application: code-prettify from https://github.com/google/code-prettify 31 | This software contains the following license and notice below: 32 | 33 | /** 34 | * @license 35 | * Copyright (C) 2006 Google Inc. 36 | * 37 | * Licensed under the Apache License, Version 2.0 (the "License"); 38 | * you may not use this file except in compliance with the License. 39 | * You may obtain a copy of the License at 40 | * 41 | * http://www.apache.org/licenses/LICENSE-2.0 42 | * 43 | * Unless required by applicable law or agreed to in writing, software 44 | * distributed under the License is distributed on an "AS IS" BASIS, 45 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 46 | * See the License for the specific language governing permissions and 47 | * limitations under the License. 48 | */ 49 | 50 | ===== 51 | 52 | The following software may be included in this application: bootstrap from http://getbootstrap.com 53 | This software contains the following license and notice below: 54 | 55 | The MIT License (MIT) 56 | 57 | Copyright (c) 2011-2014 Twitter, Inc 58 | 59 | Permission is hereby granted, free of charge, to any person obtaining a copy 60 | of this software and associated documentation files (the "Software"), to deal 61 | in the Software without restriction, including without limitation the rights 62 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 63 | copies of the Software, and to permit persons to whom the Software is 64 | furnished to do so, subject to the following conditions: 65 | 66 | The above copyright notice and this permission notice shall be included in 67 | all copies or substantial portions of the Software. 68 | 69 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 70 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 71 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 72 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 73 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 74 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 75 | THE SOFTWARE. 76 | 77 | ===== 78 | 79 | The following software may be included in this application: jQuery from http://jquery.com/ 80 | This software contains the following license and notice below: 81 | 82 | Copyright 2014 jQuery Foundation and other contributors 83 | http://jquery.com/ 84 | 85 | Permission is hereby granted, free of charge, to any person obtaining 86 | a copy of this software and associated documentation files (the 87 | "Software"), to deal in the Software without restriction, including 88 | without limitation the rights to use, copy, modify, merge, publish, 89 | distribute, sublicense, and/or sell copies of the Software, and to 90 | permit persons to whom the Software is furnished to do so, subject to 91 | the following conditions: 92 | 93 | The above copyright notice and this permission notice shall be 94 | included in all copies or substantial portions of the Software. 95 | 96 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 97 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 98 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 99 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 100 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 101 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 102 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 103 | 104 | ===== 105 | 106 | The following software may be included in this application: underscore from https://github.com/jashkenas/underscore 107 | This software contains the following license and notice below: 108 | 109 | Copyright (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative 110 | Reporters & Editors 111 | 112 | Permission is hereby granted, free of charge, to any person 113 | obtaining a copy of this software and associated documentation 114 | files (the "Software"), to deal in the Software without 115 | restriction, including without limitation the rights to use, 116 | copy, modify, merge, publish, distribute, sublicense, and/or sell 117 | copies of the Software, and to permit persons to whom the 118 | Software is furnished to do so, subject to the following 119 | conditions: 120 | 121 | The above copyright notice and this permission notice shall be 122 | included in all copies or substantial portions of the Software. 123 | 124 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 125 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 126 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 127 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 128 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 129 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 130 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 131 | OTHER DEALINGS IN THE SOFTWARE. 132 | 133 | ===== 134 | -------------------------------------------------------------------------------- /less/main.less: -------------------------------------------------------------------------------- 1 | @import "common.less"; 2 | 3 | .main { 4 | padding: 20px 20px; 5 | margin-left: @navWidth; 6 | .page-title { 7 | display: none; 8 | } 9 | 10 | h1 { 11 | font-weight: bold; 12 | font-size: 1.6em; 13 | margin: 0; 14 | } 15 | 16 | h2 { 17 | font-weight: bold; 18 | font-size: 1.5em; 19 | margin: 0; 20 | } 21 | 22 | h3 { 23 | font-weight: bold; 24 | font-size: 12px; 25 | margin: 5px 0; 26 | } 27 | 28 | h4 { 29 | font-weight: bold; 30 | font-size: 1em; 31 | } 32 | 33 | h5 { 34 | font-weight: bold; 35 | font-size: 12px; 36 | } 37 | 38 | dd { 39 | font-size: 12px; 40 | } 41 | 42 | h4.name { 43 | span.type-signature { 44 | display: inline-block; 45 | border-radius: 3px; 46 | background-color: gray; 47 | color: #fff; 48 | font-size: 0.7em; 49 | padding: 2px 4px; 50 | } 51 | 52 | span.type { 53 | margin-left: 5px; 54 | } 55 | 56 | span.glyphicon { 57 | display: inline-block; 58 | vertical-align: middle; 59 | color: #e1e1e1; 60 | margin-left: 7px; 61 | } 62 | 63 | span.returnType { 64 | margin-left: 3px; 65 | background-color: transparent!important; 66 | color: gray!important; 67 | } 68 | } 69 | 70 | 71 | span.static { 72 | display: inline-block; 73 | border-radius: 3px; 74 | background-color: @colorSubtitle!important; 75 | color: #fff; 76 | font-size: 0.7em; 77 | padding: 2px 4px; 78 | margin-right: 8px; 79 | } 80 | 81 | span.number { 82 | background-color: gray!important; 83 | } 84 | 85 | span.string { 86 | background-color: gray!important; 87 | } 88 | 89 | span.object { 90 | background-color: @colorLink!important; 91 | } 92 | 93 | span.array { 94 | background-color: @colorLink!important; 95 | } 96 | 97 | span.boolean { 98 | background-color: @colorRed!important; 99 | } 100 | 101 | .subsection-title { 102 | font-size: 14px; 103 | margin-top: 30px; 104 | color: @colorSubtitle; 105 | } 106 | 107 | .description { 108 | margin-top: 10px; 109 | // .font-description(); 110 | font-size: 13px; 111 | 112 | ul, ol { 113 | margin-bottom: 15px; 114 | } 115 | 116 | p { 117 | font-size: 13px; 118 | } 119 | 120 | h2 { 121 | margin-top: 30px; 122 | margin-bottom: 10px; 123 | padding-bottom: 10px; 124 | border-bottom: 1px solid #efefef; 125 | } 126 | 127 | pre { 128 | margin: 10px 0; 129 | } 130 | } 131 | 132 | .tag-source { 133 | font-size: 12px; 134 | } 135 | dt.tag-source { 136 | margin-top: 5px; 137 | } 138 | 139 | dt.tag-todo { 140 | font-size: 10px; 141 | display: inline-block; 142 | background-color: @colorLink; 143 | color: #fff; 144 | padding: 2px 4px; 145 | border-radius: 5px; 146 | } 147 | 148 | .type-signature { 149 | font-size: 12px; 150 | } 151 | 152 | .tag-deprecated { 153 | display: inline-block; 154 | font-size: 10px; 155 | } 156 | 157 | .important { 158 | background-color: @colorRed; 159 | color: #fff; 160 | padding: 2px 4px; 161 | border-radius: 5px; 162 | } 163 | 164 | .nameContainer { 165 | position: relative; 166 | margin-top: 20px; 167 | padding-top: 5px; 168 | border-top: 1px solid #e1e1e1; 169 | 170 | .inherited { 171 | display: inline-block; 172 | border-radius: 3px; 173 | background-color: #888!important; 174 | font-size: 0.7em; 175 | padding: 2px 4px; 176 | margin-right: 5px; 177 | a { 178 | color: #fff; 179 | } 180 | } 181 | 182 | .tag-source { 183 | position: absolute; 184 | top: 17px; 185 | right: 0; 186 | font-size: 10px; 187 | a { 188 | color: gray; 189 | } 190 | } 191 | 192 | &.inherited { 193 | color: gray; 194 | } 195 | 196 | h4 { 197 | margin-right: 150px; 198 | line-height: 1.3; 199 | 200 | .signature { 201 | font-size: 13px; 202 | font-weight: normal; 203 | font-family: Menlo,Monaco,Consolas,"Courier New",monospace; 204 | } 205 | 206 | .type-signature.type a { 207 | color: #fff; 208 | } 209 | } 210 | } 211 | 212 | pre { 213 | font-size: 11px; 214 | } 215 | 216 | table { 217 | width: 100%; 218 | margin-bottom: 15px; 219 | 220 | th { 221 | padding: 3px 3px; 222 | } 223 | 224 | td { 225 | vertical-align: top; 226 | padding: 5px 3px; 227 | } 228 | 229 | .name { 230 | width: 110px; 231 | } 232 | 233 | .type { 234 | width: 60px; 235 | color: #aaa; 236 | font-size: 11px; 237 | } 238 | 239 | .attributes { 240 | width: 80px; 241 | color: #aaa; 242 | font-size: 11px; 243 | } 244 | 245 | .description { 246 | font-size: 12px; 247 | p { 248 | margin: 0; 249 | } 250 | } 251 | 252 | .optional { 253 | float: left; 254 | border-radius: 3px; 255 | background-color: #ddd!important; 256 | font-size: 0.7em; 257 | padding: 2px 4px; 258 | margin-right: 5px; 259 | color: gray; 260 | } 261 | } 262 | 263 | .readme { 264 | p { 265 | margin-top: 15px; 266 | line-height: 1.2; 267 | font-size: 0.85em; 268 | } 269 | 270 | h1 { 271 | font-size: 1.7em; 272 | } 273 | 274 | h2 { 275 | margin-top: 30px; 276 | margin-bottom: 10px; 277 | padding-bottom: 10px; 278 | border-bottom: 1px solid #e1e1e1; 279 | } 280 | 281 | li { 282 | font-size: 0.9em; 283 | margin-bottom: 10px; 284 | } 285 | } 286 | 287 | article { 288 | ol, ul { 289 | margin-left: 25px; 290 | } 291 | 292 | ol > li { 293 | list-style-type: decimal; 294 | margin-bottom: 5px; 295 | } 296 | 297 | ul > li { 298 | margin-bottom: 5px; 299 | list-style-type: disc; 300 | } 301 | } 302 | } -------------------------------------------------------------------------------- /tmpl/container.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
      13 | 14 |
      15 |

      16 | eg 17 | 18 | 19 | 20 | 21 | 22 | 23 |

      24 | 31 |
      32 | 33 |
      34 |
      35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 |

      Browser Support

      45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 |
      BrowserVersion
      61 | 62 | 63 | 64 | 65 | 66 |
      67 | 68 | 69 | 70 |

      Example 1? 's':'' ?>

      71 | 72 | 73 | 74 |
      75 | 76 | 77 | 78 |

      Extends

      79 | 80 |
        81 |
      • 82 | 83 | 84 | 85 | 86 | 87 |
      • 88 |
      89 | 90 | 91 | 92 |

      Mixes In

      93 | 94 |
        95 |
      • 96 |
      97 | 98 | 99 | 100 |

      Requires

      101 | 102 |
        103 |
      • 104 |
      105 | 106 | 107 | 111 |

      Classes

      112 | 113 |
      114 |
      115 |
      116 |
      117 | 118 | 119 | 123 |

      Namespaces

      124 | 125 |
      126 |
      127 |
      128 |
      129 | 130 | 131 | 135 |

      Members

      136 | 137 |
      138 | 139 |
      140 | 141 | 142 | 146 |

      Methods

      147 | 148 |
      149 | 150 |
      151 | 152 | 153 | 157 |

      Type Definitions

      158 | 159 |
      162 | 163 | 167 | 168 |
      171 | 172 | 173 | 177 |

      Events

      178 | 179 |
      180 | 181 |
      182 | 183 | 184 | 188 |

      Hooks

      189 | 190 |
      191 | 192 |
      193 | 194 |
      195 | 196 |
      197 | 198 | 199 | 200 | -------------------------------------------------------------------------------- /static/styles/jaguar.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | font: 1em "jaf-bernino-sans", "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif; 4 | background-color: #fff; 5 | } 6 | ul, 7 | ol { 8 | margin: 0; 9 | padding: 0; 10 | } 11 | li { 12 | list-style-type: none; 13 | } 14 | #wrap { 15 | position: relative; 16 | } 17 | ::-webkit-scrollbar { 18 | width: 8px; 19 | background-color: transparent; 20 | } 21 | ::-webkit-scrollbar-thumb { 22 | background-color: gray; 23 | border-radius: 4px; 24 | } 25 | .navigation { 26 | position: fixed; 27 | float: left; 28 | width: 250px; 29 | height: 100%; 30 | background-color: #1a1a1a; 31 | } 32 | .navigation .applicationName { 33 | margin: 0; 34 | margin-top: 15px; 35 | padding: 10px 15px; 36 | font: bold 1.25em Helvetica; 37 | color: #fff; 38 | } 39 | .navigation .applicationName a { 40 | color: #fff; 41 | } 42 | .navigation .search { 43 | padding: 10px 15px; 44 | } 45 | .navigation .search input { 46 | background-color: #333; 47 | color: #fff; 48 | border-color: #555; 49 | } 50 | .navigation .list { 51 | padding: 10px 15px 0 15px; 52 | position: relative; 53 | overflow: auto; 54 | width: 100%; 55 | } 56 | .navigation li.item { 57 | margin-bottom: 8px; 58 | padding-bottom: 8px; 59 | border-bottom: 1px solid #333; 60 | } 61 | .navigation li.item a { 62 | color: #bbb; 63 | } 64 | .navigation li.item a:hover { 65 | color: #fff; 66 | } 67 | .navigation li.item .title { 68 | cursor: pointer; 69 | position: relative; 70 | display: block; 71 | font-size: 0.8em; 72 | } 73 | .navigation li.item .title a { 74 | color: #e1e1e1; 75 | } 76 | .navigation li.item .title a:hover { 77 | color: #fff; 78 | } 79 | .navigation li.item .title .static { 80 | display: block; 81 | border-radius: 3px; 82 | background-color: #779c34; 83 | color: #000; 84 | font-size: 0.7em; 85 | padding: 2px 4px; 86 | float: right; 87 | } 88 | .navigation li.item .subtitle { 89 | margin-top: 10px; 90 | font: bold 0.65em Helvetica; 91 | color: #779c34; 92 | display: block; 93 | } 94 | .navigation li.item ul > li { 95 | font-size: 0.7em; 96 | padding-left: 8px; 97 | margin-top: 2px; 98 | } 99 | .navigation li.item .itemMembers { 100 | display: none; 101 | } 102 | .navigation li.item .expends { 103 | display: block; 104 | } 105 | .main { 106 | padding: 20px 20px; 107 | margin-left: 250px; 108 | max-width: 750px; 109 | } 110 | .main .page-title { 111 | display: none; 112 | } 113 | .main h1 { 114 | font-weight: bold; 115 | font-size: 1.6em; 116 | margin: 0; 117 | } 118 | .main h2 { 119 | font-weight: bold; 120 | font-size: 1.5em; 121 | margin: 0; 122 | } 123 | .main h3 { 124 | font-weight: bold; 125 | font-size: 1.2em; 126 | margin: 10px 0; 127 | } 128 | .main h4 { 129 | font-weight: bold; 130 | font-size: 1em; 131 | } 132 | .main h5 { 133 | font-weight: bold; 134 | font-size: 0.8em; 135 | } 136 | .main dd { 137 | font-size: 12px; 138 | } 139 | .main h4.name span.type-signature { 140 | display: inline-block; 141 | border-radius: 3px; 142 | background-color: gray; 143 | color: #fff; 144 | font-size: 0.7em; 145 | padding: 2px 4px; 146 | } 147 | .main h4.name span.type { 148 | margin-left: 5px; 149 | } 150 | .main h4.name span.glyphicon { 151 | display: inline-block; 152 | vertical-align: middle; 153 | color: #e1e1e1; 154 | margin-left: 7px; 155 | } 156 | .main h4.name span.returnType { 157 | margin-left: 3px; 158 | background-color: transparent!important; 159 | color: gray!important; 160 | } 161 | .main span.static { 162 | display: inline-block; 163 | border-radius: 3px; 164 | background-color: #779c34 !important; 165 | color: #fff; 166 | font-size: 0.7em; 167 | padding: 2px 4px; 168 | margin-right: 8px; 169 | } 170 | .main span.number { 171 | background-color: gray!important; 172 | } 173 | .main span.string { 174 | background-color: gray!important; 175 | } 176 | .main span.object { 177 | background-color: #2a6496 !important; 178 | } 179 | .main span.array { 180 | background-color: #2a6496 !important; 181 | } 182 | .main span.boolean { 183 | background-color: #ee7d7d !important; 184 | } 185 | .main .subsection-title { 186 | font-size: 14px; 187 | margin-top: 30px; 188 | color: #779c34; 189 | } 190 | .main .description { 191 | margin-top: 10px; 192 | font-size: 13px; 193 | } 194 | .main .description p { 195 | font-size: 13px; 196 | } 197 | .main .tag-source { 198 | font-size: 12px; 199 | } 200 | .main dt.tag-source { 201 | margin-top: 5px; 202 | } 203 | .main dt.tag-todo { 204 | font-size: 10px; 205 | display: inline-block; 206 | background-color: #2a6496; 207 | color: #fff; 208 | padding: 2px 4px; 209 | border-radius: 5px; 210 | } 211 | .main .type-signature { 212 | font-size: 12px; 213 | } 214 | .main .tag-deprecated { 215 | display: inline-block; 216 | font-size: 10px; 217 | } 218 | .main .important { 219 | background-color: #ee7d7d; 220 | color: #fff; 221 | padding: 2px 4px; 222 | border-radius: 5px; 223 | } 224 | .main .nameContainer { 225 | position: relative; 226 | margin-top: 20px; 227 | padding-top: 5px; 228 | border-top: 1px solid #e1e1e1; 229 | } 230 | .main .nameContainer .inherited { 231 | display: inline-block; 232 | border-radius: 3px; 233 | background-color: #888!important; 234 | font-size: 0.7em; 235 | padding: 2px 4px; 236 | margin-right: 5px; 237 | } 238 | .main .nameContainer .inherited a { 239 | color: #fff; 240 | } 241 | .main .nameContainer .tag-source { 242 | position: absolute; 243 | top: 17px; 244 | right: 0; 245 | font-size: 10px; 246 | } 247 | .main .nameContainer .tag-source a { 248 | color: gray; 249 | } 250 | .main .nameContainer.inherited { 251 | color: gray; 252 | } 253 | .main .nameContainer h4 { 254 | margin-right: 150px; 255 | line-height: 1.3; 256 | } 257 | .main .nameContainer h4 .signature { 258 | font-size: 13px; 259 | font-weight: normal; 260 | font-family: Menlo, Monaco, Consolas, "Courier New", monospace; 261 | } 262 | .main pre { 263 | font-size: 11px; 264 | } 265 | .main table { 266 | width: 100%; 267 | margin-bottom: 15px; 268 | } 269 | .main table th { 270 | padding: 3px 3px; 271 | } 272 | .main table td { 273 | vertical-align: top; 274 | padding: 5px 3px; 275 | } 276 | .main table .name { 277 | width: 110px; 278 | } 279 | .main table .type { 280 | width: 60px; 281 | color: #aaa; 282 | font-size: 11px; 283 | } 284 | .main table .attributes { 285 | width: 80px; 286 | color: #aaa; 287 | font-size: 11px; 288 | } 289 | .main table .description { 290 | font-size: 12px; 291 | } 292 | .main table .description p { 293 | margin: 0; 294 | } 295 | .main table .optional { 296 | float: left; 297 | border-radius: 3px; 298 | background-color: #ddd!important; 299 | font-size: 0.7em; 300 | padding: 2px 4px; 301 | margin-right: 5px; 302 | color: gray; 303 | } 304 | .main .readme p { 305 | margin-top: 15px; 306 | line-height: 1.2; 307 | font-size: 0.85em; 308 | } 309 | .main .readme h1 { 310 | font-size: 1.7em; 311 | } 312 | .main .readme h2 { 313 | margin-top: 30px; 314 | margin-bottom: 10px; 315 | padding-bottom: 10px; 316 | border-bottom: 1px solid #e1e1e1; 317 | } 318 | 319 | .main .readme h3 { 320 | margin-top: 30px; 321 | margin-bottom: 10px; 322 | padding-bottom: 10px; 323 | } 324 | 325 | .main .readme li { 326 | font-size: 0.9em; 327 | margin-bottom: 10px; 328 | } 329 | .main article ol, 330 | .main article ul { 331 | margin-left: 25px; 332 | } 333 | .main article ol > li { 334 | list-style-type: decimal; 335 | margin-bottom: 5px; 336 | } 337 | .main article ul > li { 338 | margin-bottom: 5px; 339 | list-style-type: disc; 340 | } 341 | footer { 342 | margin: 15px 0; 343 | padding-top: 15px; 344 | border-top: 1px solid #e1e1e1; 345 | font-family: "freight-text-pro", Georgia, Cambria, "Times New Roman", Times, serif; 346 | font-size: 0.8em; 347 | color: gray; 348 | } 349 | 350 | #wrap.toggle .ko{ 351 | display: none; 352 | } 353 | #wrap.toggle .en{ 354 | display: block; 355 | } 356 | 357 | #wrap .ko{ 358 | display: block; 359 | } 360 | #wrap .en{ 361 | display: none; 362 | } 363 | 364 | #toggle{ 365 | float: right; 366 | } 367 | 368 | #toggle { 369 | display: inline-block; 370 | border-radius: 3px; 371 | background-color: #ff8c00 !important; 372 | color: #fff; 373 | font-size: 0.7em; 374 | padding: 2px 4px; 375 | margin-right: 8px; 376 | border: 0px; 377 | } 378 | 379 | /** Navigation Customize */ 380 | .navigation .list .group { 381 | border: 1px dashed rgba(150, 130, 130, 0.5); 382 | border-radius: 10px; 383 | padding: 10px; 384 | margin: 10px 0; 385 | } 386 | 387 | .navigation .group span { 388 | font-size: 0.9em; 389 | color: #777; 390 | } 391 | 392 | .navigation .group li.item { 393 | margin: 5px 0 5px 20px; 394 | padding: 5px; 395 | border-bottom: 1px solid #333; 396 | } 397 | 398 | /** Parameter CSS */ 399 | .main article ul.parameters { 400 | 1margin: 0 0 20px 20px; 401 | margin: 10px 0; 402 | background: #eee; 403 | 1border: 1px solid #ccc; 404 | 1margin: 0 auto 15px; 405 | border-radius: 3px; 406 | color: #333; 407 | text-shadow: 0 1px 0 #fff; 408 | border-top: 1px solid #ccc; 409 | border-left: 1px solid #ccc; 410 | border-right: 1px solid #ccc; 411 | } 412 | 413 | .main article ul.parameters ul { 414 | margin-bottom: 0; 415 | margin-left: 20px; 416 | 417 | border: 0px; 418 | } 419 | 420 | .main article ul.parameters ul.parameters li:first-child { 421 | border-top: 1px solid #CCC; 422 | } 423 | 424 | .main article ul.parameters li { 425 | padding-bottom: 5px; 426 | padding-top: 5px; 427 | padding-left: 20px; 428 | line-height: 20px; 429 | list-style-type: none; 430 | background: url(../images/bullet.png) no-repeat 0 10px; 431 | border-bottom: 1px solid #CCC; 432 | } 433 | 434 | .main article ul.parameters li .optional { 435 | 1float: left; 436 | border-radius: 3px; 437 | background-color: #ddd!important; 438 | font-size: 0.7em; 439 | padding: 2px 4px; 440 | margin-right: 5px; 441 | color: gray; 442 | } 443 | 444 | table.support { 445 | background: #fff; 446 | margin-bottom: 1.25rem; 447 | border: solid 1px #ddd; 448 | } 449 | 450 | table.support thead { 451 | background: #f5f5f5; 452 | } 453 | 454 | table.support th { 455 | display: table-cell; 456 | line-height: 1.125rem; 457 | padding: 0.5rem 0.625rem 0.625rem; 458 | font-weight: bold; 459 | color: #222; 460 | } 461 | 462 | table.support tr:nth-of-type(even) { 463 | background: #f9f9f9; 464 | } 465 | 466 | 467 | table.support td { 468 | padding-left : 0.625rem; 469 | } -------------------------------------------------------------------------------- /static/scripts/prettify/Apache-License-2.0.txt: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | -------------------------------------------------------------------------------- /static/scripts/prettify/prettify.js: -------------------------------------------------------------------------------- 1 | var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; 2 | (function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= 3 | [],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), 9 | l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, 10 | q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, 11 | q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, 12 | "");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), 13 | a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} 14 | for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], 18 | "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], 19 | H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], 20 | J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ 21 | I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), 22 | ["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", 23 | /^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), 24 | ["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", 25 | hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= 26 | !k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}pu;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a=j.keys(n),u=0,i=a.length;i>u;u++)if(t.call(e,n[a[u]],a[u],n)===r)return};j.map=j.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e.push(t.call(r,n,u,i))}),e)};var E="Reduce of empty array with no initial value";j.reduce=j.foldl=j.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduce===h)return e&&(t=j.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(E);return r},j.reduceRight=j.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduceRight===v)return e&&(t=j.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=j.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(E);return r},j.find=j.detect=function(n,t,r){var e;return O(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},j.filter=j.select=function(n,t,r){var e=[];return null==n?e:g&&n.filter===g?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&e.push(n)}),e)},j.reject=function(n,t,r){return j.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},j.every=j.all=function(n,t,e){t||(t=j.identity);var u=!0;return null==n?u:d&&n.every===d?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var O=j.some=j.any=function(n,t,e){t||(t=j.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};j.contains=j.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:O(n,function(n){return n===t})},j.invoke=function(n,t){var r=o.call(arguments,2),e=j.isFunction(t);return j.map(n,function(n){return(e?t:n[t]).apply(n,r)})},j.pluck=function(n,t){return j.map(n,function(n){return n[t]})},j.where=function(n,t,r){return j.isEmpty(t)?r?void 0:[]:j[r?"find":"filter"](n,function(n){for(var r in t)if(t[r]!==n[r])return!1;return!0})},j.findWhere=function(n,t){return j.where(n,t,!0)},j.max=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.max.apply(Math,n);if(!t&&j.isEmpty(n))return-1/0;var e={computed:-1/0,value:-1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;a>e.computed&&(e={value:n,computed:a})}),e.value},j.min=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.min.apply(Math,n);if(!t&&j.isEmpty(n))return 1/0;var e={computed:1/0,value:1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;ae||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={},i=null==r?j.identity:k(r);return A(t,function(r,a){var o=i.call(e,r,a,t);n(u,o,r)}),u}};j.groupBy=F(function(n,t,r){(j.has(n,t)?n[t]:n[t]=[]).push(r)}),j.indexBy=F(function(n,t,r){n[t]=r}),j.countBy=F(function(n,t){j.has(n,t)?n[t]++:n[t]=1}),j.sortedIndex=function(n,t,r,e){r=null==r?j.identity:k(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;r.call(e,n[o])=0})})},j.difference=function(n){var t=c.apply(e,o.call(arguments,1));return j.filter(n,function(n){return!j.contains(t,n)})},j.zip=function(){for(var n=j.max(j.pluck(arguments,"length").concat(0)),t=new Array(n),r=0;n>r;r++)t[r]=j.pluck(arguments,""+r);return t},j.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},j.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=j.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},j.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},j.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=new Array(e);e>u;)i[u++]=n,n+=r;return i};var R=function(){};j.bind=function(n,t){var r,e;if(_&&n.bind===_)return _.apply(n,o.call(arguments,1));if(!j.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));R.prototype=n.prototype;var u=new R;R.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},j.partial=function(n){var t=o.call(arguments,1);return function(){return n.apply(this,t.concat(o.call(arguments)))}},j.bindAll=function(n){var t=o.call(arguments,1);if(0===t.length)throw new Error("bindAll must be passed function names");return A(t,function(t){n[t]=j.bind(n[t],n)}),n},j.memoize=function(n,t){var r={};return t||(t=j.identity),function(){var e=t.apply(this,arguments);return j.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},j.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},j.defer=function(n){return j.delay.apply(j,[n,1].concat(o.call(arguments,1)))},j.throttle=function(n,t,r){var e,u,i,a=null,o=0;r||(r={});var c=function(){o=r.leading===!1?0:new Date,a=null,i=n.apply(e,u)};return function(){var l=new Date;o||r.leading!==!1||(o=l);var f=t-(l-o);return e=this,u=arguments,0>=f?(clearTimeout(a),a=null,o=l,i=n.apply(e,u)):a||r.trailing===!1||(a=setTimeout(c,f)),i}},j.debounce=function(n,t,r){var e,u,i,a,o;return function(){i=this,u=arguments,a=new Date;var c=function(){var l=new Date-a;t>l?e=setTimeout(c,t-l):(e=null,r||(o=n.apply(i,u)))},l=r&&!e;return e||(e=setTimeout(c,t)),l&&(o=n.apply(i,u)),o}},j.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},j.wrap=function(n,t){return function(){var r=[n];return a.apply(r,arguments),t.apply(this,r)}},j.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},j.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},j.keys=w||function(n){if(n!==Object(n))throw new TypeError("Invalid object");var t=[];for(var r in n)j.has(n,r)&&t.push(r);return t},j.values=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},j.pairs=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},j.invert=function(n){for(var t={},r=j.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},j.functions=j.methods=function(n){var t=[];for(var r in n)j.isFunction(n[r])&&t.push(r);return t.sort()},j.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},j.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},j.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)j.contains(r,u)||(t[u]=n[u]);return t},j.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]===void 0&&(n[r]=t[r])}),n},j.clone=function(n){return j.isObject(n)?j.isArray(n)?n.slice():j.extend({},n):n},j.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof j&&(n=n._wrapped),t instanceof j&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==String(t);case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;var a=n.constructor,o=t.constructor;if(a!==o&&!(j.isFunction(a)&&a instanceof a&&j.isFunction(o)&&o instanceof o))return!1;r.push(n),e.push(t);var c=0,f=!0;if("[object Array]"==u){if(c=n.length,f=c==t.length)for(;c--&&(f=S(n[c],t[c],r,e)););}else{for(var s in n)if(j.has(n,s)&&(c++,!(f=j.has(t,s)&&S(n[s],t[s],r,e))))break;if(f){for(s in t)if(j.has(t,s)&&!c--)break;f=!c}}return r.pop(),e.pop(),f};j.isEqual=function(n,t){return S(n,t,[],[])},j.isEmpty=function(n){if(null==n)return!0;if(j.isArray(n)||j.isString(n))return 0===n.length;for(var t in n)if(j.has(n,t))return!1;return!0},j.isElement=function(n){return!(!n||1!==n.nodeType)},j.isArray=x||function(n){return"[object Array]"==l.call(n)},j.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){j["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),j.isArguments(arguments)||(j.isArguments=function(n){return!(!n||!j.has(n,"callee"))}),"function"!=typeof/./&&(j.isFunction=function(n){return"function"==typeof n}),j.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},j.isNaN=function(n){return j.isNumber(n)&&n!=+n},j.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},j.isNull=function(n){return null===n},j.isUndefined=function(n){return n===void 0},j.has=function(n,t){return f.call(n,t)},j.noConflict=function(){return n._=t,this},j.identity=function(n){return n},j.times=function(n,t,r){for(var e=Array(Math.max(0,n)),u=0;n>u;u++)e[u]=t.call(r,u);return e},j.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))};var I={escape:{"&":"&","<":"<",">":">",'"':""","'":"'"}};I.unescape=j.invert(I.escape);var T={escape:new RegExp("["+j.keys(I.escape).join("")+"]","g"),unescape:new RegExp("("+j.keys(I.unescape).join("|")+")","g")};j.each(["escape","unescape"],function(n){j[n]=function(t){return null==t?"":(""+t).replace(T[n],function(t){return I[n][t]})}}),j.result=function(n,t){if(null==n)return void 0;var r=n[t];return j.isFunction(r)?r.call(n):r},j.mixin=function(n){A(j.functions(n),function(t){var r=j[t]=n[t];j.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),z.call(this,r.apply(j,n))}})};var N=0;j.uniqueId=function(n){var t=++N+"";return n?n+t:t},j.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\t|\u2028|\u2029/g;j.template=function(n,t,r){var e;r=j.defaults({},r,j.templateSettings);var u=new RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(D,function(n){return"\\"+B[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=new Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,j);var c=function(n){return e.call(this,n,j)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},j.chain=function(n){return j(n).chain()};var z=function(n){return this._chain?j(n).chain():n};j.mixin(j),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];j.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],z.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];j.prototype[n]=function(){return z.call(this,t.apply(this._wrapped,arguments))}}),j.extend(j.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this); 6 | //# sourceMappingURL=underscore-min.map -------------------------------------------------------------------------------- /publish.js: -------------------------------------------------------------------------------- 1 | /*global env: true */ 2 | var template = require('jsdoc/template'), 3 | fs = require('jsdoc/fs'), 4 | path = require('jsdoc/path'), 5 | taffy = require('taffydb').taffy, 6 | handle = require('jsdoc/util/error').handle, 7 | helper = require('jsdoc/util/templateHelper'), 8 | _ = require('underscore'), 9 | htmlsafe = helper.htmlsafe, 10 | linkto = helper.linkto, 11 | resolveAuthorLinks = helper.resolveAuthorLinks, 12 | scopeToPunc = helper.scopeToPunc, 13 | hasOwnProp = Object.prototype.hasOwnProperty, 14 | data, 15 | view, 16 | outdir = env.opts.destination, 17 | DEFAULT_GROUP_NAME = "Global", 18 | namespace = env.opts.namespace, 19 | ignores = env.opts.ignores || [], 20 | expendsItemMembers = env.opts.expendsItemMembers || false; 21 | var egjsDocHelper = require('./egjsDocHelper.js'); 22 | 23 | function isIgnore(name) { 24 | return ignores.indexOf(name) > -1; 25 | } 26 | 27 | function shortPath(filePath) { 28 | return path.parse(filePath).base; 29 | } 30 | 31 | function find(spec) { 32 | return helper.find(data, spec); 33 | } 34 | 35 | function tutoriallink(tutorial) { 36 | return helper.toTutorial(tutorial, null, { tag: 'em', classname: 'disabled', prefix: 'Tutorial: ' }); 37 | } 38 | 39 | function getAncestorLinks(doclet) { 40 | return helper.getAncestorLinks(data, doclet); 41 | } 42 | 43 | function hashToLink(doclet, hash) { 44 | if ( !/^(#.+)/.test(hash) ) { return hash; } 45 | 46 | var url = helper.createLink(doclet); 47 | 48 | url = url.replace(/(#.+|$)/, hash); 49 | return '' + hash + ''; 50 | } 51 | 52 | function needsSignature(doclet) { 53 | var needsSig = false; 54 | 55 | // function and class definitions always get a signature 56 | if (doclet.kind === 'function' || doclet.kind === 'class') { 57 | needsSig = true; 58 | } 59 | // typedefs that contain functions get a signature, too 60 | else if (doclet.kind === 'typedef' && doclet.type && doclet.type.names && 61 | doclet.type.names.length) { 62 | for (var i = 0, l = doclet.type.names.length; i < l; i++) { 63 | if (doclet.type.names[i].toLowerCase() === 'function') { 64 | needsSig = true; 65 | break; 66 | } 67 | } 68 | } 69 | 70 | return needsSig; 71 | } 72 | 73 | function addSignatureParams(f) { 74 | var params = helper.getSignatureParams(f, 'optional'); 75 | 76 | f.signature = (f.signature || '') + '('+params.join(', ')+')'; 77 | } 78 | 79 | function addSignatureReturns(f) { 80 | var returnTypes = egjsDocHelper.getSignatureReturns(f, ignores); 81 | 82 | f.signature = ''+(f.signature || '') + ''; 83 | 84 | if (returnTypes.length) { 85 | f.signature += ''+(returnTypes.length ? '{'+returnTypes.join(' | ')+'}' : '')+''; 86 | } 87 | } 88 | 89 | function addSignatureTypes(f) { 90 | var types = helper.getSignatureTypes(f); 91 | 92 | f.signature = (f.signature || '') + ''+(types.length? ' :'+types.join('|') : '')+''; 93 | } 94 | 95 | function addAttribs(f) { 96 | var attribs = helper.getAttribs(f); 97 | 98 | if (attribs.length) { 99 | f.attribs = '' + htmlsafe(attribs.length ? attribs.join(',') : '') + ''; 100 | } 101 | } 102 | 103 | function shortenPaths(files, commonPrefix) { 104 | // always use forward slashes 105 | var regexp = new RegExp('\\\\', 'g'); 106 | 107 | Object.keys(files).forEach(function(file) { 108 | files[file].shortened = files[file].resolved.replace(commonPrefix, '') 109 | .replace(regexp, '/'); 110 | }); 111 | 112 | return files; 113 | } 114 | 115 | function resolveSourcePath(filepath) { 116 | return path.resolve(process.cwd(), filepath); 117 | } 118 | 119 | function getPathFromDoclet(doclet) { 120 | if (!doclet.meta) { 121 | return; 122 | } 123 | 124 | var filepath = doclet.meta.path && doclet.meta.path !== 'null' ? 125 | doclet.meta.path + '/' + doclet.meta.filename : 126 | doclet.meta.filename; 127 | 128 | return filepath; 129 | } 130 | 131 | function generate(title, docs, filename, resolveLinks) { 132 | if (isIgnore(path.parse(filename).name)) { 133 | return; 134 | } 135 | 136 | resolveLinks = resolveLinks === false ? false : true; 137 | 138 | var docData = { 139 | filename: filename, 140 | title: title, 141 | docs: docs 142 | }; 143 | 144 | var outpath = path.join(outdir, filename), 145 | html = view.render('container.tmpl', docData); 146 | 147 | if (resolveLinks) { 148 | html = helper.resolveLinks(html); // turn {@link foo} into foo 149 | 150 | // Add a link target for external links @davidshimjs 151 | // html = html.toString().replace(/]*href\s*=\s*['"]*[^\s'"]*:\/\/)/ig, '} doclets - The array of classes and functions to 187 | * check. 188 | * @param {Array.} modules - The array of module doclets to search. 189 | */ 190 | function attachModuleSymbols(doclets, modules) { 191 | var symbols = {}; 192 | 193 | // build a lookup table 194 | doclets.forEach(function(symbol) { 195 | symbols[symbol.longname] = symbol; 196 | }); 197 | 198 | return modules.map(function(module) { 199 | if (symbols[module.longname]) { 200 | module.module = symbols[module.longname]; 201 | module.module.name = module.module.name.replace('module:', 'require("') + '")'; 202 | } 203 | }); 204 | } 205 | 206 | /** 207 | * Create the navigation sidebar. 208 | * @param {object} members The members that will be used to create the sidebar. 209 | * @param {array} members.classes 210 | * @param {array} members.externals 211 | * @param {array} members.globals 212 | * @param {array} members.mixins 213 | * @param {array} members.modules 214 | * @param {array} members.namespaces 215 | * @param {array} members.tutorials 216 | * @param {array} members.events 217 | * @return {string} The HTML for the navigation sidebar. 218 | */ 219 | function buildNav(members) { 220 | /** 221 | * 222 | NavObj = { 223 | type: 224 | longname: 225 | ... 226 | } 227 | 228 | nav = { 229 | groupName1 : [NavObj1, NavObj2, NavObj3], 230 | groupName2 : [NavObj4, NavObj5], 231 | groupName3 : [NavObj6], 232 | } 233 | */ 234 | var nav = {}; 235 | 236 | if (members.namespaces.length) { 237 | _.each(members.namespaces, function (v) { 238 | var groupName = v.group || "Global"; 239 | if (!nav[groupName]) nav[groupName] = []; 240 | 241 | nav[groupName].push({ 242 | type: 'namespace', 243 | longname: v.longname, 244 | name: v.name, 245 | members: find({ 246 | kind: 'member', 247 | memberof: v.longname 248 | }), 249 | methods: find({ 250 | kind: 'function', 251 | memberof: v.longname 252 | }), 253 | typedefs: find({ 254 | kind: 'typedef', 255 | memberof: v.longname 256 | }), 257 | events: find({ 258 | kind: 'event', 259 | memberof: v.longname 260 | }), 261 | hooks: find({ 262 | kind: 'hook', 263 | memberof: v.longname 264 | }) 265 | }); 266 | }); 267 | } 268 | 269 | if (members.classes.length) { 270 | _.each(members.classes, function (v) { 271 | var groupName = v.group || "Global"; 272 | if (!nav[groupName]) nav[groupName] = []; 273 | 274 | nav[groupName].push({ 275 | type: 'class', 276 | longname: v.longname, 277 | name: v.name, 278 | members: find({ 279 | kind: 'member', 280 | memberof: v.longname 281 | }), 282 | methods: find({ 283 | kind: 'function', 284 | memberof: v.longname 285 | }), 286 | typedefs: find({ 287 | kind: 'typedef', 288 | memberof: v.longname 289 | }), 290 | events: find({ 291 | kind: 'event', 292 | memberof: v.longname 293 | }), 294 | hooks: find({ 295 | kind: 'hook', 296 | memberof: v.longname 297 | }) 298 | }); 299 | }); 300 | } 301 | 302 | return nav; 303 | } 304 | 305 | /** 306 | * Sort navigation menu by group name in alphabetical order. 307 | * 308 | */ 309 | function sortNavByGroupName(nav) { 310 | var groupList = [], 311 | sortNav = {}; 312 | 313 | for (var groupName in nav) { 314 | if (groupName === DEFAULT_GROUP_NAME) { 315 | continue; 316 | } 317 | groupList.push(groupName); 318 | } 319 | groupList = groupList.sort(); 320 | 321 | //The order of the default group name is last!! 322 | nav[DEFAULT_GROUP_NAME] && groupList.push(DEFAULT_GROUP_NAME); 323 | 324 | for (var i in groupList) { 325 | var groupName = groupList[i]; 326 | sortNav[groupName] = nav[groupName]; 327 | } 328 | 329 | return sortNav; 330 | } 331 | 332 | /** 333 | @param {TAFFY} taffyData See . 334 | @param {object} opts 335 | @param {Tutorial} tutorials 336 | */ 337 | exports.publish = function(taffyData, opts, tutorials) { 338 | data = taffyData; 339 | 340 | var conf = env.conf.templates || {}; 341 | conf['default'] = conf['default'] || {}; 342 | 343 | var templatePath = opts.template; 344 | view = new template.Template(templatePath + '/tmpl'); 345 | 346 | // claim some special filenames in advance, so the All-Powerful Overseer of Filename Uniqueness 347 | // doesn't try to hand them out later 348 | var indexUrl = helper.getUniqueFilename('index'); 349 | // don't call registerLink() on this one! 'index' is also a valid longname 350 | 351 | var globalUrl = helper.getUniqueFilename('global'); 352 | helper.registerLink('global', globalUrl); 353 | 354 | // set up templating 355 | view.layout = 'layout.tmpl'; 356 | 357 | // set up tutorials for helper 358 | helper.setTutorials(tutorials); 359 | 360 | data = helper.prune(data); 361 | data.sort('longname, version, since'); 362 | helper.addEventListeners(data); 363 | 364 | var sourceFiles = {}; 365 | var sourceFilePaths = []; 366 | data().each(function(doclet) { 367 | doclet.attribs = ''; 368 | 369 | if (doclet.examples) { 370 | doclet.examples = doclet.examples.map(function(example) { 371 | var caption, code; 372 | 373 | if (example.match(/^\s*([\s\S]+?)<\/caption>(\s*[\n\r])([\s\S]+)$/i)) { 374 | caption = RegExp.$1; 375 | code = RegExp.$3; 376 | } 377 | 378 | return { 379 | caption: caption || '', 380 | code: code || example 381 | }; 382 | }); 383 | } 384 | if (doclet.see) { 385 | doclet.see.forEach(function(seeItem, i) { 386 | doclet.see[i] = hashToLink(doclet, seeItem); 387 | }); 388 | } 389 | 390 | // build a list of source files 391 | var sourcePath; 392 | var resolvedSourcePath; 393 | if (doclet.meta) { 394 | sourcePath = getPathFromDoclet(doclet); 395 | resolvedSourcePath = resolveSourcePath(sourcePath); 396 | sourceFiles[sourcePath] = { 397 | resolved: resolvedSourcePath, 398 | shortened: null 399 | }; 400 | sourceFilePaths.push(resolvedSourcePath); 401 | } 402 | }); 403 | 404 | // update outdir if necessary, then create outdir 405 | var packageInfo = ( find({kind: 'package'}) || [] ) [0]; 406 | if (packageInfo && packageInfo.name) { 407 | outdir = path.join(outdir, packageInfo.name, packageInfo.version); 408 | } 409 | fs.mkPath(outdir); 410 | 411 | // copy the template's static files to outdir 412 | var fromDir = path.join(templatePath, 'static'); 413 | var staticFiles = fs.ls(fromDir, 3); 414 | 415 | staticFiles.forEach(function(fileName) { 416 | var toDir = fs.toDir( fileName.replace(fromDir, outdir) ); 417 | fs.mkPath(toDir); 418 | fs.copyFileSync(fileName, toDir); 419 | }); 420 | 421 | // copy user-specified static files to outdir 422 | var staticFilePaths; 423 | var staticFileFilter; 424 | var staticFileScanner; 425 | if (conf['default'].staticFiles) { 426 | staticFilePaths = conf['default'].staticFiles.paths || []; 427 | staticFileFilter = new (require('jsdoc/src/filter')).Filter(conf['default'].staticFiles); 428 | staticFileScanner = new (require('jsdoc/src/scanner')).Scanner(); 429 | 430 | staticFilePaths.forEach(function(filePath) { 431 | var extraStaticFiles = staticFileScanner.scan([filePath], 10, staticFileFilter); 432 | 433 | extraStaticFiles.forEach(function(fileName) { 434 | var sourcePath = fs.statSync(filePath).isDirectory() ? filePath : 435 | path.dirname(filePath); 436 | var toDir = fs.toDir( fileName.replace(sourcePath, outdir) ); 437 | fs.mkPath(toDir); 438 | fs.copyFileSync(fileName, toDir); 439 | }); 440 | }); 441 | } 442 | 443 | if (sourceFilePaths.length) { 444 | sourceFiles = shortenPaths( sourceFiles, path.commonPrefix(sourceFilePaths) ); 445 | } 446 | data().each(function(doclet) { 447 | var url = helper.createLink(doclet); 448 | helper.registerLink(doclet.longname, url); 449 | 450 | // replace the filename with a shortened version of the full path 451 | var docletPath; 452 | if (doclet.meta) { 453 | docletPath = getPathFromDoclet(doclet); 454 | docletPath = sourceFiles[docletPath].shortened; 455 | if (docletPath) { 456 | doclet.meta.filename = docletPath; 457 | } 458 | } 459 | }); 460 | 461 | data().each(function(doclet) { 462 | var url = helper.longnameToUrl[doclet.longname]; 463 | 464 | if (url.indexOf('#') > -1) { 465 | doclet.id = helper.longnameToUrl[doclet.longname].split(/#/).pop(); 466 | } 467 | else { 468 | doclet.id = doclet.name; 469 | } 470 | 471 | if ( needsSignature(doclet) ) { 472 | addSignatureParams(doclet); 473 | addSignatureReturns(doclet); 474 | addAttribs(doclet); 475 | } 476 | }); 477 | 478 | // do this after the urls have all been generated 479 | data().each(function(doclet) { 480 | doclet.ancestors = getAncestorLinks(doclet); 481 | 482 | if (doclet.kind === 'member') { 483 | addSignatureTypes(doclet); 484 | addAttribs(doclet); 485 | } 486 | 487 | if (doclet.kind === 'constant') { 488 | addSignatureTypes(doclet); 489 | addAttribs(doclet); 490 | doclet.kind = 'member'; 491 | } 492 | }); 493 | 494 | var members = helper.getMembers(data); 495 | members.tutorials = tutorials.children; 496 | 497 | // add template helpers 498 | view.find = find; 499 | view.linkto = linkto; 500 | view.resolveAuthorLinks = resolveAuthorLinks; 501 | view.tutoriallink = tutoriallink; 502 | view.htmlsafe = htmlsafe; 503 | view.members = members; //@davidshimjs: To make navigation for customizing 504 | view.isIgnore = isIgnore; 505 | view.shortPath = shortPath; 506 | view.expendsItemMembers = expendsItemMembers; 507 | 508 | view.egjsDocHelper = egjsDocHelper; 509 | 510 | // once for all 511 | view.nav = buildNav(members); 512 | //sort navigations 513 | view.nav = sortNavByGroupName(view.nav); 514 | 515 | attachModuleSymbols( find({ kind: ['class', 'function'], longname: {left: 'module:'} }), 516 | members.modules ); 517 | 518 | // only output pretty-printed source files if requested; do this before generating any other 519 | // pages, so the other pages can link to the source files 520 | if (conf['default'].outputSourceFiles) { 521 | generateSourceFiles(sourceFiles); 522 | } 523 | 524 | if (members.globals.length) { generate('Global', [{kind: 'globalobj'}], globalUrl); } 525 | 526 | // index page displays information from package.json and lists files 527 | var files = find({kind: 'file'}), 528 | packages = find({kind: 'package'}); 529 | 530 | generate('Index', 531 | packages.concat( 532 | [{kind: 'mainpage', readme: opts.readme, longname: (opts.mainpagetitle) ? opts.mainpagetitle : 'Main Page'}] 533 | ).concat(files), 534 | indexUrl); 535 | 536 | // set up the lists that we'll use to generate pages 537 | var classes = taffy(members.classes); 538 | var modules = taffy(members.modules); 539 | var namespaces = taffy(members.namespaces); 540 | var mixins = taffy(members.mixins); 541 | var externals = taffy(members.externals); 542 | 543 | for (var longname in helper.longnameToUrl) { 544 | if ( hasOwnProp.call(helper.longnameToUrl, longname) ) { 545 | var myClasses = helper.find(classes, {longname: longname}); 546 | if (myClasses.length) { 547 | generate('Class: ' + myClasses[0].name, myClasses, helper.longnameToUrl[longname]); 548 | } 549 | 550 | var myModules = helper.find(modules, {longname: longname}); 551 | if (myModules.length) { 552 | generate('Module: ' + myModules[0].name, myModules, helper.longnameToUrl[longname]); 553 | } 554 | 555 | var myNamespaces = helper.find(namespaces, {longname: longname}); 556 | if (myNamespaces.length) { 557 | generate('Namespace: ' + myNamespaces[0].name, myNamespaces, helper.longnameToUrl[longname]); 558 | } 559 | 560 | var myMixins = helper.find(mixins, {longname: longname}); 561 | if (myMixins.length) { 562 | generate('Mixin: ' + myMixins[0].name, myMixins, helper.longnameToUrl[longname]); 563 | } 564 | 565 | var myExternals = helper.find(externals, {longname: longname}); 566 | if (myExternals.length) { 567 | generate('External: ' + myExternals[0].name, myExternals, helper.longnameToUrl[longname]); 568 | } 569 | } 570 | } 571 | 572 | // TODO: move the tutorial functions to templateHelper.js 573 | function generateTutorial(title, tutorial, filename) { 574 | var tutorialData = { 575 | title: title, 576 | header: tutorial.title, 577 | content: tutorial.parse(), 578 | children: tutorial.children 579 | }; 580 | 581 | var tutorialPath = path.join(outdir, filename), 582 | html = view.render('tutorial.tmpl', tutorialData); 583 | 584 | // yes, you can use {@link} in tutorials too! 585 | html = helper.resolveLinks(html); // turn {@link foo} into foo 586 | 587 | fs.writeFileSync(tutorialPath, html, 'utf8'); 588 | } 589 | 590 | // tutorials can have only one parent so there is no risk for loops 591 | function saveChildren(node) { 592 | node.children.forEach(function(child) { 593 | generateTutorial('Tutorial: ' + child.title, child, helper.tutorialToUrl(child.name)); 594 | saveChildren(child); 595 | }); 596 | } 597 | saveChildren(tutorials); 598 | }; 599 | -------------------------------------------------------------------------------- /static/scripts/underscore-min.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"underscore-min.js","sources":["underscore.js"],"names":["root","this","previousUnderscore","_","breaker","ArrayProto","Array","prototype","ObjProto","Object","FuncProto","Function","push","slice","concat","toString","hasOwnProperty","nativeForEach","forEach","nativeMap","map","nativeReduce","reduce","nativeReduceRight","reduceRight","nativeFilter","filter","nativeEvery","every","nativeSome","some","nativeIndexOf","indexOf","nativeLastIndexOf","lastIndexOf","nativeIsArray","isArray","nativeKeys","keys","nativeBind","bind","obj","_wrapped","exports","module","VERSION","each","iterator","context","length","i","call","collect","results","value","index","list","reduceError","foldl","inject","memo","initial","arguments","TypeError","foldr","find","detect","result","any","select","reject","all","identity","contains","include","target","invoke","method","args","isFunc","isFunction","apply","pluck","key","where","attrs","first","isEmpty","findWhere","max","Math","Infinity","computed","min","shuffle","rand","shuffled","random","sample","n","guard","lookupIterator","sortBy","criteria","sort","left","right","a","b","group","behavior","groupBy","has","indexBy","countBy","sortedIndex","array","low","high","mid","toArray","values","size","head","take","last","rest","tail","drop","compact","flatten","input","shallow","output","isArguments","without","difference","uniq","unique","isSorted","seen","union","intersection","item","other","zip","object","from","hasIndex","range","start","stop","step","ceil","idx","ctor","func","bound","self","partial","bindAll","funcs","Error","f","memoize","hasher","delay","wait","setTimeout","defer","throttle","options","timeout","previous","later","leading","Date","now","remaining","clearTimeout","trailing","debounce","immediate","timestamp","callNow","once","ran","wrap","wrapper","compose","after","times","pairs","invert","functions","methods","names","extend","source","prop","pick","copy","omit","defaults","clone","isObject","tap","interceptor","eq","aStack","bStack","className","String","global","multiline","ignoreCase","aCtor","constructor","bCtor","pop","isEqual","isString","isElement","nodeType","name","isFinite","isNaN","parseFloat","isNumber","isBoolean","isNull","isUndefined","noConflict","accum","floor","entityMap","escape","&","<",">","\"","'","unescape","entityRegexes","RegExp","join","string","replace","match","property","mixin","idCounter","uniqueId","prefix","id","templateSettings","evaluate","interpolate","noMatch","escapes","\\","\r","\n","\t","
","
","escaper","template","text","data","settings","render","matcher","offset","variable","e","chain","_chain"],"mappings":"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"} -------------------------------------------------------------------------------- /static/scripts/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.0.3 (http://getbootstrap.com) 3 | * Copyright 2013 Twitter, Inc. 4 | * Licensed under http://www.apache.org/licenses/LICENSE-2.0 5 | */ 6 | 7 | if("undefined"==typeof jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]'),b=!0;if(a.length){var c=this.$element.find("input");"radio"===c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?b=!1:a.find(".active").removeClass("active")),b&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}b&&this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(''}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery); --------------------------------------------------------------------------------