Best JavaScript code snippet using playwright-internal
parse-css.js
Source:parse-css.js  
...246		else if(code == 0x7b) return new OpenCurlyToken();247		else if(code == 0x7c) {248			if(next() == 0x3d) {249				consume();250				return new DashMatchToken();251			// } else if(next() == 0x7c) {252			// 	consume();253			// 	return new ColumnToken();254			} else {255				return new DelimToken(code);256			}257		}258		else if(code == 0x7d) return new CloseCurlyToken();259		else if(code == 0x7e) {260			if(next() == 0x3d) {261				consume();262				return new IncludeMatchToken();263			} else {264				return new DelimToken(code);265			}266		}267		else if(digit(code)) {268			reconsume();269			return consumeANumericToken();270		}271		else if(namestartchar(code)) {272			reconsume();273			return consumeAnIdentlikeToken();274		}275		else if(eof()) return new EOFToken();276		else return new DelimToken(code);277	};278	var consumeAComment = function() {279		consume();280		var comment = "";281		while(true) {282			consume();283			if(code == 0x2a && next() == 0x2f) {284				consume();285				break;286			} else if(eof()) {287				break;288			}289			comment += stringFromCode(code);290		}291		return new CommentToken(comment);292	};293	var consumeANumericToken = function() {294		var num = consumeANumber();295		var token;296		if(wouldStartAnIdentifier(next(1), next(2), next(3))) {297			token = new DimensionToken();298			token.value = num.value;299			token.repr = num.repr;300			token.type = num.type;301			token.unit = consumeAName();302			token.text = token.unit;303		} else if(next() == 0x25) {304			consume();305			token = new PercentageToken();306			token.value = num.value;307			token.repr = num.repr;308		} else {309			var token = new NumberToken();310			token.value = num.value;311			token.repr = num.repr;312			token.type = num.type;313		}314		token.number = token.value;315		token.isInteger = token.type === "integer";316		// FIXME hasSign317		return token;318	};319	var consumeAnIdentlikeToken = function() {320		var str = consumeAName();321		if(str.toLowerCase() == "url" && next() == 0x28) {322			consume();323			while(whitespace(next(1)) && whitespace(next(2)))324				consume();325			if((next() == 0x22 || next() == 0x27) ||326			   (whitespace(next()) && (next(2) == 0x22 || next(2) == 0x27))) {327				while(whitespace(next()))328					consume();329				consume();330				let str = consumeAStringToken();331				while(whitespace(next()))332					consume();333				// The closing paren.334				consume();335				return new URLToken(str.text);336			} else {337				return consumeAURLToken();338			}339		} else if(next() == 0x28) {340			consume();341			return new FunctionToken(str);342		} else {343			return new IdentToken(str);344		}345	};346	var consumeAStringToken = function(endingCodePoint) {347		if(endingCodePoint === undefined) endingCodePoint = code;348		var string = "";349		while(consume()) {350			if(code == endingCodePoint || eof()) {351				return new StringToken(string);352			} else if(newline(code)) {353				reconsume();354				return new BadStringToken(string);355			} else if(code == 0x5c) {356				if(eof(next())) {357					donothing();358				} else if(newline(next())) {359					consume();360				} else {361					string += stringFromCode(consumeEscape());362				}363			} else {364				string += stringFromCode(code);365			}366		}367	};368	var consumeAURLToken = function() {369		var token = new URLToken("");370		while(whitespace(next())) consume();371		if(eof(next())) return token;372		while(consume()) {373			if(code == 0x29 || eof()) {374				break;375			} else if(whitespace(code)) {376				while(whitespace(next()))377					consume();378				if(next() == 0x29 || eof(next())) {379					consume();380					break;381				} else {382					consumeTheRemnantsOfABadURL();383					return new BadURLToken();384				}385			} else if(code == 0x22 || code == 0x27 || code == 0x28 || nonprintable(code)) {386				parseerror();387				consumeTheRemnantsOfABadURL();388				return new BadURLToken();389			} else if(code == 0x5c) {390				if(startsWithAValidEscape()) {391					token.value += stringFromCode(consumeEscape());392				} else {393					parseerror();394					consumeTheRemnantsOfABadURL();395					return new BadURLToken();396				}397			} else {398				token.value += stringFromCode(code);399			}400		}401		token.text = token.value;402		return token;403	};404	var consumeEscape = function() {405		// Assume the the current character is the \406		// and the next code point is not a newline.407		consume();408		if(hexdigit(code)) {409			// Consume 1-6 hex digits410			var digits = [code];411			for(var total = 0; total < 5; total++) {412				if(hexdigit(next())) {413					consume();414					digits.push(code);415				} else {416					break;417				}418			}419			if(whitespace(next())) consume();420			var value = parseInt(digits.map(function(x){return String.fromCharCode(x);}).join(''), 16);421			if( value > maximumallowedcodepoint ) value = 0xfffd;422			return value;423		} else if(eof()) {424			return 0xfffd;425		} else {426			return code;427		}428	};429	var areAValidEscape = function(c1, c2) {430		if(c1 != 0x5c) return false;431		if(newline(c2)) return false;432		return true;433	};434	var startsWithAValidEscape = function() {435		return areAValidEscape(code, next());436	};437	var wouldStartAnIdentifier = function(c1, c2, c3) {438		if(c1 == 0x2d) {439			return namestartchar(c2) || c2 == 0x2d || areAValidEscape(c2, c3);440		} else if(namestartchar(c1)) {441			return true;442		} else if(c1 == 0x5c) {443			return areAValidEscape(c1, c2);444		} else {445			return false;446		}447	};448	var startsWithAnIdentifier = function() {449		return wouldStartAnIdentifier(code, next(1), next(2));450	};451	var wouldStartANumber = function(c1, c2, c3) {452		if(c1 == 0x2b || c1 == 0x2d) {453			if(digit(c2)) return true;454			if(c2 == 0x2e && digit(c3)) return true;455			return false;456		} else if(c1 == 0x2e) {457			if(digit(c2)) return true;458			return false;459		} else if(digit(c1)) {460			return true;461		} else {462			return false;463		}464	};465	var startsWithANumber = function() {466		return wouldStartANumber(code, next(1), next(2));467	};468	var consumeAName = function() {469		var result = "";470		while(consume()) {471			if(namechar(code)) {472				result += stringFromCode(code);473			} else if(startsWithAValidEscape()) {474				result += stringFromCode(consumeEscape());475			} else {476				reconsume();477				return result;478			}479		}480	};481	var consumeANumber = function() {482		var repr = [];483		var type = "integer";484		if(next() == 0x2b || next() == 0x2d) {485			consume();486			repr += stringFromCode(code);487		}488		while(digit(next())) {489			consume();490			repr += stringFromCode(code);491		}492		if(next(1) == 0x2e && digit(next(2))) {493			consume();494			repr += stringFromCode(code);495			consume();496			repr += stringFromCode(code);497			type = "number";498			while(digit(next())) {499				consume();500				repr += stringFromCode(code);501			}502		}503		var c1 = next(1), c2 = next(2), c3 = next(3);504		if((c1 == 0x45 || c1 == 0x65) && digit(c2)) {505			consume();506			repr += stringFromCode(code);507			consume();508			repr += stringFromCode(code);509			type = "number";510			while(digit(next())) {511				consume();512				repr += stringFromCode(code);513			}514		} else if((c1 == 0x45 || c1 == 0x65) && (c2 == 0x2b || c2 == 0x2d) && digit(c3)) {515			consume();516			repr += stringFromCode(code);517			consume();518			repr += stringFromCode(code);519			consume();520			repr += stringFromCode(code);521			type = "number";522			while(digit(next())) {523				consume();524				repr += stringFromCode(code);525			}526		}527		var value = convertAStringToANumber(repr);528		return {type:type, value:value, repr:repr};529	};530	var convertAStringToANumber = function(string) {531		// CSS's number rules are identical to JS, afaik.532		return +string;533	};534	var consumeTheRemnantsOfABadURL = function() {535		while(consume()) {536			if(code == 0x2d || eof()) {537				return;538			} else if(startsWithAValidEscape()) {539				consumeEscape();540				donothing();541			} else {542				donothing();543			}544		}545	};546	var iterationCount = 0;547	while(!eof(next())) {548		var token = consumeAToken();549		if (options.loc) {550			token.loc = {};551			token.loc.start = {line:locStart.line, column:locStart.column};552			token.loc.end = {line:line, column:column};553		}554		if (options.offsets) {555			token.startOffset = offsetStart;556			token.endOffset = i + 1;557		}558		yield token;559		iterationCount++;560		if(iterationCount > str.length*2) return "I'm infinite-looping!";561	}562}563function CSSParserToken() { throw "Abstract Base Class"; }564CSSParserToken.prototype.toJSON = function() {565	return {token: this.tokenType};566};567CSSParserToken.prototype.toString = function() { return this.tokenType; };568CSSParserToken.prototype.toSource = function() { return ''+this; };569function BadStringToken(text) {570	this.text = text;571	return this;572}573BadStringToken.prototype = Object.create(CSSParserToken.prototype);574BadStringToken.prototype.tokenType = "bad_string";575function BadURLToken() { return this; }576BadURLToken.prototype = Object.create(CSSParserToken.prototype);577BadURLToken.prototype.tokenType = "bad_url";578function WhitespaceToken() { return this; }579WhitespaceToken.prototype = Object.create(CSSParserToken.prototype);580WhitespaceToken.prototype.tokenType = "whitespace";581WhitespaceToken.prototype.toString = function() { return "WS"; };582WhitespaceToken.prototype.toSource = function() { return " "; };583function CDOToken() { return this; }584CDOToken.prototype = Object.create(CSSParserToken.prototype);585CDOToken.prototype.tokenType = "htmlcomment";586CDOToken.prototype.toSource = function() { return "<!--"; };587function CDCToken() { return this; }588CDCToken.prototype = Object.create(CSSParserToken.prototype);589CDCToken.prototype.tokenType = "htmlcomment";590CDCToken.prototype.toSource = function() { return "-->"; };591function ColonToken() { return this; }592ColonToken.prototype = Object.create(CSSParserToken.prototype);593ColonToken.prototype.tokenType = "symbol";594ColonToken.prototype.text = ":";595function SemicolonToken() { return this; }596SemicolonToken.prototype = Object.create(CSSParserToken.prototype);597SemicolonToken.prototype.tokenType = "symbol";598SemicolonToken.prototype.text = ";";599function CommaToken() { return this; }600CommaToken.prototype = Object.create(CSSParserToken.prototype);601CommaToken.prototype.tokenType = "symbol";602CommaToken.prototype.text = ",";603function GroupingToken() { throw "Abstract Base Class"; }604GroupingToken.prototype = Object.create(CSSParserToken.prototype);605function OpenCurlyToken() { this.value = "{"; this.mirror = "}"; return this; }606OpenCurlyToken.prototype = Object.create(GroupingToken.prototype);607OpenCurlyToken.prototype.tokenType = "symbol";608OpenCurlyToken.prototype.text = "{";609function CloseCurlyToken() { this.value = "}"; this.mirror = "{"; return this; }610CloseCurlyToken.prototype = Object.create(GroupingToken.prototype);611CloseCurlyToken.prototype.tokenType = "symbol";612CloseCurlyToken.prototype.text = "}";613function OpenSquareToken() { this.value = "["; this.mirror = "]"; return this; }614OpenSquareToken.prototype = Object.create(GroupingToken.prototype);615OpenSquareToken.prototype.tokenType = "symbol";616OpenSquareToken.prototype.text = "[";617function CloseSquareToken() { this.value = "]"; this.mirror = "["; return this; }618CloseSquareToken.prototype = Object.create(GroupingToken.prototype);619CloseSquareToken.prototype.tokenType = "symbol";620CloseSquareToken.prototype.text = "]";621function OpenParenToken() { this.value = "("; this.mirror = ")"; return this; }622OpenParenToken.prototype = Object.create(GroupingToken.prototype);623OpenParenToken.prototype.tokenType = "symbol";624OpenParenToken.prototype.text = "(";625function CloseParenToken() { this.value = ")"; this.mirror = "("; return this; }626CloseParenToken.prototype = Object.create(GroupingToken.prototype);627CloseParenToken.prototype.tokenType = "symbol";628CloseParenToken.prototype.text = ")";629function IncludeMatchToken() { return this; }630IncludeMatchToken.prototype = Object.create(CSSParserToken.prototype);631IncludeMatchToken.prototype.tokenType = "includes";632function DashMatchToken() { return this; }633DashMatchToken.prototype = Object.create(CSSParserToken.prototype);634DashMatchToken.prototype.tokenType = "dashmatch";635function PrefixMatchToken() { return this; }636PrefixMatchToken.prototype = Object.create(CSSParserToken.prototype);637PrefixMatchToken.prototype.tokenType = "beginsmatch";638function SuffixMatchToken() { return this; }639SuffixMatchToken.prototype = Object.create(CSSParserToken.prototype);640SuffixMatchToken.prototype.tokenType = "endsmatch";641function SubstringMatchToken() { return this; }642SubstringMatchToken.prototype = Object.create(CSSParserToken.prototype);643SubstringMatchToken.prototype.tokenType = "containsmatch";644function ColumnToken() { return this; }645ColumnToken.prototype = Object.create(CSSParserToken.prototype);646ColumnToken.prototype.tokenType = "||";...css-syntax.js
Source:css-syntax.js  
...244		else if(code == 0x7b) return new OpenCurlyToken();245		else if(code == 0x7c) {246			if(next() == 0x3d) {247				consume();248				return new DashMatchToken();249			} else if(next() == 0x7c) {250				consume();251				return new ColumnToken();252			} else {253				return new DelimToken(code);254			}255		}256		else if(code == 0x7d) return new CloseCurlyToken();257		else if(code == 0x7e) {258			if(next() == 0x3d) {259				consume();260				return new IncludeMatchToken();261			} else {262				return new DelimToken(code);263			}264		}265		else if(digit(code)) {266			reconsume();267			return consumeANumericToken();268		}269		else if(namestartchar(code)) {270			reconsume();271			return consumeAnIdentlikeToken();272		}273		else if(eof()) return new EOFToken();274		else return new DelimToken(code);275	};276	var consumeComments = function() {277		while(next(1) == 0x2f && next(2) == 0x2a) {278			consume(2);279			while(true) {280				consume();281				if(code == 0x2a && next() == 0x2f) {282					consume();283					break;284				} else if(eof()) {285					tokenizeerror();286					return;287				}288			}289		}290	};291	var consumeANumericToken = function() {292		var num = consumeANumber();293		if(wouldStartAnIdentifier(next(1), next(2), next(3))) {294			var token = new DimensionToken();295			token.value = num.value;296			token.repr = num.repr;297			token.type = num.type;298			token.unit = consumeAName();299			return token;300		} else if(next() == 0x25) {301			consume();302			var token = new PercentageToken();303			token.value = num.value;304			token.repr = num.repr;305			return token;306		} else {307			var token = new NumberToken();308			token.value = num.value;309			token.repr = num.repr;310			token.type = num.type;311			return token;312		}313	};314	var consumeAnIdentlikeToken = function() {315		var str = consumeAName();316		if(str.toLowerCase() == "url" && next() == 0x28) {317			consume();318			while(whitespace(next(1)) && whitespace(next(2))) consume();319			if(next() == 0x22 || next() == 0x27) {320				return new FunctionToken(str);321			} else if(whitespace(next()) && (next(2) == 0x22 || next(2) == 0x27)) {322				return new FunctionToken(str);323			} else {324				return consumeAURLToken();325			}326		} else if(next() == 0x28) {327			consume();328			return new FunctionToken(str);329		} else {330			return new IdentifierToken(str);331		}332	};333	var consumeAStringToken = function(endingCodePoint) {334		if(endingCodePoint === undefined) endingCodePoint = code;335		var string = "";336		while(consume()) {337			if(code == endingCodePoint || eof()) {338				return new StringToken(string);339			} else if(newline(code)) {340				tokenizeerror();341				reconsume();342				return new BadStringToken();343			} else if(code == 0x5c) {344				if(eof(next())) {345					donothing();346				} else if(newline(next())) {347					consume();348				} else {349					string += stringFromCode(consumeEscape())350				}351			} else {352				string += stringFromCode(code);353			}354		}355	};356	var consumeAURLToken = function() {357		var token = new URLToken("");358		while(whitespace(next())) consume();359		if(eof(next())) return token;360		while(consume()) {361			if(code == 0x29 || eof()) {362				return token;363			} else if(whitespace(code)) {364				while(whitespace(next())) consume();365				if(next() == 0x29 || eof(next())) {366					consume();367					return token;368				} else {369					consumeTheRemnantsOfABadURL();370					return new BadURLToken();371				}372			} else if(code == 0x22 || code == 0x27 || code == 0x28 || nonprintable(code)) {373				tokenizeerror();374				consumeTheRemnantsOfABadURL();375				return new BadURLToken();376			} else if(code == 0x5c) {377				if(startsWithAValidEscape()) {378					token.value += stringFromCode(consumeEscape());379				} else {380					tokenizeerror();381					consumeTheRemnantsOfABadURL();382					return new BadURLToken();383				}384			} else {385				token.value += stringFromCode(code);386			}387		}388	};389	var consumeEscape = function() {390		// Assume the the current character is the \391		// and the next code point is not a newline.392		consume();393		if(hexdigit(code)) {394			// Consume 1-6 hex digits395			var digits = [code];396			for(var total = 0; total < 5; total++) {397				if(hexdigit(next())) {398					consume();399					digits.push(code);400				} else {401					break;402				}403			}404			if(whitespace(next())) consume();405			var value = parseInt(digits.map(function(x){return String.fromCharCode(x);}).join(''), 16);406			if( value > maximumallowedcodepoint ) value = 0xfffd;407			return value;408		} else if(eof()) {409			return 0xfffd;410		} else {411			return code;412		}413	};414	var areAValidEscape = function(c1, c2) {415		if(c1 != 0x5c) return false;416		if(newline(c2)) return false;417		return true;418	};419	var startsWithAValidEscape = function() {420		return areAValidEscape(code, next());421	};422	var wouldStartAnIdentifier = function(c1, c2, c3) {423		if(c1 == 0x2d) {424			return namestartchar(c2) || c2 == 0x2d || areAValidEscape(c2, c3);425		} else if(namestartchar(c1)) {426			return true;427		} else if(c1 == 0x5c) {428			return areAValidEscape(c1, c2);429		} else {430			return false;431		}432	};433	var startsWithAnIdentifier = function() {434		return wouldStartAnIdentifier(code, next(1), next(2));435	};436	var wouldStartANumber = function(c1, c2, c3) {437		if(c1 == 0x2b || c1 == 0x2d) {438			if(digit(c2)) return true;439			if(c2 == 0x2e && digit(c3)) return true;440			return false;441		} else if(c1 == 0x2e) {442			if(digit(c2)) return true;443			return false;444		} else if(digit(c1)) {445			return true;446		} else {447			return false;448		}449	};450	var startsWithANumber = function() {451		return wouldStartANumber(code, next(1), next(2));452	};453	var consumeAName = function() {454		var result = "";455		while(consume()) {456			if(namechar(code)) {457				result += stringFromCode(code);458			} else if(startsWithAValidEscape()) {459				result += stringFromCode(consumeEscape());460			} else {461				reconsume();462				return result;463			}464		}465	};466	var consumeANumber = function() {467		var repr = '';468		var type = "integer";469		if(next() == 0x2b || next() == 0x2d) {470			consume();471			repr += stringFromCode(code);472		}473		while(digit(next())) {474			consume();475			repr += stringFromCode(code);476		}477		if(next(1) == 0x2e && digit(next(2))) {478			consume();479			repr += stringFromCode(code);480			consume();481			repr += stringFromCode(code);482			type = "number";483			while(digit(next())) {484				consume();485				repr += stringFromCode(code);486			}487		}488		var c1 = next(1), c2 = next(2), c3 = next(3);489		if((c1 == 0x45 || c1 == 0x65) && digit(c2)) {490			consume();491			repr += stringFromCode(code);492			consume();493			repr += stringFromCode(code);494			type = "number";495			while(digit(next())) {496				consume();497				repr += stringFromCode(code);498			}499		} else if((c1 == 0x45 || c1 == 0x65) && (c2 == 0x2b || c2 == 0x2d) && digit(c3)) {500			consume();501			repr += stringFromCode(code);502			consume();503			repr += stringFromCode(code);504			consume();505			repr += stringFromCode(code);506			type = "number";507			while(digit(next())) {508				consume();509				repr += stringFromCode(code);510			}511		}512		var value = convertAStringToANumber(repr);513		return {type:type, value:value, repr:repr};514	};515	var convertAStringToANumber = function(string) {516		// CSS's number rules are identical to JS, afaik.517		return +string;518	};519	var consumeTheRemnantsOfABadURL = function() {520		while(consume()) {521			if(code == 0x2d || eof()) {522				return;523			} else if(startsWithAValidEscape()) {524				consumeEscape();525				donothing();526			} else {527				donothing();528			}529		}530	};531	var iterationCount = 0;532	while(!eof(next())) {533		tokens.push(consumeAToken());534		if(iterationCount++ > str.length*2) throw new Error("The CSS Tokenizer is infinite-looping");535	}536	return tokens;537}538function CSSParserToken() { return this; }539CSSParserToken.prototype.toJSON = function() {540	return {token: this.tokenType};541}542CSSParserToken.prototype.toString = function() { return this.tokenType; }543CSSParserToken.prototype.toCSSString = function() { return ''+this; }544function BadStringToken() { return this; }545BadStringToken.prototype = new CSSParserToken;546BadStringToken.prototype.tokenType = "BADSTRING";547BadStringToken.prototype.toCSSString = function() { return "'"; }548function BadURLToken() { return this; }549BadURLToken.prototype = new CSSParserToken;550BadURLToken.prototype.tokenType = "BADURL";551BadURLToken.prototype.toCSSString = function() { return "url("; }552function WhitespaceToken() { return this; }553WhitespaceToken.prototype = new CSSParserToken;554WhitespaceToken.prototype.tokenType = "WHITESPACE";555WhitespaceToken.prototype.toString = function() { return "WS"; }556WhitespaceToken.prototype.toCSSString = function() { return " "; }557function CDOToken() { return this; }558CDOToken.prototype = new CSSParserToken;559CDOToken.prototype.tokenType = "CDO";560CDOToken.prototype.toCSSString = function() { return "<!--"; }561function CDCToken() { return this; }562CDCToken.prototype = new CSSParserToken;563CDCToken.prototype.tokenType = "CDC";564CDCToken.prototype.toCSSString = function() { return "-->"; }565function ColonToken() { return this; }566ColonToken.prototype = new CSSParserToken;567ColonToken.prototype.tokenType = ":";568function SemicolonToken() { return this; }569SemicolonToken.prototype = new CSSParserToken;570SemicolonToken.prototype.tokenType = ";";571function CommaToken() { return this; }572CommaToken.prototype = new CSSParserToken;573CommaToken.prototype.tokenType = ",";574CommaToken.prototype.value = ";"; // backwards-compat with DELIM token575function GroupingToken() { return this; }576GroupingToken.prototype = new CSSParserToken;577function OpenCurlyToken() { this.value = "{"; this.mirror = "}"; return this; }578OpenCurlyToken.prototype = new GroupingToken;579OpenCurlyToken.prototype.tokenType = "{";580function CloseCurlyToken() { this.value = "}"; this.mirror = "{"; return this; }581CloseCurlyToken.prototype = new GroupingToken;582CloseCurlyToken.prototype.tokenType = "}";583function OpenSquareToken() { this.value = "["; this.mirror = "]"; return this; }584OpenSquareToken.prototype = new GroupingToken;585OpenSquareToken.prototype.tokenType = "[";586function CloseSquareToken() { this.value = "]"; this.mirror = "["; return this; }587CloseSquareToken.prototype = new GroupingToken;588CloseSquareToken.prototype.tokenType = "]";589function OpenParenToken() { this.value = "("; this.mirror = ")"; return this; }590OpenParenToken.prototype = new GroupingToken;591OpenParenToken.prototype.tokenType = "(";592function CloseParenToken() { this.value = ")"; this.mirror = "("; return this; }593CloseParenToken.prototype = new GroupingToken;594CloseParenToken.prototype.tokenType = ")";595function IncludeMatchToken() { return this; }596IncludeMatchToken.prototype = new CSSParserToken;597IncludeMatchToken.prototype.tokenType = "~=";598function DashMatchToken() { return this; }599DashMatchToken.prototype = new CSSParserToken;600DashMatchToken.prototype.tokenType = "|=";601function PrefixMatchToken() { return this; }602PrefixMatchToken.prototype = new CSSParserToken;603PrefixMatchToken.prototype.tokenType = "^=";604function SuffixMatchToken() { return this; }605SuffixMatchToken.prototype = new CSSParserToken;606SuffixMatchToken.prototype.tokenType = "$=";607function SubstringMatchToken() { return this; }608SubstringMatchToken.prototype = new CSSParserToken;609SubstringMatchToken.prototype.tokenType = "*=";610function ColumnToken() { return this; }611ColumnToken.prototype = new CSSParserToken;612ColumnToken.prototype.tokenType = "||";...cssTokenizer.js
Source:cssTokenizer.js  
...244    else if(code == 0x7b) return new OpenCurlyToken();245    else if(code == 0x7c) {246      if(next() == 0x3d) {247        consume();248        return new DashMatchToken();249      } else if(next() == 0x7c) {250        consume();251        return new ColumnToken();252      } else {253        return new DelimToken(code);254      }255    }256    else if(code == 0x7d) return new CloseCurlyToken();257    else if(code == 0x7e) {258      if(next() == 0x3d) {259        consume();260        return new IncludeMatchToken();261      } else {262        return new DelimToken(code);263      }264    }265    else if(digit(code)) {266      reconsume();267      return consumeANumericToken();268    }269    else if(namestartchar(code)) {270      reconsume();271      return consumeAnIdentlikeToken();272    }273    else if(eof()) return new EOFToken();274    else return new DelimToken(code);275  };276  var consumeComments = function() {277    while(next(1) == 0x2f && next(2) == 0x2a) {278      consume(2);279      while(true) {280        consume();281        if(code == 0x2a && next() == 0x2f) {282          consume();283          break;284        } else if(eof()) {285          parseerror();286          return;287        }288      }289    }290  };291  var consumeANumericToken = function() {292    var num = consumeANumber();293    if(wouldStartAnIdentifier(next(1), next(2), next(3))) {294      var token = new DimensionToken();295      token.value = num.value;296      token.repr = num.repr;297      token.type = num.type;298      token.unit = consumeAName();299      return token;300    } else if(next() == 0x25) {301      consume();302      var token = new PercentageToken();303      token.value = num.value;304      token.repr = num.repr;305      return token;306    } else {307      var token = new NumberToken();308      token.value = num.value;309      token.repr = num.repr;310      token.type = num.type;311      return token;312    }313  };314  var consumeAnIdentlikeToken = function() {315    var str = consumeAName();316    if(str.toLowerCase() == "url" && next() == 0x28) {317      consume();318      while(whitespace(next(1)) && whitespace(next(2))) consume();319      if(next() == 0x22 || next() == 0x27) {320        return new FunctionToken(str);321      } else if(whitespace(next()) && (next(2) == 0x22 || next(2) == 0x27)) {322        return new FunctionToken(str);323      } else {324        return consumeAURLToken();325      }326    } else if(next() == 0x28) {327      consume();328      return new FunctionToken(str);329    } else {330      return new IdentToken(str);331    }332  };333  var consumeAStringToken = function(endingCodePoint) {334    if(endingCodePoint === undefined) endingCodePoint = code;335    var string = "";336    while(consume()) {337      if(code == endingCodePoint || eof()) {338        return new StringToken(string);339      } else if(newline(code)) {340        parseerror();341        reconsume();342        return new BadStringToken();343      } else if(code == 0x5c) {344        if(eof(next())) {345          donothing();346        } else if(newline(next())) {347          consume();348        } else {349          string += stringFromCode(consumeEscape())350        }351      } else {352        string += stringFromCode(code);353      }354    }355  };356  var consumeAURLToken = function() {357    var token = new URLToken("");358    while(whitespace(next())) consume();359    if(eof(next())) return token;360    while(consume()) {361      if(code == 0x29 || eof()) {362        return token;363      } else if(whitespace(code)) {364        while(whitespace(next())) consume();365        if(next() == 0x29 || eof(next())) {366          consume();367          return token;368        } else {369          consumeTheRemnantsOfABadURL();370          return new BadURLToken();371        }372      } else if(code == 0x22 || code == 0x27 || code == 0x28 || nonprintable(code)) {373        parseerror();374        consumeTheRemnantsOfABadURL();375        return new BadURLToken();376      } else if(code == 0x5c) {377        if(startsWithAValidEscape()) {378          token.value += stringFromCode(consumeEscape());379        } else {380          parseerror();381          consumeTheRemnantsOfABadURL();382          return new BadURLToken();383        }384      } else {385        token.value += stringFromCode(code);386      }387    }388  };389  var consumeEscape = function() {390    // Assume the the current character is the \391    // and the next code point is not a newline.392    consume();393    if(hexdigit(code)) {394      // Consume 1-6 hex digits395      var digits = [code];396      for(var total = 0; total < 5; total++) {397        if(hexdigit(next())) {398          consume();399          digits.push(code);400        } else {401          break;402        }403      }404      if(whitespace(next())) consume();405      var value = parseInt(digits.map(function(x){return String.fromCharCode(x);}).join(''), 16);406      if( value > maximumallowedcodepoint ) value = 0xfffd;407      return value;408    } else if(eof()) {409      return 0xfffd;410    } else {411      return code;412    }413  };414  var areAValidEscape = function(c1, c2) {415    if(c1 != 0x5c) return false;416    if(newline(c2)) return false;417    return true;418  };419  var startsWithAValidEscape = function() {420    return areAValidEscape(code, next());421  };422  var wouldStartAnIdentifier = function(c1, c2, c3) {423    if(c1 == 0x2d) {424      return namestartchar(c2) || c2 == 0x2d || areAValidEscape(c2, c3);425    } else if(namestartchar(c1)) {426      return true;427    } else if(c1 == 0x5c) {428      return areAValidEscape(c1, c2);429    } else {430      return false;431    }432  };433  var startsWithAnIdentifier = function() {434    return wouldStartAnIdentifier(code, next(1), next(2));435  };436  var wouldStartANumber = function(c1, c2, c3) {437    if(c1 == 0x2b || c1 == 0x2d) {438      if(digit(c2)) return true;439      if(c2 == 0x2e && digit(c3)) return true;440      return false;441    } else if(c1 == 0x2e) {442      if(digit(c2)) return true;443      return false;444    } else if(digit(c1)) {445      return true;446    } else {447      return false;448    }449  };450  var startsWithANumber = function() {451    return wouldStartANumber(code, next(1), next(2));452  };453  var consumeAName = function() {454    var result = "";455    while(consume()) {456      if(namechar(code)) {457        result += stringFromCode(code);458      } else if(startsWithAValidEscape()) {459        result += stringFromCode(consumeEscape());460      } else {461        reconsume();462        return result;463      }464    }465  };466  var consumeANumber = function() {467    var repr = [];468    var type = "integer";469    if(next() == 0x2b || next() == 0x2d) {470      consume();471      repr += stringFromCode(code);472    }473    while(digit(next())) {474      consume();475      repr += stringFromCode(code);476    }477    if(next(1) == 0x2e && digit(next(2))) {478      consume();479      repr += stringFromCode(code);480      consume();481      repr += stringFromCode(code);482      type = "number";483      while(digit(next())) {484        consume();485        repr += stringFromCode(code);486      }487    }488    var c1 = next(1), c2 = next(2), c3 = next(3);489    if((c1 == 0x45 || c1 == 0x65) && digit(c2)) {490      consume();491      repr += stringFromCode(code);492      consume();493      repr += stringFromCode(code);494      type = "number";495      while(digit(next())) {496        consume();497        repr += stringFromCode(code);498      }499    } else if((c1 == 0x45 || c1 == 0x65) && (c2 == 0x2b || c2 == 0x2d) && digit(c3)) {500      consume();501      repr += stringFromCode(code);502      consume();503      repr += stringFromCode(code);504      consume();505      repr += stringFromCode(code);506      type = "number";507      while(digit(next())) {508        consume();509        repr += stringFromCode(code);510      }511    }512    var value = convertAStringToANumber(repr);513    return {type:type, value:value, repr:repr};514  };515  var convertAStringToANumber = function(string) {516    // CSS's number rules are identical to JS, afaik.517    return +string;518  };519  var consumeTheRemnantsOfABadURL = function() {520    while(consume()) {521      if(code == 0x29 || eof()) {522        return;523      } else if(startsWithAValidEscape()) {524        consumeEscape();525        donothing();526      } else {527        donothing();528      }529    }530  };531  var iterationCount = 0;532  while(!eof(next())) {533    tokens.push(consumeAToken());534    iterationCount++;535    if(iterationCount > str.length*2) return "I'm infinite-looping!";536  }537  return tokens;538}539function CSSParserToken() { throw "Abstract Base Class"; }540CSSParserToken.prototype.toJSON = function() {541  return {token: this.tokenType};542}543CSSParserToken.prototype.toString = function() { return this.tokenType; }544CSSParserToken.prototype.toSource = function() { return ''+this; }545function BadStringToken() { return this; }546BadStringToken.prototype = Object.create(CSSParserToken.prototype);547BadStringToken.prototype.tokenType = "BADSTRING";548function BadURLToken() { return this; }549BadURLToken.prototype = Object.create(CSSParserToken.prototype);550BadURLToken.prototype.tokenType = "BADURL";551function WhitespaceToken() { return this; }552WhitespaceToken.prototype = Object.create(CSSParserToken.prototype);553WhitespaceToken.prototype.tokenType = "WHITESPACE";554WhitespaceToken.prototype.toString = function() { return "WS"; }555WhitespaceToken.prototype.toSource = function() { return " "; }556function CDOToken() { return this; }557CDOToken.prototype = Object.create(CSSParserToken.prototype);558CDOToken.prototype.tokenType = "CDO";559CDOToken.prototype.toSource = function() { return "<!--"; }560function CDCToken() { return this; }561CDCToken.prototype = Object.create(CSSParserToken.prototype);562CDCToken.prototype.tokenType = "CDC";563CDCToken.prototype.toSource = function() { return "-->"; }564function ColonToken() { return this; }565ColonToken.prototype = Object.create(CSSParserToken.prototype);566ColonToken.prototype.tokenType = ":";567function SemicolonToken() { return this; }568SemicolonToken.prototype = Object.create(CSSParserToken.prototype);569SemicolonToken.prototype.tokenType = ";";570function CommaToken() { return this; }571CommaToken.prototype = Object.create(CSSParserToken.prototype);572CommaToken.prototype.tokenType = ",";573function GroupingToken() { throw "Abstract Base Class"; }574GroupingToken.prototype = Object.create(CSSParserToken.prototype);575function OpenCurlyToken() { this.value = "{"; this.mirror = "}"; return this; }576OpenCurlyToken.prototype = Object.create(GroupingToken.prototype);577OpenCurlyToken.prototype.tokenType = "{";578function CloseCurlyToken() { this.value = "}"; this.mirror = "{"; return this; }579CloseCurlyToken.prototype = Object.create(GroupingToken.prototype);580CloseCurlyToken.prototype.tokenType = "}";581function OpenSquareToken() { this.value = "["; this.mirror = "]"; return this; }582OpenSquareToken.prototype = Object.create(GroupingToken.prototype);583OpenSquareToken.prototype.tokenType = "[";584function CloseSquareToken() { this.value = "]"; this.mirror = "["; return this; }585CloseSquareToken.prototype = Object.create(GroupingToken.prototype);586CloseSquareToken.prototype.tokenType = "]";587function OpenParenToken() { this.value = "("; this.mirror = ")"; return this; }588OpenParenToken.prototype = Object.create(GroupingToken.prototype);589OpenParenToken.prototype.tokenType = "(";590function CloseParenToken() { this.value = ")"; this.mirror = "("; return this; }591CloseParenToken.prototype = Object.create(GroupingToken.prototype);592CloseParenToken.prototype.tokenType = ")";593function IncludeMatchToken() { return this; }594IncludeMatchToken.prototype = Object.create(CSSParserToken.prototype);595IncludeMatchToken.prototype.tokenType = "~=";596function DashMatchToken() { return this; }597DashMatchToken.prototype = Object.create(CSSParserToken.prototype);598DashMatchToken.prototype.tokenType = "|=";599function PrefixMatchToken() { return this; }600PrefixMatchToken.prototype = Object.create(CSSParserToken.prototype);601PrefixMatchToken.prototype.tokenType = "^=";602function SuffixMatchToken() { return this; }603SuffixMatchToken.prototype = Object.create(CSSParserToken.prototype);604SuffixMatchToken.prototype.tokenType = "$=";605function SubstringMatchToken() { return this; }606SubstringMatchToken.prototype = Object.create(CSSParserToken.prototype);607SubstringMatchToken.prototype.tokenType = "*=";608function ColumnToken() { return this; }609ColumnToken.prototype = Object.create(CSSParserToken.prototype);610ColumnToken.prototype.tokenType = "||";...Using AI Code Generation
1const playwright = require('playwright');2(async () => {3  for (const browserType of BROWSER) {4    const browser = await playwright[browserType].launch();5    const context = await browser.newContext();6    const page = await context.newPage();7    await page.fill('input[name="q"]', 'Playwright');8    await page.press('input[name="q"]', 'Enter');9    const searchResults = await page.$$('h3');10    for (let i = 0; i < searchResults.length; i++) {11      const searchResultsText = await searchResults[i].textContent();12      if (searchResultsText === 'Playwright') {13        console.log('Playwright found');14      }15    }16    await browser.close();17  }18})();Using AI Code Generation
1const playwright = require("playwright");2(async () => {3  const browser = await playwright.chromium.launch({4  });5  const context = await browser.newContext({6  });7  const page = await context.newPage();8  await page.fill("input[type='text']", "playwright");9  await page.click("input[type='submit']");10  await page.waitForSelector("text=Playwright");11  await page.click("text=Playwright");12  await page.waitForSelector("text=Playwright is a Node.js library to automate");13  await page.click("text=Playwright is a Node.js library to automate");14  await page.waitForSelector("text=Playwright is a Node.js library to automate");15  await page.click("text=Playwright is a Node.js library to automate");16  await page.waitForSelector("text=Playwright is a Node.js library to automate");17  await page.click("text=Playwright is a Node.js library to automate");18  await page.waitForSelector("text=Playwright is a Node.js library to automate");19  await page.click("text=Playwright is a Node.js library to automate");20  await page.waitForSelector("text=Playwright is a Node.js library to automate");21  await page.click("text=Playwright is a Node.js library to automate");22  await page.waitForSelector("text=Playwright is a Node.js library to automate");23  await page.click("text=Playwright is a Node.js library to automate");24  await page.waitForSelector("text=Playwright is a Node.js library to automate");25  await page.click("text=Playwright is a Node.js library to automate");26  await page.waitForSelector("text=Playwright is a Node.js library to automate");27  await page.click("text=Playwright is a Node.js library to automate");28  await page.waitForSelector("text=Playwright is a Node.js library to automate");29  await page.click("text=Playwright is a Node.js library to automate");30  await page.waitForSelector("text=Playwright is a Node.js library to automate");31  await page.click("text=Playwright is a Node.js library to automate");32  await page.waitForSelector("text=Playwright is a Node.js library to automate");33  await page.click("text=Playwright is a Node.js library to automate");Using AI Code Generation
1const { Playwright } = require('playwright');2const playwright = new Playwright();3const { chromium } = playwright;4const browser = await chromium.launch();5const context = await browser.newContext();6const page = await context.newPage();7const element = await page.$(playwright.internal.dashMatchToken('input', 'type', 'text'));8await browser.close();9const { chromium } = require('playwright-core');10const browser = await chromium.launch();11const context = await browser.newContext();12const page = await context.newPage();13const element = await page.$(playwright.internal.dashMatchToken('input', 'type', 'text'));14await browser.close();Using AI Code Generation
1const { DashMatchToken } = require('playwright/lib/utils/utils');2const { chromium } = require('playwright');3(async () => {4  const browser = await chromium.launch();5  const page = await browser.newPage();6  await page.click(DashMatchToken('input', 'type', 'text'));7  await page.fill(DashMatchToken('input', 'type', 'text'), 'Hello World');8  await page.click(DashMatchToken('input', 'type', 'submit'));9  await page.waitForTimeout(5000);10  await browser.close();11})();12module.exports = {13};14const { chromium } = require('playwright');15(async () => {16  const browser = await chromium.launch();17  const page = await browser.newPage();18  await page.click('input[type="text"]');19  await page.fill('input[type="text"]', 'Hello World');20  await page.click('input[type="submit"]');Using AI Code Generation
1const { DashMatchToken } = require('playwright/lib/utils/dashMatch');2const dashMatchToken = new DashMatchToken();3const { DashMatchToken } = require('playwright/lib/utils/dashMatch');4const dashMatchToken = new DashMatchToken();5const { DashMatchToken } = require('playwright/lib/utils/dashMatch');6const dashMatchToken = new DashMatchToken();7const { DashMatchToken } = require('playwright/lib/utils/dashMatch');8const dashMatchToken = new DashMatchToken();9const { DashMatchToken } = require('playwright/lib/utils/dashMatch');10const dashMatchToken = new DashMatchToken();11const { DashMatchToken } = require('playwright/lib/utils/dashMatch');12const dashMatchToken = new DashMatchToken();13const { DashMatchToken } = require('playwright/lib/utils/dashMatch');14const dashMatchToken = new DashMatchToken();15const { DashMatchToken } = require('playwright/lib/utils/dashMatch');16const dashMatchToken = new DashMatchToken();17const { DashMatchToken } = require('playwright/lib/utils/dashMatch');18const dashMatchToken = new DashMatchToken();19const { DashMatchToken } = require('playwright/lib/utils/dashMatch');20const dashMatchToken = new DashMatchToken();21const { DashMatchToken } = require('playwright/lib/utils/dashMatch');22const dashMatchToken = new DashMatchToken();23const { DashMatchToken } = require('playwright/lib/utils/dashMatch');24const dashMatchToken = new DashMatchToken();25const { DashMatchTokenUsing AI Code Generation
1const { DashMatchToken } = require('playwright/lib/internal/har');2const { DashMatchToken } = require('playwright/lib/internal/har');3const { DashMatchToken } = require('playwright/lib/internal/har');4const { DashMatchToken } = require('playwright/lib/internal/har');5const { DashMatchToken } = require('playwright/lib/internal/har');6const { DashMatchToken } = require('playwright/lib/internal/har');7const { DashMatchToken } = require('playwright/lib/internal/har');8const { DashMatchToken } = require('playwright/lib/internal/har');9const { DashMatchToken } = require('playwright/lib/internal/har');10const { DashMatchToken } = require('playwright/lib/internal/har');Using AI Code Generation
1const {DashMatchToken} = require('playwright/lib/internal/protocol');2const {getTestState} = require('playwright/lib/utils/testrunner/TestRunnerState');3const {test} = getTestState();4test.beforeEach(async ({page}) => {5});6test('test', async ({page}) => {Using AI Code Generation
1const { DashMatchToken } = require('playwright/lib/internal/protocol');2const dashMatchToken = DashMatchToken.create('DashMatchToken', {selector: 'div', text: 'Hello'});3console.log(dashMatchToken);4const { DashMatchToken } = require('playwright/lib/internal/protocol');5const dashMatchToken = DashMatchToken.create('DashMatchToken', {selector: 'div', text: 'Hello'});6console.log(dashMatchToken);7const { DashMatchToken } = require('playwright/lib/internal/protocol');8const dashMatchToken = DashMatchToken.create('DashMatchToken', {selector: 'div', text: 'Hello'});9console.log(dashMatchToken);10const { DashMatchToken } = require('playwright/lib/internal/protocol');11const dashMatchToken = DashMatchToken.create('DashMatchToken', {selector: 'div', text: 'Hello'});12console.log(dashMatchToken);13const { DashMatchToken } = require('playwright/lib/internal/protocol');14const dashMatchToken = DashMatchToken.create('DashMatchToken', {selector: 'div', text: 'Hello'});15console.log(dashMatchToken);16const { DashMatchToken } = require('playwright/lib/internal/protocol');17const dashMatchToken = DashMatchToken.create('DashMatchToken', {selector: 'div', text: 'Hello'});18console.log(dashMatchToken);19const { DashMatchToken } = require('playwright/lib/internal/protocol');20const dashMatchToken = DashMatchToken.create('DashMatchToken', {selector: 'div', text: 'Hello'});21console.log(dashMatchToken);22const { DashMatchToken } = require('playwright/lib/internal/protocol');23const dashMatchToken = DashMatchToken.create('DashMatchToken', {selector: 'div', text: 'Hello'});24console.log(dashMatchToken);LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!
