├── .gitignore
├── Gruntfile.js
├── README.md
├── bower.json
├── build
├── css
│ └── angular-cuf-nav.min.css
└── js
│ └── angular-cuf-nav.min.js
├── code-prettify
├── prettify.css
└── prettify.js
├── css
└── style.css
├── data
└── navConf.json
├── img
└── angular-cuf-nav.png
├── index.html
├── index.js
├── package.json
├── partials
├── api.html
├── example1.html
├── example2.html
├── example3.html
├── example4.html
├── example5.html
└── usage.html
└── src
├── css
└── angular-cuf-nav.css
├── js
└── angular-cuf-nav.js
└── template
├── cufNav.html
├── cufNavChildItem.html
└── cufNavItem.html
/.gitignore:
--------------------------------------------------------------------------------
1 | bower_components/
2 | node_modules/
3 | tmp/
4 |
--------------------------------------------------------------------------------
/Gruntfile.js:
--------------------------------------------------------------------------------
1 | module.exports = function(grunt) {
2 |
3 | // Load grunt tasks automatically
4 | require('load-grunt-tasks')(grunt);
5 |
6 | // Time how long tasks take. Can help when optimizing build times
7 | require('time-grunt')(grunt);
8 |
9 | // Project configuration.
10 | grunt.initConfig({
11 | pkg: grunt.file.readJSON('package.json'),
12 | banner: '/*! <%= pkg.name %> by hjzheng <%= grunt.template.today("yyyy-mm-dd") %> */\n',
13 | uglify: {
14 | options: {
15 | banner: '<%= banner %>'
16 | },
17 | build: {
18 | src: 'tmp/<%= pkg.name %>.all.js',
19 | dest: 'build/js/<%= pkg.name %>.min.js'
20 | }
21 | },
22 | cssmin: {
23 | options: {
24 | banner: '<%= banner %>'
25 | },
26 | build: {
27 | src: 'src/css/<%= pkg.name %>.css',
28 | dest: 'build/css/<%= pkg.name %>.min.css'
29 | }
30 | },
31 | html2js: {
32 | options: {
33 | module: 'cuf-nav-template'
34 | },
35 | main: {
36 | src: ['src/template/*.html'],
37 | dest: 'tmp/templates.js'
38 | }
39 | },
40 | copy: {
41 | main: {
42 | files:[
43 | {expand: true, cwd: 'src/js', src: ['*.js'], dest: 'tmp/'}
44 | ]
45 | }
46 | },
47 | concat: {
48 | main: {
49 | src: ['tmp/templates.js', 'tmp/<%= pkg.name %>.js'],
50 | dest: 'tmp/<%= pkg.name %>.all.js'
51 | }
52 | },
53 | clean: {
54 | all: ['tmp', 'build/*'],
55 | tmp: ['tmp']
56 | },
57 | //use ngmin for uglify angular bug
58 | ngmin: {
59 | main: {
60 | src: 'tmp/<%= pkg.name %>.all.js',
61 | dest: 'tmp/<%= pkg.name %>.all.js'
62 | }
63 | }
64 | });
65 |
66 | //Load the plugin that provides the task.
67 | //grunt.loadNpmTasks('grunt-contrib-uglify');
68 | //grunt.loadNpmTasks('grunt-contrib-cssmin');
69 |
70 | // Default task(s).
71 | grunt.registerTask('default', ['clean:all', 'copy:main', 'html2js:main', 'concat:main', 'ngmin', 'uglify', 'cssmin']);
72 |
73 | };
74 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # angular-cuf-nav
2 | 基于angular的导航菜单 http://get-set.cn/angular-cuf-nav
3 |
4 | 
5 |
6 | ### Usage
7 |
8 | - Step1: 引入依赖的文件
9 | ```html
10 |
11 |
12 |
13 |
14 |
15 |
16 | ```
17 |
18 | - Step2: 配置依赖模块
19 | ```javascript
20 | angular.module('test', ['cuf.nav']);
21 | ```
22 |
23 | ### API
24 |
25 | | 指令 | 描述 |
26 | | ----- | --------- |
27 | | cufNav | 最上层标签 |
28 | | cufNavItem | cufNav的直接子标签 |
29 | | cufNavChildItem | 最后一层标签,可以自己相互嵌套,达到多级菜单效果 |
30 |
31 | **cufNav**
32 |
33 | |参数 | 值 | 作用 |
34 | | --- | --- | ----|
35 | |triggered-event| click 或者 mouseover 默认click | 决定导航菜单以什么事件触发展开|
36 |
37 | **cufNavItem**
38 |
39 | | 参数 | 值 |作用 |
40 | | ----- | --------- | ----|
41 | | label | 字符串 | 决定菜单显示, 它的值必须唯一|
42 | |href |字符串 |一般结合ngRoute或ui.router去使用|
43 | |triggered-event| click 或者 mouseover 默认会使用cufNav的triggered-event值 |决定导航子菜单以什么事件触发展开|
44 | |has-children |布尔值 | 如果cufNavItem下需要包含cufNavChildItem标签,就必须配置该属性,反之不要配|
45 | |item-click | 函数 | |
46 |
47 |
48 | **cufNavChildItem**
49 |
50 | |参数| 值| 作用|
51 | | ----- | --------- | ----|
52 | |label |字符串 |决定菜单显示, 它的值必须唯一|
53 | | href |字符串 |一般结合ngRoute或ui.router去使用|
54 | |has-children |布尔值 | 如果cufNavChildItem下需要嵌套cufNavChildItem标签,就必须配置该属性,反之不要配|
55 | |item-click | 函数 | |
56 |
57 | ### Example
58 | - [Example1](http://get-set.cn/angular-cuf-nav/#/example1)
59 | - [Example2](http://get-set.cn/angular-cuf-nav/#/example2)
60 | - [Example3](http://get-set.cn/angular-cuf-nav/#/example3)
61 | - [Example4](http://get-set.cn/angular-cuf-nav/#/example4)
62 | - [Example5](http://get-set.cn/angular-cuf-nav/#/example5)
63 |
64 | ### More
65 | - git clone https://github.com/hjzheng/angular-cuf-nav
66 | - cd angular-cuf-nav
67 | - npm install
68 | - bower install
69 | - 启动一个喜欢的web server, 使用喜欢的浏览器访问即可
70 | - 或者直接访问 http://get-set.cn/angular-cuf-nav
71 |
--------------------------------------------------------------------------------
/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-cuf-nav",
3 | "description": "Angular Navigation Menu",
4 | "version": "0.0.0",
5 | "homepage": "https://github.com/hjzheng/angular-cuf-nav",
6 | "license": "MIT",
7 | "private": true,
8 | "dependencies": {
9 | "angular": "~1.3.x",
10 | "jquery": ">=1.10.2",
11 | "bootstrap": "~3.1.1",
12 | "angular-ui-router": "^0.2.13",
13 | "angular-resource": "~1.3.x"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/build/css/angular-cuf-nav.min.css:
--------------------------------------------------------------------------------
1 | .link{cursor:pointer}.dropdown-open{background-color:#EEE!important}.dropdown-menu-show{display:block!important}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px;-moz-border-radius:0 6px 6px;border-radius:0 6px 6px}.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent transparent transparent #ccc;border-style:solid;border-width:5px 0 5px 5px;margin-top:5px;margin-right:-10px}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}@media (max-width:768px){.platform-nav-area{min-height:0!important}.dropdown-menu-show{position:static!important;float:none!important;width:auto!important;margin-top:0!important;background-color:transparent!important;border:0!important;box-shadow:none!important}.dropdown-submenu>a:after{display:inline-block;content:"";float:none;width:0;height:0;border-color:#777 transparent transparent!important;border-style:solid;border-width:5px 5px 0!important;margin-top:5px;margin-left:5px}}
--------------------------------------------------------------------------------
/build/js/angular-cuf-nav.min.js:
--------------------------------------------------------------------------------
1 | /*! angular-cuf-nav by hjzheng 2016-02-29 */
2 | angular.module("cuf-nav-template",["template/cufNav.html","template/cufNavChildItem.html","template/cufNavItem.html"]),angular.module("template/cufNav.html",[]).run(["$templateCache",function(a){a.put("template/cufNav.html",'
')}]),angular.module("template/cufNavChildItem.html",[]).run(["$templateCache",function(a){a.put("template/cufNavChildItem.html",'\n {{ label }}\n {{ label }}\n \n')}]),angular.module("template/cufNavItem.html",[]).run(["$templateCache",function(a){a.put("template/cufNavItem.html",'\n {{label}}\n {{label}} \n ')}]),angular.module("cuf.nav",["cuf-nav-template"]).directive("cufNav",["$window",function(a){return{scope:{triggeredEvent:"@"},restrict:"E",templateUrl:"template/cufNav.html",replace:!0,transclude:!0,controllerAs:"cufNavCtrl",controller:["$scope","$element","$attrs","$transclude",function(b,c,d,e){b.triggeredEvent||(b.triggeredEvent="click");var f=[];this.triggeredEvent=b.triggeredEvent,this.addItems=function(a){f.push(a)},this.closeOtherItems=function(a){angular.forEach(f,function(b){b.label!==a.label&&(b.show=!1,angular.forEach(a.childItems,function(a){angular.forEach(a,function(a){a.show=!1})}))})};var g=function(a){b.$apply(function(){angular.forEach(f,function(a){a.show=!1,angular.forEach(a.childItems,function(a){angular.forEach(a,function(a){a.show=!1})})})})},h=function(a){if("click"===b.triggeredEvent){if(jQuery.contains(c[0],a.target)){if(jQuery(a.target.parentNode).attr("has-children"))return;g(a)}g(a)}},i=function(a){if("mouseover"===b.triggeredEvent){if(jQuery.contains(c[0],a.target))return;g(a)}};jQuery(a).on("click",h),jQuery(a).on("mouseover",i)}]}}]).directive("cufNavItem",function(){return{require:"^cufNav",scope:{label:"@",href:"@",triggeredEvent:"@",isChildren:"@hasChildren",itemClick:"&"},restrict:"E",templateUrl:"template/cufNavItem.html",replace:!0,transclude:!0,controllerAs:"cufNavItem",controller:["$scope","$element","$attrs","$transclude",function(a,b,c,d){a.hasChildren="true"===a.isChildren,a.triggeredEvent?this.triggeredEvent=a.triggeredEvent:this.triggeredEvent=a.$parent.$parent.triggeredEvent;var e=a.childItems={};this.addChildItems=function(a,b){e[a]=e[a]||[],e[a].push(b)},this.closeOtherChildItems=function(a,b){angular.forEach(e[a],function(a){a.label!==b.label&&(a.show=!1)})},a.navClick=function(b){a.itemClick(),b.stopPropagation()}}],link:function(a,b,c,d){d.addItems(a),a.triggeredEvent=d.triggeredEvent,a.clickToggle=function(){"click"===d.triggeredEvent&&(d.closeOtherItems(a),a.show=1!=a.show)},a.mouseOver=function(){"mouseover"===d.triggeredEvent&&(d.closeOtherItems(a),a.show=1!=a.show)}}}}).directive("cufNavChildItem",function(){return{require:"^cufNavItem",scope:{label:"@",href:"@",isChildren:"@hasChildren",itemClick:"&"},restrict:"E",templateUrl:"template/cufNavChildItem.html",replace:!0,transclude:!0,controllerAs:"cufNavItem",controller:["$scope","$element","$attrs","$transclude",function(a,b,c,d){a.hasChildren="true"===a.isChildren,a.navClick=function(b){a.itemClick(),b.stopPropagation()}}],link:function(a,b,c,d){var e=jQuery(b[0].parentNode.parentNode).attr("label");e&&(a.parentLabel=e,d.addChildItems(e,a)),a.clickToggle=function(){"click"===d.triggeredEvent&&(d.closeOtherChildItems(a.parentLabel,a),a.show=1!=a.show)},a.mouseOver=function(){"mouseover"===d.triggeredEvent&&(d.closeOtherChildItems(a.parentLabel,a),a.show=1!=a.show)}}}});
--------------------------------------------------------------------------------
/code-prettify/prettify.css:
--------------------------------------------------------------------------------
1 | pre {
2 | padding: 0 3px 2px;
3 | font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
4 | color: #333;
5 | display: block;
6 | padding: 9.5px;
7 | margin: 0 0 30px 0 !important;
8 | font-size: 13px;
9 | line-height: 20px;
10 | word-break: break-all;
11 | word-wrap: break-word;
12 | white-space: pre;
13 | white-space: pre-wrap;
14 | border: 1px solid #ccc;
15 | border: 1px solid rgba(0, 0, 0, 0.15);
16 | -webkit-border-radius: 4px;
17 | border-radius: 4px;
18 | }
19 | pre.prettyprint {
20 | margin-bottom: 20px;
21 | }
22 | .pre-scrollable {
23 | max-height: 340px;
24 | overflow-y: scroll;
25 | }
26 | .com {
27 | color: #999;
28 | }
29 | .lit {
30 | color: #195f91;
31 | }
32 | .pun, .opn, .clo {
33 | color: #93a1a1;
34 | }
35 | .fun {
36 | color: #dc322f;
37 | }
38 | .str, .atv {
39 | color: #D44950;
40 | }
41 | .kwd, .prettyprint .tag {
42 | color: #2F6F9F;
43 | }
44 | .typ, .atn, .dec, .var {
45 | /*color: teal;*/
46 | color: #4F9FCF;
47 | }
48 | .pln {
49 | color: #333;
50 | }
51 | .prettyprint {
52 | padding: 10px 15px;
53 | background-color: #FFF;
54 | border: 1px solid #e1e1e8;
55 | }
56 | .prettyprint.linenums {
57 | -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
58 | box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
59 | }
60 | /* Specify class=linenums on a pre to get line numbering */
61 | ol.linenums {
62 | margin: 0 0 0 -12px;
63 | }
64 | ol.linenums li {
65 | padding-left: 12px;
66 | color: #bebec5;
67 | line-height: 20px;
68 | list-style: decimal;
69 | }
--------------------------------------------------------------------------------
/code-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",/^[^]+/],["dec",/^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
62 |
63 |
97 |
98 |
99 |
100 |
103 |
104 |
105 |
106 |