2014-11-21 08:03:43 +01:00
( function e ( t , n , r ) { function s ( o , u ) { if ( ! n [ o ] ) { if ( ! t [ o ] ) { var a = typeof require == "function" && require ; if ( ! u && a ) return a ( o , ! 0 ) ; if ( i ) return i ( o , ! 0 ) ; throw new Error ( "Cannot find module '" + o + "'" ) } var f = n [ o ] = { exports : { } } ; t [ o ] [ 0 ] . call ( f . exports , function ( e ) { var n = t [ o ] [ 1 ] [ e ] ; return s ( n ? n : e ) } , f , f . exports , e , t , n , r ) } return n [ o ] . exports } var i = typeof require == "function" && require ; for ( var o = 0 ; o < r . length ; o ++ ) s ( r [ o ] ) ; return s } ) ( { 1 : [ function ( require , module , exports ) {
} , { } ] , 2 : [ function ( require , module , exports ) {
( function ( process ) {
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
// resolves . and .. elements in a path array with directory names there
// must be no slashes, empty elements, or device names (c:\) in the array
// (so also no leading and trailing slashes - it does not distinguish
// relative and absolute paths)
function normalizeArray ( parts , allowAboveRoot ) {
// if the path tries to go above the root, `up` ends up > 0
var up = 0 ;
for ( var i = parts . length - 1 ; i >= 0 ; i -- ) {
var last = parts [ i ] ;
if ( last === '.' ) {
parts . splice ( i , 1 ) ;
} else if ( last === '..' ) {
parts . splice ( i , 1 ) ;
up ++ ;
} else if ( up ) {
parts . splice ( i , 1 ) ;
up -- ;
}
}
// if the path is allowed to go above the root, restore leading ..s
if ( allowAboveRoot ) {
for ( ; up -- ; up ) {
parts . unshift ( '..' ) ;
}
}
return parts ;
}
// Split a filename into [root, dir, basename, ext], unix version
// 'root' is just a slash, or nothing.
var splitPathRe =
/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/ ;
var splitPath = function ( filename ) {
return splitPathRe . exec ( filename ) . slice ( 1 ) ;
} ;
// path.resolve([from ...], to)
// posix version
exports . resolve = function ( ) {
var resolvedPath = '' ,
resolvedAbsolute = false ;
for ( var i = arguments . length - 1 ; i >= - 1 && ! resolvedAbsolute ; i -- ) {
var path = ( i >= 0 ) ? arguments [ i ] : process . cwd ( ) ;
// Skip empty and invalid entries
if ( typeof path !== 'string' ) {
throw new TypeError ( 'Arguments to path.resolve must be strings' ) ;
} else if ( ! path ) {
continue ;
}
resolvedPath = path + '/' + resolvedPath ;
resolvedAbsolute = path . charAt ( 0 ) === '/' ;
}
// At this point the path should be resolved to a full absolute path, but
// handle relative paths to be safe (might happen when process.cwd() fails)
// Normalize the path
resolvedPath = normalizeArray ( filter ( resolvedPath . split ( '/' ) , function ( p ) {
return ! ! p ;
} ) , ! resolvedAbsolute ) . join ( '/' ) ;
return ( ( resolvedAbsolute ? '/' : '' ) + resolvedPath ) || '.' ;
} ;
// path.normalize(path)
// posix version
exports . normalize = function ( path ) {
var isAbsolute = exports . isAbsolute ( path ) ,
trailingSlash = substr ( path , - 1 ) === '/' ;
// Normalize the path
path = normalizeArray ( filter ( path . split ( '/' ) , function ( p ) {
return ! ! p ;
} ) , ! isAbsolute ) . join ( '/' ) ;
if ( ! path && ! isAbsolute ) {
path = '.' ;
}
if ( path && trailingSlash ) {
path += '/' ;
}
return ( isAbsolute ? '/' : '' ) + path ;
} ;
// posix version
exports . isAbsolute = function ( path ) {
return path . charAt ( 0 ) === '/' ;
} ;
// posix version
exports . join = function ( ) {
var paths = Array . prototype . slice . call ( arguments , 0 ) ;
return exports . normalize ( filter ( paths , function ( p , index ) {
if ( typeof p !== 'string' ) {
throw new TypeError ( 'Arguments to path.join must be strings' ) ;
}
return p ;
} ) . join ( '/' ) ) ;
} ;
// path.relative(from, to)
// posix version
exports . relative = function ( from , to ) {
from = exports . resolve ( from ) . substr ( 1 ) ;
to = exports . resolve ( to ) . substr ( 1 ) ;
function trim ( arr ) {
var start = 0 ;
for ( ; start < arr . length ; start ++ ) {
if ( arr [ start ] !== '' ) break ;
}
var end = arr . length - 1 ;
for ( ; end >= 0 ; end -- ) {
if ( arr [ end ] !== '' ) break ;
}
if ( start > end ) return [ ] ;
return arr . slice ( start , end - start + 1 ) ;
}
var fromParts = trim ( from . split ( '/' ) ) ;
var toParts = trim ( to . split ( '/' ) ) ;
var length = Math . min ( fromParts . length , toParts . length ) ;
var samePartsLength = length ;
for ( var i = 0 ; i < length ; i ++ ) {
if ( fromParts [ i ] !== toParts [ i ] ) {
samePartsLength = i ;
break ;
}
}
var outputParts = [ ] ;
for ( var i = samePartsLength ; i < fromParts . length ; i ++ ) {
outputParts . push ( '..' ) ;
}
outputParts = outputParts . concat ( toParts . slice ( samePartsLength ) ) ;
return outputParts . join ( '/' ) ;
} ;
exports . sep = '/' ;
exports . delimiter = ':' ;
exports . dirname = function ( path ) {
var result = splitPath ( path ) ,
root = result [ 0 ] ,
dir = result [ 1 ] ;
if ( ! root && ! dir ) {
// No dirname whatsoever
return '.' ;
}
if ( dir ) {
// It has a dirname, strip trailing slash
dir = dir . substr ( 0 , dir . length - 1 ) ;
}
return root + dir ;
} ;
exports . basename = function ( path , ext ) {
var f = splitPath ( path ) [ 2 ] ;
// TODO: make this comparison case-insensitive on windows?
if ( ext && f . substr ( - 1 * ext . length ) === ext ) {
f = f . substr ( 0 , f . length - ext . length ) ;
}
return f ;
} ;
exports . extname = function ( path ) {
return splitPath ( path ) [ 3 ] ;
} ;
function filter ( xs , f ) {
if ( xs . filter ) return xs . filter ( f ) ;
var res = [ ] ;
for ( var i = 0 ; i < xs . length ; i ++ ) {
if ( f ( xs [ i ] , i , xs ) ) res . push ( xs [ i ] ) ;
}
return res ;
}
// String.prototype.substr - negative index don't work in IE8
var substr = 'ab' . substr ( - 1 ) === 'b'
? function ( str , start , len ) { return str . substr ( start , len ) }
: function ( str , start , len ) {
if ( start < 0 ) start = str . length + start ;
return str . substr ( start , len ) ;
}
;
} ) . call ( this , require ( "1YiZ5S" ) )
} , { "1YiZ5S" : 3 } ] , 3 : [ function ( require , module , exports ) {
// shim for using process in browser
var process = module . exports = { } ;
process . nextTick = ( function ( ) {
var canSetImmediate = typeof window !== 'undefined'
&& window . setImmediate ;
var canPost = typeof window !== 'undefined'
&& window . postMessage && window . addEventListener
;
if ( canSetImmediate ) {
return function ( f ) { return window . setImmediate ( f ) } ;
}
if ( canPost ) {
var queue = [ ] ;
window . addEventListener ( 'message' , function ( ev ) {
var source = ev . source ;
if ( ( source === window || source === null ) && ev . data === 'process-tick' ) {
ev . stopPropagation ( ) ;
if ( queue . length > 0 ) {
var fn = queue . shift ( ) ;
fn ( ) ;
}
}
} , true ) ;
return function nextTick ( fn ) {
queue . push ( fn ) ;
window . postMessage ( 'process-tick' , '*' ) ;
} ;
}
return function nextTick ( fn ) {
setTimeout ( fn , 0 ) ;
} ;
} ) ( ) ;
process . title = 'browser' ;
process . browser = true ;
process . env = { } ;
process . argv = [ ] ;
function noop ( ) { }
process . on = noop ;
process . addListener = noop ;
process . once = noop ;
process . off = noop ;
process . removeListener = noop ;
process . removeAllListeners = noop ;
process . emit = noop ;
process . binding = function ( name ) {
throw new Error ( 'process.binding is not supported' ) ;
}
// TODO(shtylman)
process . cwd = function ( ) { return '/' } ;
process . chdir = function ( dir ) {
throw new Error ( 'process.chdir is not supported' ) ;
} ;
} , { } ] , 4 : [ function ( require , module , exports ) {
( function ( global ) {
2014-11-25 22:58:57 +01:00
/*! http://mths.be/he v0.5.0 by @mathias | MIT license */
; ( function ( root ) {
// Detect free variables `exports`.
var freeExports = typeof exports == 'object' && exports ;
// Detect free variable `module`.
var freeModule = typeof module == 'object' && module &&
module . exports == freeExports && module ;
// Detect free variable `global`, from Node.js or Browserified code,
// and use it as `root`.
var freeGlobal = typeof global == 'object' && global ;
if ( freeGlobal . global === freeGlobal || freeGlobal . window === freeGlobal ) {
root = freeGlobal ;
}
/*--------------------------------------------------------------------------*/
// All astral symbols.
var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g ;
// All ASCII symbols (not just printable ASCII) except those listed in the
// first column of the overrides table.
// http://whatwg.org/html/tokenization.html#table-charref-overrides
var regexAsciiWhitelist = /[\x01-\x7F]/g ;
// All BMP symbols that are not ASCII newlines, printable ASCII symbols, or
// code points listed in the first column of the overrides table on
// http://whatwg.org/html/tokenization.html#table-charref-overrides.
var regexBmpWhitelist = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g ;
var regexEncodeNonAscii = /<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g ;
var encodeMap = { '\xC1' : 'Aacute' , '\xE1' : 'aacute' , '\u0102' : 'Abreve' , '\u0103' : 'abreve' , '\u223E' : 'ac' , '\u223F' : 'acd' , '\u223E\u0333' : 'acE' , '\xC2' : 'Acirc' , '\xE2' : 'acirc' , '\xB4' : 'acute' , '\u0410' : 'Acy' , '\u0430' : 'acy' , '\xC6' : 'AElig' , '\xE6' : 'aelig' , '\u2061' : 'af' , '\uD835\uDD04' : 'Afr' , '\uD835\uDD1E' : 'afr' , '\xC0' : 'Agrave' , '\xE0' : 'agrave' , '\u2135' : 'aleph' , '\u0391' : 'Alpha' , '\u03B1' : 'alpha' , '\u0100' : 'Amacr' , '\u0101' : 'amacr' , '\u2A3F' : 'amalg' , '&' : 'amp' , '\u2A55' : 'andand' , '\u2A53' : 'And' , '\u2227' : 'and' , '\u2A5C' : 'andd' , '\u2A58' : 'andslope' , '\u2A5A' : 'andv' , '\u2220' : 'ang' , '\u29A4' : 'ange' , '\u29A8' : 'angmsdaa' , '\u29A9' : 'angmsdab' , '\u29AA' : 'angmsdac' , '\u29AB' : 'angmsdad' , '\u29AC' : 'angmsdae' , '\u29AD' : 'angmsdaf' , '\u29AE' : 'angmsdag' , '\u29AF' : 'angmsdah' , '\u2221' : 'angmsd' , '\u221F' : 'angrt' , '\u22BE' : 'angrtvb' , '\u299D' : 'angrtvbd' , '\u2222' : 'angsph' , '\xC5' : 'angst' , '\u237C' : 'angzarr' , '\u0104' : 'Aogon' , '\u0105' : 'aogon' , '\uD835\uDD38' : 'Aopf' , '\uD835\uDD52' : 'aopf' , '\u2A6F' : 'apacir' , '\u2248' : 'ap' , '\u2A70' : 'apE' , '\u224A' : 'ape' , '\u224B' : 'apid' , '\'' : 'apos' , '\xE5' : 'aring' , '\uD835\uDC9C' : 'Ascr' , '\uD835\uDCB6' : 'ascr' , '\u2254' : 'colone' , '*' : 'ast' , '\u224D' : 'CupCap' , '\xC3' : 'Atilde' , '\xE3' : 'atilde' , '\xC4' : 'Auml' , '\xE4' : 'auml' , '\u2233' : 'awconint' , '\u2A11' : 'awint' , '\u224C' : 'bcong' , '\u03F6' : 'bepsi' , '\u2035' : 'bprime' , '\u223D' : 'bsim' , '\u22CD' : 'bsime' , '\u2216' : 'setmn' , '\u2AE7' : 'Barv' , '\u22BD' : 'barvee' , '\u2305' : 'barwed' , '\u2306' : 'Barwed' , '\u23B5' : 'bbrk' , '\u23B6' : 'bbrktbrk' , '\u0411' : 'Bcy' , '\u0431' : 'bcy' , '\u201E' : 'bdquo' , '\u2235' : 'becaus' , '\u29B0' : 'bemptyv' , '\u212C' : 'Bscr' , '\u0392' : 'Beta' , '\u03B2' : 'beta' , '\u2136' : 'beth' , '\u226C' : 'twixt' , '\uD835\uDD05' : 'Bfr' , '\uD835\uDD1F' : 'bfr' , '\u22C2' : 'xcap' , '\u25EF' : 'xcirc' , '\u22C3' : 'xcup' , '\u2A00' : 'xodot' , '\u2A01' : 'xoplus' , '\u2A02' : 'xotime' , '\u2A06' : 'xsqcup' , '\u2605' : 'starf' , '\u25BD' : 'xdtri' , '\u25B3' : 'xutri' , '\u2A04' : 'xuplus' , '\u22C1' : 'Vee' , '\u22C0' : 'Wedge' , '\u290D' : 'rbarr' , '\u29EB' : 'lozf' , '\u25AA' : 'squf' , '\u25B4' : 'utrif' , '\u25BE' : 'dtrif' , '\u25C2' : 'ltrif' , '\u25B8' : 'rtrif' , '\u2423' : 'blank' , '\u2592' : 'blk12' , '\u2591' : 'blk14' , '\u2593' : 'blk34' , '\u2588' : 'block' , '=\u20E5' : 'bne' , '\u2261\u20E5' : 'bnequiv' , '\u2AED' : 'bNot' , '\u2310' : 'bnot' , '\uD835\uDD39' : 'Bopf' , '\uD835\uDD53' : 'bopf' , '\u22A5' : 'bot' , '\u22C8' : 'bowtie' , '\u29C9' : 'boxbox' , '\u2510' : 'boxdl' , '\u2555' : 'boxdL' , '\u2556' : 'boxDl' , '\u2557' : 'boxDL' , '\u250C' : 'boxdr' , '\u2552' : 'boxdR' , '\u2553' : 'boxDr' , '\u2554' : 'boxDR' , '\u2500' : 'boxh' , '\u2550' : 'boxH' , '\u252C' : 'boxhd' , '\u2564' : 'boxHd' , '\u2565' : 'boxhD' , '\u2566' : 'boxHD' , '\u2534' : 'boxhu' , '\u2567' : 'boxHu' , '\u2568' : 'boxhU' , '\u2569' : 'boxHU' , '\u229F' : 'minusb' , '\u229E' : 'plusb' , '\u22A0' : 'timesb' , '\u2518' : 'boxul' , '\u255B' : 'boxuL' , '\u255C' : 'boxUl' , '\u255D' : 'boxUL' , '\u2514' : 'boxur' , '\u2558' : 'boxuR' , '\u2559' : 'boxUr' , '\u255A' : 'boxUR' , '\u2502' : 'boxv' , '\u2551' : 'boxV' , '\u253C' : 'boxvh' , '\u256A' : 'boxvH' , '\u256B' : 'boxVh' , '\u256C' : 'boxVH' , '\u2524' : 'boxvl' , '\u2561' : 'boxvL' , '\u2562' : 'boxVl' , '\u2563' : 'boxVL' , '\u251C' : 'boxvr' , '\u255E' : 'boxvR' , '\u255F' : 'boxVr' , '\u2560' : 'boxVR' , '\u02D8' : 'breve' , '\xA6' : 'brvbar' , '\uD835\uDCB7' : 'bscr' , '\u204F' : 'bsemi' , '\u29C5' : 'bsolb' , '\\' : 'bsol' , '\u27C8' : 'bsolhsub' , '\u2022' : 'bull' , '\u224E' : 'bump' , '\u2AAE' : 'bumpE' , '\u224F' : 'bumpe' , '\u0106' : 'Cacute' , '\u0107' : 'cacute' , '\u2A44' : 'capand' , '\u2A49' : 'capbrcup' , '\u2A4B' : 'capcap' , '\u2229' : 'cap' , '\u22D2' : 'Cap' , '\u2A47' : 'capcup' , '\u2A40' : 'capdot' , '\u2145' : 'DD' , '\u2229\uFE00' : 'caps' , '\u2041' : 'caret' , '\u02C7' : 'caron' , '\u212D' : 'Cfr' , '\u2A4D' : 'ccaps' , '\u010C' : 'Ccaron' , '\u010D' : 'ccaron' , '\xC7' : 'Ccedil' , '\xE7' : 'ccedil' , '\u0108' : 'Ccirc' , '\u0109' : 'ccirc' , '\u2230' : 'Cconint' , '\u2A4C' : 'ccups' , '\u2A50' : 'ccupssm' , '\u010A' : 'Cdot' , '\u010B' : 'cdot' , '\xB8' : 'cedil' , '\u29B2' : 'cemptyv' , '\xA2' : 'cent' , '\xB7' : 'middot' , '\uD835\uDD20' : 'cfr' , '\u0427' : 'CHcy' , '\u0447' : 'chcy' , '\u2713' : 'check' , '\u03A7' : 'Chi' , '\u03C7' : 'chi' , '\u02C6' : 'circ' , '\u2257' : 'cire' , '\u21BA' : 'olarr' , '\u21BB' : 'orarr' , '\u229B' : 'oast' , '\u229A' : 'ocir' , '\u229D' : 'odash' , '\u2299' : 'odot' , '\xAE' : 'reg' , '\u24C8' : 'oS' , '\u2296' : 'ominus' , '\u2295' : 'oplus' , '\u2297' : 'otimes' , '\u25CB' : 'cir' , '\u29C3' : 'cirE' , '\u2A10' : 'cirfnint' , '\u2AEF' : 'cirmid' , '\u29C2' : 'cirscir' , '\u2232' : 'cwconint' , '\u201D' : ' rdq
var regexEscape = /["&'<>`]/g ;
var escapeMap = {
'"' : '"' ,
'&' : '&' ,
'\'' : ''' ,
'<' : '<' ,
// See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the
// following is not strictly necessary unless it’ s part of a tag or an
// unquoted attribute value. We’ re only escaping it to support those
// situations, and for XML support.
'>' : '>' ,
// In Internet Explorer ≤ 8, the backtick character can be used
// to break out of (un)quoted attribute values or HTML comments.
// See http://html5sec.org/#102, http://html5sec.org/#108, and
// http://html5sec.org/#133.
'`' : '`'
} ;
var regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/ ;
var regexInvalidRawCodePoint = /[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/ ;
var regexDecode = /&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+);|&(Aacute|iacute|Uacute|plusmn|otilde|Otilde|Agrave|agrave|yacute|Yacute|oslash|Oslash|Atilde|atilde|brvbar|Ccedil|ccedil|ograve|curren|divide|Eacute|eacute|Ograve|oacute|Egrave|egrave|ugrave|frac12|frac14|frac34|Ugrave|Oacute|Iacute|ntilde|Ntilde|uacute|middot|Igrave|igrave|iquest|aacute|laquo|THORN|micro|iexcl|icirc|Icirc|Acirc|ucirc|ecirc|Ocirc|ocirc|Ecirc|Ucirc|aring|Aring|aelig|AElig|acute|pound|raquo|acirc|times|thorn|szlig|cedil|COPY|Auml|ordf|ordm|uuml|macr|Uuml|auml|Ouml|ouml|para|nbsp|Euml|quot|QUOT|euml|yuml|cent|sect|copy|sup1|sup2|sup3|Iuml|iuml|shy|eth|reg|not|yen|amp|AMP|REG|uml|ETH|deg|gt|GT|LT|lt)([=a-zA-Z0-9])?/g ;
var decodeMap = { 'Aacute' : '\xC1' , 'aacute' : '\xE1' , 'Abreve' : '\u0102' , 'abreve' : '\u0103' , 'ac' : '\u223E' , 'acd' : '\u223F' , 'acE' : '\u223E\u0333' , 'Acirc' : '\xC2' , 'acirc' : '\xE2' , 'acute' : '\xB4' , 'Acy' : '\u0410' , 'acy' : '\u0430' , 'AElig' : '\xC6' , 'aelig' : '\xE6' , 'af' : '\u2061' , 'Afr' : '\uD835\uDD04' , 'afr' : '\uD835\uDD1E' , 'Agrave' : '\xC0' , 'agrave' : '\xE0' , 'alefsym' : '\u2135' , 'aleph' : '\u2135' , 'Alpha' : '\u0391' , 'alpha' : '\u03B1' , 'Amacr' : '\u0100' , 'amacr' : '\u0101' , 'amalg' : '\u2A3F' , 'amp' : '&' , 'AMP' : '&' , 'andand' : '\u2A55' , 'And' : '\u2A53' , 'and' : '\u2227' , 'andd' : '\u2A5C' , 'andslope' : '\u2A58' , 'andv' : '\u2A5A' , 'ang' : '\u2220' , 'ange' : '\u29A4' , 'angle' : '\u2220' , 'angmsdaa' : '\u29A8' , 'angmsdab' : '\u29A9' , 'angmsdac' : '\u29AA' , 'angmsdad' : '\u29AB' , 'angmsdae' : '\u29AC' , 'angmsdaf' : '\u29AD' , 'angmsdag' : '\u29AE' , 'angmsdah' : '\u29AF' , 'angmsd' : '\u2221' , 'angrt' : '\u221F' , 'angrtvb' : '\u22BE' , 'angrtvbd' : '\u299D' , 'angsph' : '\u2222' , 'angst' : '\xC5' , 'angzarr' : '\u237C' , 'Aogon' : '\u0104' , 'aogon' : '\u0105' , 'Aopf' : '\uD835\uDD38' , 'aopf' : '\uD835\uDD52' , 'apacir' : '\u2A6F' , 'ap' : '\u2248' , 'apE' : '\u2A70' , 'ape' : '\u224A' , 'apid' : '\u224B' , 'apos' : '\'' , 'ApplyFunction' : '\u2061' , 'approx' : '\u2248' , 'approxeq' : '\u224A' , 'Aring' : '\xC5' , 'aring' : '\xE5' , 'Ascr' : '\uD835\uDC9C' , 'ascr' : '\uD835\uDCB6' , 'Assign' : '\u2254' , 'ast' : '*' , 'asymp' : '\u2248' , 'asympeq' : '\u224D' , 'Atilde' : '\xC3' , 'atilde' : '\xE3' , 'Auml' : '\xC4' , 'auml' : '\xE4' , 'awconint' : '\u2233' , 'awint' : '\u2A11' , 'backcong' : '\u224C' , 'backepsilon' : '\u03F6' , 'backprime' : '\u2035' , 'backsim' : '\u223D' , 'backsimeq' : '\u22CD' , 'Backslash' : '\u2216' , 'Barv' : '\u2AE7' , 'barvee' : '\u22BD' , 'barwed' : '\u2305' , 'Barwed' : '\u2306' , 'barwedge' : '\u2305' , 'bbrk' : '\u23B5' , 'bbrktbrk' : '\u23B6' , 'bcong' : '\u224C' , 'Bcy' : '\u0411' , 'bcy' : '\u0431' , 'bdquo' : '\u201E' , 'becaus' : '\u2235' , 'because' : '\u2235' , 'Because' : '\u2235' , 'bemptyv' : '\u29B0' , 'bepsi' : '\u03F6' , 'bernou' : '\u212C' , 'Bernoullis' : '\u212C' , 'Beta' : '\u0392' , 'beta' : '\u03B2' , 'beth' : '\u2136' , 'between' : '\u226C' , 'Bfr' : '\uD835\uDD05' , 'bfr' : '\uD835\uDD1F' , 'bigcap' : '\u22C2' , 'bigcirc' : '\u25EF' , 'bigcup' : '\u22C3' , 'bigodot' : '\u2A00' , 'bigoplus' : '\u2A01' , 'bigotimes' : '\u2A02' , 'bigsqcup' : '\u2A06' , 'bigstar' : '\u2605' , 'bigtriangledown' : '\u25BD' , 'bigtriangleup' : '\u25B3' , 'biguplus' : '\u2A04' , 'bigvee' : '\u22C1' , 'bigwedge' : '\u22C0' , 'bkarow' : '\u290D' , 'blacklozenge' : '\u29EB' , 'blacksquare' : '\u25AA' , 'blacktriangle' : '\u25B4' , 'blacktriangledown' : '\u25BE' , 'blacktriangleleft' : '\u25C2' , 'blacktriangleright' : '\u25B8' , 'blank' : '\u2423' , 'blk12' : '\u2592' , 'blk14' : '\u2591' , 'blk34' : '\u2593' , 'block' : '\u2588' , 'bne' : '=\u20E5' , 'bnequiv' : '\u2261\u20E5' , 'bNot' : '\u2AED' , 'bnot' : '\u2310' , 'Bopf' : '\uD835\uDD39' , 'bopf' : '\uD835\uDD53' , 'bot' : '\u22A5' , 'bottom' : '\u22A5' , 'bowtie' : '\u22C8' , 'boxbox' : '\u29C9' , 'boxdl' : '\u2510' , 'boxdL' : '\u2555' , 'boxDl' : '\u2556' , 'boxDL' : '\u2557' , 'boxdr' : '\u250C' , 'boxdR' : '\u2552' , 'boxDr' : '\u2553' , 'boxDR' : '\u2554' , 'boxh' : '\u2500' , 'boxH' : '\u2550' , 'boxhd' : '\u252C' , 'boxHd' : '\u2564' , 'boxhD' : '\u2565' , 'boxHD' : '\u2566' , 'boxhu' : '\u2534' , 'boxHu' : '\u2567' , 'boxhU' : '\u2568' , 'boxHU' : '\u2569' , 'boxminus' : '\u229F' , 'boxplus' : '\u229E' , 'boxtimes' : '\u22A0' , 'boxul' : '\u2518' , 'boxuL' : '\u255B' , 'boxUl' : '\u255C' , 'boxUL' : '\u255D' , 'boxur' : '\u2514' , 'boxuR' : '\u2558' , 'boxUr' : '\u2559' , 'boxUR' : '\u255A' , 'boxv' : '\u2502' , 'boxV' : '\u2551' , 'boxvh' : '\u253C' , 'boxvH' : '\u256A' , 'boxVh' : '\u256B' , 'boxVH' : '\u256C' , 'boxvl' : '\u2524' , 'boxvL' : '\u2561' , 'boxVl' : '\u2562' , 'boxVL' : '\u2563' , 'boxvr' : '\u251C' , 'boxvR' : '\u255E' , 'boxVr' : '\u255F' , 'boxVR' : '\u2560' , 'bprime' : '\u2035' , 'breve' : '\u02D8' , 'Breve' : '\u02D8' , 'brvbar' : '\xA6' , 'bscr' : '\uD835\uDCB7' , 'Bscr' : '\u212C' , 'bsemi' : '\u204F' , 'bsim' : '\u223D' , 'bsime' : '\u22CD' , 'bsolb' : '\u29C5' , 'bsol' : '\\' , 'bsolhsub' : '\u27C8' , 'bull' : '\u2022' , 'bullet' : '\u2022' , 'bump' : '\u224E' , 'bumpE' : '\u2AAE' , 'bumpe' : '\u224F' , 'Bumpeq' : '\u224E' , 'bumpeq' : '\u224F' , 'Cacute' : '\u0106' , 'cacute' : '\u0107' , 'capand' : '\u2A44' , 'capbrcup' : '\u2A49' , 'capcap' : '\u2A4B' , 'cap' : '\u2229' , 'Cap' : '\u22D2' , 'capcup' : '\u2A47' , 'capdot' : '\u2A40' , 'CapitalDifferentialD' : '\u2145' , 'caps' : '\u2229\uFE00' , 'caret' : '\u2041' , 'caron' : '\u02C7' , 'Cayleys' : '\u212D' , 'ccaps' : '\u2A4D' , 'Ccaron' : '\u010C' , 'ccaron' : '\u010D' , 'Ccedil' : '\xC7' , 'ccedil' : '\xE7' , 'Ccirc' : '\u0108' , 'ccirc' : '\u0109' , 'Cconint' : ' \
var decodeMapLegacy = { 'Aacute' : '\xC1' , 'aacute' : '\xE1' , 'Acirc' : '\xC2' , 'acirc' : '\xE2' , 'acute' : '\xB4' , 'AElig' : '\xC6' , 'aelig' : '\xE6' , 'Agrave' : '\xC0' , 'agrave' : '\xE0' , 'amp' : '&' , 'AMP' : '&' , 'Aring' : '\xC5' , 'aring' : '\xE5' , 'Atilde' : '\xC3' , 'atilde' : '\xE3' , 'Auml' : '\xC4' , 'auml' : '\xE4' , 'brvbar' : '\xA6' , 'Ccedil' : '\xC7' , 'ccedil' : '\xE7' , 'cedil' : '\xB8' , 'cent' : '\xA2' , 'copy' : '\xA9' , 'COPY' : '\xA9' , 'curren' : '\xA4' , 'deg' : '\xB0' , 'divide' : '\xF7' , 'Eacute' : '\xC9' , 'eacute' : '\xE9' , 'Ecirc' : '\xCA' , 'ecirc' : '\xEA' , 'Egrave' : '\xC8' , 'egrave' : '\xE8' , 'ETH' : '\xD0' , 'eth' : '\xF0' , 'Euml' : '\xCB' , 'euml' : '\xEB' , 'frac12' : '\xBD' , 'frac14' : '\xBC' , 'frac34' : '\xBE' , 'gt' : '>' , 'GT' : '>' , 'Iacute' : '\xCD' , 'iacute' : '\xED' , 'Icirc' : '\xCE' , 'icirc' : '\xEE' , 'iexcl' : '\xA1' , 'Igrave' : '\xCC' , 'igrave' : '\xEC' , 'iquest' : '\xBF' , 'Iuml' : '\xCF' , 'iuml' : '\xEF' , 'laquo' : '\xAB' , 'lt' : '<' , 'LT' : '<' , 'macr' : '\xAF' , 'micro' : '\xB5' , 'middot' : '\xB7' , 'nbsp' : '\xA0' , 'not' : '\xAC' , 'Ntilde' : '\xD1' , 'ntilde' : '\xF1' , 'Oacute' : '\xD3' , 'oacute' : '\xF3' , 'Ocirc' : '\xD4' , 'ocirc' : '\xF4' , 'Ograve' : '\xD2' , 'ograve' : '\xF2' , 'ordf' : '\xAA' , 'ordm' : '\xBA' , 'Oslash' : '\xD8' , 'oslash' : '\xF8' , 'Otilde' : '\xD5' , 'otilde' : '\xF5' , 'Ouml' : '\xD6' , 'ouml' : '\xF6' , 'para' : '\xB6' , 'plusmn' : '\xB1' , 'pound' : '\xA3' , 'quot' : '"' , 'QUOT' : '"' , 'raquo' : '\xBB' , 'reg' : '\xAE' , 'REG' : '\xAE' , 'sect' : '\xA7' , 'shy' : '\xAD' , 'sup1' : '\xB9' , 'sup2' : '\xB2' , 'sup3' : '\xB3' , 'szlig' : '\xDF' , 'THORN' : '\xDE' , 'thorn' : '\xFE' , 'times' : '\xD7' , 'Uacute' : '\xDA' , 'uacute' : '\xFA' , 'Ucirc' : '\xDB' , 'ucirc' : '\xFB' , 'Ugrave' : '\xD9' , 'ugrave' : '\xF9' , 'uml' : '\xA8' , 'Uuml' : '\xDC' , 'uuml' : '\xFC' , 'Yacute' : '\xDD' , 'yacute' : '\xFD' , 'yen' : '\xA5' , 'yuml' : '\xFF' } ;
var decodeMapNumeric = { '0' : '\uFFFD' , '128' : '\u20AC' , '130' : '\u201A' , '131' : '\u0192' , '132' : '\u201E' , '133' : '\u2026' , '134' : '\u2020' , '135' : '\u2021' , '136' : '\u02C6' , '137' : '\u2030' , '138' : '\u0160' , '139' : '\u2039' , '140' : '\u0152' , '142' : '\u017D' , '145' : '\u2018' , '146' : '\u2019' , '147' : '\u201C' , '148' : '\u201D' , '149' : '\u2022' , '150' : '\u2013' , '151' : '\u2014' , '152' : '\u02DC' , '153' : '\u2122' , '154' : '\u0161' , '155' : '\u203A' , '156' : '\u0153' , '158' : '\u017E' , '159' : '\u0178' } ;
var invalidReferenceCodePoints = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 11 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 127 , 128 , 129 , 130 , 131 , 132 , 133 , 134 , 135 , 136 , 137 , 138 , 139 , 140 , 141 , 142 , 143 , 144 , 145 , 146 , 147 , 148 , 149 , 150 , 151 , 152 , 153 , 154 , 155 , 156 , 157 , 158 , 159 , 64976 , 64977 , 64978 , 64979 , 64980 , 64981 , 64982 , 64983 , 64984 , 64985 , 64986 , 64987 , 64988 , 64989 , 64990 , 64991 , 64992 , 64993 , 64994 , 64995 , 64996 , 64997 , 64998 , 64999 , 65000 , 65001 , 65002 , 65003 , 65004 , 65005 , 65006 , 65007 , 65534 , 65535 , 131070 , 131071 , 196606 , 196607 , 262142 , 262143 , 327678 , 327679 , 393214 , 393215 , 458750 , 458751 , 524286 , 524287 , 589822 , 589823 , 655358 , 655359 , 720894 , 720895 , 786430 , 786431 , 851966 , 851967 , 917502 , 917503 , 983038 , 983039 , 1048574 , 1048575 , 1114110 , 1114111 ] ;
/*--------------------------------------------------------------------------*/
var stringFromCharCode = String . fromCharCode ;
var object = { } ;
var hasOwnProperty = object . hasOwnProperty ;
var has = function ( object , propertyName ) {
return hasOwnProperty . call ( object , propertyName ) ;
} ;
var contains = function ( array , value ) {
var index = - 1 ;
var length = array . length ;
while ( ++ index < length ) {
if ( array [ index ] == value ) {
return true ;
}
}
return false ;
} ;
var merge = function ( options , defaults ) {
if ( ! options ) {
return defaults ;
}
var result = { } ;
var key ;
for ( key in defaults ) {
// A `hasOwnProperty` check is not needed here, since only recognized
// option names are used anyway. Any others are ignored.
result [ key ] = has ( options , key ) ? options [ key ] : defaults [ key ] ;
}
return result ;
} ;
// Modified version of `ucs2encode`; see http://mths.be/punycode.
var codePointToSymbol = function ( codePoint , strict ) {
var output = '' ;
if ( ( codePoint >= 0xD800 && codePoint <= 0xDFFF ) || codePoint > 0x10FFFF ) {
// See issue #4:
// “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is
// greater than 0x10FFFF, then this is a parse error. Return a U+FFFD
// REPLACEMENT CHARACTER.”
if ( strict ) {
parseError ( 'character reference outside the permissible Unicode range' ) ;
}
return '\uFFFD' ;
}
if ( has ( decodeMapNumeric , codePoint ) ) {
if ( strict ) {
parseError ( 'disallowed character reference' ) ;
}
return decodeMapNumeric [ codePoint ] ;
}
if ( strict && contains ( invalidReferenceCodePoints , codePoint ) ) {
parseError ( 'disallowed character reference' ) ;
}
if ( codePoint > 0xFFFF ) {
codePoint -= 0x10000 ;
output += stringFromCharCode ( codePoint >>> 10 & 0x3FF | 0xD800 ) ;
codePoint = 0xDC00 | codePoint & 0x3FF ;
}
output += stringFromCharCode ( codePoint ) ;
return output ;
} ;
var hexEscape = function ( symbol ) {
return '&#x' + symbol . charCodeAt ( 0 ) . toString ( 16 ) . toUpperCase ( ) + ';' ;
} ;
var parseError = function ( message ) {
throw Error ( 'Parse error: ' + message ) ;
} ;
/*--------------------------------------------------------------------------*/
var encode = function ( string , options ) {
options = merge ( options , encode . options ) ;
var strict = options . strict ;
if ( strict && regexInvalidRawCodePoint . test ( string ) ) {
parseError ( 'forbidden code point' ) ;
}
var encodeEverything = options . encodeEverything ;
var useNamedReferences = options . useNamedReferences ;
var allowUnsafeSymbols = options . allowUnsafeSymbols ;
if ( encodeEverything ) {
// Encode ASCII symbols.
string = string . replace ( regexAsciiWhitelist , function ( symbol ) {
// Use named references if requested & possible.
if ( useNamedReferences && has ( encodeMap , symbol ) ) {
return '&' + encodeMap [ symbol ] + ';' ;
}
return hexEscape ( symbol ) ;
} ) ;
// Shorten a few escapes that represent two symbols, of which at least one
// is within the ASCII range.
if ( useNamedReferences ) {
string = string
. replace ( />\u20D2/g , '>⃒' )
. replace ( /<\u20D2/g , '<⃒' )
. replace ( /fj/g , 'fj' ) ;
}
// Encode non-ASCII symbols.
if ( useNamedReferences ) {
// Encode non-ASCII symbols that can be replaced with a named reference.
string = string . replace ( regexEncodeNonAscii , function ( string ) {
// Note: there is no need to check `has(encodeMap, string)` here.
return '&' + encodeMap [ string ] + ';' ;
} ) ;
}
// Note: any remaining non-ASCII symbols are handled outside of the `if`.
} else if ( useNamedReferences ) {
// Apply named character references.
// Encode `<>"'&` using named character references.
if ( ! allowUnsafeSymbols ) {
string = string . replace ( regexEscape , function ( string ) {
return '&' + encodeMap [ string ] + ';' ; // no need to check `has()` here
} ) ;
}
// Shorten escapes that represent two symbols, of which at least one is
// `<>"'&`.
string = string
. replace ( />\u20D2/g , '>⃒' )
. replace ( /<\u20D2/g , '<⃒' ) ;
// Encode non-ASCII symbols that can be replaced with a named reference.
string = string . replace ( regexEncodeNonAscii , function ( string ) {
// Note: there is no need to check `has(encodeMap, string)` here.
return '&' + encodeMap [ string ] + ';' ;
} ) ;
} else if ( ! allowUnsafeSymbols ) {
// Encode `<>"'&` using hexadecimal escapes, now that they’ re not handled
// using named character references.
string = string . replace ( regexEscape , hexEscape ) ;
}
return string
// Encode astral symbols.
. replace ( regexAstralSymbols , function ( $0 ) {
// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
var high = $0 . charCodeAt ( 0 ) ;
var low = $0 . charCodeAt ( 1 ) ;
var codePoint = ( high - 0xD800 ) * 0x400 + low - 0xDC00 + 0x10000 ;
return '&#x' + codePoint . toString ( 16 ) . toUpperCase ( ) + ';' ;
} )
// Encode any remaining BMP symbols that are not printable ASCII symbols
// using a hexadecimal escape.
. replace ( regexBmpWhitelist , hexEscape ) ;
} ;
// Expose default options (so they can be overridden globally).
encode . options = {
'allowUnsafeSymbols' : false ,
'encodeEverything' : false ,
'strict' : false ,
'useNamedReferences' : false
} ;
var decode = function ( html , options ) {
options = merge ( options , decode . options ) ;
var strict = options . strict ;
if ( strict && regexInvalidEntity . test ( html ) ) {
parseError ( 'malformed character reference' ) ;
}
return html . replace ( regexDecode , function ( $0 , $1 , $2 , $3 , $4 , $5 , $6 , $7 ) {
var codePoint ;
var semicolon ;
var hexDigits ;
var reference ;
var next ;
if ( $1 ) {
// Decode decimal escapes, e.g. `𝌆`.
codePoint = $1 ;
semicolon = $2 ;
if ( strict && ! semicolon ) {
parseError ( 'character reference was not terminated by a semicolon' ) ;
}
return codePointToSymbol ( codePoint , strict ) ;
}
if ( $3 ) {
// Decode hexadecimal escapes, e.g. `𝌆`.
hexDigits = $3 ;
semicolon = $4 ;
if ( strict && ! semicolon ) {
parseError ( 'character reference was not terminated by a semicolon' ) ;
}
codePoint = parseInt ( hexDigits , 16 ) ;
return codePointToSymbol ( codePoint , strict ) ;
}
if ( $5 ) {
// Decode named character references with trailing `;`, e.g. `©`.
reference = $5 ;
if ( has ( decodeMap , reference ) ) {
return decodeMap [ reference ] ;
} else {
// Ambiguous ampersand; see http://mths.be/notes/ambiguous-ampersands.
if ( strict ) {
parseError (
'named character reference was not terminated by a semicolon'
) ;
}
return $0 ;
}
}
// If we’ re still here, it’ s a legacy reference for sure. No need for an
// extra `if` check.
// Decode named character references without trailing `;`, e.g. `&`
// This is only a parse error if it gets converted to `&`, or if it is
// followed by `=` in an attribute context.
reference = $6 ;
next = $7 ;
if ( next && options . isAttributeValue ) {
if ( strict && next == '=' ) {
parseError ( '`&` did not start a character reference' ) ;
}
return $0 ;
} else {
if ( strict ) {
parseError (
'named character reference was not terminated by a semicolon'
) ;
}
// Note: there is no need to check `has(decodeMapLegacy, reference)`.
return decodeMapLegacy [ reference ] + ( next || '' ) ;
}
} ) ;
} ;
// Expose default options (so they can be overridden globally).
decode . options = {
'isAttributeValue' : false ,
'strict' : false
} ;
var escape = function ( string ) {
return string . replace ( regexEscape , function ( $0 ) {
// Note: there is no need to check `has(escapeMap, $0)` here.
return escapeMap [ $0 ] ;
} ) ;
} ;
/*--------------------------------------------------------------------------*/
var he = {
'version' : '0.5.0' ,
'encode' : encode ,
'decode' : decode ,
'escape' : escape ,
'unescape' : decode
} ;
// Some AMD build optimizers, like r.js, check for specific condition patterns
// like the following:
if (
typeof define == 'function' &&
typeof define . amd == 'object' &&
define . amd
) {
define ( function ( ) {
return he ;
} ) ;
} else if ( freeExports && ! freeExports . nodeType ) {
if ( freeModule ) { // in Node.js or RingoJS v0.8.0+
freeModule . exports = he ;
} else { // in Narwhal or RingoJS v0.7.0-
for ( var key in he ) {
has ( he , key ) && ( freeExports [ key ] = he [ key ] ) ;
}
}
} else { // in Rhino or a web browser
root . he = he ;
}
} ( this ) ) ;
} ) . call ( this , typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : { } )
} , { } ] , 5 : [ function ( require , module , exports ) {
( function ( global ) {
2014-11-21 08:03:43 +01:00
var graph = require ( './graphDb' ) ;
var flow = require ( './parser/flow' ) ;
2014-11-24 22:03:32 +01:00
var utils = require ( './utils' ) ;
var seq = require ( './sequenceRenderer' ) ;
2014-11-25 22:58:57 +01:00
var he = require ( 'he' ) ;
2014-11-21 08:03:43 +01:00
/ * *
* Function that adds the vertices found in the graph definition to the graph to be rendered .
* @ param vert Object containing the vertices .
* @ param g The graph that is to be drawn .
* /
2014-12-01 20:41:08 +01:00
exports . addVertices = function ( vert , g ) {
2014-11-21 08:03:43 +01:00
var keys = Object . keys ( vert ) ;
2014-11-22 15:34:21 +01:00
var styleFromStyleArr = function ( styleStr , arr ) {
var i ;
// Create a compound style definition from the style definitions found for the node in the graph definition
for ( i = 0 ; i < arr . length ; i ++ ) {
if ( typeof arr [ i ] !== 'undefined' ) {
styleStr = styleStr + arr [ i ] + ';' ;
}
}
return styleStr ;
2014-11-27 21:28:04 +01:00
} ;
2014-11-22 15:34:21 +01:00
2014-11-21 08:03:43 +01:00
// Iterate through each item in the vertice object (containing all the vertices found) in the graph definition
keys . forEach ( function ( id ) {
var vertice = vert [ id ] ;
var verticeText ;
var i ;
2014-11-22 15:34:21 +01:00
2014-11-21 08:03:43 +01:00
var style = '' ;
2014-11-22 15:34:21 +01:00
var classes = graph . getClasses ( ) ;
// Check if class is defined for the node
2014-11-22 17:27:08 +01:00
if ( vertice . classes . length > 0 ) {
for ( i = 0 ; i < vertice . classes . length ; i ++ ) {
style = styleFromStyleArr ( style , classes [ vertice . classes [ i ] ] . styles ) ;
}
}
else {
// Use default classes
style = styleFromStyleArr ( style , classes . default . styles ) ;
2014-11-21 08:03:43 +01:00
}
2014-11-22 15:34:21 +01:00
// Create a compound style definition from the style definitions found for the node in the graph definition
style = styleFromStyleArr ( style , vertice . styles ) ;
2014-11-21 08:03:43 +01:00
// Use vertice id as text in the box if no text is provided by the graph definition
2014-11-28 18:08:36 +01:00
if ( typeof vertice . text === 'undefined' ) {
2014-11-21 08:03:43 +01:00
verticeText = vertice . id ;
}
else {
verticeText = vertice . text ;
}
2014-11-26 18:50:12 +01:00
var radious = 0 ;
var _shape = '' ;
// Set the shape based parameters
switch ( vertice . type ) {
case 'round' :
radious = 5 ;
_shape = 'rect' ;
break ;
case 'square' :
_shape = 'rect' ;
break ;
case 'diamond' :
_shape = 'question' ;
break ;
case 'odd' :
2014-11-27 09:01:54 +01:00
_shape = 'rect_left_inv_arrow' ;
break ;
case 'circle' :
_shape = 'circle' ;
2014-11-26 18:50:12 +01:00
break ;
2014-11-28 18:08:36 +01:00
default :
_shape = 'rect' ;
2014-11-21 08:03:43 +01:00
}
2014-11-26 18:50:12 +01:00
// Add the node
g . setNode ( vertice . id , { labelType : "html" , shape : _shape , label : verticeText , rx : radious , ry : radious , style : style , id : vertice . id } ) ;
2014-11-21 08:03:43 +01:00
} ) ;
} ;
/ * *
* Add edges to graph based on parsed graph defninition
* @ param edges
* @ param g
* /
2014-12-01 20:41:08 +01:00
exports . addEdges = function ( edges , g ) {
2014-11-22 15:34:21 +01:00
var cnt = 0 ;
2014-11-27 21:28:04 +01:00
var aHead ;
2014-11-21 08:03:43 +01:00
edges . forEach ( function ( edge ) {
2014-11-22 15:34:21 +01:00
cnt ++ ;
2014-11-21 08:03:43 +01:00
// Set link type for rendering
if ( edge . type === 'arrow_open' ) {
aHead = 'none' ;
}
else {
aHead = 'vee' ;
}
2014-11-26 20:47:22 +01:00
var style = '' ;
if ( typeof edge . style !== 'undefined' ) {
edge . style . forEach ( function ( s ) {
style = style + s + ';' ;
} ) ;
}
2014-11-21 08:03:43 +01:00
// Add the edge to the graph
2014-11-22 15:34:21 +01:00
if ( typeof edge . text === 'undefined' ) {
2014-11-21 08:03:43 +01:00
if ( typeof edge . style === 'undefined' ) {
2014-11-22 19:06:04 +01:00
g . setEdge ( edge . start , edge . end , { style : "stroke: #333; stroke-width: 1.5px;fill:none" , arrowheadStyle : "fill: #333" , arrowhead : aHead } , cnt ) ;
2014-11-21 08:03:43 +01:00
} else {
g . setEdge ( edge . start , edge . end , {
2014-11-26 20:47:22 +01:00
style : style , arrowheadStyle : "fill: #333" , arrowhead : aHead
2014-11-22 15:34:21 +01:00
} , cnt ) ;
2014-11-21 08:03:43 +01:00
}
}
2014-11-22 15:34:21 +01:00
// Edge with text
2014-11-21 08:03:43 +01:00
else {
2014-11-22 15:34:21 +01:00
2014-11-21 08:03:43 +01:00
if ( typeof edge . style === 'undefined' ) {
2014-11-26 19:03:15 +01:00
g . setEdge ( edge . start , edge . end , { labelType : "html" , style : "stroke: #333; stroke-width: 1.5px;fill:none" , labelpos : 'c' , label : '<span style="background:#e8e8e8">' + edge . text + '</span>' , arrowheadStyle : "fill: #333" , arrowhead : aHead } , cnt ) ;
2014-11-21 08:03:43 +01:00
} else {
g . setEdge ( edge . start , edge . end , {
2014-11-26 20:47:22 +01:00
labelType : "html" , style : style , arrowheadStyle : "fill: #333" , label : edge . text , arrowhead : aHead
2014-11-22 15:34:21 +01:00
} , cnt ) ;
2014-11-21 08:03:43 +01:00
}
}
} ) ;
} ;
/ * *
2014-11-24 22:03:32 +01:00
* Draws a flowchart in the tag with id : id based on the graph definition in text .
2014-11-21 08:03:43 +01:00
* @ param text
* @ param id
* /
2014-11-24 22:03:32 +01:00
var draw = function ( text , id ) {
2014-11-21 08:03:43 +01:00
graph . clear ( ) ;
flow . parser . yy = graph ;
// Parse the graph definition
flow . parser . parse ( text ) ;
// Fetch the default direction, use TD if none was found
var dir ;
dir = graph . getDirection ( ) ;
if ( typeof dir === 'undefined' ) {
dir = 'TD' ;
}
// Create the input mermaid.graph
2014-11-22 15:34:21 +01:00
var g = new dagreD3 . graphlib . Graph ( { multigraph : true } )
2014-11-21 08:03:43 +01:00
. setGraph ( {
rankdir : dir ,
marginx : 20 ,
marginy : 20
2014-11-22 15:34:21 +01:00
2014-11-21 08:03:43 +01:00
} )
. setDefaultEdgeLabel ( function ( ) {
return { } ;
} ) ;
// Fetch the verices/nodes and edges/links from the parsed graph definition
var vert = graph . getVertices ( ) ;
var edges = graph . getEdges ( ) ;
2014-11-22 17:27:08 +01:00
var classes = graph . getClasses ( ) ;
if ( typeof classes . default === 'undefined' ) {
classes . default = { id : 'default' } ;
classes . default . styles = [ 'fill:#eaeaea' , 'stroke:#666' , 'stroke-width:1.5px' ] ;
}
2014-12-01 20:41:08 +01:00
exports . addVertices ( vert , g ) ;
exports . addEdges ( edges , g ) ;
2014-11-21 08:03:43 +01:00
// Create the renderer
var render = new dagreD3 . render ( ) ;
// Add custom shape for rhombus type of boc (decision)
render . shapes ( ) . question = function ( parent , bbox , node ) {
var w = bbox . width ,
2014-11-27 09:01:54 +01:00
h = bbox . height ,
s = ( w + h ) * 0.8 ,
2014-11-21 08:03:43 +01:00
points = [
2014-11-27 09:01:54 +01:00
{ x : s / 2 , y : 0 } ,
{ x : s , y : - s / 2 } ,
{ x : s / 2 , y : - s } ,
{ x : 0 , y : - s / 2 }
2014-11-21 08:03:43 +01:00
] ;
shapeSvg = parent . insert ( "polygon" , ":first-child" )
. attr ( "points" , points . map ( function ( d ) {
return d . x + "," + d . y ;
} ) . join ( " " ) )
. style ( "fill" , "#fff" )
. style ( "stroke" , "#333" )
. attr ( "rx" , 5 )
. attr ( "ry" , 5 )
2014-11-27 09:01:54 +01:00
. attr ( "transform" , "translate(" + ( - s / 2 ) + "," + ( s * 2 / 4 ) + ")" ) ;
node . intersect = function ( point ) {
return dagreD3 . intersect . polygon ( node , points , point ) ;
} ;
return shapeSvg ;
} ;
// Add custom shape for box with inverted arrow on left side
render . shapes ( ) . rect _left _inv _arrow = function ( parent , bbox , node ) {
var w = bbox . width ,
h = bbox . height ,
points = [
{ x : - h / 2 , y : 0 } ,
{ x : w , y : 0 } ,
{ x : w , y : - h } ,
{ x : - h / 2 , y : - h } ,
{ x : 0 , y : - h / 2 } ,
] ;
shapeSvg = parent . insert ( "polygon" , ":first-child" )
. attr ( "points" , points . map ( function ( d ) {
return d . x + "," + d . y ;
} ) . join ( " " ) )
. style ( "fill" , "#fff" )
. style ( "stroke" , "#333" )
2014-11-21 08:03:43 +01:00
. attr ( "transform" , "translate(" + ( - w / 2 ) + "," + ( h * 2 / 4 ) + ")" ) ;
node . intersect = function ( point ) {
return dagreD3 . intersect . polygon ( node , points , point ) ;
} ;
return shapeSvg ;
} ;
// Add our custom arrow - an empty arrowhead
render . arrows ( ) . none = function normal ( parent , id , edge , type ) {
var marker = parent . append ( "marker" )
. attr ( "id" , id )
. attr ( "viewBox" , "0 0 10 10" )
. attr ( "refX" , 9 )
. attr ( "refY" , 5 )
. attr ( "markerUnits" , "strokeWidth" )
. attr ( "markerWidth" , 8 )
. attr ( "markerHeight" , 6 )
. attr ( "orient" , "auto" ) ;
var path = marker . append ( "path" )
. attr ( "d" , "M 0 0 L 0 0 L 0 0 z" ) ;
dagreD3 . util . applyStyle ( path , edge [ type + "Style" ] ) ;
} ;
// Set up an SVG group so that we can translate the final graph.
var svg = d3 . select ( "#" + id ) ;
svgGroup = d3 . select ( "#" + id + " g" ) ;
// Run the renderer. This is what draws the final graph.
render ( d3 . select ( "#" + id + " g" ) , g ) ;
// Center the graph
var xCenterOffset = ( svg . attr ( "width" ) - g . graph ( ) . width ) / 2 ;
//svgGroup.attr("transform", "translate(" + xCenterOffset + ", 20)");
svg . attr ( "height" , g . graph ( ) . height + 40 ) ;
} ;
/ * *
* Go through the document and find the chart definitions in there and render the charts
* /
var init = function ( ) {
var arr = document . querySelectorAll ( '.mermaid' ) ;
var cnt = 0 ;
for ( i = 0 ; i < arr . length ; i ++ ) {
var element = arr [ i ] ;
var id ;
id = 'mermaidChart' + cnt ;
cnt ++ ;
2014-11-25 22:58:57 +01:00
var txt = element . innerHTML ;
txt = txt . replace ( />/g , '>' ) ;
txt = txt . replace ( /</g , '<' ) ;
txt = he . decode ( txt ) . trim ( ) ;
2014-11-21 08:03:43 +01:00
element . innerHTML = '<svg id="' + id + '" width="100%">' +
'<g />' +
'</svg>' ;
2014-11-25 22:58:57 +01:00
if ( utils . detectType ( txt ) === 'graph' ) {
draw ( txt , id ) ;
2014-11-24 22:03:32 +01:00
graph . bindFunctions ( ) ;
}
else {
2014-11-25 22:58:57 +01:00
seq . draw ( txt , id ) ;
2014-11-24 22:03:32 +01:00
}
2014-11-21 08:03:43 +01:00
}
2014-11-27 21:28:04 +01:00
2014-11-21 08:03:43 +01:00
} ;
2014-11-28 18:08:36 +01:00
exports . tester = function ( ) { } ;
2014-11-21 08:03:43 +01:00
/ * *
* Version management
* @ returns { string }
* /
exports . version = function ( ) {
2014-12-01 21:12:14 +01:00
return '0.2.10' ;
2014-11-27 21:28:04 +01:00
} ;
2014-11-21 08:03:43 +01:00
var equals = function ( val , variable ) {
2014-11-25 22:58:57 +01:00
if ( typeof variable === 'undefined' ) {
2014-11-21 08:03:43 +01:00
return false ;
}
else {
return ( val === variable ) ;
}
} ;
/ * *
* Wait for coument loaded before starting the execution
* /
document . addEventListener ( 'DOMContentLoaded' , function ( ) {
// Check presence of config object
if ( typeof mermaid _config !== 'undefined' ) {
// Check if property startOnLoad is set
if ( equals ( true , mermaid _config . startOnLoad ) ) {
init ( ) ;
}
}
else {
// No config found, do autostart in this simple case
init ( ) ;
}
} , false ) ;
global . mermaid = {
init : function ( ) {
init ( ) ;
} ,
version : function ( ) {
2014-11-22 10:02:38 +01:00
return exports . version ( ) ;
2014-11-21 08:03:43 +01:00
}
} ;
} ) . call ( this , typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : { } )
2014-11-25 22:58:57 +01:00
} , { "./graphDb" : 6 , "./parser/flow" : 7 , "./sequenceRenderer" : 10 , "./utils" : 11 , "he" : 4 } ] , 6 : [ function ( require , module , exports ) {
2014-11-21 08:03:43 +01:00
/ * *
* Created by knut on 14 - 11 - 03.
* /
var vertices = { } ;
var edges = [ ] ;
2014-11-22 15:34:21 +01:00
var classes = [ ] ;
2014-11-21 08:03:43 +01:00
var direction ;
2014-11-24 22:03:32 +01:00
// Functions to be run after graph rendering
var funs = [ ] ;
2014-11-21 08:03:43 +01:00
/ * *
* Function called by parser when a node definition has been found
* @ param id
* @ param text
* @ param type
* @ param style
* /
exports . addVertex = function ( id , text , type , style ) {
2014-11-22 15:34:21 +01:00
//console.log('Got node ' + id + ' ' + type + ' ' + text + ' styles: ' + JSON.stringify(style));
2014-11-21 08:03:43 +01:00
if ( typeof vertices [ id ] === 'undefined' ) {
2014-11-22 15:34:21 +01:00
vertices [ id ] = { id : id , styles : [ ] , classes : [ ] } ;
2014-11-21 08:03:43 +01:00
}
if ( typeof text !== 'undefined' ) {
vertices [ id ] . text = text ;
}
if ( typeof type !== 'undefined' ) {
vertices [ id ] . type = type ;
}
2014-11-22 15:34:21 +01:00
if ( typeof type !== 'undefined' ) {
vertices [ id ] . type = type ;
}
2014-11-21 08:03:43 +01:00
if ( typeof style !== 'undefined' ) {
if ( style !== null ) {
style . forEach ( function ( s ) {
vertices [ id ] . styles . push ( s ) ;
} ) ;
}
}
} ;
/ * *
* Function called by parser when a link / edge definition has been found
* @ param start
* @ param end
* @ param type
* @ param linktext
* /
exports . addLink = function ( start , end , type , linktext ) {
var edge = { start : start , end : end , type : undefined , text : '' } ;
var linktext = type . text ;
if ( typeof linktext !== 'undefined' ) {
edge . text = linktext ;
}
if ( typeof type !== 'undefined' ) {
edge . type = type . type ;
}
edges . push ( edge ) ;
} ;
/ * *
* Updates a link with a style
* @ param pos
* @ param style
* /
exports . updateLink = function ( pos , style ) {
var position = pos . substr ( 1 ) ;
2014-11-26 20:47:22 +01:00
edges [ pos ] . style = style ;
2014-11-21 08:03:43 +01:00
} ;
2014-11-22 15:34:21 +01:00
exports . addClass = function ( id , style ) {
if ( typeof classes [ id ] === 'undefined' ) {
classes [ id ] = { id : id , styles : [ ] } ;
}
if ( typeof style !== 'undefined' ) {
if ( style !== null ) {
style . forEach ( function ( s ) {
classes [ id ] . styles . push ( s ) ;
} ) ;
}
}
} ;
2014-11-21 08:03:43 +01:00
/ * *
* Called by parser when a graph definition is found , stores the direction of the chart .
* @ param dir
* /
exports . setDirection = function ( dir ) {
direction = dir ;
} ;
2014-11-22 15:34:21 +01:00
/ * *
* Called by parser when a graph definition is found , stores the direction of the chart .
* @ param dir
* /
exports . setClass = function ( id , className ) {
if ( id . indexOf ( ',' ) > 0 ) {
id . split ( ',' ) . forEach ( function ( id2 ) {
if ( typeof vertices [ id2 ] !== 'undefined' ) {
vertices [ id2 ] . classes . push ( className ) ;
}
} ) ;
} else {
if ( typeof vertices [ id ] !== 'undefined' ) {
vertices [ id ] . classes . push ( className ) ;
}
}
} ;
2014-11-24 22:03:32 +01:00
/ * *
* Called by parser when a graph definition is found , stores the direction of the chart .
* @ param dir
* /
exports . setClickEvent = function ( id , functionName ) {
if ( id . indexOf ( ',' ) > 0 ) {
id . split ( ',' ) . forEach ( function ( id2 ) {
if ( typeof vertices [ id2 ] !== 'undefined' ) {
funs . push ( function ( ) {
var elem = document . getElementById ( id2 ) ;
if ( elem !== null ) {
elem . onclick = function ( ) {
eval ( functionName + '(\'' + id2 + '\')' ) ;
} ;
}
} ) ;
}
} ) ;
} else {
//console.log('Checking now for ::'+id);
if ( typeof vertices [ id ] !== 'undefined' ) {
funs . push ( function ( ) {
var elem = document . getElementById ( id ) ;
if ( elem !== null ) {
//console.log('id was NOT null: '+id);
elem . onclick = function ( ) { eval ( functionName + '(\'' + id + '\')' ) ; } ;
}
else {
//console.log('id was null: '+id);
}
} ) ;
}
}
} ;
exports . bindFunctions = function ( ) {
//setTimeout(function(){
funs . forEach ( function ( fun ) {
fun ( ) ;
} ) ;
//},1000);
2014-11-22 15:34:21 +01:00
2014-11-24 22:03:32 +01:00
} ;
2014-11-21 08:03:43 +01:00
exports . getDirection = function ( ) {
return direction ;
} ;
/ * *
* Retrieval function for fetching the found nodes after parsing has completed .
* @ returns { { } | * | vertices }
* /
exports . getVertices = function ( ) {
return vertices ;
} ;
/ * *
* Retrieval function for fetching the found links after parsing has completed .
* @ returns { { } | * | edges }
* /
exports . getEdges = function ( ) {
return edges ;
} ;
2014-11-22 15:34:21 +01:00
/ * *
* Retrieval function for fetching the found class definitions after parsing has completed .
* @ returns { { } | * | classes }
* /
exports . getClasses = function ( ) {
return classes ;
} ;
2014-11-21 08:03:43 +01:00
/ * *
* Clears the internal graph db so that a new graph can be parsed .
* /
exports . clear = function ( ) {
vertices = { } ;
2014-11-22 15:34:21 +01:00
classes = { } ;
2014-11-21 08:03:43 +01:00
edges = [ ] ;
2014-11-24 22:03:32 +01:00
funs = [ ] ;
2014-11-21 08:03:43 +01:00
} ;
/ * *
*
* @ returns { string }
* /
exports . defaultStyle = function ( ) {
return "fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;" ;
} ;
2014-11-25 22:58:57 +01:00
} , { } ] , 7 : [ function ( require , module , exports ) {
2014-11-21 08:03:43 +01:00
( function ( process ) {
2014-11-13 19:53:31 +01:00
/* parser generated by jison 0.4.15 */
/ *
Returns a Parser object of the following structure :
Parser : {
yy : { }
}
Parser . prototype : {
yy : { } ,
trace : function ( ) ,
symbols _ : { associative list : name == > number } ,
terminals _ : { associative list : number == > name } ,
productions _ : [ ... ] ,
performAction : function anonymous ( yytext , yyleng , yylineno , yy , yystate , $$ , _$ ) ,
table : [ ... ] ,
defaultActions : { ... } ,
parseError : function ( str , hash ) ,
parse : function ( input ) ,
lexer : {
EOF : 1 ,
parseError : function ( str , hash ) ,
setInput : function ( input ) ,
input : function ( ) ,
unput : function ( str ) ,
more : function ( ) ,
less : function ( n ) ,
pastInput : function ( ) ,
upcomingInput : function ( ) ,
showPosition : function ( ) ,
test _match : function ( regex _match _array , rule _index ) ,
next : function ( ) ,
lex : function ( ) ,
begin : function ( condition ) ,
popState : function ( ) ,
_currentRules : function ( ) ,
topState : function ( ) ,
pushState : function ( condition ) ,
options : {
ranges : boolean ( optional : true == > token location info will include a . range [ ] member )
flex : boolean ( optional : true == > flex - like lexing behaviour where the rules are tested exhaustively to find the longest match )
backtrack _lexer : boolean ( optional : true == > lexer regexes are tested in order and for each matching regex the action code is invoked ; the lexer terminates the scan when a token is returned by the action code )
} ,
performAction : function ( yy , yy _ , $avoiding _name _collisions , YY _START ) ,
rules : [ ... ] ,
conditions : { associative list : name == > set } ,
}
}
token location info ( @ $ , _$ , etc . ) : {
first _line : n ,
last _line : n ,
first _column : n ,
last _column : n ,
range : [ start _number , end _number ] ( where the numbers are indexes into the input string , regular zero - based )
}
the parseError function receives a 'hash' object with these members for lexer and parser errors : {
text : ( matched text )
token : ( the produced terminal token , if any )
line : ( yylineno )
}
while parser ( grammar ) errors will also provide these members , i . e . parser errors deliver a superset of attributes : {
loc : ( yylloc )
expected : ( string describing the set of expected tokens )
recoverable : ( boolean : TRUE when the parser has a error recovery rule available for this particular error )
}
* /
var parser = ( function ( ) {
2014-11-27 18:21:15 +01:00
var o = function ( k , v , o , l ) { for ( o = o || { } , l = k . length ; l -- ; o [ k [ l ] ] = v ) ; return o } , $V0 = [ 1 , 7 ] , $V1 = [ 1 , 23 ] , $V2 = [ 1 , 24 ] , $V3 = [ 1 , 25 ] , $V4 = [ 1 , 26 ] , $V5 = [ 1 , 27 ] , $V6 = [ 1 , 28 ] , $V7 = [ 1 , 29 ] , $V8 = [ 1 , 30 ] , $V9 = [ 1 , 31 ] , $Va = [ 1 , 17 ] , $Vb = [ 1 , 18 ] , $Vc = [ 1 , 19 ] , $Vd = [ 1 , 15 ] , $Ve = [ 1 , 16 ] , $Vf = [ 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 54 , 56 , 57 , 58 , 60 ] , $Vg = [ 11 , 45 , 46 , 47 , 48 ] , $Vh = [ 9 , 11 , 22 , 25 , 27 , 29 , 30 , 45 , 46 , 47 , 48 ] , $Vi = [ 9 , 11 , 22 , 25 , 27 , 29 , 30 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 45 , 46 , 47 , 48 ] , $Vj = [ 9 , 11 , 22 , 25 , 27 , 29 , 30 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 45 , 46 , 47 , 48 ] , $Vk = [ 6 , 9 ] , $Vl = [ 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 ] , $Vm = [ 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 49 ] , $Vn = [ 1 , 86 ] , $Vo = [ 1 , 84 ] , $Vp = [ 1 , 83 ] , $Vq = [ 1 , 87 ] , $Vr = [ 1 , 75 ] , $Vs = [ 1 , 76 ] , $Vt = [ 1 , 77 ] , $Vu = [ 1 , 78 ] , $Vv = [ 1 , 79 ] , $Vw = [ 1 , 80 ] , $Vx = [ 1 , 81 ] , $Vy = [ 1 , 82 ] , $Vz = [ 1 , 85 ] , $VA = [ 9 , 24 , 26 , 28 , 29 , 30 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 49 ] , $VB = [ 2 , 56 ] , $VC = [ 1 , 118 ] , $VD = [ 1 , 115 ] , $VE = [ 1 , 113 ] , $VF = [ 1 , 116 ] , $VG = [ 1 , 114 ] , $VH = [ 1 , 121 ] , $VI = [ 1 , 120 ] , $VJ = [ 1 , 119 ] , $VK = [ 1 , 117 ] , $VL = [ 2 , 21 ] , $VM = [ 1 , 128 ] , $VN = [ 11 , 37 ] , $VO = [ 9 , 11 , 33 , 34 , 35 , 36 , 37 , 41 , 42 , 59 , 63 ] ;
2014-11-13 19:53:31 +01:00
var parser = { trace : function trace ( ) { } ,
yy : { } ,
2014-11-26 20:47:22 +01:00
symbols _ : { "error" : 2 , "expressions" : 3 , "graphConfig" : 4 , "statements" : 5 , "EOF" : 6 , "spaceList" : 7 , "GRAPH" : 8 , "SPACE" : 9 , "DIR" : 10 , "SEMI" : 11 , "statement" : 12 , "verticeStatement" : 13 , "styleStatement" : 14 , "linkStyleStatement" : 15 , "classDefStatement" : 16 , "classStatement" : 17 , "clickStatement" : 18 , "vertex" : 19 , "link" : 20 , "alphaNum" : 21 , "SQS" : 22 , "text" : 23 , "SQE" : 24 , "PS" : 25 , "PE" : 26 , "DIAMOND_START" : 27 , "DIAMOND_STOP" : 28 , "TAGEND" : 29 , "TAGSTART" : 30 , "alphaNumStatement" : 31 , "alphaNumToken" : 32 , "MINUS" : 33 , "ALPHA" : 34 , "NUM" : 35 , "COLON" : 36 , "COMMA" : 37 , "PLUS" : 38 , "EQUALS" : 39 , "MULT" : 40 , "DOT" : 41 , "BRKT" : 42 , "linkStatement" : 43 , "arrowText" : 44 , "ARROW_POINT" : 45 , "ARROW_CIRCLE" : 46 , "ARROW_CROSS" : 47 , "ARROW_OPEN" : 48 , "PIPE" : 49 , "textToken" : 50 , "textStatement" : 51 , "textNoTags" : 52 , "textNoTagsToken" : 53 , "CLASSDEF" : 54 , "stylesOpt" : 55 , "CLASS" : 56 , "CLICK" : 57 , "STYLE" : 58 , "HEX" : 59 , "LINKSTYLE" : 60 , "style" : 61 , "styleComponent" : 62 , "UNIT" : 63 , "$accept" : 0 , "$end" : 1 } ,
terminals _ : { 2 : "error" , 6 : "EOF" , 8 : "GRAPH" , 9 : "SPACE" , 10 : "DIR" , 11 : "SEMI" , 22 : "SQS" , 24 : "SQE" , 25 : "PS" , 26 : "PE" , 27 : "DIAMOND_START" , 28 : "DIAMOND_STOP" , 29 : "TAGEND" , 30 : "TAGSTART" , 33 : "MINUS" , 34 : "ALPHA" , 35 : "NUM" , 36 : "COLON" , 37 : "COMMA" , 38 : "PLUS" , 39 : "EQUALS" , 40 : "MULT" , 41 : "DOT" , 42 : "BRKT" , 45 : "ARROW_POINT" , 46 : "ARROW_CIRCLE" , 47 : "ARROW_CROSS" , 48 : "ARROW_OPEN" , 49 : "PIPE" , 54 : "CLASSDEF" , 56 : "CLASS" , 57 : "CLICK" , 58 : "STYLE" , 59 : "HEX" , 60 : "LINKSTYLE" , 63 : "UNIT" } ,
2014-11-27 18:21:15 +01:00
productions _ : [ 0 , [ 3 , 3 ] , [ 3 , 4 ] , [ 4 , 4 ] , [ 5 , 3 ] , [ 5 , 1 ] , [ 7 , 2 ] , [ 7 , 1 ] , [ 12 , 2 ] , [ 12 , 2 ] , [ 12 , 2 ] , [ 12 , 2 ] , [ 12 , 2 ] , [ 12 , 2 ] , [ 13 , 3 ] , [ 13 , 1 ] , [ 19 , 4 ] , [ 19 , 6 ] , [ 19 , 4 ] , [ 19 , 4 ] , [ 19 , 4 ] , [ 19 , 4 ] , [ 19 , 1 ] , [ 21 , 1 ] , [ 21 , 2 ] , [ 31 , 1 ] , [ 31 , 3 ] , [ 32 , 1 ] , [ 32 , 1 ] , [ 32 , 1 ] , [ 32 , 1 ] , [ 32 , 1 ] , [ 32 , 1 ] , [ 32 , 1 ] , [ 32 , 1 ] , [ 32 , 1 ] , [ 20 , 2 ] , [ 20 , 1 ] , [ 43 , 1 ] , [ 43 , 1 ] , [ 43 , 1 ] , [ 43 , 1 ] , [ 44 , 3 ] , [ 23 , 1 ] , [ 23 , 2 ] , [ 51 , 1 ] , [ 51 , 2 ] , [ 50 , 1 ] , [ 50 , 1 ] , [ 50 , 1 ] , [ 50 , 1 ] , [ 50 , 1 ] , [ 50 , 1 ] , [ 50 , 1 ] , [ 50 , 1 ] , [ 50 , 1 ] , [ 50 , 1 ] , [ 50 , 1 ] , [ 50 , 1 ] , [ 50 , 1 ] , [ 52 , 1 ] , [ 52 , 2 ] , [ 53 , 1 ] , [ 53 , 1 ] , [ 53 , 1 ] , [ 53 , 1 ] , [ 53 , 1 ] , [ 53 , 1 ] , [ 53 , 1 ] , [ 53 , 1 ] , [ 53 , 1 ] , [ 53 , 1 ] , [ 53 , 1 ] , [ 16 , 5 ] , [ 17 , 5 ] , [ 18 , 5 ] , [ 14 , 5 ] , [ 14 , 5 ] , [ 15 , 5 ] , [ 55 , 1 ] , [ 55 , 3 ] , [ 61 , 1 ] , [ 61 , 2 ] , [ 62 , 1 ] , [ 62 , 1 ] , [ 62 , 1 ] , [ 62 , 1 ] , [ 62 , 1 ] , [ 62 , 1 ] , [ 62 , 1 ] , [ 62 , 1 ] , [ 62 , 1 ] ] ,
2014-11-13 19:53:31 +01:00
performAction : function anonymous ( yytext , yyleng , yylineno , yy , yystate /* action[1] */ , $$ /* vstack */ , _$ /* lstack */ ) {
/* this == yyval */
var $0 = $$ . length - 1 ;
switch ( yystate ) {
2014-11-15 21:28:26 +01:00
case 2 :
this . $ = $$ [ $0 - 3 ] ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-15 21:28:26 +01:00
case 3 :
2014-11-21 08:03:43 +01:00
yy . setDirection ( $$ [ $0 - 1 ] ) ; this . $ = $$ [ $0 - 1 ] ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 14 :
2014-11-21 08:03:43 +01:00
yy . addLink ( $$ [ $0 - 2 ] , $$ [ $0 ] , $$ [ $0 - 1 ] ) ; this . $ = 'oy'
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 15 :
2014-11-21 08:03:43 +01:00
this . $ = 'yo' ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 16 :
2014-11-15 21:28:26 +01:00
this . $ = $$ [ $0 - 3 ] ; yy . addVertex ( $$ [ $0 - 3 ] , $$ [ $0 - 1 ] , 'square' ) ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 17 :
2014-11-27 18:21:15 +01:00
this . $ = $$ [ $0 - 5 ] ; yy . addVertex ( $$ [ $0 - 5 ] , $$ [ $0 - 2 ] , 'circle' ) ;
break ;
case 18 :
2014-11-15 21:28:26 +01:00
this . $ = $$ [ $0 - 3 ] ; yy . addVertex ( $$ [ $0 - 3 ] , $$ [ $0 - 1 ] , 'round' ) ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-27 18:21:15 +01:00
case 19 : case 21 :
2014-11-15 21:28:26 +01:00
this . $ = $$ [ $0 - 3 ] ; yy . addVertex ( $$ [ $0 - 3 ] , $$ [ $0 - 1 ] , 'diamond' ) ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-27 18:21:15 +01:00
case 20 :
2014-11-25 22:58:57 +01:00
this . $ = $$ [ $0 - 3 ] ; yy . addVertex ( $$ [ $0 - 3 ] , $$ [ $0 - 1 ] , 'odd' ) ;
break ;
2014-11-27 18:21:15 +01:00
case 22 :
2014-11-21 08:03:43 +01:00
this . $ = $$ [ $0 ] ; yy . addVertex ( $$ [ $0 ] ) ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-27 18:21:15 +01:00
case 23 : case 25 : case 27 : case 28 : case 43 : case 47 : case 48 : case 60 : case 62 : case 63 : case 81 :
2014-11-16 09:02:03 +01:00
this . $ = $$ [ $0 ] ;
break ;
2014-11-27 18:21:15 +01:00
case 24 : case 44 : case 61 :
2014-11-16 09:02:03 +01:00
this . $ = $$ [ $0 - 1 ] + '' + $$ [ $0 ] ;
break ;
2014-11-27 18:21:15 +01:00
case 26 :
2014-11-16 10:35:18 +01:00
this . $ = $$ [ $0 - 2 ] + '-' + $$ [ $0 ] ;
break ;
2014-11-27 18:21:15 +01:00
case 29 : case 30 : case 31 : case 32 : case 33 : case 34 : case 37 : case 49 : case 50 : case 51 : case 52 : case 53 : case 54 : case 55 : case 56 : case 58 : case 59 : case 64 : case 65 : case 66 : case 67 : case 68 : case 69 : case 71 : case 72 :
2014-11-13 19:53:31 +01:00
this . $ = $$ [ $0 ] ;
break ;
2014-11-27 18:21:15 +01:00
case 35 : case 57 : case 70 :
2014-11-25 18:58:47 +01:00
this . $ = '<br>' ;
break ;
2014-11-27 18:21:15 +01:00
case 36 :
2014-11-22 10:02:38 +01:00
$$ [ $0 - 1 ] . text = $$ [ $0 ] ; this . $ = $$ [ $0 - 1 ] ;
break ;
2014-11-27 18:21:15 +01:00
case 38 :
2014-11-13 19:53:31 +01:00
this . $ = { "type" : "arrow" } ;
break ;
2014-11-27 18:21:15 +01:00
case 39 :
2014-11-13 19:53:31 +01:00
this . $ = { "type" : "arrow_circle" } ;
break ;
2014-11-27 18:21:15 +01:00
case 40 :
2014-11-13 19:53:31 +01:00
this . $ = { "type" : "arrow_cross" } ;
break ;
2014-11-27 18:21:15 +01:00
case 41 :
2014-11-13 19:53:31 +01:00
this . $ = { "type" : "arrow_open" } ;
break ;
2014-11-27 18:21:15 +01:00
case 42 :
2014-11-21 08:03:43 +01:00
this . $ = $$ [ $0 - 1 ] ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-27 18:21:15 +01:00
case 73 :
2014-11-22 15:34:21 +01:00
this . $ = $$ [ $0 - 4 ] ; yy . addClass ( $$ [ $0 - 2 ] , $$ [ $0 ] ) ;
break ;
2014-11-27 18:21:15 +01:00
case 74 :
2014-11-22 15:34:21 +01:00
this . $ = $$ [ $0 - 4 ] ; yy . setClass ( $$ [ $0 - 2 ] , $$ [ $0 ] ) ;
break ;
2014-11-27 18:21:15 +01:00
case 75 :
2014-11-24 22:03:32 +01:00
this . $ = $$ [ $0 - 4 ] ; yy . setClickEvent ( $$ [ $0 - 2 ] , $$ [ $0 ] ) ;
break ;
2014-11-27 18:21:15 +01:00
case 76 :
2014-11-15 21:28:26 +01:00
this . $ = $$ [ $0 - 4 ] ; yy . addVertex ( $$ [ $0 - 2 ] , undefined , undefined , $$ [ $0 ] ) ;
break ;
2014-11-27 18:21:15 +01:00
case 77 : case 78 :
2014-11-21 08:03:43 +01:00
this . $ = $$ [ $0 - 4 ] ; yy . updateLink ( $$ [ $0 - 2 ] , $$ [ $0 ] ) ;
2014-11-15 21:28:26 +01:00
break ;
2014-11-27 18:21:15 +01:00
case 79 :
2014-11-15 21:28:26 +01:00
this . $ = [ $$ [ $0 ] ]
break ;
2014-11-27 18:21:15 +01:00
case 80 :
2014-11-15 21:28:26 +01:00
$$ [ $0 - 2 ] . push ( $$ [ $0 ] ) ; this . $ = $$ [ $0 - 2 ] ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-27 18:21:15 +01:00
case 82 :
2014-11-15 21:28:26 +01:00
this . $ = $$ [ $0 - 1 ] + $$ [ $0 ] ;
break ;
2014-11-27 18:21:15 +01:00
case 83 : case 84 : case 85 : case 86 : case 87 : case 88 : case 89 : case 90 : case 91 :
2014-11-15 21:28:26 +01:00
this . $ = $$ [ $0 ]
2014-11-13 19:53:31 +01:00
break ;
}
} ,
2014-11-27 18:21:15 +01:00
table : [ { 3 : 1 , 4 : 2 , 8 : [ 1 , 3 ] } , { 1 : [ 3 ] } , { 5 : 4 , 7 : 5 , 9 : $V0 , 12 : 6 , 13 : 8 , 14 : 9 , 15 : 10 , 16 : 11 , 17 : 12 , 18 : 13 , 19 : 14 , 21 : 20 , 31 : 21 , 32 : 22 , 34 : $V1 , 35 : $V2 , 36 : $V3 , 37 : $V4 , 38 : $V5 , 39 : $V6 , 40 : $V7 , 41 : $V8 , 42 : $V9 , 54 : $Va , 56 : $Vb , 57 : $Vc , 58 : $Vd , 60 : $Ve } , { 9 : [ 1 , 32 ] } , { 6 : [ 1 , 33 ] } , { 5 : 34 , 12 : 6 , 13 : 8 , 14 : 9 , 15 : 10 , 16 : 11 , 17 : 12 , 18 : 13 , 19 : 14 , 21 : 20 , 31 : 21 , 32 : 22 , 34 : $V1 , 35 : $V2 , 36 : $V3 , 37 : $V4 , 38 : $V5 , 39 : $V6 , 40 : $V7 , 41 : $V8 , 42 : $V9 , 54 : $Va , 56 : $Vb , 57 : $Vc , 58 : $Vd , 60 : $Ve } , { 6 : [ 2 , 5 ] , 7 : 35 , 9 : $V0 } , o ( $Vf , [ 2 , 7 ] , { 7 : 36 , 9 : $V0 } ) , { 11 : [ 1 , 37 ] } , { 11 : [ 1 , 38 ] } , { 11 : [ 1 , 39 ] } , { 11 : [ 1 , 40 ] } , { 11 : [ 1 , 41 ] } , { 11 : [ 1 , 42 ] } , { 11 : [ 2 , 15 ] , 20 : 43 , 43 : 44 , 45 : [ 1 , 45 ] , 46 : [ 1 , 46 ] , 47 : [ 1 , 47 ] , 48 : [ 1 , 48 ] } , { 9 : [ 1 , 49 ] } , { 9 : [ 1 , 50 ] } , { 9 : [ 1 , 51 ] } , { 9 : [ 1 , 52 ] } , { 9 : [ 1 , 53 ] } , o ( $Vg , [ 2 , 22 ] , { 22 : [ 1 , 54 ] , 25 : [ 1 , 55 ] , 27 : [ 1 , 56 ] , 29 : [ 1 , 57 ] , 30 : [ 1 , 58 ] } ) , o ( $Vh , [ 2 , 23 ] , { 31 : 21 , 32 : 22 , 21 : 59 , 34 : $V1 , 35 : $V2 , 36 : $V3 , 37 : $V4 , 38 : $V5 , 39 : $V6 , 40 : $V7 , 41 : $V8 , 42 : $V9 } ) , o ( $Vi , [ 2 , 25 ] , { 33 : [ 1 , 60 ] } ) , o ( $Vj , [ 2 , 27 ] ) , o ( $Vj , [ 2 , 28 ] ) , o ( $Vj , [ 2 , 29 ] ) , o ( $Vj , [ 2 , 30 ] ) , o ( $Vj , [ 2 , 31 ] ) , o ( $Vj , [ 2 , 32 ] ) , o ( $Vj , [ 2 , 33 ] ) , o ( $Vj , [ 2 , 34 ] ) , o ( $Vj , [ 2 , 35 ] ) , { 10 : [ 1 , 61 ] } , { 1 : [ 2 , 1 ] } , { 6 : [ 1 , 62 ] } , { 5 : 63 , 12 : 6 , 13 : 8 , 14 : 9 , 15 : 10 , 16 : 11 , 17 : 12 , 18 : 13 , 19 : 14 , 21 : 20 , 31 : 21 , 32 : 22 , 34 : $V1 , 35 : $V2 , 36 : $V3 , 37 : $V4 , 38 : $V5 , 39 : $V6 , 40 : $V7 , 41 : $V8 , 42 : $V9 , 54 : $Va , 56 : $Vb , 57 : $Vc , 58 : $Vd , 60 : $Ve } , o ( $Vf , [ 2 , 6 ] ) , o ( $Vk , [ 2 , 8 ] ) , o ( $Vk , [ 2 , 9 ] ) , o ( $Vk , [ 2 , 10 ] ) , o ( $Vk , [ 2 , 11 ] ) , o ( $Vk , [ 2 , 12 ] ) , o ( $Vk , [ 2 , 13 ] ) , { 19 : 64 , 21 : 20 , 31 : 21 , 32 : 22 , 34 : $V1 , 35 : $V2 , 36 : $V3 , 37 : $V4 , 38 : $V5 , 39 : $V6 , 40 : $V7 , 41 : $V8 , 42 : $V9 } , o ( $Vl , [ 2 , 37 ] , { 44 : 65 , 49 : [ 1 , 66 ] } ) , o ( $Vm , [ 2 , 38 ] ) , o ( $Vm , [ 2 , 39 ] ) , o ( $Vm , [ 2 , 40 ] ) , o ( $Vm , [ 2 , 41 ] ) , { 21 : 67 , 31 : 21 , 32 : 22 , 34 : $V1 , 35 : $V2 , 36 : $V3 , 37 : $V4 , 38 : $V5 , 39 : $V6 , 40 : $V7 , 41 : $V8 , 42 : $V9 , 59 : [ 1 , 68 ] } , { 35 : [ 1 , 69 ] } , { 21 : 70 , 31 : 21 , 32 : 22 , 34 : $V1 , 35 : $V2 , 36 : $V3 , 37 : $V4 , 38 : $V5 , 39 : $V6 , 40 : $V7 , 41 : $V8 , 42 : $V9 } , { 21 : 71 , 31 : 21 , 32 : 22 , 34 : $V1 , 35 : $V2 , 36 : $V3 , 37 : $V4 , 38 : $V5 , 39 : $V6 , 40 : $V7 , 41 : $V8 , 42 : $V9 } , { 21 : 72 , 31 : 21 , 32 : 22 , 34 : $V1 , 35 : $V2 , 36 : $V3 , 37 : $V4 , 38 : $V5 , 39 : $V6 , 40 : $V7 , 41 : $V8 , 42 : $V9 } , { 9 : $Vn , 23 : 73 , 29 : $Vo , 30 : $Vp , 33 : $Vq , 34 : $Vr , 35 : $Vs , 36 : $Vt , 37 : $Vu , 38 : $Vv , 39 : $Vw , 40 : $Vx , 41 : $Vy , 42 : $Vz , 50 : 74 } , { 9 : $Vn , 23 : 89 , 25 : [ 1 , 88 ] , 29 : $Vo , 30 : $Vp , 33 : $Vq , 34 : $Vr , 35 : $Vs , 36 : $Vt , 37 : $Vu , 38 : $Vv , 39 : $Vw , 40 : $Vx , 41 : $Vy , 42 : $Vz , 50 : 74 } , { 9 : $Vn , 23 : 90 , 29 : $Vo , 30 : $Vp , 33 : $Vq , 34 : $Vr , 35 : $Vs , 36 : $Vt , 37 : $Vu , 38 : $Vv , 39 : $Vw , 40 : $Vx , 41 : $Vy , 42 : $Vz , 50 : 74 } , { 9 : $Vn , 23 : 91 , 29 : $Vo , 30 : $Vp , 33 : $Vq , 34 : $Vr , 35 : $Vs , 36 : $Vt , 37 : $Vu , 38 : $Vv , 39 : $Vw , 40 : $Vx , 41 : $Vy , 42 : $Vz , 50 : 74 } , { 9 : $Vn , 23 : 92 , 29 : $Vo , 30 : $Vp , 33 : $Vq , 34 : $Vr , 35 : $Vs , 36 : $Vt , 37 : $Vu , 38 : $Vv , 39 : $Vw , 40 : $Vx , 41 : $Vy , 42 : $Vz , 50 : 74 } , o ( $Vh , [ 2 , 24 ] ) , { 32 : 93 , 34 : $V1 , 35 : $V2 , 36 : $V3 , 37 : $V4 , 38 : $V5 , 39 : $V6 , 40 : $V7 , 41 : $V8 , 42 : $V9 } , { 11 : [ 1 , 94 ] } , { 1 : [ 2 , 2 ] } , { 6 : [ 2 , 4 ] } , { 11 : [ 2 , 14 ] } , o ( $Vl , [ 2 , 36 ] ) , { 9 : $Vn , 23 : 95 , 29 : $Vo , 30 : $Vp , 33 : $Vq , 34 : $Vr , 35 : $Vs , 36 : $Vt , 37 : $Vu , 38 : $Vv , 39 : $Vw , 40 : $Vx , 41 : $Vy , 42 : $Vz , 50 : 74 } , { 9 : [ 1 , 96 ] } , { 9 : [ 1 , 97 ] } , { 9 : [ 1 , 98 ] } , { 9 : [ 1 , 99 ] } , { 9 : [ 1 , 100 ] } , { 9 : [ 1 , 101 ] } , { 9 : $Vn , 24 : [ 1 , 102 ] , 29 : $Vo , 30 : $Vp , 33 : $Vq , 34 : $Vr , 35 : $Vs , 36 : $Vt , 37 : $Vu , 38 : $Vv , 39 : $Vw , 40 : $Vx , 41 : $Vy , 42 : $Vz , 50 : 103 } , o ( $VA , [ 2 , 43 ] ) , o ( $VA , [ 2 , 47 ] ) , o ( $VA , [ 2 , 48 ] ) , o ( $VA , [ 2 , 49 ] ) , o ( $VA , [ 2 , 50 ] ) , o ( $VA , [ 2 , 51 ] ) , o ( $VA , [ 2 , 52 ] ) , o ( $VA , [ 2 , 53 ] ) , o ( $VA , [ 2 , 54 ] ) , o ( $VA , [ 2 , 55 ] ) , o ( $VA , $VB ) , o ( $VA , [ 2 , 57 ] ) , o ( $VA , [ 2 , 58 ] ) , o ( $VA , [ 2 , 59 ] ) , { 9 : $Vn , 23 : 104 , 29 : $Vo , 30 : $Vp , 33 : $Vq , 34 : $Vr , 35 : $Vs , 36 : $Vt , 37 : $Vu , 38 : $Vv , 39 : $Vw , 40 : $Vx , 41 : $Vy , 42 : $Vz , 50 : 74 } , { 9 : $Vn , 26 : [ 1 , 105 ] , 29 : $Vo , 30 : $Vp , 33 : $Vq , 34 : $Vr , 35 : $Vs , 36 : $Vt , 37 : $Vu , 38 : $Vv , 39 : $Vw , 40 : $Vx , 41 : $Vy , 42 : $Vz , 50 : 103 } , { 9 : $Vn , 28 : [ 1 , 106 ] , 29 : $Vo , 30 : $Vp , 33 : $Vq , 34 : $Vr , 35 : $Vs , 36 : $Vt , 37 : $Vu , 38 : $Vv , 39 : $Vw , 40 : $Vx , 41 : $Vy , 42 : $Vz , 50 : 103 } , { 9 : $Vn , 24 : [ 1 , 107 ] , 29 : $Vo , 30 : $Vp , 33 : $Vq , 34 : $Vr , 35 : $Vs , 36 : $Vt , 37 : $Vu , 38 : $Vv , 39 : $Vw , 40 : $Vx , 41 : $Vy , 42 : $Vz , 50 : 103 } , { 9 : $Vn , 29 : [ 1 , 108 ] , 30 : $Vp , 33 : $Vq , 34 : $Vr , 35 : $Vs , 36 : $Vt , 37 : $Vu , 38 : $Vv , 39 : $Vw , 40 : $Vx , 41 : $Vy , 42 : $Vz , 50 : 103 } , o ( $Vi , [ 2 , 26 ] ) , o ( [ 9 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 54 , 56 , 57 , 58 , 60 ] , [ 2 , 3 ] ) , { 9 : $Vn , 29 : $Vo , 30 : $Vp , 33 : $Vq , 34 : $Vr , 35 : $Vs , 36 : $Vt , 37 : $Vu , 38 : $Vv , 39 : $Vw , 40 : $Vx , 41 : $Vy , 42 : $Vz , 49 : [ 1 , 109 ] , 50 : 103 } , { 9 : $VC , 33 : $VD , 34 : $VE , 35 : $VF , 36 : $VG , 41 : $VH , 42 : $VI , 55 : 110 , 59 : $VJ , 61 : 111 , 62 : 112 , 63 : $VK } , { 9 : $VC , 33 : $VD , 34 : $VE , 35 : $VF , 36 : $VG , 41 : $VH , 42 : $VI , 55 : 122 , 59 : $VJ , 61 : 111 , 62 : 112 , 63 : $VK } , { 9 : $VC , 33 : $VD , 34 : $VE , 35 : $VF , 36 : $VG , 41 : $VH , 42 : $VI , 55 : 123 , 59 : $VJ , 61 : 111 , 62 : 112 , 63 : $VK } , { 9 : $VC , 33 : $VD , 34 : $VE , 35 : $VF , 36 : $VG , 41 : $VH , 42 : $VI , 55 : 124 , 59 : $VJ , 61 : 111 , 62 : 112 , 63 : $VK } , { 21 : 125 , 31 : 21 , 32 : 22 , 34 : $V1 , 35 : $V2 , 36 : $V3 , 37 : $V4 , 38 : $V5 , 39 : $V6 , 40 : $V7 , 41 : $V8 , 42 : $V9 } , { 21 : 126 , 31 : 21 , 32 : 22 , 34 : $V
defaultActions : { 33 : [ 2 , 1 ] , 62 : [ 2 , 2 ] , 63 : [ 2 , 4 ] , 64 : [ 2 , 14 ] , 125 : [ 2 , 74 ] , 126 : [ 2 , 75 ] } ,
2014-11-13 19:53:31 +01:00
parseError : function parseError ( str , hash ) {
if ( hash . recoverable ) {
this . trace ( str ) ;
} else {
throw new Error ( str ) ;
}
} ,
parse : function parse ( input ) {
var self = this , stack = [ 0 ] , tstack = [ ] , vstack = [ null ] , lstack = [ ] , table = this . table , yytext = '' , yylineno = 0 , yyleng = 0 , recovering = 0 , TERROR = 2 , EOF = 1 ;
var args = lstack . slice . call ( arguments , 1 ) ;
var lexer = Object . create ( this . lexer ) ;
var sharedState = { yy : { } } ;
for ( var k in this . yy ) {
if ( Object . prototype . hasOwnProperty . call ( this . yy , k ) ) {
sharedState . yy [ k ] = this . yy [ k ] ;
}
}
lexer . setInput ( input , sharedState . yy ) ;
sharedState . yy . lexer = lexer ;
sharedState . yy . parser = this ;
if ( typeof lexer . yylloc == 'undefined' ) {
lexer . yylloc = { } ;
}
var yyloc = lexer . yylloc ;
lstack . push ( yyloc ) ;
var ranges = lexer . options && lexer . options . ranges ;
if ( typeof sharedState . yy . parseError === 'function' ) {
this . parseError = sharedState . yy . parseError ;
} else {
this . parseError = Object . getPrototypeOf ( this ) . parseError ;
}
function popStack ( n ) {
stack . length = stack . length - 2 * n ;
vstack . length = vstack . length - n ;
lstack . length = lstack . length - n ;
}
_token _stack :
function lex ( ) {
var token ;
token = lexer . lex ( ) || EOF ;
if ( typeof token !== 'number' ) {
token = self . symbols _ [ token ] || token ;
}
return token ;
}
var symbol , preErrorSymbol , state , action , a , r , yyval = { } , p , len , newState , expected ;
while ( true ) {
state = stack [ stack . length - 1 ] ;
if ( this . defaultActions [ state ] ) {
action = this . defaultActions [ state ] ;
} else {
if ( symbol === null || typeof symbol == 'undefined' ) {
symbol = lex ( ) ;
}
action = table [ state ] && table [ state ] [ symbol ] ;
}
if ( typeof action === 'undefined' || ! action . length || ! action [ 0 ] ) {
var errStr = '' ;
expected = [ ] ;
for ( p in table [ state ] ) {
if ( this . terminals _ [ p ] && p > TERROR ) {
expected . push ( '\'' + this . terminals _ [ p ] + '\'' ) ;
}
}
if ( lexer . showPosition ) {
errStr = 'Parse error on line ' + ( yylineno + 1 ) + ':\n' + lexer . showPosition ( ) + '\nExpecting ' + expected . join ( ', ' ) + ', got \'' + ( this . terminals _ [ symbol ] || symbol ) + '\'' ;
} else {
errStr = 'Parse error on line ' + ( yylineno + 1 ) + ': Unexpected ' + ( symbol == EOF ? 'end of input' : '\'' + ( this . terminals _ [ symbol ] || symbol ) + '\'' ) ;
}
this . parseError ( errStr , {
text : lexer . match ,
token : this . terminals _ [ symbol ] || symbol ,
line : lexer . yylineno ,
loc : yyloc ,
expected : expected
} ) ;
}
if ( action [ 0 ] instanceof Array && action . length > 1 ) {
throw new Error ( 'Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol ) ;
}
switch ( action [ 0 ] ) {
case 1 :
stack . push ( symbol ) ;
vstack . push ( lexer . yytext ) ;
lstack . push ( lexer . yylloc ) ;
stack . push ( action [ 1 ] ) ;
symbol = null ;
if ( ! preErrorSymbol ) {
yyleng = lexer . yyleng ;
yytext = lexer . yytext ;
yylineno = lexer . yylineno ;
yyloc = lexer . yylloc ;
if ( recovering > 0 ) {
recovering -- ;
}
} else {
symbol = preErrorSymbol ;
preErrorSymbol = null ;
}
break ;
case 2 :
len = this . productions _ [ action [ 1 ] ] [ 1 ] ;
yyval . $ = vstack [ vstack . length - len ] ;
yyval . _$ = {
first _line : lstack [ lstack . length - ( len || 1 ) ] . first _line ,
last _line : lstack [ lstack . length - 1 ] . last _line ,
first _column : lstack [ lstack . length - ( len || 1 ) ] . first _column ,
last _column : lstack [ lstack . length - 1 ] . last _column
} ;
if ( ranges ) {
yyval . _$ . range = [
lstack [ lstack . length - ( len || 1 ) ] . range [ 0 ] ,
lstack [ lstack . length - 1 ] . range [ 1 ]
] ;
}
r = this . performAction . apply ( yyval , [
yytext ,
yyleng ,
yylineno ,
sharedState . yy ,
action [ 1 ] ,
vstack ,
lstack
] . concat ( args ) ) ;
if ( typeof r !== 'undefined' ) {
return r ;
}
if ( len ) {
stack = stack . slice ( 0 , - 1 * len * 2 ) ;
vstack = vstack . slice ( 0 , - 1 * len ) ;
lstack = lstack . slice ( 0 , - 1 * len ) ;
}
stack . push ( this . productions _ [ action [ 1 ] ] [ 0 ] ) ;
vstack . push ( yyval . $ ) ;
lstack . push ( yyval . _$ ) ;
newState = table [ stack [ stack . length - 2 ] ] [ stack [ stack . length - 1 ] ] ;
stack . push ( newState ) ;
break ;
case 3 :
return true ;
}
}
return true ;
} } ;
2014-12-01 21:10:09 +01:00
2014-11-21 08:03:43 +01:00
/* generated by jison-lex 0.3.4 */
2014-11-13 19:53:31 +01:00
var lexer = ( function ( ) {
var lexer = ( {
EOF : 1 ,
parseError : function parseError ( str , hash ) {
if ( this . yy . parser ) {
this . yy . parser . parseError ( str , hash ) ;
} else {
throw new Error ( str ) ;
}
} ,
// resets the lexer, sets new input
setInput : function ( input , yy ) {
this . yy = yy || this . yy || { } ;
this . _input = input ;
this . _more = this . _backtrack = this . done = false ;
this . yylineno = this . yyleng = 0 ;
this . yytext = this . matched = this . match = '' ;
this . conditionStack = [ 'INITIAL' ] ;
this . yylloc = {
first _line : 1 ,
first _column : 0 ,
last _line : 1 ,
last _column : 0
} ;
if ( this . options . ranges ) {
this . yylloc . range = [ 0 , 0 ] ;
}
this . offset = 0 ;
return this ;
} ,
// consumes and returns one char from the input
input : function ( ) {
var ch = this . _input [ 0 ] ;
this . yytext += ch ;
this . yyleng ++ ;
this . offset ++ ;
this . match += ch ;
this . matched += ch ;
var lines = ch . match ( /(?:\r\n?|\n).*/g ) ;
if ( lines ) {
this . yylineno ++ ;
this . yylloc . last _line ++ ;
} else {
this . yylloc . last _column ++ ;
}
if ( this . options . ranges ) {
this . yylloc . range [ 1 ] ++ ;
}
this . _input = this . _input . slice ( 1 ) ;
return ch ;
} ,
// unshifts one char (or a string) into the input
unput : function ( ch ) {
var len = ch . length ;
var lines = ch . split ( /(?:\r\n?|\n)/g ) ;
this . _input = ch + this . _input ;
this . yytext = this . yytext . substr ( 0 , this . yytext . length - len ) ;
//this.yyleng -= len;
this . offset -= len ;
var oldLines = this . match . split ( /(?:\r\n?|\n)/g ) ;
this . match = this . match . substr ( 0 , this . match . length - 1 ) ;
this . matched = this . matched . substr ( 0 , this . matched . length - 1 ) ;
if ( lines . length - 1 ) {
this . yylineno -= lines . length - 1 ;
}
var r = this . yylloc . range ;
this . yylloc = {
first _line : this . yylloc . first _line ,
last _line : this . yylineno + 1 ,
first _column : this . yylloc . first _column ,
last _column : lines ?
( lines . length === oldLines . length ? this . yylloc . first _column : 0 )
+ oldLines [ oldLines . length - lines . length ] . length - lines [ 0 ] . length :
this . yylloc . first _column - len
} ;
if ( this . options . ranges ) {
this . yylloc . range = [ r [ 0 ] , r [ 0 ] + this . yyleng - len ] ;
}
this . yyleng = this . yytext . length ;
return this ;
} ,
// When called from action, caches matched text and appends it on next action
more : function ( ) {
this . _more = true ;
return this ;
} ,
// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
reject : function ( ) {
if ( this . options . backtrack _lexer ) {
this . _backtrack = true ;
} else {
return this . parseError ( 'Lexical error on line ' + ( this . yylineno + 1 ) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this . showPosition ( ) , {
text : "" ,
token : null ,
line : this . yylineno
} ) ;
}
return this ;
} ,
// retain first n characters of the match
less : function ( n ) {
this . unput ( this . match . slice ( n ) ) ;
} ,
// displays already matched input, i.e. for error messages
pastInput : function ( ) {
var past = this . matched . substr ( 0 , this . matched . length - this . match . length ) ;
return ( past . length > 20 ? '...' : '' ) + past . substr ( - 20 ) . replace ( /\n/g , "" ) ;
} ,
// displays upcoming input, i.e. for error messages
upcomingInput : function ( ) {
var next = this . match ;
if ( next . length < 20 ) {
next += this . _input . substr ( 0 , 20 - next . length ) ;
}
return ( next . substr ( 0 , 20 ) + ( next . length > 20 ? '...' : '' ) ) . replace ( /\n/g , "" ) ;
} ,
// displays the character position where the lexing error occurred, i.e. for error messages
showPosition : function ( ) {
var pre = this . pastInput ( ) ;
var c = new Array ( pre . length + 1 ) . join ( "-" ) ;
return pre + this . upcomingInput ( ) + "\n" + c + "^" ;
} ,
// test the lexed token: return FALSE when not a match, otherwise return token
test _match : function ( match , indexed _rule ) {
var token ,
lines ,
backup ;
if ( this . options . backtrack _lexer ) {
// save context
backup = {
yylineno : this . yylineno ,
yylloc : {
first _line : this . yylloc . first _line ,
last _line : this . last _line ,
first _column : this . yylloc . first _column ,
last _column : this . yylloc . last _column
} ,
yytext : this . yytext ,
match : this . match ,
matches : this . matches ,
matched : this . matched ,
yyleng : this . yyleng ,
offset : this . offset ,
_more : this . _more ,
_input : this . _input ,
yy : this . yy ,
conditionStack : this . conditionStack . slice ( 0 ) ,
done : this . done
} ;
if ( this . options . ranges ) {
backup . yylloc . range = this . yylloc . range . slice ( 0 ) ;
}
}
lines = match [ 0 ] . match ( /(?:\r\n?|\n).*/g ) ;
if ( lines ) {
this . yylineno += lines . length ;
}
this . yylloc = {
first _line : this . yylloc . last _line ,
last _line : this . yylineno + 1 ,
first _column : this . yylloc . last _column ,
last _column : lines ?
lines [ lines . length - 1 ] . length - lines [ lines . length - 1 ] . match ( /\r?\n?/ ) [ 0 ] . length :
this . yylloc . last _column + match [ 0 ] . length
} ;
this . yytext += match [ 0 ] ;
this . match += match [ 0 ] ;
this . matches = match ;
this . yyleng = this . yytext . length ;
if ( this . options . ranges ) {
this . yylloc . range = [ this . offset , this . offset += this . yyleng ] ;
}
this . _more = false ;
this . _backtrack = false ;
this . _input = this . _input . slice ( match [ 0 ] . length ) ;
this . matched += match [ 0 ] ;
token = this . performAction . call ( this , this . yy , this , indexed _rule , this . conditionStack [ this . conditionStack . length - 1 ] ) ;
if ( this . done && this . _input ) {
this . done = false ;
}
if ( token ) {
return token ;
} else if ( this . _backtrack ) {
// recover context
for ( var k in backup ) {
this [ k ] = backup [ k ] ;
}
return false ; // rule action called reject() implying the next rule should be tested instead.
}
return false ;
} ,
// return next match in input
next : function ( ) {
if ( this . done ) {
return this . EOF ;
}
if ( ! this . _input ) {
this . done = true ;
}
var token ,
match ,
tempMatch ,
index ;
if ( ! this . _more ) {
this . yytext = '' ;
this . match = '' ;
}
var rules = this . _currentRules ( ) ;
for ( var i = 0 ; i < rules . length ; i ++ ) {
tempMatch = this . _input . match ( this . rules [ rules [ i ] ] ) ;
if ( tempMatch && ( ! match || tempMatch [ 0 ] . length > match [ 0 ] . length ) ) {
match = tempMatch ;
index = i ;
if ( this . options . backtrack _lexer ) {
token = this . test _match ( tempMatch , rules [ i ] ) ;
if ( token !== false ) {
return token ;
} else if ( this . _backtrack ) {
match = false ;
continue ; // rule action called reject() implying a rule MISmatch.
} else {
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
return false ;
}
} else if ( ! this . options . flex ) {
break ;
}
}
}
if ( match ) {
token = this . test _match ( match , rules [ index ] ) ;
if ( token !== false ) {
return token ;
}
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
return false ;
}
if ( this . _input === "" ) {
return this . EOF ;
} else {
return this . parseError ( 'Lexical error on line ' + ( this . yylineno + 1 ) + '. Unrecognized text.\n' + this . showPosition ( ) , {
text : "" ,
token : null ,
line : this . yylineno
} ) ;
}
} ,
// return next match that has a token
lex : function lex ( ) {
var r = this . next ( ) ;
if ( r ) {
return r ;
} else {
return this . lex ( ) ;
}
} ,
// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
begin : function begin ( condition ) {
this . conditionStack . push ( condition ) ;
} ,
// pop the previously active lexer condition state off the condition stack
popState : function popState ( ) {
var n = this . conditionStack . length - 1 ;
if ( n > 0 ) {
return this . conditionStack . pop ( ) ;
} else {
return this . conditionStack [ 0 ] ;
}
} ,
// produce the lexer rule set which is active for the currently active lexer condition state
_currentRules : function _currentRules ( ) {
if ( this . conditionStack . length && this . conditionStack [ this . conditionStack . length - 1 ] ) {
return this . conditions [ this . conditionStack [ this . conditionStack . length - 1 ] ] . rules ;
} else {
return this . conditions [ "INITIAL" ] . rules ;
}
} ,
// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
topState : function topState ( n ) {
n = this . conditionStack . length - 1 - Math . abs ( n || 0 ) ;
if ( n >= 0 ) {
return this . conditionStack [ n ] ;
} else {
return "INITIAL" ;
}
} ,
// alias for begin(condition)
pushState : function pushState ( condition ) {
this . begin ( condition ) ;
} ,
// return the number of states currently on the stack
stateStackSize : function stateStackSize ( ) {
return this . conditionStack . length ;
} ,
options : { } ,
performAction : function anonymous ( yy , yy _ , $avoiding _name _collisions , YY _START ) {
var YYSTATE = YY _START ;
switch ( $avoiding _name _collisions ) {
2014-11-26 20:47:22 +01:00
case 0 : return 58 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 1 : return 60 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 2 : return 54 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-25 22:58:57 +01:00
case 3 : return 56 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 4 : return 57 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 5 : return 8 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-22 17:27:08 +01:00
case 6 : return 10 ;
break ;
case 7 : return 10 ;
break ;
case 8 : return 10 ;
break ;
case 9 : return 10 ;
break ;
2014-11-24 22:03:32 +01:00
case 10 : return 10 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 11 : return 10 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 12 : return 35 ;
2014-11-22 10:02:38 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 13 : return 42 ;
2014-11-22 10:02:38 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 14 : return 36 ;
2014-11-22 10:02:38 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 15 : return 11 ;
2014-11-22 10:02:38 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 16 : return 37 ;
2014-11-22 10:02:38 +01:00
break ;
2014-11-25 22:58:57 +01:00
case 17 : return 39 ;
2014-11-22 10:02:38 +01:00
break ;
2014-11-25 22:58:57 +01:00
case 18 : return 40 ;
2014-11-22 15:34:21 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 19 : return 41 ;
2014-11-22 15:34:21 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 20 : return 30 ;
2014-11-22 10:02:38 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 21 : return 29 ;
2014-11-16 10:35:18 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 22 : return 47 ;
2014-11-15 21:28:26 +01:00
break ;
2014-11-25 18:58:47 +01:00
case 23 : return 45 ;
2014-11-15 21:28:26 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 24 : return 46 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 25 : return 48 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 26 : return 33 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-25 22:58:57 +01:00
case 27 : return 38 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 28 : return 39 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 29 : return 34 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 30 : return 49 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-25 18:58:47 +01:00
case 31 : return 25 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 32 : return 26 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 33 : return 22 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 34 : return 24 ;
2014-11-13 19:53:31 +01:00
break ;
2014-11-25 18:58:47 +01:00
case 35 : return 27
2014-11-13 19:53:31 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 36 : return 28
break ;
case 37 : return 'QUOTE' ;
2014-11-25 22:58:57 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 38 : return 9 ;
2014-11-15 21:28:26 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 39 : return 'NEWLINE' ;
2014-11-24 22:03:32 +01:00
break ;
2014-11-26 20:47:22 +01:00
case 40 : return 6 ;
2014-11-13 19:53:31 +01:00
break ;
}
} ,
2014-12-01 21:10:09 +01:00
rules : [ /^(?:style\b)/ , /^(?:linkStyle\b)/ , /^(?:classDef\b)/ , /^(?:class\b)/ , /^(?:click\b)/ , /^(?:graph\b)/ , /^(?:LR\b)/ , /^(?:RL\b)/ , /^(?:TB\b)/ , /^(?:BT\b)/ , /^(?:TD\b)/ , /^(?:BR\b)/ , /^(?:[0-9])/ , /^(?:#)/ , /^(?::)/ , /^(?:;)/ , /^(?:,)/ , /^(?:=)/ , /^(?:\*)/ , /^(?:\.)/ , /^(?:<)/ , /^(?:>)/ , /^(?:--[x])/ , /^(?:-->)/ , /^(?:--[o])/ , /^(?:---)/ , /^(?:-)/ , /^(?:\+)/ , /^(?:=)/ , / ^ ( ? : [ \ u 0 0 4 1 - \ u 0 0 5 A \ u 0 0 6 1 - \ u 0 0 7 A \ u 0 0 A A \ u 0 0 B 5 \ u 0 0 B A \ u 0 0 C 0 - \ u 0 0 D 6 \ u 0 0 D 8 - \ u 0 0 F 6 ] | [ \ u 0 0 F 8 - \ u 0 2 C 1 \ u 0 2 C 6 - \ u 0 2 D 1 \ u 0 2 E 0 - \ u 0 2 E 4 \ u 0 2 E C \ u 0 2 E E \ u 0 3 7 0 - \ u 0 3 7 4 \ u 0 3 7 6 \ u 0 3 7 7 ] | [ \ u 0 3 7 A - \ u 0 3 7 D \ u 0 3 8 6 \ u 0 3 8 8 - \ u 0 3 8 A \ u 0 3 8 C \ u 0 3 8 E - \ u 0 3 A 1 \ u 0 3 A 3 - \ u 0 3 F 5 ] | [ \ u 0 3 F 7 - \ u 0 4 8 1 \ u 0 4 8 A - \ u 0 5 2 7 \ u 0 5 3 1 - \ u 0 5 5 6 \ u 0 5 5 9 \ u 0 5 6 1 - \ u 0 5 8 7 \ u 0 5 D 0 - \ u 0 5 E A ] | [ \ u 0 5 F 0 - \ u 0 5 F 2 \ u 0 6 2 0 - \ u 0 6 4 A \ u 0 6 6 E \ u 0 6 6 F \ u 0 6 7 1 - \ u 0 6 D 3 \ u 0 6 D 5 \ u 0 6 E 5 \ u 0 6 E 6 \ u 0 6 E E ] | [ \ u 0 6 E F \ u 0 6 F A - \ u 0 6 F C \ u 0 6 F F \ u 0 7 1 0 \ u 0 7 1 2 - \ u 0 7 2 F \ u 0 7 4 D - \ u 0 7 A 5 \ u 0 7 B 1 \ u 0 7 C A - \ u 0 7 E A ] | [ \ u 0 7 F 4 \ u 0 7 F 5 \ u 0 7 F A \ u 0 8 0 0 - \ u 0 8 1 5 \ u 0 8 1 A \ u 0 8 2 4 \ u 0 8 2 8 \ u 0 8 4 0 - \ u 0 8 5 8 \ u 0 8 A 0 ] | [ \ u 0 8 A 2 - \ u 0 8 A C \ u 0 9 0 4 - \ u 0 9 3 9 \ u 0 9 3 D \ u 0 9 5 0 \ u 0 9 5 8 - \ u 0 9 6 1 \ u 0 9 7 1 - \ u 0 9 7 7 ] | [ \ u 0 9 7 9 - \ u 0 9 7 F \ u 0 9 8 5 - \ u 0 9 8 C \ u 0 9 8 F \ u 0 9 9 0 \ u 0 9 9 3 - \ u 0 9 A 8 \ u 0 9 A A - \ u 0 9 B 0 \ u 0 9 B 2 ] | [ \ u 0 9 B 6 - \ u 0 9 B 9 \ u 0 9 B D \ u 0 9 C E \ u 0 9 D C \ u 0 9 D D \ u 0 9 D F - \ u 0 9 E 1 \ u 0 9 F 0 \ u 0 9 F 1 \ u 0 A 0 5 - \ u 0 A 0 A ] | [ \ u 0 A 0 F \ u 0 A 1 0 \ u 0 A 1 3 - \ u 0 A 2 8 \ u 0 A 2 A - \ u 0 A 3 0 \ u 0 A 3 2 \ u 0 A 3 3 \ u 0 A 3 5 \ u 0 A 3 6 \ u 0 A 3 8 \ u 0 A 3 9 ] | [ \ u 0 A 5 9 - \ u 0 A 5 C \ u 0 A 5 E \ u 0 A 7 2 - \ u 0 A 7 4 \ u 0 A 8 5 - \ u 0 A 8 D \ u 0 A 8 F - \ u 0 A 9 1 \ u 0 A 9 3 - \ u 0 A A 8 ] | [ \ u 0 A A A - \ u 0 A B 0 \ u 0 A B 2 \ u 0 A B 3 \ u 0 A B 5 - \ u 0 A B 9 \ u 0 A B D \ u 0 A D 0 \ u 0 A E 0 \ u 0 A E 1 \ u 0 B 0 5 - \ u 0 B 0 C ] | [ \ u 0 B 0 F \ u 0 B 1 0 \ u 0 B 1 3 - \ u 0 B 2 8 \ u 0 B 2 A - \ u 0 B 3 0 \ u 0 B 3 2 \ u 0 B 3 3 \ u 0 B 3 5 - \ u 0 B 3 9 \ u 0 B 3 D \ u 0 B 5 C ] | [ \ u 0 B 5 D \ u 0 B 5 F - \ u 0 B 6 1 \ u 0 B 7 1 \ u 0 B 8 3 \ u 0 B 8 5 - \ u 0 B 8 A \ u 0 B 8 E - \ u 0 B 9 0 \ u 0 B 9 2 - \ u 0 B 9 5 \ u 0 B 9 9 ] | [ \ u 0 B 9 A \ u 0 B 9 C \ u 0 B 9 E \ u 0 B 9 F \ u 0 B A 3 \ u 0 B A 4 \ u 0 B A 8 - \ u 0 B A A \ u 0 B A E - \ u 0 B B 9 \ u 0 B D 0 ] | [ \ u 0 C 0 5 - \ u 0 C 0 C \ u 0 C 0 E - \ u 0 C 1 0 \ u 0 C 1 2 - \ u 0 C 2 8 \ u 0 C 2 A - \ u 0 C 3 3 \ u 0 C 3 5 - \ u 0 C 3 9 \ u 0 C 3 D ] | [ \ u 0 C 5 8 \ u 0 C 5 9 \ u 0 C 6 0 \ u 0 C 6 1 \ u 0 C 8 5 - \ u 0 C 8 C \ u 0 C 8 E - \ u 0 C 9 0 \ u 0 C 9 2 - \ u 0 C A 8 \ u 0 C A A - \ u 0 C B 3 ] | [ \ u 0 C B 5 - \ u 0 C B 9 \ u 0 C B D \ u 0 C D E \ u 0 C E 0 \ u 0 C E 1 \ u 0 C F 1 \ u 0 C F 2 \ u 0 D 0 5 - \ u 0 D 0 C \ u 0 D 0 E - \ u 0 D 1 0 ] | [ \ u 0 D 1 2 - \ u 0 D 3 A \ u 0 D 3 D \ u 0 D 4 E \ u 0 D 6 0 \ u 0 D 6 1 \ u 0 D 7 A - \ u 0 D 7 F \ u 0 D 8 5 - \ u 0 D 9 6 \ u 0 D 9 A - \ u 0 D B 1 ] | [ \ u 0 D B 3 - \ u 0 D B B \ u 0 D B D \ u 0 D C 0 - \ u 0 D C 6 \ u 0 E 0 1 - \ u 0 E 3 0 \ u 0 E 3 2 \ u 0 E 3 3 \ u 0 E 4 0 - \ u 0 E 4 6 \ u 0 E 8 1 ] | [ \ u 0 E 8 2 \ u 0 E 8 4 \ u 0 E 8 7 \ u 0 E 8 8 \ u 0 E 8 A \ u 0 E 8 D \ u 0 E 9 4 - \ u 0 E 9 7 \ u 0 E 9 9 - \ u 0 E 9 F \ u 0 E A 1 - \ u 0 E A 3 ] | [ \ u 0 E A 5 \ u 0 E A 7 \ u 0 E A A \ u 0 E A B \ u 0 E A D - \ u 0 E B 0 \ u 0 E B 2 \ u 0 E B 3 \ u 0 E B D \ u 0 E C 0 - \ u 0 E C 4 \ u 0 E C 6 ] | [ \ u 0 E D C - \ u 0 E D F \ u 0 F 0 0 \ u 0 F 4 0 - \ u 0 F 4 7 \ u 0 F 4 9 - \ u 0 F 6 C \ u 0 F 8 8 - \ u 0 F 8 C \ u 1 0 0 0 - \ u 1 0 2 A ] | [ \ u 1 0 3 F \ u 1 0 5 0 - \ u 1 0 5 5 \ u 1 0 5 A - \ u 1 0 5 D \ u 1 0 6 1 \ u 1 0 6 5 \ u 1 0 6 6 \ u 1 0 6 E - \ u 1 0 7 0 \ u 1 0 7 5 - \ u 1 0 8 1 ] | [ \ u 1 0 8 E \ u 1 0 A 0 - \ u 1 0 C 5 \ u 1 0 C 7 \ u 1 0 C D \ u 1 0 D 0 - \ u 1 0 F A \ u 1 0 F C - \ u 1 2 4 8 \ u 1 2 4 A - \ u 1 2 4 D ] | [ \ u 1 2 5 0 - \ u 1 2 5 6 \ u 1 2 5 8 \ u 1 2 5 A - \ u 1 2 5 D \ u 1 2 6 0 - \ u 1 2 8 8 \ u 1 2 8 A - \ u 1 2 8 D \ u 1 2 9 0 - \ u 1 2 B 0 ] | [ \ u 1 2 B 2 - \ u 1 2 B 5 \ u 1 2 B 8 - \ u 1 2 B E \ u 1 2 C 0 \ u 1 2 C 2 - \ u 1 2 C 5 \ u 1 2 C 8 - \ u 1 2 D 6 \ u 1 2 D 8 - \ u 1 3 1 0 ] | [ \ u 1 3 1 2 - \ u 1 3 1 5 \ u 1 3 1 8 - \ u 1 3 5 A \ u 1 3 8 0 - \ u 1 3 8 F \ u 1 3 A 0 - \ u 1 3 F 4 \ u 1 4 0 1 - \ u 1 6 6 C ] | [ \ u 1 6 6 F - \ u 1 6 7 F \ u 1 6 8 1 - \ u 1 6 9 A \ u 1 6 A 0 - \ u 1 6 E A \ u 1 7 0 0 - \ u 1 7 0 C \ u 1 7 0 E - \ u 1 7 1 1 ] | [ \ u 1 7 2 0 - \ u 1 7 3 1 \ u 1 7 4 0 - \ u 1 7 5 1 \ u 1 7 6 0 - \ u 1 7 6 C \ u 1 7 6 E - \ u 1 7 7 0 \ u 1 7 8 0 - \ u 1 7 B 3 \ u 1 7 D 7 ] | [ \ u 1 7 D C \ u 1 8 2 0 - \ u 1 8 7 7 \ u 1 8 8 0 - \ u 1 8 A 8 \ u 1 8 A A \ u 1 8 B 0 - \ u 1 8 F 5 \ u 1 9 0 0 - \ u 1 9 1 C ] | [ \ u 1 9 5 0 - \ u 1 9 6 D \ u 1 9 7 0 - \ u 1 9 7 4 \ u 1 9 8 0 - \ u 1 9 A B \ u 1 9 C 1 - \ u 1 9 C 7 \ u 1 A 0 0 - \ u 1 A 1 6 ] | [ \ u 1 A 2 0 - \ u 1 A 5 4 \ u 1 A A 7 \ u 1 B 0 5 - \ u 1 B 3 3 \ u 1 B 4 5 - \ u 1 B 4 B \ u 1 B 8 3 - \ u 1 B A 0 \ u 1 B A E \ u 1 B A F ] | [ \ u 1 B B A - \ u 1 B E 5 \ u 1 C 0 0 - \ u 1 C 2 3 \ u 1 C 4 D - \ u 1 C 4 F \ u 1 C 5 A - \ u 1 C 7 D \ u 1 C E 9 - \ u 1 C E C ] | [ \ u 1 C E E - \ u 1 C F 1 \ u 1 C F 5 \ u 1 C F 6 \ u 1 D 0 0 - \ u 1 D B F \ u 1 E 0 0 - \ u 1 F 1 5 \ u 1 F 1 8 - \ u 1 F 1 D ] | [ \ u 1 F 2 0 - \ u 1 F 4 5 \ u 1 F 4 8 - \ u 1 F 4 D \ u 1 F 5 0 - \ u 1 F 5 7 \ u 1 F 5 9 \ u 1 F 5 B \ u 1 F 5 D \ u 1 F 5 F - \ u 1 F 7 D ] | [ \ u 1 F 8 0 - \ u 1 F B 4 \ u 1 F B 6 - \ u 1 F B C \ u 1 F B E \ u 1 F C 2 - \ u 1 F C 4 \ u 1 F C 6 - \ u 1 F C C \ u 1 F D 0 - \ u 1 F D 3 ] | [ \ u 1 F D 6 - \ u 1 F D B \ u 1 F E 0 - \ u 1 F E C \ u 1 F F 2 - \ u 1 F F 4 \ u 1 F F 6 - \ u 1 F F C \ u 2 0 7 1 \ u 2 0 7 F ] | [ \ u 2 0 9 0 - \ u 2 0 9 C \ u 2 1 0 2 \ u 2 1 0 7 \ u 2 1 0 A - \ u 2 1 1 3 \ u 2 1 1 5 \ u 2 1 1 9 - \ u 2 1 1 D \ u 2 1 2 4 \ u 2 1 2 6 \ u 2 1 2 8 ] | [ \ u 2 1 2 A - \ u 2 1 2 D \ u 2 1 2 F - \ u 2 1 3 9 \ u 2 1 3 C - \ u 2 1 3 F \ u 2 1 4 5 - \ u 2 1 4 9 \ u 2 1 4 E \ u 2 1 8 3 \ u 2 1 8 4 ] | [ \ u 2 C 0 0 - \ u 2 C 2 E \ u 2 C 3 0 - \ u 2 C 5 E \ u 2 C 6 0 - \ u 2 C E 4 \ u 2 C E B - \ u 2 C E E \ u 2 C F 2 \ u 2 C F 3 ] | [ \ u 2 D 0 0 - \ u 2 D 2 5 \ u 2 D 2 7 \ u 2 D 2 D \ u 2 D 3 0 - \ u 2 D 6 7 \ u 2 D 6 F \ u 2 D 8 0 - \ u 2 D 9 6 \ u 2 D A 0 - \ u 2 D A 6 ] | [ \ u 2 D A 8 - \ u 2 D A E \ u 2 D B 0 - \ u 2 D B 6 \ u 2 D B 8 - \ u 2 D B E \ u 2 D C 0 - \ u 2 D C 6 \ u 2 D C 8 - \ u 2 D C E ] | [ \ u 2 D D 0 - \ u 2 D D 6 \ u 2 D D 8 - \ u 2 D D E \ u 2 E 2 F \ u 3 0 0 5 \ u 3 0 0 6 \ u 3 0 3 1 - \ u 3 0 3 5 \ u 3 0 3 B \ u 3 0 3 C ] | [ \ u 3 0 4 1 - \ u 3 0 9 6 \ u 3 0 9 D - \ u 3 0 9 F \ u 3 0 A 1 - \ u 3 0 F A \ u 3 0 F C - \ u 3 0 F F \ u 3 1 0 5 - \ u 3 1 2 D ] | [ \ u 3 1 3 1 - \ u 3 1 8 E \ u 3 1 A 0 - \ u 3 1 B A \ u 3 1 F 0 - \ u 3 1 F F \ u 3 4 0 0 - \ u 4 D B 5 \ u 4 E 0 0 - \ u 9 F C C ] | [ \ u A 0 0 0 - \ u A 4 8 C \ u A 4 D 0 - \ u A 4 F D \ u A 5 0 0 - \ u A 6 0 C \ u A 6 1 0 - \ u A 6 1 F \ u A 6 2 A \ u A 6 2 B ] | [ \ u A 6 4 0 - \ u A 6 6 E \ u A 6 7 F - \ u A 6 9 7 \ u A 6 A 0 - \ u A 6 E 5 \ u A 7 1 7 - \ u A 7 1 F \ u A 7 2 2 - \ u A 7 8 8 ] | [ \ u A 7 8 B - \ u A 7 8 E \ u A 7 9 0 - \ u A 7 9 3 \ u A 7 A 0 - \ u A 7 A A \ u A 7 F 8 - \ u A 8 0 1 \ u A 8 0 3 - \ u A 8 0 5 ] | [ \ u A 8 0 7 - \ u A 8 0 A \ u A 8 0 C - \ u A 8 2 2 \ u A 8 4 0 - \ u A 8 7 3 \ u A 8 8 2 - \ u A 8 B 3 \ u A 8 F 2 - \ u A 8 F 7 \ u A 8 F B ] | [ \ u A 9 0 A - \ u A 9 2 5 \ u
2014-11-26 20:47:22 +01:00
conditions : { "INITIAL" : { "rules" : [ 0 , 1 , 2 , 3 , 4 , 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 ] , "inclusive" : true } }
2014-11-13 19:53:31 +01:00
} ) ;
return lexer ;
} ) ( ) ;
parser . lexer = lexer ;
function Parser ( ) {
this . yy = { } ;
}
Parser . prototype = parser ; parser . Parser = Parser ;
return new Parser ;
} ) ( ) ;
if ( typeof require !== 'undefined' && typeof exports !== 'undefined' ) {
exports . parser = parser ;
exports . Parser = parser . Parser ;
exports . parse = function ( ) { return parser . parse . apply ( parser , arguments ) ; } ;
exports . main = function commonjsMain ( args ) {
if ( ! args [ 1 ] ) {
console . log ( 'Usage: ' + args [ 0 ] + ' FILE' ) ;
process . exit ( 1 ) ;
}
var source = require ( 'fs' ) . readFileSync ( require ( 'path' ) . normalize ( args [ 1 ] ) , "utf8" ) ;
return exports . parser . parse ( source ) ;
} ;
if ( typeof module !== 'undefined' && require . main === module ) {
exports . main ( process . argv . slice ( 1 ) ) ;
}
}
2014-11-21 08:03:43 +01:00
} ) . call ( this , require ( "1YiZ5S" ) )
2014-11-25 22:58:57 +01:00
} , { "1YiZ5S" : 3 , "fs" : 1 , "path" : 2 } ] , 8 : [ function ( require , module , exports ) {
2014-11-24 22:03:32 +01:00
( function ( process ) {
/* parser generated by jison 0.4.15 */
/ *
Returns a Parser object of the following structure :
Parser : {
yy : { }
}
Parser . prototype : {
yy : { } ,
trace : function ( ) ,
symbols _ : { associative list : name == > number } ,
terminals _ : { associative list : number == > name } ,
productions _ : [ ... ] ,
performAction : function anonymous ( yytext , yyleng , yylineno , yy , yystate , $$ , _$ ) ,
table : [ ... ] ,
defaultActions : { ... } ,
parseError : function ( str , hash ) ,
parse : function ( input ) ,
lexer : {
EOF : 1 ,
parseError : function ( str , hash ) ,
setInput : function ( input ) ,
input : function ( ) ,
unput : function ( str ) ,
more : function ( ) ,
less : function ( n ) ,
pastInput : function ( ) ,
upcomingInput : function ( ) ,
showPosition : function ( ) ,
test _match : function ( regex _match _array , rule _index ) ,
next : function ( ) ,
lex : function ( ) ,
begin : function ( condition ) ,
popState : function ( ) ,
_currentRules : function ( ) ,
topState : function ( ) ,
pushState : function ( condition ) ,
options : {
ranges : boolean ( optional : true == > token location info will include a . range [ ] member )
flex : boolean ( optional : true == > flex - like lexing behaviour where the rules are tested exhaustively to find the longest match )
backtrack _lexer : boolean ( optional : true == > lexer regexes are tested in order and for each matching regex the action code is invoked ; the lexer terminates the scan when a token is returned by the action code )
} ,
performAction : function ( yy , yy _ , $avoiding _name _collisions , YY _START ) ,
rules : [ ... ] ,
conditions : { associative list : name == > set } ,
}
}
token location info ( @ $ , _$ , etc . ) : {
first _line : n ,
last _line : n ,
first _column : n ,
last _column : n ,
range : [ start _number , end _number ] ( where the numbers are indexes into the input string , regular zero - based )
}
the parseError function receives a 'hash' object with these members for lexer and parser errors : {
text : ( matched text )
token : ( the produced terminal token , if any )
line : ( yylineno )
}
while parser ( grammar ) errors will also provide these members , i . e . parser errors deliver a superset of attributes : {
loc : ( yylloc )
expected : ( string describing the set of expected tokens )
recoverable : ( boolean : TRUE when the parser has a error recovery rule available for this particular error )
}
* /
var parser = ( function ( ) {
var o = function ( k , v , o , l ) { for ( o = o || { } , l = k . length ; l -- ; o [ k [ l ] ] = v ) ; return o } , $V0 = [ 1 , 11 ] , $V1 = [ 1 , 12 ] , $V2 = [ 1 , 17 ] , $V3 = [ 1 , 16 ] , $V4 = [ 6 , 8 , 28 ] , $V5 = [ 6 , 8 , 14 , 16 , 28 , 31 , 32 ] , $V6 = [ 6 , 8 , 14 , 16 , 18 , 28 , 31 , 32 ] , $V7 = [ 6 , 31 , 32 ] , $V8 = [ 1 , 35 ] , $V9 = [ 6 , 8 , 16 , 18 , 28 , 31 , 32 ] ;
var parser = { trace : function trace ( ) { } ,
yy : { } ,
symbols _ : { "error" : 2 , "expressions" : 3 , "sequenceConfig" : 4 , "statements" : 5 , "EOF" : 6 , "SEQ" : 7 , "SPACE" : 8 , "DIR" : 9 , "newlines" : 10 , "statement" : 11 , "preStatement" : 12 , "alphaNum" : 13 , "COLON" : 14 , "text" : 15 , "DOT" : 16 , "message" : 17 , "EQUALS" : 18 , "callee" : 19 , "action" : 20 , "SQS" : 21 , "SQE" : 22 , "actorDefinition" : 23 , "messageDefinition" : 24 , "caller" : 25 , "answer" : 26 , "spaceList" : 27 , "NEWLINE" : 28 , "alphaNumStatement" : 29 , "alphaNumToken" : 30 , "ALPHA" : 31 , "NUM" : 32 , "textStatement" : 33 , "textToken" : 34 , "$accept" : 0 , "$end" : 1 } ,
terminals _ : { 2 : "error" , 6 : "EOF" , 7 : "SEQ" , 8 : "SPACE" , 9 : "DIR" , 14 : "COLON" , 16 : "DOT" , 18 : "EQUALS" , 21 : "SQS" , 22 : "SQE" , 28 : "NEWLINE" , 31 : "ALPHA" , 32 : "NUM" } ,
productions _ : [ 0 , [ 3 , 2 ] , [ 3 , 1 ] , [ 4 , 4 ] , [ 5 , 3 ] , [ 5 , 2 ] , [ 5 , 3 ] , [ 12 , 3 ] , [ 11 , 1 ] , [ 11 , 3 ] , [ 11 , 5 ] , [ 20 , 2 ] , [ 23 , 3 ] , [ 24 , 7 ] , [ 25 , 1 ] , [ 26 , 1 ] , [ 19 , 1 ] , [ 17 , 1 ] , [ 27 , 2 ] , [ 27 , 1 ] , [ 10 , 2 ] , [ 10 , 2 ] , [ 10 , 1 ] , [ 10 , 1 ] , [ 13 , 1 ] , [ 29 , 2 ] , [ 29 , 1 ] , [ 30 , 1 ] , [ 30 , 1 ] , [ 15 , 1 ] , [ 33 , 2 ] , [ 33 , 1 ] , [ 34 , 1 ] , [ 34 , 1 ] ] ,
performAction : function anonymous ( yytext , yyleng , yylineno , yy , yystate /* action[1] */ , $$ /* vstack */ , _$ /* lstack */ ) {
/* this == yyval */
var $0 = $$ . length - 1 ;
switch ( yystate ) {
case 1 : case 5 :
this . $ = $$ [ $0 - 1 ] ;
break ;
case 3 :
this . $ = $$ [ $0 - 1 ] ;
break ;
case 4 : case 6 :
this . $ = $$ [ $0 - 2 ] ;
break ;
case 7 :
this . $ = { a : $$ [ $0 - 2 ] , b : $$ [ $0 ] }
break ;
case 8 :
yy . addActor ( $$ [ $0 ] . a , 'actor' , $$ [ $0 ] . b ) ; this . $ = 'actor' ;
break ;
case 9 :
yy . addMessage ( $$ [ $0 - 2 ] . a , $$ [ $0 - 2 ] . b , $$ [ $0 ] ) ; this . $ = 'message' ;
break ;
case 10 :
yy . addMessage ( $$ [ $0 - 4 ] . a , $$ [ $0 - 2 ] , $$ [ $0 ] , $$ [ $0 - 4 ] . b ) ; this . $ = 'actor' ;
break ;
case 11 :
this . $ = 'action' ;
break ;
case 12 :
this . $ = 'actor' ;
break ;
case 13 :
console . log ( 'Got new message from=' + $$ [ $0 - 6 ] + ' to=' + $$ [ $0 - 2 ] + ' message=' + $$ [ $0 ] + ' answer=' + $$ [ $0 - 4 ] ) ; this . $ = 'actor' ;
break ;
case 24 : case 27 : case 28 : case 29 : case 33 :
this . $ = $$ [ $0 ] ;
break ;
case 25 : case 30 :
this . $ = $$ [ $0 - 1 ] + '' + $$ [ $0 ] ;
break ;
}
} ,
table : [ { 3 : 1 , 4 : 2 , 6 : [ 1 , 3 ] , 7 : [ 1 , 4 ] } , { 1 : [ 3 ] } , { 5 : 5 , 11 : 6 , 12 : 7 , 13 : 8 , 29 : 9 , 30 : 10 , 31 : $V0 , 32 : $V1 } , { 1 : [ 2 , 2 ] } , { 8 : [ 1 , 13 ] } , { 1 : [ 2 , 1 ] } , { 6 : [ 1 , 15 ] , 8 : $V2 , 10 : 14 , 28 : $V3 } , o ( $V4 , [ 2 , 8 ] , { 16 : [ 1 , 18 ] , 18 : [ 1 , 19 ] } ) , { 14 : [ 1 , 20 ] , 30 : 21 , 31 : $V0 , 32 : $V1 } , o ( $V5 , [ 2 , 24 ] ) , o ( $V5 , [ 2 , 26 ] ) , o ( $V6 , [ 2 , 27 ] ) , o ( $V6 , [ 2 , 28 ] ) , { 9 : [ 1 , 22 ] } , { 5 : 23 , 6 : [ 1 , 24 ] , 11 : 6 , 12 : 7 , 13 : 8 , 29 : 9 , 30 : 10 , 31 : $V0 , 32 : $V1 } , { 1 : [ 2 , 5 ] } , o ( $V7 , [ 2 , 22 ] , { 10 : 25 , 8 : $V2 , 28 : $V3 } ) , o ( $V7 , [ 2 , 23 ] , { 10 : 26 , 8 : $V2 , 28 : $V3 } ) , { 13 : 28 , 17 : 27 , 29 : 9 , 30 : 10 , 31 : $V0 , 32 : $V1 } , { 13 : 30 , 19 : 29 , 29 : 9 , 30 : 10 , 31 : $V0 , 32 : $V1 } , { 8 : $V8 , 15 : 31 , 30 : 34 , 31 : $V0 , 32 : $V1 , 33 : 32 , 34 : 33 } , o ( $V5 , [ 2 , 25 ] ) , { 8 : $V2 , 10 : 36 , 28 : $V3 } , { 1 : [ 2 , 4 ] } , { 1 : [ 2 , 6 ] } , o ( $V7 , [ 2 , 20 ] ) , o ( $V7 , [ 2 , 21 ] ) , o ( $V4 , [ 2 , 9 ] ) , o ( $V4 , [ 2 , 17 ] , { 30 : 21 , 31 : $V0 , 32 : $V1 } ) , { 16 : [ 1 , 37 ] } , { 16 : [ 2 , 16 ] , 30 : 21 , 31 : $V0 , 32 : $V1 } , o ( [ 6 , 16 , 18 , 28 ] , [ 2 , 7 ] , { 30 : 34 , 34 : 38 , 8 : $V8 , 31 : $V0 , 32 : $V1 } ) , o ( $V9 , [ 2 , 29 ] ) , o ( $V9 , [ 2 , 31 ] ) , o ( $V9 , [ 2 , 32 ] ) , o ( $V9 , [ 2 , 33 ] ) , o ( [ 31 , 32 ] , [ 2 , 3 ] ) , { 13 : 28 , 17 : 39 , 29 : 9 , 30 : 10 , 31 : $V0 , 32 : $V1 } , o ( $V9 , [ 2 , 30 ] ) , o ( $V4 , [ 2 , 10 ] ) ] ,
defaultActions : { 3 : [ 2 , 2 ] , 5 : [ 2 , 1 ] , 15 : [ 2 , 5 ] , 23 : [ 2 , 4 ] , 24 : [ 2 , 6 ] } ,
parseError : function parseError ( str , hash ) {
if ( hash . recoverable ) {
this . trace ( str ) ;
} else {
throw new Error ( str ) ;
}
} ,
parse : function parse ( input ) {
var self = this , stack = [ 0 ] , tstack = [ ] , vstack = [ null ] , lstack = [ ] , table = this . table , yytext = '' , yylineno = 0 , yyleng = 0 , recovering = 0 , TERROR = 2 , EOF = 1 ;
var args = lstack . slice . call ( arguments , 1 ) ;
var lexer = Object . create ( this . lexer ) ;
var sharedState = { yy : { } } ;
for ( var k in this . yy ) {
if ( Object . prototype . hasOwnProperty . call ( this . yy , k ) ) {
sharedState . yy [ k ] = this . yy [ k ] ;
}
}
lexer . setInput ( input , sharedState . yy ) ;
sharedState . yy . lexer = lexer ;
sharedState . yy . parser = this ;
if ( typeof lexer . yylloc == 'undefined' ) {
lexer . yylloc = { } ;
}
var yyloc = lexer . yylloc ;
lstack . push ( yyloc ) ;
var ranges = lexer . options && lexer . options . ranges ;
if ( typeof sharedState . yy . parseError === 'function' ) {
this . parseError = sharedState . yy . parseError ;
} else {
this . parseError = Object . getPrototypeOf ( this ) . parseError ;
}
function popStack ( n ) {
stack . length = stack . length - 2 * n ;
vstack . length = vstack . length - n ;
lstack . length = lstack . length - n ;
}
_token _stack :
function lex ( ) {
var token ;
token = lexer . lex ( ) || EOF ;
if ( typeof token !== 'number' ) {
token = self . symbols _ [ token ] || token ;
}
return token ;
}
var symbol , preErrorSymbol , state , action , a , r , yyval = { } , p , len , newState , expected ;
while ( true ) {
state = stack [ stack . length - 1 ] ;
if ( this . defaultActions [ state ] ) {
action = this . defaultActions [ state ] ;
} else {
if ( symbol === null || typeof symbol == 'undefined' ) {
symbol = lex ( ) ;
}
action = table [ state ] && table [ state ] [ symbol ] ;
}
if ( typeof action === 'undefined' || ! action . length || ! action [ 0 ] ) {
var errStr = '' ;
expected = [ ] ;
for ( p in table [ state ] ) {
if ( this . terminals _ [ p ] && p > TERROR ) {
expected . push ( '\'' + this . terminals _ [ p ] + '\'' ) ;
}
}
if ( lexer . showPosition ) {
errStr = 'Parse error on line ' + ( yylineno + 1 ) + ':\n' + lexer . showPosition ( ) + '\nExpecting ' + expected . join ( ', ' ) + ', got \'' + ( this . terminals _ [ symbol ] || symbol ) + '\'' ;
} else {
errStr = 'Parse error on line ' + ( yylineno + 1 ) + ': Unexpected ' + ( symbol == EOF ? 'end of input' : '\'' + ( this . terminals _ [ symbol ] || symbol ) + '\'' ) ;
}
this . parseError ( errStr , {
text : lexer . match ,
token : this . terminals _ [ symbol ] || symbol ,
line : lexer . yylineno ,
loc : yyloc ,
expected : expected
} ) ;
}
if ( action [ 0 ] instanceof Array && action . length > 1 ) {
throw new Error ( 'Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol ) ;
}
switch ( action [ 0 ] ) {
case 1 :
stack . push ( symbol ) ;
vstack . push ( lexer . yytext ) ;
lstack . push ( lexer . yylloc ) ;
stack . push ( action [ 1 ] ) ;
symbol = null ;
if ( ! preErrorSymbol ) {
yyleng = lexer . yyleng ;
yytext = lexer . yytext ;
yylineno = lexer . yylineno ;
yyloc = lexer . yylloc ;
if ( recovering > 0 ) {
recovering -- ;
}
} else {
symbol = preErrorSymbol ;
preErrorSymbol = null ;
}
break ;
case 2 :
len = this . productions _ [ action [ 1 ] ] [ 1 ] ;
yyval . $ = vstack [ vstack . length - len ] ;
yyval . _$ = {
first _line : lstack [ lstack . length - ( len || 1 ) ] . first _line ,
last _line : lstack [ lstack . length - 1 ] . last _line ,
first _column : lstack [ lstack . length - ( len || 1 ) ] . first _column ,
last _column : lstack [ lstack . length - 1 ] . last _column
} ;
if ( ranges ) {
yyval . _$ . range = [
lstack [ lstack . length - ( len || 1 ) ] . range [ 0 ] ,
lstack [ lstack . length - 1 ] . range [ 1 ]
] ;
}
r = this . performAction . apply ( yyval , [
yytext ,
yyleng ,
yylineno ,
sharedState . yy ,
action [ 1 ] ,
vstack ,
lstack
] . concat ( args ) ) ;
if ( typeof r !== 'undefined' ) {
return r ;
}
if ( len ) {
stack = stack . slice ( 0 , - 1 * len * 2 ) ;
vstack = vstack . slice ( 0 , - 1 * len ) ;
lstack = lstack . slice ( 0 , - 1 * len ) ;
}
stack . push ( this . productions _ [ action [ 1 ] ] [ 0 ] ) ;
vstack . push ( yyval . $ ) ;
lstack . push ( yyval . _$ ) ;
newState = table [ stack [ stack . length - 2 ] ] [ stack [ stack . length - 1 ] ] ;
stack . push ( newState ) ;
break ;
case 3 :
return true ;
}
}
return true ;
} } ;
/* generated by jison-lex 0.3.4 */
var lexer = ( function ( ) {
var lexer = ( {
EOF : 1 ,
parseError : function parseError ( str , hash ) {
if ( this . yy . parser ) {
this . yy . parser . parseError ( str , hash ) ;
} else {
throw new Error ( str ) ;
}
} ,
// resets the lexer, sets new input
setInput : function ( input , yy ) {
this . yy = yy || this . yy || { } ;
this . _input = input ;
this . _more = this . _backtrack = this . done = false ;
this . yylineno = this . yyleng = 0 ;
this . yytext = this . matched = this . match = '' ;
this . conditionStack = [ 'INITIAL' ] ;
this . yylloc = {
first _line : 1 ,
first _column : 0 ,
last _line : 1 ,
last _column : 0
} ;
if ( this . options . ranges ) {
this . yylloc . range = [ 0 , 0 ] ;
}
this . offset = 0 ;
return this ;
} ,
// consumes and returns one char from the input
input : function ( ) {
var ch = this . _input [ 0 ] ;
this . yytext += ch ;
this . yyleng ++ ;
this . offset ++ ;
this . match += ch ;
this . matched += ch ;
var lines = ch . match ( /(?:\r\n?|\n).*/g ) ;
if ( lines ) {
this . yylineno ++ ;
this . yylloc . last _line ++ ;
} else {
this . yylloc . last _column ++ ;
}
if ( this . options . ranges ) {
this . yylloc . range [ 1 ] ++ ;
}
this . _input = this . _input . slice ( 1 ) ;
return ch ;
} ,
// unshifts one char (or a string) into the input
unput : function ( ch ) {
var len = ch . length ;
var lines = ch . split ( /(?:\r\n?|\n)/g ) ;
this . _input = ch + this . _input ;
this . yytext = this . yytext . substr ( 0 , this . yytext . length - len ) ;
//this.yyleng -= len;
this . offset -= len ;
var oldLines = this . match . split ( /(?:\r\n?|\n)/g ) ;
this . match = this . match . substr ( 0 , this . match . length - 1 ) ;
this . matched = this . matched . substr ( 0 , this . matched . length - 1 ) ;
if ( lines . length - 1 ) {
this . yylineno -= lines . length - 1 ;
}
var r = this . yylloc . range ;
this . yylloc = {
first _line : this . yylloc . first _line ,
last _line : this . yylineno + 1 ,
first _column : this . yylloc . first _column ,
last _column : lines ?
( lines . length === oldLines . length ? this . yylloc . first _column : 0 )
+ oldLines [ oldLines . length - lines . length ] . length - lines [ 0 ] . length :
this . yylloc . first _column - len
} ;
if ( this . options . ranges ) {
this . yylloc . range = [ r [ 0 ] , r [ 0 ] + this . yyleng - len ] ;
}
this . yyleng = this . yytext . length ;
return this ;
} ,
// When called from action, caches matched text and appends it on next action
more : function ( ) {
this . _more = true ;
return this ;
} ,
// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
reject : function ( ) {
if ( this . options . backtrack _lexer ) {
this . _backtrack = true ;
} else {
return this . parseError ( 'Lexical error on line ' + ( this . yylineno + 1 ) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this . showPosition ( ) , {
text : "" ,
token : null ,
line : this . yylineno
} ) ;
}
return this ;
} ,
// retain first n characters of the match
less : function ( n ) {
this . unput ( this . match . slice ( n ) ) ;
} ,
// displays already matched input, i.e. for error messages
pastInput : function ( ) {
var past = this . matched . substr ( 0 , this . matched . length - this . match . length ) ;
return ( past . length > 20 ? '...' : '' ) + past . substr ( - 20 ) . replace ( /\n/g , "" ) ;
} ,
// displays upcoming input, i.e. for error messages
upcomingInput : function ( ) {
var next = this . match ;
if ( next . length < 20 ) {
next += this . _input . substr ( 0 , 20 - next . length ) ;
}
return ( next . substr ( 0 , 20 ) + ( next . length > 20 ? '...' : '' ) ) . replace ( /\n/g , "" ) ;
} ,
// displays the character position where the lexing error occurred, i.e. for error messages
showPosition : function ( ) {
var pre = this . pastInput ( ) ;
var c = new Array ( pre . length + 1 ) . join ( "-" ) ;
return pre + this . upcomingInput ( ) + "\n" + c + "^" ;
} ,
// test the lexed token: return FALSE when not a match, otherwise return token
test _match : function ( match , indexed _rule ) {
var token ,
lines ,
backup ;
if ( this . options . backtrack _lexer ) {
// save context
backup = {
yylineno : this . yylineno ,
yylloc : {
first _line : this . yylloc . first _line ,
last _line : this . last _line ,
first _column : this . yylloc . first _column ,
last _column : this . yylloc . last _column
} ,
yytext : this . yytext ,
match : this . match ,
matches : this . matches ,
matched : this . matched ,
yyleng : this . yyleng ,
offset : this . offset ,
_more : this . _more ,
_input : this . _input ,
yy : this . yy ,
conditionStack : this . conditionStack . slice ( 0 ) ,
done : this . done
} ;
if ( this . options . ranges ) {
backup . yylloc . range = this . yylloc . range . slice ( 0 ) ;
}
}
lines = match [ 0 ] . match ( /(?:\r\n?|\n).*/g ) ;
if ( lines ) {
this . yylineno += lines . length ;
}
this . yylloc = {
first _line : this . yylloc . last _line ,
last _line : this . yylineno + 1 ,
first _column : this . yylloc . last _column ,
last _column : lines ?
lines [ lines . length - 1 ] . length - lines [ lines . length - 1 ] . match ( /\r?\n?/ ) [ 0 ] . length :
this . yylloc . last _column + match [ 0 ] . length
} ;
this . yytext += match [ 0 ] ;
this . match += match [ 0 ] ;
this . matches = match ;
this . yyleng = this . yytext . length ;
if ( this . options . ranges ) {
this . yylloc . range = [ this . offset , this . offset += this . yyleng ] ;
}
this . _more = false ;
this . _backtrack = false ;
this . _input = this . _input . slice ( match [ 0 ] . length ) ;
this . matched += match [ 0 ] ;
token = this . performAction . call ( this , this . yy , this , indexed _rule , this . conditionStack [ this . conditionStack . length - 1 ] ) ;
if ( this . done && this . _input ) {
this . done = false ;
}
if ( token ) {
return token ;
} else if ( this . _backtrack ) {
// recover context
for ( var k in backup ) {
this [ k ] = backup [ k ] ;
}
return false ; // rule action called reject() implying the next rule should be tested instead.
}
return false ;
} ,
// return next match in input
next : function ( ) {
if ( this . done ) {
return this . EOF ;
}
if ( ! this . _input ) {
this . done = true ;
}
var token ,
match ,
tempMatch ,
index ;
if ( ! this . _more ) {
this . yytext = '' ;
this . match = '' ;
}
var rules = this . _currentRules ( ) ;
for ( var i = 0 ; i < rules . length ; i ++ ) {
tempMatch = this . _input . match ( this . rules [ rules [ i ] ] ) ;
if ( tempMatch && ( ! match || tempMatch [ 0 ] . length > match [ 0 ] . length ) ) {
match = tempMatch ;
index = i ;
if ( this . options . backtrack _lexer ) {
token = this . test _match ( tempMatch , rules [ i ] ) ;
if ( token !== false ) {
return token ;
} else if ( this . _backtrack ) {
match = false ;
continue ; // rule action called reject() implying a rule MISmatch.
} else {
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
return false ;
}
} else if ( ! this . options . flex ) {
break ;
}
}
}
if ( match ) {
token = this . test _match ( match , rules [ index ] ) ;
if ( token !== false ) {
return token ;
}
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
return false ;
}
if ( this . _input === "" ) {
return this . EOF ;
} else {
return this . parseError ( 'Lexical error on line ' + ( this . yylineno + 1 ) + '. Unrecognized text.\n' + this . showPosition ( ) , {
text : "" ,
token : null ,
line : this . yylineno
} ) ;
}
} ,
// return next match that has a token
lex : function lex ( ) {
var r = this . next ( ) ;
if ( r ) {
return r ;
} else {
return this . lex ( ) ;
}
} ,
// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
begin : function begin ( condition ) {
this . conditionStack . push ( condition ) ;
} ,
// pop the previously active lexer condition state off the condition stack
popState : function popState ( ) {
var n = this . conditionStack . length - 1 ;
if ( n > 0 ) {
return this . conditionStack . pop ( ) ;
} else {
return this . conditionStack [ 0 ] ;
}
} ,
// produce the lexer rule set which is active for the currently active lexer condition state
_currentRules : function _currentRules ( ) {
if ( this . conditionStack . length && this . conditionStack [ this . conditionStack . length - 1 ] ) {
return this . conditions [ this . conditionStack [ this . conditionStack . length - 1 ] ] . rules ;
} else {
return this . conditions [ "INITIAL" ] . rules ;
}
} ,
// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
topState : function topState ( n ) {
n = this . conditionStack . length - 1 - Math . abs ( n || 0 ) ;
if ( n >= 0 ) {
return this . conditionStack [ n ] ;
} else {
return "INITIAL" ;
}
} ,
// alias for begin(condition)
pushState : function pushState ( condition ) {
this . begin ( condition ) ;
} ,
// return the number of states currently on the stack
stateStackSize : function stateStackSize ( ) {
return this . conditionStack . length ;
} ,
options : { } ,
performAction : function anonymous ( yy , yy _ , $avoiding _name _collisions , YY _START ) {
var YYSTATE = YY _START ;
switch ( $avoiding _name _collisions ) {
case 0 : return 28 ;
break ;
case 1 : return 7 ;
break ;
case 2 : return 9 ;
break ;
case 3 : return 32 ;
break ;
case 4 : return 14 ;
break ;
case 5 : return 'MINUS' ;
break ;
case 6 : return 'PLUS' ;
break ;
case 7 : return 18 ;
break ;
case 8 : return 31 ;
break ;
case 9 : return 'SLASH' ;
break ;
case 10 : return 'PS' ;
break ;
case 11 : return 'PE' ;
break ;
case 12 : return 21 ;
break ;
case 13 : return 22 ;
break ;
case 14 : return 16 ;
break ;
case 15 : return 8 ;
break ;
case 16 : return 6 ;
break ;
}
} ,
rules : [ /^(?:\n)/ , /^(?:sequence\b)/ , /^(?:TB\b)/ , /^(?:[0-9]+)/ , /^(?::)/ , /^(?:-)/ , /^(?:\+)/ , /^(?:=)/ , /^(?:[a-zåäöæøA-ZÅÄÖÆØ()]+)/ , /^(?:\/)/ , /^(?:\()/ , /^(?:\))/ , /^(?:\[)/ , /^(?:\])/ , /^(?:\.)/ , /^(?:\s)/ , /^(?:$)/ ] ,
conditions : { "INITIAL" : { "rules" : [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 ] , "inclusive" : true } }
} ) ;
return lexer ;
} ) ( ) ;
parser . lexer = lexer ;
function Parser ( ) {
this . yy = { } ;
}
Parser . prototype = parser ; parser . Parser = Parser ;
return new Parser ;
} ) ( ) ;
if ( typeof require !== 'undefined' && typeof exports !== 'undefined' ) {
exports . parser = parser ;
exports . Parser = parser . Parser ;
exports . parse = function ( ) { return parser . parse . apply ( parser , arguments ) ; } ;
exports . main = function commonjsMain ( args ) {
if ( ! args [ 1 ] ) {
console . log ( 'Usage: ' + args [ 0 ] + ' FILE' ) ;
process . exit ( 1 ) ;
}
var source = require ( 'fs' ) . readFileSync ( require ( 'path' ) . normalize ( args [ 1 ] ) , "utf8" ) ;
return exports . parser . parse ( source ) ;
} ;
if ( typeof module !== 'undefined' && require . main === module ) {
exports . main ( process . argv . slice ( 1 ) ) ;
}
}
} ) . call ( this , require ( "1YiZ5S" ) )
2014-11-25 22:58:57 +01:00
} , { "1YiZ5S" : 3 , "fs" : 1 , "path" : 2 } ] , 9 : [ function ( require , module , exports ) {
2014-11-24 22:03:32 +01:00
/ * *
* Created by knut on 14 - 11 - 19.
* /
var actors = { } ;
var actorKeys = [ ] ;
var messages = [ ] ;
exports . addActor = function ( id , name , description ) {
2014-11-27 21:16:17 +01:00
//console.log('Adding actor: '+id);
2014-11-24 22:03:32 +01:00
actors [ id ] = { name : name , description : description } ;
actorKeys . push ( id ) ;
} ;
exports . addMessage = function ( idFrom , idTo , message , answer ) {
//console.log('Adding message from='+idFrom+' to='+idTo+' message='+message+' answer='+answer);
messages . push ( { from : idFrom , to : idTo , message : message , answer : answer } ) ;
} ;
exports . getMessages = function ( ) {
return messages ;
} ;
exports . getActors = function ( ) {
return actors ;
} ;
exports . getActorKeys = function ( ) {
return actorKeys ;
} ;
exports . clear = function ( ) {
actors = { } ;
messages = [ ] ;
} ;
2014-11-25 22:58:57 +01:00
} , { } ] , 10 : [ function ( require , module , exports ) {
2014-11-24 22:03:32 +01:00
/ * *
* Created by knut on 14 - 11 - 23.
* /
var sq = require ( './parser/sequence' ) . parser ;
sq . yy = require ( './sequenceDb' ) ;
/ * *
* Draws a flowchart in the tag with id : id based on the graph definition in text .
* @ param text
* @ param id
* /
module . exports . draw = function ( text , id ) {
sq . yy . clear ( ) ;
sq . parse ( text ) ;
var actors = sq . yy . getActors ( ) ;
var actorKeys = sq . yy . getActorKeys ( ) ;
var i ;
//console.log('Len = ' + )
for ( i = 0 ; i < actorKeys . length ; i ++ ) {
var key = actorKeys [ i ] ;
2014-11-25 22:58:57 +01:00
//console.log('Doing key: '+key)
2014-11-24 22:03:32 +01:00
var startMargin = 50 ;
var margin = 50 ;
var width = 150 ;
var yStartMargin = 10 ;
console . log ( 'x=: ' + ( startMargin + i * margin + i * 150 ) )
var cont = d3 . select ( "#mermaidChart0" ) ;
var g = cont . append ( "g" )
g . append ( "rect" )
. attr ( "x" , startMargin + i * margin + i * 150 )
. attr ( "y" , yStartMargin )
. attr ( "fill" , '#eaeaea' )
. attr ( "stroke" , '#666' )
. attr ( "width" , 150 )
. attr ( "height" , 65 )
. attr ( "rx" , 3 )
. attr ( "ry" , 3 )
g . append ( "text" ) // text label for the x axis
. attr ( "x" , startMargin + i * margin + i * 150 + 75 )
. attr ( "y" , yStartMargin + 37.5 )
. style ( "text-anchor" , "middle" )
. text ( actors [ actorKeys [ i ] ] . description )
;
}
//
////var cont = d3.select(id);
//var cont = d3.select("#mermaidChart0");
//var g = cont.append("g")
// .attr("x", 150)
// .attr("y", 10);
//g.append("rect")
// .attr("fill", '#eaeaea')
// .attr("stroke", '#666')
// .attr("width", 150)
// .attr("height", 75)
// .attr("rx", 5)
// .attr("ry", 5)
//g.append("text") // text label for the x axis
// .style("text-anchor", "middle")
// .text("Date pok ")
// .attr("y", 10);
/ *
graph . clear ( ) ;
flow . parser . yy = graph ;
// Parse the graph definition
flow . parser . parse ( text ) ;
// Fetch the default direction, use TD if none was found
var dir ;
dir = graph . getDirection ( ) ;
if ( typeof dir === 'undefined' ) {
dir = 'TD' ;
}
// Create the input mermaid.graph
var g = new dagreD3 . graphlib . Graph ( { multigraph : true } )
. setGraph ( {
rankdir : dir ,
marginx : 20 ,
marginy : 20
} )
. setDefaultEdgeLabel ( function ( ) {
return { } ;
} ) ;
// Fetch the verices/nodes and edges/links from the parsed graph definition
var vert = graph . getVertices ( ) ;
var edges = graph . getEdges ( ) ;
var classes = graph . getClasses ( ) ;
if ( typeof classes . default === 'undefined' ) {
classes . default = { id : 'default' } ;
classes . default . styles = [ 'fill:#eaeaea' , 'stroke:#666' , 'stroke-width:1.5px' ] ;
}
addVertices ( vert , g ) ;
addEdges ( edges , g ) ;
// Create the renderer
var render = new dagreD3 . render ( ) ;
// Add custom shape for rhombus type of boc (decision)
render . shapes ( ) . question = function ( parent , bbox , node ) {
var w = bbox . width ,
h = bbox . height * 3 ,
points = [
{ x : w / 2 , y : 0 } ,
{ x : w , y : - h / 2 } ,
{ x : w / 2 , y : - h } ,
{ x : 0 , y : - h / 2 }
] ;
shapeSvg = parent . insert ( "polygon" , ":first-child" )
. attr ( "points" , points . map ( function ( d ) {
return d . x + "," + d . y ;
} ) . join ( " " ) )
. style ( "fill" , "#fff" )
. style ( "stroke" , "#333" )
. attr ( "rx" , 5 )
. attr ( "ry" , 5 )
. attr ( "transform" , "translate(" + ( - w / 2 ) + "," + ( h * 2 / 4 ) + ")" ) ;
node . intersect = function ( point ) {
return dagreD3 . intersect . polygon ( node , points , point ) ;
} ;
return shapeSvg ;
} ;
// Add our custom arrow - an empty arrowhead
render . arrows ( ) . none = function normal ( parent , id , edge , type ) {
var marker = parent . append ( "marker" )
. attr ( "id" , id )
. attr ( "viewBox" , "0 0 10 10" )
. attr ( "refX" , 9 )
. attr ( "refY" , 5 )
. attr ( "markerUnits" , "strokeWidth" )
. attr ( "markerWidth" , 8 )
. attr ( "markerHeight" , 6 )
. attr ( "orient" , "auto" ) ;
var path = marker . append ( "path" )
. attr ( "d" , "M 0 0 L 0 0 L 0 0 z" ) ;
dagreD3 . util . applyStyle ( path , edge [ type + "Style" ] ) ;
} ;
// Set up an SVG group so that we can translate the final graph.
var svg = d3 . select ( "#" + id ) ;
svgGroup = d3 . select ( "#" + id + " g" ) ;
// Run the renderer. This is what draws the final graph.
render ( d3 . select ( "#" + id + " g" ) , g ) ;
// Center the graph
var xCenterOffset = ( svg . attr ( "width" ) - g . graph ( ) . width ) / 2 ;
//svgGroup.attr("transform", "translate(" + xCenterOffset + ", 20)");
svg . attr ( "height" , g . graph ( ) . height + 40 ) ;
* /
} ;
2014-11-25 22:58:57 +01:00
} , { "./parser/sequence" : 8 , "./sequenceDb" : 9 } ] , 11 : [ function ( require , module , exports ) {
2014-11-24 22:03:32 +01:00
/ * *
* Created by knut on 14 - 11 - 23.
* /
module . exports . detectType = function ( text ) {
if ( text . match ( /^\s*sequence/ ) ) {
return "sequence" ;
}
else {
return "graph" ;
}
}
2014-11-25 22:58:57 +01:00
} , { } ] } , { } , [ 5 ] )