MCPcopy
hub / github.com/jquerytools/jquerytools / string

Function string

lib/jslint.js:32–42  ·  view source on GitHub ↗
(x)

Source from the content-addressed store, hash-verified

30return{init:function(source){if(typeof source==='string'){lines=source.replace(/\r\n/g,'\n').replace(/\r/g,'\n').split('\n');}else{lines=source;}
31line=-1;nextLine();from=0;},token:function(){var b,c,captures,d,depth,high,i,l,low,q,t;function match(x){var r=x.exec(s),r1;if(r){l=r[0].length;r1=r[1];c=r1.charAt(0);s=s.substr(l);character+=l;from=character-r1.length;return r1;}}
32function string(x){var c,j,r='';if(jsonmode&&x!=='"'){warningAt("Strings must use doublequote.",line,character);}
33if(xmode===x||xmode==='string'){return it('(punctuator)',x);}
34function esc(n){var i=parseInt(s.substr(j+1,n),16);j+=n;if(i>=32&&i<=127&&i!==34&&i!==92&&i!==39){warningAt("Unnecessary escapement.",line,character);}
35character+=n;c=String.fromCharCode(i);}
36j=0;for(;;){while(j>=s.length){j=0;if(xmode!=='xml'||!nextLine()){errorAt("Unclosed string.",line,from);}}
37c=s.charAt(j);if(c===x){character+=1;s=s.substr(j+1);return it('(string)',r,x);}
38if(c<' '){if(c==='\n'||c==='\r'){break;}
39warningAt("Control character in string: {a}.",line,character+j,s.slice(0,j));}else if(c==='<'){if(option.adsafe&&xmode==='xml'){warningAt("ADsafe string violation.",line,character+j);}else if(s.charAt(j+1)==='/'&&((xmode&&xmode!=='CDATA')||option.adsafe)){warningAt("Expected '<\\/' and instead saw '</'.",line,character);}}else if(c==='\\'){if(option.adsafe&&xmode==='xml'){warningAt("ADsafe string violation.",line,character+j);}
40j+=1;character+=1;c=s.charAt(j);switch(c){case'\\':case'\'':case'"':case'/':break;case'b':c='\b';break;case'f':c='\f';break;case'n':c='\n';break;case'r':c='\r';break;case't':c='\t';break;case'u':esc(4);break;case'v':c='\v';break;case'x':if(jsonmode){warningAt("Avoid \\x-.",line,character);}
41esc(2);break;default:warningAt("Bad escapement.",line,character);}}
42r+=c;character+=1;j+=1;}}
43for(;;){if(!s){return it(nextLine()?'(endline)':'(end)','');}
44t=match(tx);if(!t){t='';c='';while(s&&s<'!'){s=s.substr(1);}
45if(s){errorAt("Unexpected '{a}'.",line,character,s.substr(0,1));}}

Callers 1

jslint.jsFile · 0.85

Calls 5

warningAtFunction · 0.85
itFunction · 0.85
nextLineFunction · 0.85
errorAtFunction · 0.85
escFunction · 0.85

Tested by

no test coverage detected