MCPcopy Create free account
hub / github.com/TruthHun/BookStack / tokenPerl

Function tokenPerl

static/editor.md/lib/codemirror/mode/perl/perl.js:511–781  ·  view source on GitHub ↗
(stream,state)

Source from the content-addressed store, hash-verified

509 return state.tokenize(stream,state);}
510
511 function tokenPerl(stream,state){
512 if(stream.eatSpace())
513 return null;
514 if(state.chain)
515 return tokenChain(stream,state,state.chain,state.style,state.tail);
516 if(stream.match(/^\-?[\d\.]/,false))
517 if(stream.match(/^(\-?(\d*\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F]+|0b[01]+|\d+(e[+-]?\d+)?)/))
518 return 'number';
519 if(stream.match(/^<<(?=\w)/)){ // NOTE: <<SOMETHING\n...\nSOMETHING\n
520 stream.eatWhile(/\w/);
521 return tokenSOMETHING(stream,state,stream.current().substr(2));}
522 if(stream.sol()&&stream.match(/^\=item(?!\w)/)){// NOTE: \n=item...\n=cut\n
523 return tokenSOMETHING(stream,state,'=cut');}
524 var ch=stream.next();
525 if(ch=='"'||ch=="'"){ // NOTE: ' or " or <<'SOMETHING'\n...\nSOMETHING\n or <<"SOMETHING"\n...\nSOMETHING\n
526 if(prefix(stream, 3)=="<<"+ch){
527 var p=stream.pos;
528 stream.eatWhile(/\w/);
529 var n=stream.current().substr(1);
530 if(n&&stream.eat(ch))
531 return tokenSOMETHING(stream,state,n);
532 stream.pos=p;}
533 return tokenChain(stream,state,[ch],"string");}
534 if(ch=="q"){
535 var c=look(stream, -2);
536 if(!(c&&/\w/.test(c))){
537 c=look(stream, 0);
538 if(c=="x"){
539 c=look(stream, 1);
540 if(c=="("){
541 eatSuffix(stream, 2);
542 return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);}
543 if(c=="["){
544 eatSuffix(stream, 2);
545 return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);}
546 if(c=="{"){
547 eatSuffix(stream, 2);
548 return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);}
549 if(c=="<"){
550 eatSuffix(stream, 2);
551 return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);}
552 if(/[\^'"!~\/]/.test(c)){
553 eatSuffix(stream, 1);
554 return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}}
555 else if(c=="q"){
556 c=look(stream, 1);
557 if(c=="("){
558 eatSuffix(stream, 2);
559 return tokenChain(stream,state,[")"],"string");}
560 if(c=="["){
561 eatSuffix(stream, 2);
562 return tokenChain(stream,state,["]"],"string");}
563 if(c=="{"){
564 eatSuffix(stream, 2);
565 return tokenChain(stream,state,["}"],"string");}
566 if(c=="<"){
567 eatSuffix(stream, 2);
568 return tokenChain(stream,state,[">"],"string");}

Callers

nothing calls this directly

Calls 6

tokenChainFunction · 0.85
tokenSOMETHINGFunction · 0.85
prefixFunction · 0.85
lookFunction · 0.85
eatSuffixFunction · 0.85
suffixFunction · 0.85

Tested by

no test coverage detected