scss.test.ts 88 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054
  1. /*---------------------------------------------------------------------------------------------
  2. * Copyright (c) Microsoft Corporation. All rights reserved.
  3. * Licensed under the MIT License. See License.txt in the project root for license information.
  4. *--------------------------------------------------------------------------------------------*/
  5. 'use strict';
  6. import {testTokenization as actualTestTokenization, ITestItem} from './testRunner';
  7. function testTokenization(_language:string|string[], tests:ITestItem[][]): void {
  8. tests = tests.map(t => {
  9. return t.map(t => {
  10. return {
  11. line: t.line.replace(/\n/g, ' '),
  12. tokens: t.tokens
  13. };
  14. });
  15. });
  16. actualTestTokenization(_language, tests);
  17. }
  18. testTokenization('scss', [
  19. // Nested Rules
  20. [{
  21. line:
  22. '#main {\n' +
  23. ' width: 97%;\n' +
  24. ' p, div {\n' +
  25. ' font-size: 2em;\n' +
  26. ' a { font-weight: bold; }\n' +
  27. ' }\n' +
  28. ' pre { font-size: 3em; }\n' +
  29. '}',
  30. tokens: [
  31. { startIndex: 0, type: 'tag.scss' } /* '#main' */,
  32. { startIndex: 5, type: '' },
  33. { startIndex: 6, type: 'delimiter.curly.scss' } /* '{' */,
  34. { startIndex: 7, type: '' },
  35. { startIndex: 10, type: 'attribute.name.scss' } /* 'width:' */,
  36. { startIndex: 16, type: '' },
  37. { startIndex: 17, type: 'number.scss' } /* '97%' */,
  38. { startIndex: 20, type: 'delimiter.scss' } /* ';' */,
  39. { startIndex: 21, type: '' },
  40. { startIndex: 24, type: 'tag.scss' } /* 'p' */,
  41. { startIndex: 25, type: 'delimiter.scss' } /* ',' */,
  42. { startIndex: 26, type: '' },
  43. { startIndex: 27, type: 'tag.scss' } /* 'div' */,
  44. { startIndex: 30, type: '' },
  45. { startIndex: 31, type: 'delimiter.curly.scss' } /* '{' */,
  46. { startIndex: 32, type: '' },
  47. { startIndex: 37, type: 'attribute.name.scss' } /* 'font-size:' */,
  48. { startIndex: 47, type: '' },
  49. { startIndex: 48, type: 'number.scss' } /* '2em' */,
  50. { startIndex: 51, type: 'delimiter.scss' } /* ';' */,
  51. { startIndex: 52, type: '' },
  52. { startIndex: 57, type: 'tag.scss' } /* 'a' */,
  53. { startIndex: 58, type: '' },
  54. { startIndex: 59, type: 'delimiter.curly.scss' } /* '{' */,
  55. { startIndex: 60, type: '' },
  56. { startIndex: 61, type: 'attribute.name.scss' } /* 'font-weight:' */,
  57. { startIndex: 73, type: '' },
  58. { startIndex: 74, type: 'attribute.value.scss' } /* 'bold' */,
  59. { startIndex: 78, type: 'delimiter.scss' } /* ';' */,
  60. { startIndex: 79, type: '' },
  61. { startIndex: 80, type: 'delimiter.curly.scss' } /* '}' */,
  62. { startIndex: 81, type: '' },
  63. { startIndex: 84, type: 'delimiter.curly.scss' } /* '}' */,
  64. { startIndex: 85, type: '' },
  65. { startIndex: 88, type: 'tag.scss' } /* 'pre' */,
  66. { startIndex: 91, type: '' },
  67. { startIndex: 92, type: 'delimiter.curly.scss' } /* '{' */,
  68. { startIndex: 93, type: '' },
  69. { startIndex: 94, type: 'attribute.name.scss' } /* 'font-size:' */,
  70. { startIndex: 104, type: '' },
  71. { startIndex: 105, type: 'number.scss' } /* '3em' */,
  72. { startIndex: 108, type: 'delimiter.scss' } /* ';' */,
  73. { startIndex: 109, type: '' },
  74. { startIndex: 110, type: 'delimiter.curly.scss' } /* '}' */,
  75. { startIndex: 111, type: '' },
  76. { startIndex: 112, type: 'delimiter.curly.scss' } /* '}' */
  77. ]}],
  78. // Parent selector
  79. [{
  80. line:
  81. '#main {\n' +
  82. ' color: black;\n' +
  83. ' a {\n' +
  84. ' font-weight: bold;\n' +
  85. ' &:hover { color: red; }\n' +
  86. ' }\n' +
  87. '}',
  88. tokens: [
  89. { startIndex: 0, type: 'tag.scss' } /* '#main' */,
  90. { startIndex: 5, type: '' },
  91. { startIndex: 6, type: 'delimiter.curly.scss' } /* '{' */,
  92. { startIndex: 7, type: '' },
  93. { startIndex: 10, type: 'attribute.name.scss' } /* 'color:' */,
  94. { startIndex: 16, type: '' },
  95. { startIndex: 17, type: 'attribute.value.scss' } /* 'black' */,
  96. { startIndex: 22, type: 'delimiter.scss' } /* ';' */,
  97. { startIndex: 23, type: '' },
  98. { startIndex: 26, type: 'tag.scss' } /* 'a' */,
  99. { startIndex: 27, type: '' },
  100. { startIndex: 28, type: 'delimiter.curly.scss' } /* '{' */,
  101. { startIndex: 29, type: '' },
  102. { startIndex: 34, type: 'attribute.name.scss' } /* 'font-weight:' */,
  103. { startIndex: 46, type: '' },
  104. { startIndex: 47, type: 'attribute.value.scss' } /* 'bold' */,
  105. { startIndex: 51, type: 'delimiter.scss' } /* ';' */,
  106. { startIndex: 52, type: '' },
  107. { startIndex: 57, type: 'tag.scss' } /* '&:hover' */,
  108. { startIndex: 64, type: '' },
  109. { startIndex: 65, type: 'delimiter.curly.scss' } /* '{' */,
  110. { startIndex: 66, type: '' },
  111. { startIndex: 67, type: 'attribute.name.scss' } /* 'color:' */,
  112. { startIndex: 73, type: '' },
  113. { startIndex: 74, type: 'attribute.value.scss' } /* 'red' */,
  114. { startIndex: 77, type: 'delimiter.scss' } /* ';' */,
  115. { startIndex: 78, type: '' },
  116. { startIndex: 79, type: 'delimiter.curly.scss' } /* '}' */,
  117. { startIndex: 80, type: '' },
  118. { startIndex: 83, type: 'delimiter.curly.scss' } /* '}' */,
  119. { startIndex: 84, type: '' },
  120. { startIndex: 85, type: 'delimiter.curly.scss' } /* '}' */
  121. ]}],
  122. // Nested Properties
  123. [{
  124. line:
  125. '.funky {\n' +
  126. ' font: 2px/3px {\n' +
  127. ' family: fantasy;\n' +
  128. ' size: 30em;\n' +
  129. ' weight: bold;\n' +
  130. ' }\n' +
  131. ' color: black;\n' +
  132. '}',
  133. tokens: [
  134. { startIndex: 0, type: 'tag.scss' } /* '.funky' */,
  135. { startIndex: 6, type: '' },
  136. { startIndex: 7, type: 'delimiter.curly.scss' } /* '{' */,
  137. { startIndex: 8, type: '' },
  138. { startIndex: 11, type: 'attribute.name.scss' } /* 'font:' */,
  139. { startIndex: 16, type: '' },
  140. { startIndex: 17, type: 'number.scss' } /* '2px' */,
  141. { startIndex: 20, type: 'operator.scss' } /* '/' */,
  142. { startIndex: 21, type: 'number.scss' } /* '3px' */,
  143. { startIndex: 24, type: '' },
  144. { startIndex: 25, type: 'delimiter.curly.scss' } /* '{' */,
  145. { startIndex: 26, type: '' },
  146. { startIndex: 31, type: 'attribute.name.scss' } /* 'family:' */,
  147. { startIndex: 38, type: '' },
  148. { startIndex: 39, type: 'attribute.value.scss' } /* 'fantasy' */,
  149. { startIndex: 46, type: 'delimiter.scss' } /* ';' */,
  150. { startIndex: 47, type: '' },
  151. { startIndex: 52, type: 'attribute.name.scss' } /* 'size:' */,
  152. { startIndex: 57, type: '' },
  153. { startIndex: 58, type: 'number.scss' } /* '30em' */,
  154. { startIndex: 62, type: 'delimiter.scss' } /* ';' */,
  155. { startIndex: 63, type: '' },
  156. { startIndex: 68, type: 'attribute.name.scss' } /* 'weight:' */,
  157. { startIndex: 75, type: '' },
  158. { startIndex: 76, type: 'attribute.value.scss' } /* 'bold' */,
  159. { startIndex: 80, type: 'delimiter.scss' } /* ';' */,
  160. { startIndex: 81, type: '' },
  161. { startIndex: 84, type: 'delimiter.curly.scss' } /* '}' */,
  162. { startIndex: 85, type: '' },
  163. { startIndex: 88, type: 'attribute.name.scss' } /* 'color:' */,
  164. { startIndex: 94, type: '' },
  165. { startIndex: 95, type: 'attribute.value.scss' } /* 'black' */,
  166. { startIndex: 100, type: 'delimiter.scss' } /* ';' */,
  167. { startIndex: 101, type: '' },
  168. { startIndex: 102, type: 'delimiter.curly.scss' } /* '}' */
  169. ]}],
  170. // Nesting name conflicts
  171. [{
  172. line:
  173. 'tr.default {\n' +
  174. ' foo: { /* properti*/\n' +
  175. ' foo : 1;\n' +
  176. ' }\n' +
  177. ' foo: 1px; /* ru*/\n' +
  178. ' foo.bar { /* select*/\n' +
  179. ' foo : 1;\n' +
  180. ' }\n' +
  181. ' foo:bar { /* select*/\n' +
  182. ' foo : 1;\n' +
  183. ' }\n' +
  184. ' foo: 1px; /* ru*/\n' +
  185. '}',
  186. tokens: [
  187. { startIndex: 0, type: 'tag.scss' } /* 'tr.default' */,
  188. { startIndex: 10, type: '' },
  189. { startIndex: 11, type: 'delimiter.curly.scss' } /* '{' */,
  190. { startIndex: 12, type: '' },
  191. { startIndex: 15, type: 'attribute.name.scss' } /* 'foo:' */,
  192. { startIndex: 19, type: '' },
  193. { startIndex: 20, type: 'delimiter.curly.scss' } /* '{' */,
  194. { startIndex: 21, type: '' },
  195. { startIndex: 22, type: 'comment.scss' } /* '// properties' */,
  196. { startIndex: 35, type: '' },
  197. { startIndex: 40, type: 'attribute.name.scss' } /* 'foo :' */,
  198. { startIndex: 45, type: '' },
  199. { startIndex: 46, type: 'number.scss' } /* '1' */,
  200. { startIndex: 47, type: 'delimiter.scss' } /* ';' */,
  201. { startIndex: 48, type: '' },
  202. { startIndex: 51, type: 'delimiter.curly.scss' } /* '}' */,
  203. { startIndex: 52, type: '' },
  204. { startIndex: 55, type: 'attribute.name.scss' } /* 'foo:' */,
  205. { startIndex: 59, type: '' },
  206. { startIndex: 60, type: 'number.scss' } /* '1px' */,
  207. { startIndex: 63, type: 'delimiter.scss' } /* ';' */,
  208. { startIndex: 64, type: '' },
  209. { startIndex: 65, type: 'comment.scss' } /* '// rule' */,
  210. { startIndex: 72, type: '' },
  211. { startIndex: 75, type: 'tag.scss' } /* 'foo.bar' */,
  212. { startIndex: 82, type: '' },
  213. { startIndex: 83, type: 'delimiter.curly.scss' } /* '{' */,
  214. { startIndex: 84, type: '' },
  215. { startIndex: 85, type: 'comment.scss' } /* '// selector' */,
  216. { startIndex: 96, type: '' },
  217. { startIndex: 101, type: 'attribute.name.scss' } /* 'foo :' */,
  218. { startIndex: 106, type: '' },
  219. { startIndex: 107, type: 'number.scss' } /* '1' */,
  220. { startIndex: 108, type: 'delimiter.scss' } /* ';' */,
  221. { startIndex: 109, type: '' },
  222. { startIndex: 112, type: 'delimiter.curly.scss' } /* '}' */,
  223. { startIndex: 113, type: '' },
  224. { startIndex: 116, type: 'tag.scss' } /* 'foo:bar' */,
  225. { startIndex: 123, type: '' },
  226. { startIndex: 124, type: 'delimiter.curly.scss' } /* '{' */,
  227. { startIndex: 125, type: '' },
  228. { startIndex: 126, type: 'comment.scss' } /* '// selector' */,
  229. { startIndex: 137, type: '' },
  230. { startIndex: 142, type: 'attribute.name.scss' } /* 'foo :' */,
  231. { startIndex: 147, type: '' },
  232. { startIndex: 148, type: 'number.scss' } /* '1' */,
  233. { startIndex: 149, type: 'delimiter.scss' } /* ';' */,
  234. { startIndex: 150, type: '' },
  235. { startIndex: 153, type: 'delimiter.curly.scss' } /* '}' */,
  236. { startIndex: 154, type: '' },
  237. { startIndex: 157, type: 'attribute.name.scss' } /* 'foo:' */,
  238. { startIndex: 161, type: '' },
  239. { startIndex: 162, type: 'number.scss' } /* '1px' */,
  240. { startIndex: 165, type: 'delimiter.scss' } /* ';' */,
  241. { startIndex: 166, type: '' },
  242. { startIndex: 167, type: 'comment.scss' } /* '// rule' */,
  243. { startIndex: 174, type: '' },
  244. { startIndex: 175, type: 'delimiter.curly.scss' } /* '}' */
  245. ]}],
  246. // Missing semicolons
  247. [{
  248. line:
  249. 'tr.default {\n' +
  250. ' foo.bar {\n' +
  251. ' $foo: 1px\n' +
  252. ' }\n' +
  253. ' foo: {\n' +
  254. ' foo : white\n' +
  255. ' }\n' +
  256. ' foo.bar1 {\n' +
  257. ' @extend tr.default\n' +
  258. ' }\n' +
  259. ' foo.bar2 {\n' +
  260. ' @import "compass"\n' +
  261. ' }\n' +
  262. ' bar: black\n' +
  263. '}',
  264. tokens: [
  265. { startIndex: 0, type: 'tag.scss' } /* 'tr.default' */,
  266. { startIndex: 10, type: '' },
  267. { startIndex: 11, type: 'delimiter.curly.scss' } /* '{' */,
  268. { startIndex: 12, type: '' },
  269. { startIndex: 15, type: 'tag.scss' } /* 'foo.bar' */,
  270. { startIndex: 22, type: '' },
  271. { startIndex: 23, type: 'delimiter.curly.scss' } /* '{' */,
  272. { startIndex: 24, type: '' },
  273. { startIndex: 29, type: 'variable.decl.scss' } /* '$foo:' */,
  274. { startIndex: 34, type: '' },
  275. { startIndex: 35, type: 'number.scss' } /* '1px' */,
  276. { startIndex: 38, type: '' },
  277. { startIndex: 41, type: 'delimiter.curly.scss' } /* '}' */,
  278. { startIndex: 42, type: '' },
  279. { startIndex: 45, type: 'attribute.name.scss' } /* 'foo:' */,
  280. { startIndex: 49, type: '' },
  281. { startIndex: 50, type: 'delimiter.curly.scss' } /* '{' */,
  282. { startIndex: 51, type: '' },
  283. { startIndex: 56, type: 'attribute.name.scss' } /* 'foo :' */,
  284. { startIndex: 61, type: '' },
  285. { startIndex: 62, type: 'attribute.value.scss' } /* 'white' */,
  286. { startIndex: 67, type: '' },
  287. { startIndex: 70, type: 'delimiter.curly.scss' } /* '}' */,
  288. { startIndex: 71, type: '' },
  289. { startIndex: 74, type: 'tag.scss' } /* 'foo.bar1' */,
  290. { startIndex: 82, type: '' },
  291. { startIndex: 83, type: 'delimiter.curly.scss' } /* '{' */,
  292. { startIndex: 84, type: '' },
  293. { startIndex: 89, type: 'keyword.scss' } /* '@extend' */,
  294. { startIndex: 96, type: '' },
  295. { startIndex: 97, type: 'tag.scss' } /* 'tr.default' */,
  296. { startIndex: 107, type: '' },
  297. { startIndex: 110, type: 'delimiter.curly.scss' } /* '}' */,
  298. { startIndex: 111, type: '' },
  299. { startIndex: 114, type: 'tag.scss' } /* 'foo.bar2' */,
  300. { startIndex: 122, type: '' },
  301. { startIndex: 123, type: 'delimiter.curly.scss' } /* '{' */,
  302. { startIndex: 124, type: '' },
  303. { startIndex: 129, type: 'keyword.scss' } /* '@import' */,
  304. { startIndex: 136, type: '' },
  305. { startIndex: 137, type: 'string.delimiter.scss' } /* '"' */,
  306. { startIndex: 138, type: 'string.scss' } /* 'compass' */,
  307. { startIndex: 145, type: 'string.delimiter.scss' } /* '"' */,
  308. { startIndex: 146, type: '' },
  309. { startIndex: 149, type: 'delimiter.curly.scss' } /* '}' */,
  310. { startIndex: 150, type: '' },
  311. { startIndex: 153, type: 'attribute.name.scss' } /* 'bar:' */,
  312. { startIndex: 157, type: '' },
  313. { startIndex: 158, type: 'attribute.value.scss' } /* 'black' */,
  314. { startIndex: 163, type: '' },
  315. { startIndex: 164, type: 'delimiter.curly.scss' } /* '}' */
  316. ]}],
  317. // Rules without whitespaces
  318. [{
  319. line:
  320. 'legend {foo{a:s}margin-top:0;margin-bottom:#123;margin-top:s(1)}',
  321. tokens: [
  322. { startIndex: 0, type: 'tag.scss' } /* 'legend' */,
  323. { startIndex: 6, type: '' },
  324. { startIndex: 7, type: 'delimiter.curly.scss' } /* '{' */,
  325. { startIndex: 8, type: 'tag.scss' } /* 'foo' */,
  326. { startIndex: 11, type: 'delimiter.curly.scss' } /* '{' */,
  327. { startIndex: 12, type: 'attribute.name.scss' } /* 'a:' */,
  328. { startIndex: 14, type: 'attribute.value.scss' } /* 's' */,
  329. { startIndex: 15, type: 'delimiter.curly.scss' } /* '}' */,
  330. { startIndex: 16, type: 'attribute.name.scss' } /* 'margin-top:' */,
  331. { startIndex: 27, type: 'number.scss' } /* '0' */,
  332. { startIndex: 28, type: 'delimiter.scss' } /* ';' */,
  333. { startIndex: 29, type: 'attribute.name.scss' } /* 'margin-bottom:' */,
  334. { startIndex: 43, type: 'number.hex.scss' } /* '#123' */,
  335. { startIndex: 47, type: 'delimiter.scss' } /* ';' */,
  336. { startIndex: 48, type: 'attribute.name.scss' } /* 'margin-top:' */,
  337. { startIndex: 59, type: 'meta.scss' } /* 's(' */,
  338. { startIndex: 61, type: 'number.scss' } /* '1' */,
  339. { startIndex: 62, type: 'meta.scss' } /* ')' */,
  340. { startIndex: 63, type: 'delimiter.curly.scss' } /* '}' */
  341. ]}],
  342. // Extended commentswhitespaces
  343. [{
  344. line:
  345. '/* extended comment syntax */\n' +
  346. '/* This comment is\n' +
  347. ' * several lines long.\n' +
  348. ' * since it uses the CSS comment syntax,\n' +
  349. ' * it will appear in the CSS output. */\n' +
  350. 'body { color: black; }\n' +
  351. '\n' +
  352. '/* These comments are only one line long eac*/\n' +
  353. '/* They won\'t appear in the CSS outpu*/\n' +
  354. '/* since they use the single-line comment synta*/\n' +
  355. 'a { color: green; }',
  356. tokens: [
  357. { startIndex: 0, type: 'comment.scss' } /* '/* extended comment syntax * /' */,
  358. { startIndex: 29, type: '' },
  359. { startIndex: 30, type: 'comment.scss' } /* '/* This comment is' */,
  360. { startIndex: 152, type: '' },
  361. { startIndex: 153, type: 'tag.scss' } /* 'body' */,
  362. { startIndex: 157, type: '' },
  363. { startIndex: 158, type: 'delimiter.curly.scss' } /* '{' */,
  364. { startIndex: 159, type: '' },
  365. { startIndex: 160, type: 'attribute.name.scss' } /* 'color:' */,
  366. { startIndex: 166, type: '' },
  367. { startIndex: 167, type: 'attribute.value.scss' } /* 'black' */,
  368. { startIndex: 172, type: 'delimiter.scss' } /* ';' */,
  369. { startIndex: 173, type: '' },
  370. { startIndex: 174, type: 'delimiter.curly.scss' } /* '}' */,
  371. { startIndex: 175, type: '' },
  372. { startIndex: 177, type: 'comment.scss' } /* '// These comments are only one line long each.' */,
  373. { startIndex: 223, type: '' },
  374. { startIndex: 224, type: 'comment.scss' } /* '// They won't appear in the CSS output,' */,
  375. { startIndex: 263, type: '' },
  376. { startIndex: 264, type: 'comment.scss' } /* '// since they use the single-line comment syntax.' */,
  377. { startIndex: 313, type: '' },
  378. { startIndex: 314, type: 'tag.scss' } /* 'a' */,
  379. { startIndex: 315, type: '' },
  380. { startIndex: 316, type: 'delimiter.curly.scss' } /* '{' */,
  381. { startIndex: 317, type: '' },
  382. { startIndex: 318, type: 'attribute.name.scss' } /* 'color:' */,
  383. { startIndex: 324, type: '' },
  384. { startIndex: 325, type: 'attribute.value.scss' } /* 'green' */,
  385. { startIndex: 330, type: 'delimiter.scss' } /* ';' */,
  386. { startIndex: 331, type: '' },
  387. { startIndex: 332, type: 'delimiter.curly.scss' } /* '}' */
  388. ]}],
  389. // Variable declarations and referenceswhitespaces
  390. [{
  391. line:
  392. '$width: 5em;\n' +
  393. '$width: "Second width?" !default;\n' +
  394. '#main {\n' +
  395. ' $localvar: 6em;\n' +
  396. ' width: $width;\n' +
  397. '\n' +
  398. ' $font-size: 12px;\n' +
  399. ' $line-height: 30px;\n' +
  400. ' font: #{$font-size}/#{$line-height};\n' +
  401. '}\n' +
  402. '$name: foo;\n' +
  403. '$attr: border;\n' +
  404. 'p.#{$name} {\n' +
  405. ' #{$attr}-color: blue;\n' +
  406. '}',
  407. tokens: [
  408. { startIndex: 0, type: 'variable.decl.scss' } /* '$width:' */,
  409. { startIndex: 7, type: '' },
  410. { startIndex: 8, type: 'number.scss' } /* '5em' */,
  411. { startIndex: 11, type: 'delimiter.scss' } /* ';' */,
  412. { startIndex: 12, type: '' },
  413. { startIndex: 13, type: 'variable.decl.scss' } /* '$width:' */,
  414. { startIndex: 20, type: '' },
  415. { startIndex: 21, type: 'string.delimiter.scss' } /* '"' */,
  416. { startIndex: 22, type: 'string.scss' } /* 'Second width?' */,
  417. { startIndex: 35, type: 'string.delimiter.scss' } /* '"' */,
  418. { startIndex: 36, type: '' },
  419. { startIndex: 37, type: 'literal.scss' } /* '!default' */,
  420. { startIndex: 45, type: 'delimiter.scss' } /* ';' */,
  421. { startIndex: 46, type: '' },
  422. { startIndex: 47, type: 'tag.scss' } /* '#main' */,
  423. { startIndex: 52, type: '' },
  424. { startIndex: 53, type: 'delimiter.curly.scss' } /* '{' */,
  425. { startIndex: 54, type: '' },
  426. { startIndex: 57, type: 'variable.decl.scss' } /* '$localvar:' */,
  427. { startIndex: 67, type: '' },
  428. { startIndex: 68, type: 'number.scss' } /* '6em' */,
  429. { startIndex: 71, type: 'delimiter.scss' } /* ';' */,
  430. { startIndex: 72, type: '' },
  431. { startIndex: 75, type: 'attribute.name.scss' } /* 'width:' */,
  432. { startIndex: 81, type: '' },
  433. { startIndex: 82, type: 'variable.ref.scss' } /* '$width' */,
  434. { startIndex: 88, type: 'delimiter.scss' } /* ';' */,
  435. { startIndex: 89, type: '' },
  436. { startIndex: 93, type: 'variable.decl.scss' } /* '$font-size:' */,
  437. { startIndex: 104, type: '' },
  438. { startIndex: 105, type: 'number.scss' } /* '12px' */,
  439. { startIndex: 109, type: 'delimiter.scss' } /* ';' */,
  440. { startIndex: 110, type: '' },
  441. { startIndex: 113, type: 'variable.decl.scss' } /* '$line-height:' */,
  442. { startIndex: 126, type: '' },
  443. { startIndex: 127, type: 'number.scss' } /* '30px' */,
  444. { startIndex: 131, type: 'delimiter.scss' } /* ';' */,
  445. { startIndex: 132, type: '' },
  446. { startIndex: 135, type: 'attribute.name.scss' } /* 'font:' */,
  447. { startIndex: 140, type: '' },
  448. { startIndex: 141, type: 'meta.scss' } /* '#{' */,
  449. { startIndex: 143, type: 'variable.ref.scss' } /* '$font-size' */,
  450. { startIndex: 153, type: 'meta.scss' } /* '}' */,
  451. { startIndex: 154, type: 'operator.scss' } /* '/' */,
  452. { startIndex: 155, type: 'meta.scss' } /* '#{' */,
  453. { startIndex: 157, type: 'variable.ref.scss' } /* '$line-height' */,
  454. { startIndex: 169, type: 'meta.scss' } /* '}' */,
  455. { startIndex: 170, type: 'delimiter.scss' } /* ';' */,
  456. { startIndex: 171, type: '' },
  457. { startIndex: 172, type: 'delimiter.curly.scss' } /* '}' */,
  458. { startIndex: 173, type: '' },
  459. { startIndex: 174, type: 'variable.decl.scss' } /* '$name:' */,
  460. { startIndex: 180, type: '' },
  461. { startIndex: 181, type: 'attribute.value.scss' } /* 'foo' */,
  462. { startIndex: 184, type: 'delimiter.scss' } /* ';' */,
  463. { startIndex: 185, type: '' },
  464. { startIndex: 186, type: 'variable.decl.scss' } /* '$attr:' */,
  465. { startIndex: 192, type: '' },
  466. { startIndex: 193, type: 'attribute.value.scss' } /* 'border' */,
  467. { startIndex: 199, type: 'delimiter.scss' } /* ';' */,
  468. { startIndex: 200, type: '' },
  469. { startIndex: 201, type: 'tag.scss' } /* 'p.' */,
  470. { startIndex: 203, type: 'meta.scss' } /* '#{' */,
  471. { startIndex: 205, type: 'variable.ref.scss' } /* '$name' */,
  472. { startIndex: 210, type: 'meta.scss' } /* '}' */,
  473. { startIndex: 211, type: '' },
  474. { startIndex: 212, type: 'delimiter.curly.scss' } /* '{' */,
  475. { startIndex: 213, type: '' },
  476. { startIndex: 216, type: 'meta.scss' } /* '#{' */,
  477. { startIndex: 218, type: 'variable.ref.scss' } /* '$attr' */,
  478. { startIndex: 223, type: 'meta.scss' } /* '}' */,
  479. { startIndex: 224, type: 'attribute.name.scss' } /* '-color:' */,
  480. { startIndex: 231, type: '' },
  481. { startIndex: 232, type: 'attribute.value.scss' } /* 'blue' */,
  482. { startIndex: 236, type: 'delimiter.scss' } /* ';' */,
  483. { startIndex: 237, type: '' },
  484. { startIndex: 238, type: 'delimiter.curly.scss' } /* '}' */
  485. ]}],
  486. // Variable declaration with whitespaces
  487. [{
  488. line:
  489. '/* Set the color of your colum*/\n' +
  490. '$grid-background-column-color : rgba(100, 100, 225, 0.25) !default;',
  491. tokens: [
  492. { startIndex: 0, type: 'comment.scss' } /* '// Set the color of your columns' */,
  493. { startIndex: 32, type: '' },
  494. { startIndex: 33, type: 'variable.decl.scss' } /* '$grid-background-column-color :' */,
  495. { startIndex: 68, type: '' },
  496. { startIndex: 69, type: 'meta.scss' } /* 'rgba(' */,
  497. { startIndex: 74, type: 'number.scss' } /* '100' */,
  498. { startIndex: 77, type: 'delimiter.scss' } /* ',' */,
  499. { startIndex: 78, type: '' },
  500. { startIndex: 79, type: 'number.scss' } /* '100' */,
  501. { startIndex: 82, type: 'delimiter.scss' } /* ',' */,
  502. { startIndex: 83, type: '' },
  503. { startIndex: 84, type: 'number.scss' } /* '225' */,
  504. { startIndex: 87, type: 'delimiter.scss' } /* ',' */,
  505. { startIndex: 88, type: '' },
  506. { startIndex: 89, type: 'number.scss' } /* '0.25' */,
  507. { startIndex: 93, type: 'meta.scss' } /* ')' */,
  508. { startIndex: 94, type: '' },
  509. { startIndex: 97, type: 'literal.scss' } /* '!default' */,
  510. { startIndex: 105, type: 'delimiter.scss' } /* ';' */
  511. ]}],
  512. // Operationswhitespaces
  513. [{
  514. line:
  515. 'p {\n' +
  516. ' width: (1em + 2em) * 3;\n' +
  517. ' color: #010203 + #040506;\n' +
  518. ' font-family: sans- + "serif";\n' +
  519. ' margin: 3px + 4px auto;\n' +
  520. ' content: "I ate #{5 + 10} pies!";\n' +
  521. ' color: hsl(0, 100%, 50%);\n' +
  522. ' color: hsl($hue: 0, $saturation: 100%, $lightness: 50%);\n' +
  523. '}',
  524. tokens: [
  525. { startIndex: 0, type: 'tag.scss' } /* 'p' */,
  526. { startIndex: 1, type: '' },
  527. { startIndex: 2, type: 'delimiter.curly.scss' } /* '{' */,
  528. { startIndex: 3, type: '' },
  529. { startIndex: 6, type: 'attribute.name.scss' } /* 'width:' */,
  530. { startIndex: 12, type: '' },
  531. { startIndex: 13, type: 'delimiter.parenthesis.scss' } /* '(' */,
  532. { startIndex: 14, type: 'number.scss' } /* '1em' */,
  533. { startIndex: 17, type: '' },
  534. { startIndex: 18, type: 'operator.scss' } /* '+' */,
  535. { startIndex: 19, type: '' },
  536. { startIndex: 20, type: 'number.scss' } /* '2em' */,
  537. { startIndex: 23, type: 'delimiter.parenthesis.scss' } /* ')' */,
  538. { startIndex: 24, type: '' },
  539. { startIndex: 25, type: 'operator.scss' } /* '*' */,
  540. { startIndex: 26, type: '' },
  541. { startIndex: 27, type: 'number.scss' } /* '3' */,
  542. { startIndex: 28, type: 'delimiter.scss' } /* ';' */,
  543. { startIndex: 29, type: '' },
  544. { startIndex: 32, type: 'attribute.name.scss' } /* 'color:' */,
  545. { startIndex: 38, type: '' },
  546. { startIndex: 39, type: 'number.hex.scss' } /* '#010203' */,
  547. { startIndex: 46, type: '' },
  548. { startIndex: 47, type: 'operator.scss' } /* '+' */,
  549. { startIndex: 48, type: '' },
  550. { startIndex: 49, type: 'number.hex.scss' } /* '#040506' */,
  551. { startIndex: 56, type: 'delimiter.scss' } /* ';' */,
  552. { startIndex: 57, type: '' },
  553. { startIndex: 60, type: 'attribute.name.scss' } /* 'font-family:' */,
  554. { startIndex: 72, type: '' },
  555. { startIndex: 73, type: 'attribute.value.scss' } /* 'sans-' */,
  556. { startIndex: 78, type: '' },
  557. { startIndex: 79, type: 'operator.scss' } /* '+' */,
  558. { startIndex: 80, type: '' },
  559. { startIndex: 81, type: 'string.delimiter.scss' } /* '"' */,
  560. { startIndex: 82, type: 'string.scss' } /* 'serif' */,
  561. { startIndex: 87, type: 'string.delimiter.scss' } /* '"' */,
  562. { startIndex: 88, type: 'delimiter.scss' } /* ';' */,
  563. { startIndex: 89, type: '' },
  564. { startIndex: 92, type: 'attribute.name.scss' } /* 'margin:' */,
  565. { startIndex: 99, type: '' },
  566. { startIndex: 100, type: 'number.scss' } /* '3px' */,
  567. { startIndex: 103, type: '' },
  568. { startIndex: 104, type: 'operator.scss' } /* '+' */,
  569. { startIndex: 105, type: '' },
  570. { startIndex: 106, type: 'number.scss' } /* '4px' */,
  571. { startIndex: 109, type: '' },
  572. { startIndex: 110, type: 'attribute.value.scss' } /* 'auto' */,
  573. { startIndex: 114, type: 'delimiter.scss' } /* ';' */,
  574. { startIndex: 115, type: '' },
  575. { startIndex: 118, type: 'attribute.name.scss' } /* 'content:' */,
  576. { startIndex: 126, type: '' },
  577. { startIndex: 127, type: 'string.delimiter.scss' } /* '"' */,
  578. { startIndex: 128, type: 'string.scss' } /* 'I ate #{5 + 10} pies!' */,
  579. { startIndex: 149, type: 'string.delimiter.scss' } /* '"' */,
  580. { startIndex: 150, type: 'delimiter.scss' } /* ';' */,
  581. { startIndex: 151, type: '' },
  582. { startIndex: 154, type: 'attribute.name.scss' } /* 'color:' */,
  583. { startIndex: 160, type: '' },
  584. { startIndex: 161, type: 'meta.scss' } /* 'hsl(' */,
  585. { startIndex: 165, type: 'number.scss' } /* '0' */,
  586. { startIndex: 166, type: 'delimiter.scss' } /* ',' */,
  587. { startIndex: 167, type: '' },
  588. { startIndex: 168, type: 'number.scss' } /* '100%' */,
  589. { startIndex: 172, type: 'delimiter.scss' } /* ',' */,
  590. { startIndex: 173, type: '' },
  591. { startIndex: 174, type: 'number.scss' } /* '50%' */,
  592. { startIndex: 177, type: 'meta.scss' } /* ')' */,
  593. { startIndex: 178, type: 'delimiter.scss' } /* ';' */,
  594. { startIndex: 179, type: '' },
  595. { startIndex: 182, type: 'attribute.name.scss' } /* 'color:' */,
  596. { startIndex: 188, type: '' },
  597. { startIndex: 189, type: 'meta.scss' } /* 'hsl(' */,
  598. { startIndex: 193, type: 'attribute.name.scss' } /* '$hue:' */,
  599. { startIndex: 198, type: '' },
  600. { startIndex: 199, type: 'number.scss' } /* '0' */,
  601. { startIndex: 200, type: 'delimiter.scss' } /* ',' */,
  602. { startIndex: 201, type: '' },
  603. { startIndex: 202, type: 'attribute.name.scss' } /* '$saturation:' */,
  604. { startIndex: 214, type: '' },
  605. { startIndex: 215, type: 'number.scss' } /* '100%' */,
  606. { startIndex: 219, type: 'delimiter.scss' } /* ',' */,
  607. { startIndex: 220, type: '' },
  608. { startIndex: 221, type: 'attribute.name.scss' } /* '$lightness:' */,
  609. { startIndex: 232, type: '' },
  610. { startIndex: 233, type: 'number.scss' } /* '50%' */,
  611. { startIndex: 236, type: 'meta.scss' } /* ')' */,
  612. { startIndex: 237, type: 'delimiter.scss' } /* ';' */,
  613. { startIndex: 238, type: '' },
  614. { startIndex: 239, type: 'delimiter.curly.scss' } /* '}' */
  615. ]}],
  616. // Functionwhitespaces
  617. [{
  618. line:
  619. '$grid-width: 40px;\n' +
  620. '$gutter-width: 10px;\n' +
  621. '@function grid-width($n) {\n' +
  622. ' @return $n * $grid-width + ($n - 1) * $gutter-width;\n' +
  623. '}\n' +
  624. '#sidebar { width: grid-width(5); }',
  625. tokens: [
  626. { startIndex: 0, type: 'variable.decl.scss' } /* '$grid-width:' */,
  627. { startIndex: 12, type: '' },
  628. { startIndex: 13, type: 'number.scss' } /* '40px' */,
  629. { startIndex: 17, type: 'delimiter.scss' } /* ';' */,
  630. { startIndex: 18, type: '' },
  631. { startIndex: 19, type: 'variable.decl.scss' } /* '$gutter-width:' */,
  632. { startIndex: 33, type: '' },
  633. { startIndex: 34, type: 'number.scss' } /* '10px' */,
  634. { startIndex: 38, type: 'delimiter.scss' } /* ';' */,
  635. { startIndex: 39, type: '' },
  636. { startIndex: 40, type: 'keyword.scss' } /* '@function' */,
  637. { startIndex: 49, type: '' },
  638. { startIndex: 50, type: 'meta.scss' } /* 'grid-width(' */,
  639. { startIndex: 61, type: 'variable.ref.scss' } /* '$n' */,
  640. { startIndex: 63, type: 'meta.scss' } /* ')' */,
  641. { startIndex: 64, type: '' },
  642. { startIndex: 65, type: 'delimiter.curly.scss' } /* '{' */,
  643. { startIndex: 66, type: '' },
  644. { startIndex: 69, type: 'keyword.scss' } /* '@return' */,
  645. { startIndex: 76, type: '' },
  646. { startIndex: 77, type: 'variable.ref.scss' } /* '$n' */,
  647. { startIndex: 79, type: '' },
  648. { startIndex: 80, type: 'operator.scss' } /* '*' */,
  649. { startIndex: 81, type: '' },
  650. { startIndex: 82, type: 'variable.ref.scss' } /* '$grid-width' */,
  651. { startIndex: 93, type: '' },
  652. { startIndex: 94, type: 'operator.scss' } /* '+' */,
  653. { startIndex: 95, type: '' },
  654. { startIndex: 96, type: 'delimiter.parenthesis.scss' } /* '(' */,
  655. { startIndex: 97, type: 'variable.ref.scss' } /* '$n' */,
  656. { startIndex: 99, type: '' },
  657. { startIndex: 100, type: 'operator.scss' } /* '-' */,
  658. { startIndex: 101, type: '' },
  659. { startIndex: 102, type: 'number.scss' } /* '1' */,
  660. { startIndex: 103, type: 'delimiter.parenthesis.scss' } /* ')' */,
  661. { startIndex: 104, type: '' },
  662. { startIndex: 105, type: 'operator.scss' } /* '*' */,
  663. { startIndex: 106, type: '' },
  664. { startIndex: 107, type: 'variable.ref.scss' } /* '$gutter-width' */,
  665. { startIndex: 120, type: 'delimiter.scss' } /* ';' */,
  666. { startIndex: 121, type: '' },
  667. { startIndex: 122, type: 'delimiter.curly.scss' } /* '}' */,
  668. { startIndex: 123, type: '' },
  669. { startIndex: 124, type: 'tag.scss' } /* '#sidebar' */,
  670. { startIndex: 132, type: '' },
  671. { startIndex: 133, type: 'delimiter.curly.scss' } /* '{' */,
  672. { startIndex: 134, type: '' },
  673. { startIndex: 135, type: 'attribute.name.scss' } /* 'width:' */,
  674. { startIndex: 141, type: '' },
  675. { startIndex: 142, type: 'meta.scss' } /* 'grid-width(' */,
  676. { startIndex: 153, type: 'number.scss' } /* '5' */,
  677. { startIndex: 154, type: 'meta.scss' } /* ')' */,
  678. { startIndex: 155, type: 'delimiter.scss' } /* ';' */,
  679. { startIndex: 156, type: '' },
  680. { startIndex: 157, type: 'delimiter.curly.scss' } /* '}' */
  681. ]}],
  682. // Importswhitespaces
  683. [{
  684. line:
  685. '@import "foo.scss";\n' +
  686. '$family: unquote("Droid+Sans");\n' +
  687. '@import "rounded-corners" url("http://fonts.googleapis.com/css?family=#{$family}");\n' +
  688. '#main {\n' +
  689. ' @import "example";\n' +
  690. '}',
  691. tokens: [
  692. { startIndex: 0, type: 'keyword.scss' } /* '@import' */,
  693. { startIndex: 7, type: '' },
  694. { startIndex: 8, type: 'string.delimiter.scss' } /* '"' */,
  695. { startIndex: 9, type: 'string.scss' } /* 'foo.scss' */,
  696. { startIndex: 17, type: 'string.delimiter.scss' } /* '"' */,
  697. { startIndex: 18, type: 'delimiter.scss' } /* ';' */,
  698. { startIndex: 19, type: '' },
  699. { startIndex: 20, type: 'variable.decl.scss' } /* '$family:' */,
  700. { startIndex: 28, type: '' },
  701. { startIndex: 29, type: 'meta.scss' } /* 'unquote(' */,
  702. { startIndex: 37, type: 'string.delimiter.scss' } /* '"' */,
  703. { startIndex: 38, type: 'string.scss' } /* 'Droid+Sans' */,
  704. { startIndex: 48, type: 'string.delimiter.scss' } /* '"' */,
  705. { startIndex: 49, type: 'meta.scss' } /* ')' */,
  706. { startIndex: 50, type: 'delimiter.scss' } /* ';' */,
  707. { startIndex: 51, type: '' },
  708. { startIndex: 52, type: 'keyword.scss' } /* '@import' */,
  709. { startIndex: 59, type: '' },
  710. { startIndex: 60, type: 'string.delimiter.scss' } /* '"' */,
  711. { startIndex: 61, type: 'string.scss' } /* 'rounded-corners' */,
  712. { startIndex: 76, type: 'string.delimiter.scss' } /* '"' */,
  713. { startIndex: 77, type: '' },
  714. { startIndex: 78, type: 'meta.scss' } /* 'url(' */,
  715. { startIndex: 82, type: 'string.delimiter.scss' } /* '"' */,
  716. { startIndex: 83, type: 'string.scss' } /* 'http://fonts.googleapis.com/css?family=#{$family}' */,
  717. { startIndex: 132, type: 'string.delimiter.scss' } /* '"' */,
  718. { startIndex: 133, type: 'meta.scss' } /* ')' */,
  719. { startIndex: 134, type: 'delimiter.scss' } /* ';' */,
  720. { startIndex: 135, type: '' },
  721. { startIndex: 136, type: 'tag.scss' } /* '#main' */,
  722. { startIndex: 141, type: '' },
  723. { startIndex: 142, type: 'delimiter.curly.scss' } /* '{' */,
  724. { startIndex: 143, type: '' },
  725. { startIndex: 146, type: 'keyword.scss' } /* '@import' */,
  726. { startIndex: 153, type: '' },
  727. { startIndex: 154, type: 'string.delimiter.scss' } /* '"' */,
  728. { startIndex: 155, type: 'string.scss' } /* 'example' */,
  729. { startIndex: 162, type: 'string.delimiter.scss' } /* '"' */,
  730. { startIndex: 163, type: 'delimiter.scss' } /* ';' */,
  731. { startIndex: 164, type: '' },
  732. { startIndex: 165, type: 'delimiter.curly.scss' } /* '}' */
  733. ]}],
  734. // Mediawhitespaces
  735. [{
  736. line:
  737. '.sidebar {\n' +
  738. ' width: 300px;\n' +
  739. ' @media screen and (orientation: landscape) {\n' +
  740. ' width: 500px;\n' +
  741. ' }\n' +
  742. '}',
  743. tokens: [
  744. { startIndex: 0, type: 'tag.scss' } /* '.sidebar' */,
  745. { startIndex: 8, type: '' },
  746. { startIndex: 9, type: 'delimiter.curly.scss' } /* '{' */,
  747. { startIndex: 10, type: '' },
  748. { startIndex: 13, type: 'attribute.name.scss' } /* 'width:' */,
  749. { startIndex: 19, type: '' },
  750. { startIndex: 20, type: 'number.scss' } /* '300px' */,
  751. { startIndex: 25, type: 'delimiter.scss' } /* ';' */,
  752. { startIndex: 26, type: '' },
  753. { startIndex: 29, type: 'keyword.flow.scss' } /* '@media' */,
  754. { startIndex: 35, type: '' },
  755. { startIndex: 36, type: 'attribute.value.scss' } /* 'screen' */,
  756. { startIndex: 42, type: '' },
  757. { startIndex: 43, type: 'operator.scss' } /* 'and' */,
  758. { startIndex: 46, type: '' },
  759. { startIndex: 47, type: 'delimiter.parenthesis.scss' } /* '(' */,
  760. { startIndex: 48, type: 'attribute.value.scss' } /* 'orientation' */,
  761. { startIndex: 59, type: '' },
  762. { startIndex: 61, type: 'attribute.value.scss' } /* 'landscape' */,
  763. { startIndex: 70, type: 'delimiter.parenthesis.scss' } /* ')' */,
  764. { startIndex: 71, type: '' },
  765. { startIndex: 72, type: 'delimiter.curly.scss' } /* '{' */,
  766. { startIndex: 73, type: '' },
  767. { startIndex: 78, type: 'attribute.name.scss' } /* 'width:' */,
  768. { startIndex: 84, type: '' },
  769. { startIndex: 85, type: 'number.scss' } /* '500px' */,
  770. { startIndex: 90, type: 'delimiter.scss' } /* ';' */,
  771. { startIndex: 91, type: '' },
  772. { startIndex: 94, type: 'delimiter.curly.scss' } /* '}' */,
  773. { startIndex: 95, type: '' },
  774. { startIndex: 96, type: 'delimiter.curly.scss' } /* '}' */
  775. ]}],
  776. // Extendwhitespaces
  777. [{
  778. line:
  779. '.error {\n' +
  780. ' border: 1px #f00;\n' +
  781. ' background-color: #fdd;\n' +
  782. '}\n' +
  783. '.seriousError {\n' +
  784. ' @extend .error;\n' +
  785. ' border-width: 3px;\n' +
  786. '}\n' +
  787. '#context a%extreme {\n' +
  788. ' color: blue;\n' +
  789. ' font-weight: bold;\n' +
  790. ' font-size: 2em;\n' +
  791. '}\n' +
  792. '.notice {\n' +
  793. ' @extend %extreme !optional;\n' +
  794. '}',
  795. tokens: [
  796. { startIndex: 0, type: 'tag.scss' } /* '.error' */,
  797. { startIndex: 6, type: '' },
  798. { startIndex: 7, type: 'delimiter.curly.scss' } /* '{' */,
  799. { startIndex: 8, type: '' },
  800. { startIndex: 11, type: 'attribute.name.scss' } /* 'border:' */,
  801. { startIndex: 18, type: '' },
  802. { startIndex: 19, type: 'number.scss' } /* '1px' */,
  803. { startIndex: 22, type: '' },
  804. { startIndex: 23, type: 'number.hex.scss' } /* '#f00' */,
  805. { startIndex: 27, type: 'delimiter.scss' } /* ';' */,
  806. { startIndex: 28, type: '' },
  807. { startIndex: 31, type: 'attribute.name.scss' } /* 'background-color:' */,
  808. { startIndex: 48, type: '' },
  809. { startIndex: 49, type: 'number.hex.scss' } /* '#fdd' */,
  810. { startIndex: 53, type: 'delimiter.scss' } /* ';' */,
  811. { startIndex: 54, type: '' },
  812. { startIndex: 55, type: 'delimiter.curly.scss' } /* '}' */,
  813. { startIndex: 56, type: '' },
  814. { startIndex: 57, type: 'tag.scss' } /* '.seriousError' */,
  815. { startIndex: 70, type: '' },
  816. { startIndex: 71, type: 'delimiter.curly.scss' } /* '{' */,
  817. { startIndex: 72, type: '' },
  818. { startIndex: 75, type: 'keyword.scss' } /* '@extend' */,
  819. { startIndex: 82, type: '' },
  820. { startIndex: 83, type: 'tag.scss' } /* '.error' */,
  821. { startIndex: 89, type: 'delimiter.scss' } /* ';' */,
  822. { startIndex: 90, type: '' },
  823. { startIndex: 93, type: 'attribute.name.scss' } /* 'border-width:' */,
  824. { startIndex: 106, type: '' },
  825. { startIndex: 107, type: 'number.scss' } /* '3px' */,
  826. { startIndex: 110, type: 'delimiter.scss' } /* ';' */,
  827. { startIndex: 111, type: '' },
  828. { startIndex: 112, type: 'delimiter.curly.scss' } /* '}' */,
  829. { startIndex: 113, type: '' },
  830. { startIndex: 114, type: 'tag.scss' } /* '#context' */,
  831. { startIndex: 122, type: '' },
  832. { startIndex: 123, type: 'tag.scss' } /* 'a%extreme' */,
  833. { startIndex: 132, type: '' },
  834. { startIndex: 133, type: 'delimiter.curly.scss' } /* '{' */,
  835. { startIndex: 134, type: '' },
  836. { startIndex: 137, type: 'attribute.name.scss' } /* 'color:' */,
  837. { startIndex: 143, type: '' },
  838. { startIndex: 144, type: 'attribute.value.scss' } /* 'blue' */,
  839. { startIndex: 148, type: 'delimiter.scss' } /* ';' */,
  840. { startIndex: 149, type: '' },
  841. { startIndex: 152, type: 'attribute.name.scss' } /* 'font-weight:' */,
  842. { startIndex: 164, type: '' },
  843. { startIndex: 165, type: 'attribute.value.scss' } /* 'bold' */,
  844. { startIndex: 169, type: 'delimiter.scss' } /* ';' */,
  845. { startIndex: 170, type: '' },
  846. { startIndex: 173, type: 'attribute.name.scss' } /* 'font-size:' */,
  847. { startIndex: 183, type: '' },
  848. { startIndex: 184, type: 'number.scss' } /* '2em' */,
  849. { startIndex: 187, type: 'delimiter.scss' } /* ';' */,
  850. { startIndex: 188, type: '' },
  851. { startIndex: 189, type: 'delimiter.curly.scss' } /* '}' */,
  852. { startIndex: 190, type: '' },
  853. { startIndex: 191, type: 'tag.scss' } /* '.notice' */,
  854. { startIndex: 198, type: '' },
  855. { startIndex: 199, type: 'delimiter.curly.scss' } /* '{' */,
  856. { startIndex: 200, type: '' },
  857. { startIndex: 203, type: 'keyword.scss' } /* '@extend' */,
  858. { startIndex: 210, type: '' },
  859. { startIndex: 211, type: 'tag.scss' } /* '%extreme' */,
  860. { startIndex: 219, type: '' },
  861. { startIndex: 220, type: 'literal.scss' } /* '!optional' */,
  862. { startIndex: 229, type: 'delimiter.scss' } /* ';' */,
  863. { startIndex: 230, type: '' },
  864. { startIndex: 231, type: 'delimiter.curly.scss' } /* '}' */
  865. ]}],
  866. // @debug and @warnwhitespaces
  867. [{
  868. line:
  869. '@debug 10em + 12em;\n' +
  870. '@mixin adjust-location($x, $y) {\n' +
  871. ' @if unitless($x) {\n' +
  872. ' @warn "Assuming #{$x} to be in pixels";\n' +
  873. ' $x: 1px * $x;\n' +
  874. ' }\n' +
  875. ' @if unitless($y) {\n' +
  876. ' @warn "Assuming #{$y} to be in pixels";\n' +
  877. ' $y: 1px * $y;\n' +
  878. ' }\n' +
  879. ' position: relative; left: $x; top: $y;\n' +
  880. '}',
  881. tokens: [
  882. { startIndex: 0, type: 'keyword.scss' } /* '@debug' */,
  883. { startIndex: 6, type: '' },
  884. { startIndex: 7, type: 'number.scss' } /* '10em' */,
  885. { startIndex: 11, type: '' },
  886. { startIndex: 12, type: 'operator.scss' } /* '+' */,
  887. { startIndex: 13, type: '' },
  888. { startIndex: 14, type: 'number.scss' } /* '12em' */,
  889. { startIndex: 18, type: 'delimiter.scss' } /* ';' */,
  890. { startIndex: 19, type: '' },
  891. { startIndex: 20, type: 'keyword.scss' } /* '@mixin' */,
  892. { startIndex: 26, type: '' },
  893. { startIndex: 27, type: 'meta.scss' } /* 'adjust-location(' */,
  894. { startIndex: 43, type: 'variable.ref.scss' } /* '$x' */,
  895. { startIndex: 45, type: 'delimiter.scss' } /* ',' */,
  896. { startIndex: 46, type: '' },
  897. { startIndex: 47, type: 'variable.ref.scss' } /* '$y' */,
  898. { startIndex: 49, type: 'meta.scss' } /* ')' */,
  899. { startIndex: 50, type: '' },
  900. { startIndex: 51, type: 'delimiter.curly.scss' } /* '{' */,
  901. { startIndex: 52, type: '' },
  902. { startIndex: 55, type: 'keyword.flow.scss' } /* '@if' */,
  903. { startIndex: 58, type: '' },
  904. { startIndex: 59, type: 'meta.scss' } /* 'unitless(' */,
  905. { startIndex: 68, type: 'variable.ref.scss' } /* '$x' */,
  906. { startIndex: 70, type: 'meta.scss' } /* ')' */,
  907. { startIndex: 71, type: '' },
  908. { startIndex: 72, type: 'delimiter.curly.scss' } /* '{' */,
  909. { startIndex: 73, type: '' },
  910. { startIndex: 78, type: 'keyword.scss' } /* '@warn' */,
  911. { startIndex: 83, type: '' },
  912. { startIndex: 84, type: 'string.delimiter.scss' } /* '"' */,
  913. { startIndex: 85, type: 'string.scss' } /* 'Assuming #{$x} to be in pixels' */,
  914. { startIndex: 115, type: 'string.delimiter.scss' } /* '"' */,
  915. { startIndex: 116, type: 'delimiter.scss' } /* ';' */,
  916. { startIndex: 117, type: '' },
  917. { startIndex: 122, type: 'variable.decl.scss' } /* '$x:' */,
  918. { startIndex: 125, type: '' },
  919. { startIndex: 126, type: 'number.scss' } /* '1px' */,
  920. { startIndex: 129, type: '' },
  921. { startIndex: 130, type: 'operator.scss' } /* '*' */,
  922. { startIndex: 131, type: '' },
  923. { startIndex: 132, type: 'variable.ref.scss' } /* '$x' */,
  924. { startIndex: 134, type: 'delimiter.scss' } /* ';' */,
  925. { startIndex: 135, type: '' },
  926. { startIndex: 138, type: 'delimiter.curly.scss' } /* '}' */,
  927. { startIndex: 139, type: '' },
  928. { startIndex: 142, type: 'keyword.flow.scss' } /* '@if' */,
  929. { startIndex: 145, type: '' },
  930. { startIndex: 146, type: 'meta.scss' } /* 'unitless(' */,
  931. { startIndex: 155, type: 'variable.ref.scss' } /* '$y' */,
  932. { startIndex: 157, type: 'meta.scss' } /* ')' */,
  933. { startIndex: 158, type: '' },
  934. { startIndex: 159, type: 'delimiter.curly.scss' } /* '{' */,
  935. { startIndex: 160, type: '' },
  936. { startIndex: 165, type: 'keyword.scss' } /* '@warn' */,
  937. { startIndex: 170, type: '' },
  938. { startIndex: 171, type: 'string.delimiter.scss' } /* '"' */,
  939. { startIndex: 172, type: 'string.scss' } /* 'Assuming #{$y} to be in pixels' */,
  940. { startIndex: 202, type: 'string.delimiter.scss' } /* '"' */,
  941. { startIndex: 203, type: 'delimiter.scss' } /* ';' */,
  942. { startIndex: 204, type: '' },
  943. { startIndex: 209, type: 'variable.decl.scss' } /* '$y:' */,
  944. { startIndex: 212, type: '' },
  945. { startIndex: 213, type: 'number.scss' } /* '1px' */,
  946. { startIndex: 216, type: '' },
  947. { startIndex: 217, type: 'operator.scss' } /* '*' */,
  948. { startIndex: 218, type: '' },
  949. { startIndex: 219, type: 'variable.ref.scss' } /* '$y' */,
  950. { startIndex: 221, type: 'delimiter.scss' } /* ';' */,
  951. { startIndex: 222, type: '' },
  952. { startIndex: 225, type: 'delimiter.curly.scss' } /* '}' */,
  953. { startIndex: 226, type: '' },
  954. { startIndex: 229, type: 'attribute.name.scss' } /* 'position:' */,
  955. { startIndex: 238, type: '' },
  956. { startIndex: 239, type: 'attribute.value.scss' } /* 'relative' */,
  957. { startIndex: 247, type: 'delimiter.scss' } /* ';' */,
  958. { startIndex: 248, type: '' },
  959. { startIndex: 249, type: 'attribute.name.scss' } /* 'left:' */,
  960. { startIndex: 254, type: '' },
  961. { startIndex: 255, type: 'variable.ref.scss' } /* '$x' */,
  962. { startIndex: 257, type: 'delimiter.scss' } /* ';' */,
  963. { startIndex: 258, type: '' },
  964. { startIndex: 259, type: 'attribute.name.scss' } /* 'top:' */,
  965. { startIndex: 263, type: '' },
  966. { startIndex: 264, type: 'variable.ref.scss' } /* '$y' */,
  967. { startIndex: 266, type: 'delimiter.scss' } /* ';' */,
  968. { startIndex: 267, type: '' },
  969. { startIndex: 268, type: 'delimiter.curly.scss' } /* '}' */
  970. ]}],
  971. // if statementwhitespaces
  972. [{
  973. line:
  974. 'p {\n' +
  975. ' @if 1 + 1 == 2 { border: 1px solid; }\n' +
  976. ' @if 5 < 3 { border: 2px dotted; }\n' +
  977. ' @if null { border: 3px double; }\n' +
  978. '}',
  979. tokens: [
  980. { startIndex: 0, type: 'tag.scss' } /* 'p' */,
  981. { startIndex: 1, type: '' },
  982. { startIndex: 2, type: 'delimiter.curly.scss' } /* '{' */,
  983. { startIndex: 3, type: '' },
  984. { startIndex: 6, type: 'keyword.flow.scss' } /* '@if' */,
  985. { startIndex: 9, type: '' },
  986. { startIndex: 10, type: 'number.scss' } /* '1' */,
  987. { startIndex: 11, type: '' },
  988. { startIndex: 12, type: 'operator.scss' } /* '+' */,
  989. { startIndex: 13, type: '' },
  990. { startIndex: 14, type: 'number.scss' } /* '1' */,
  991. { startIndex: 15, type: '' },
  992. { startIndex: 16, type: 'operator.scss' } /* '==' */,
  993. { startIndex: 18, type: '' },
  994. { startIndex: 19, type: 'number.scss' } /* '2' */,
  995. { startIndex: 20, type: '' },
  996. { startIndex: 21, type: 'delimiter.curly.scss' } /* '{' */,
  997. { startIndex: 22, type: '' },
  998. { startIndex: 23, type: 'attribute.name.scss' } /* 'border:' */,
  999. { startIndex: 30, type: '' },
  1000. { startIndex: 31, type: 'number.scss' } /* '1px' */,
  1001. { startIndex: 34, type: '' },
  1002. { startIndex: 35, type: 'attribute.value.scss' } /* 'solid' */,
  1003. { startIndex: 40, type: 'delimiter.scss' } /* ';' */,
  1004. { startIndex: 41, type: '' },
  1005. { startIndex: 43, type: 'delimiter.curly.scss' } /* '}' */,
  1006. { startIndex: 44, type: '' },
  1007. { startIndex: 47, type: 'keyword.flow.scss' } /* '@if' */,
  1008. { startIndex: 50, type: '' },
  1009. { startIndex: 51, type: 'number.scss' } /* '5' */,
  1010. { startIndex: 52, type: '' },
  1011. { startIndex: 53, type: 'operator.scss' } /* '<' */,
  1012. { startIndex: 54, type: '' },
  1013. { startIndex: 55, type: 'number.scss' } /* '3' */,
  1014. { startIndex: 56, type: '' },
  1015. { startIndex: 62, type: 'delimiter.curly.scss' } /* '{' */,
  1016. { startIndex: 63, type: '' },
  1017. { startIndex: 64, type: 'attribute.name.scss' } /* 'border:' */,
  1018. { startIndex: 71, type: '' },
  1019. { startIndex: 72, type: 'number.scss' } /* '2px' */,
  1020. { startIndex: 75, type: '' },
  1021. { startIndex: 76, type: 'attribute.value.scss' } /* 'dotted' */,
  1022. { startIndex: 82, type: 'delimiter.scss' } /* ';' */,
  1023. { startIndex: 83, type: '' },
  1024. { startIndex: 84, type: 'delimiter.curly.scss' } /* '}' */,
  1025. { startIndex: 85, type: '' },
  1026. { startIndex: 88, type: 'keyword.flow.scss' } /* '@if' */,
  1027. { startIndex: 91, type: '' },
  1028. { startIndex: 92, type: 'attribute.value.scss' } /* 'null' */,
  1029. { startIndex: 96, type: '' },
  1030. { startIndex: 103, type: 'delimiter.curly.scss' } /* '{' */,
  1031. { startIndex: 104, type: '' },
  1032. { startIndex: 105, type: 'attribute.name.scss' } /* 'border:' */,
  1033. { startIndex: 112, type: '' },
  1034. { startIndex: 113, type: 'number.scss' } /* '3px' */,
  1035. { startIndex: 116, type: '' },
  1036. { startIndex: 117, type: 'attribute.value.scss' } /* 'double' */,
  1037. { startIndex: 123, type: 'delimiter.scss' } /* ';' */,
  1038. { startIndex: 124, type: '' },
  1039. { startIndex: 125, type: 'delimiter.curly.scss' } /* '}' */,
  1040. { startIndex: 126, type: '' },
  1041. { startIndex: 127, type: 'delimiter.curly.scss' } /* '}' */
  1042. ]}],
  1043. // if-else statementwhitespaces
  1044. [{
  1045. line:
  1046. '$type: monster;\n' +
  1047. 'p {\n' +
  1048. ' @if $type == ocean {\n' +
  1049. ' color: blue;\n' +
  1050. ' } @else if $type == matador {\n' +
  1051. ' color: red;\n' +
  1052. ' } @else {\n' +
  1053. ' color: black;\n' +
  1054. ' }\n' +
  1055. '}',
  1056. tokens: [
  1057. { startIndex: 0, type: 'variable.decl.scss' } /* '$type:' */,
  1058. { startIndex: 6, type: '' },
  1059. { startIndex: 7, type: 'attribute.value.scss' } /* 'monster' */,
  1060. { startIndex: 14, type: 'delimiter.scss' } /* ';' */,
  1061. { startIndex: 15, type: '' },
  1062. { startIndex: 16, type: 'tag.scss' } /* 'p' */,
  1063. { startIndex: 17, type: '' },
  1064. { startIndex: 18, type: 'delimiter.curly.scss' } /* '{' */,
  1065. { startIndex: 19, type: '' },
  1066. { startIndex: 22, type: 'keyword.flow.scss' } /* '@if' */,
  1067. { startIndex: 25, type: '' },
  1068. { startIndex: 26, type: 'variable.ref.scss' } /* '$type' */,
  1069. { startIndex: 31, type: '' },
  1070. { startIndex: 32, type: 'operator.scss' } /* '==' */,
  1071. { startIndex: 34, type: '' },
  1072. { startIndex: 35, type: 'attribute.value.scss' } /* 'ocean' */,
  1073. { startIndex: 40, type: '' },
  1074. { startIndex: 41, type: 'delimiter.curly.scss' } /* '{' */,
  1075. { startIndex: 42, type: '' },
  1076. { startIndex: 47, type: 'attribute.name.scss' } /* 'color:' */,
  1077. { startIndex: 53, type: '' },
  1078. { startIndex: 54, type: 'attribute.value.scss' } /* 'blue' */,
  1079. { startIndex: 58, type: 'delimiter.scss' } /* ';' */,
  1080. { startIndex: 59, type: '' },
  1081. { startIndex: 62, type: 'delimiter.curly.scss' } /* '}' */,
  1082. { startIndex: 63, type: '' },
  1083. { startIndex: 64, type: 'keyword.flow.scss' } /* '@else' */,
  1084. { startIndex: 69, type: '' },
  1085. { startIndex: 70, type: 'keyword.flow.scss' } /* 'if' */,
  1086. { startIndex: 72, type: '' },
  1087. { startIndex: 73, type: 'variable.ref.scss' } /* '$type' */,
  1088. { startIndex: 78, type: '' },
  1089. { startIndex: 79, type: 'operator.scss' } /* '==' */,
  1090. { startIndex: 81, type: '' },
  1091. { startIndex: 82, type: 'attribute.value.scss' } /* 'matador' */,
  1092. { startIndex: 89, type: '' },
  1093. { startIndex: 90, type: 'delimiter.curly.scss' } /* '{' */,
  1094. { startIndex: 91, type: '' },
  1095. { startIndex: 96, type: 'attribute.name.scss' } /* 'color:' */,
  1096. { startIndex: 102, type: '' },
  1097. { startIndex: 103, type: 'attribute.value.scss' } /* 'red' */,
  1098. { startIndex: 106, type: 'delimiter.scss' } /* ';' */,
  1099. { startIndex: 107, type: '' },
  1100. { startIndex: 110, type: 'delimiter.curly.scss' } /* '}' */,
  1101. { startIndex: 111, type: '' },
  1102. { startIndex: 112, type: 'keyword.flow.scss' } /* '@else' */,
  1103. { startIndex: 117, type: '' },
  1104. { startIndex: 118, type: 'delimiter.curly.scss' } /* '{' */,
  1105. { startIndex: 119, type: '' },
  1106. { startIndex: 124, type: 'attribute.name.scss' } /* 'color:' */,
  1107. { startIndex: 130, type: '' },
  1108. { startIndex: 131, type: 'attribute.value.scss' } /* 'black' */,
  1109. { startIndex: 136, type: 'delimiter.scss' } /* ';' */,
  1110. { startIndex: 137, type: '' },
  1111. { startIndex: 140, type: 'delimiter.curly.scss' } /* '}' */,
  1112. { startIndex: 141, type: '' },
  1113. { startIndex: 142, type: 'delimiter.curly.scss' } /* '}' */
  1114. ]}],
  1115. // for statementwhitespaces
  1116. [{
  1117. line:
  1118. '@for $i from 1 through 3 {\n' +
  1119. ' .item-#{$i} { width: 2em * $i; }\n' +
  1120. '}',
  1121. tokens: [
  1122. { startIndex: 0, type: 'keyword.flow.scss' } /* '@for' */,
  1123. { startIndex: 4, type: '' },
  1124. { startIndex: 5, type: 'variable.ref.scss' } /* '$i' */,
  1125. { startIndex: 7, type: '' },
  1126. { startIndex: 8, type: 'keyword.flow.scss' } /* 'from' */,
  1127. { startIndex: 12, type: '' },
  1128. { startIndex: 13, type: 'number.scss' } /* '1' */,
  1129. { startIndex: 14, type: '' },
  1130. { startIndex: 15, type: 'keyword.flow.scss' } /* 'through' */,
  1131. { startIndex: 22, type: '' },
  1132. { startIndex: 23, type: 'number.scss' } /* '3' */,
  1133. { startIndex: 24, type: '' },
  1134. { startIndex: 25, type: 'delimiter.curly.scss' } /* '{' */,
  1135. { startIndex: 26, type: '' },
  1136. { startIndex: 29, type: 'tag.scss' } /* '.item-' */,
  1137. { startIndex: 35, type: 'meta.scss' } /* '#{' */,
  1138. { startIndex: 37, type: 'variable.ref.scss' } /* '$i' */,
  1139. { startIndex: 39, type: 'meta.scss' } /* '}' */,
  1140. { startIndex: 40, type: '' },
  1141. { startIndex: 41, type: 'delimiter.curly.scss' } /* '{' */,
  1142. { startIndex: 42, type: '' },
  1143. { startIndex: 43, type: 'attribute.name.scss' } /* 'width:' */,
  1144. { startIndex: 49, type: '' },
  1145. { startIndex: 50, type: 'number.scss' } /* '2em' */,
  1146. { startIndex: 53, type: '' },
  1147. { startIndex: 54, type: 'operator.scss' } /* '*' */,
  1148. { startIndex: 55, type: '' },
  1149. { startIndex: 56, type: 'variable.ref.scss' } /* '$i' */,
  1150. { startIndex: 58, type: 'delimiter.scss' } /* ';' */,
  1151. { startIndex: 59, type: '' },
  1152. { startIndex: 60, type: 'delimiter.curly.scss' } /* '}' */,
  1153. { startIndex: 61, type: '' },
  1154. { startIndex: 62, type: 'delimiter.curly.scss' } /* '}' */
  1155. ]}],
  1156. // each statementwhitespaces
  1157. [{
  1158. line:
  1159. '@each $animal in puma, sea-slug, egret, salamander {\n' +
  1160. ' .#{$animal}-icon {\n' +
  1161. ' background-image: url(\'/images/#{$animal}.png\');\n' +
  1162. ' }\n' +
  1163. '}',
  1164. tokens: [
  1165. { startIndex: 0, type: 'keyword.flow.scss' } /* '@each' */,
  1166. { startIndex: 5, type: '' },
  1167. { startIndex: 6, type: 'variable.ref.scss' } /* '$animal' */,
  1168. { startIndex: 13, type: '' },
  1169. { startIndex: 14, type: 'keyword.flow.scss' } /* 'in' */,
  1170. { startIndex: 16, type: '' },
  1171. { startIndex: 17, type: 'attribute.value.scss' } /* 'puma' */,
  1172. { startIndex: 21, type: 'operator.scss' } /* ',' */,
  1173. { startIndex: 22, type: '' },
  1174. { startIndex: 23, type: 'attribute.value.scss' } /* 'sea-slug' */,
  1175. { startIndex: 31, type: 'operator.scss' } /* ',' */,
  1176. { startIndex: 32, type: '' },
  1177. { startIndex: 33, type: 'attribute.value.scss' } /* 'egret' */,
  1178. { startIndex: 38, type: 'operator.scss' } /* ',' */,
  1179. { startIndex: 39, type: '' },
  1180. { startIndex: 40, type: 'attribute.value.scss' } /* 'salamander' */,
  1181. { startIndex: 50, type: '' },
  1182. { startIndex: 51, type: 'delimiter.curly.scss' } /* '{' */,
  1183. { startIndex: 52, type: '' },
  1184. { startIndex: 55, type: 'tag.scss' } /* '.' */,
  1185. { startIndex: 56, type: 'meta.scss' } /* '#{' */,
  1186. { startIndex: 58, type: 'variable.ref.scss' } /* '$animal' */,
  1187. { startIndex: 65, type: 'meta.scss' } /* '}' */,
  1188. { startIndex: 66, type: 'tag.scss' } /* '-icon' */,
  1189. { startIndex: 71, type: '' },
  1190. { startIndex: 72, type: 'delimiter.curly.scss' } /* '{' */,
  1191. { startIndex: 73, type: '' },
  1192. { startIndex: 78, type: 'attribute.name.scss' } /* 'background-image:' */,
  1193. { startIndex: 95, type: '' },
  1194. { startIndex: 96, type: 'meta.scss' } /* 'url(' */,
  1195. { startIndex: 100, type: 'string.delimiter.scss' } /* ''' */,
  1196. { startIndex: 101, type: 'string.scss' } /* '/images/#{$animal}.png' */,
  1197. { startIndex: 123, type: 'string.delimiter.scss' } /* ''' */,
  1198. { startIndex: 124, type: 'meta.scss' } /* ')' */,
  1199. { startIndex: 125, type: 'delimiter.scss' } /* ';' */,
  1200. { startIndex: 126, type: '' },
  1201. { startIndex: 129, type: 'delimiter.curly.scss' } /* '}' */,
  1202. { startIndex: 130, type: '' },
  1203. { startIndex: 131, type: 'delimiter.curly.scss' } /* '}' */
  1204. ]}],
  1205. // while statementwhitespaces
  1206. [{
  1207. line:
  1208. '$i: 6;\n' +
  1209. '@while $i > 0 {\n' +
  1210. ' .item-#{$i} { width: 2em * $i; }\n' +
  1211. ' $i: $i - 2;\n' +
  1212. '}',
  1213. tokens: [
  1214. { startIndex: 0, type: 'variable.decl.scss' } /* '$i:' */,
  1215. { startIndex: 3, type: '' },
  1216. { startIndex: 4, type: 'number.scss' } /* '6' */,
  1217. { startIndex: 5, type: 'delimiter.scss' } /* ';' */,
  1218. { startIndex: 6, type: '' },
  1219. { startIndex: 7, type: 'keyword.flow.scss' } /* '@while' */,
  1220. { startIndex: 13, type: '' },
  1221. { startIndex: 14, type: 'variable.ref.scss' } /* '$i' */,
  1222. { startIndex: 16, type: '' },
  1223. { startIndex: 17, type: 'operator.scss' } /* '>' */,
  1224. { startIndex: 18, type: '' },
  1225. { startIndex: 19, type: 'number.scss' } /* '0' */,
  1226. { startIndex: 20, type: '' },
  1227. { startIndex: 21, type: 'delimiter.curly.scss' } /* '{' */,
  1228. { startIndex: 22, type: '' },
  1229. { startIndex: 25, type: 'tag.scss' } /* '.item-' */,
  1230. { startIndex: 31, type: 'meta.scss' } /* '#{' */,
  1231. { startIndex: 33, type: 'variable.ref.scss' } /* '$i' */,
  1232. { startIndex: 35, type: 'meta.scss' } /* '}' */,
  1233. { startIndex: 36, type: '' },
  1234. { startIndex: 37, type: 'delimiter.curly.scss' } /* '{' */,
  1235. { startIndex: 38, type: '' },
  1236. { startIndex: 39, type: 'attribute.name.scss' } /* 'width:' */,
  1237. { startIndex: 45, type: '' },
  1238. { startIndex: 46, type: 'number.scss' } /* '2em' */,
  1239. { startIndex: 49, type: '' },
  1240. { startIndex: 50, type: 'operator.scss' } /* '*' */,
  1241. { startIndex: 51, type: '' },
  1242. { startIndex: 52, type: 'variable.ref.scss' } /* '$i' */,
  1243. { startIndex: 54, type: 'delimiter.scss' } /* ';' */,
  1244. { startIndex: 55, type: '' },
  1245. { startIndex: 56, type: 'delimiter.curly.scss' } /* '}' */,
  1246. { startIndex: 57, type: '' },
  1247. { startIndex: 60, type: 'variable.decl.scss' } /* '$i:' */,
  1248. { startIndex: 63, type: '' },
  1249. { startIndex: 64, type: 'variable.ref.scss' } /* '$i' */,
  1250. { startIndex: 66, type: '' },
  1251. { startIndex: 67, type: 'operator.scss' } /* '-' */,
  1252. { startIndex: 68, type: '' },
  1253. { startIndex: 69, type: 'number.scss' } /* '2' */,
  1254. { startIndex: 70, type: 'delimiter.scss' } /* ';' */,
  1255. { startIndex: 71, type: '' },
  1256. { startIndex: 72, type: 'delimiter.curly.scss' } /* '}' */
  1257. ]}],
  1258. // Function with control statements nestedwhitespaces
  1259. [{
  1260. line:
  1261. '@function foo($total, $a) {\n' +
  1262. ' @for $i from 0 to $total {\n' +
  1263. ' @if (unit($a) == "%") and ($i == ($total - 1)) {\n' +
  1264. ' $z: 100%;\n' +
  1265. ' @return \'1\';\n' +
  1266. ' }\n' +
  1267. ' }\n' +
  1268. ' @return $grid;\n' +
  1269. '}',
  1270. tokens: [
  1271. { startIndex: 0, type: 'keyword.scss' } /* '@function' */,
  1272. { startIndex: 9, type: '' },
  1273. { startIndex: 10, type: 'meta.scss' } /* 'foo(' */,
  1274. { startIndex: 14, type: 'variable.ref.scss' } /* '$total' */,
  1275. { startIndex: 20, type: 'delimiter.scss' } /* ',' */,
  1276. { startIndex: 21, type: '' },
  1277. { startIndex: 22, type: 'variable.ref.scss' } /* '$a' */,
  1278. { startIndex: 24, type: 'meta.scss' } /* ')' */,
  1279. { startIndex: 25, type: '' },
  1280. { startIndex: 26, type: 'delimiter.curly.scss' } /* '{' */,
  1281. { startIndex: 27, type: '' },
  1282. { startIndex: 30, type: 'keyword.flow.scss' } /* '@for' */,
  1283. { startIndex: 34, type: '' },
  1284. { startIndex: 35, type: 'variable.ref.scss' } /* '$i' */,
  1285. { startIndex: 37, type: '' },
  1286. { startIndex: 38, type: 'keyword.flow.scss' } /* 'from' */,
  1287. { startIndex: 42, type: '' },
  1288. { startIndex: 43, type: 'number.scss' } /* '0' */,
  1289. { startIndex: 44, type: '' },
  1290. { startIndex: 45, type: 'keyword.flow.scss' } /* 'to' */,
  1291. { startIndex: 47, type: '' },
  1292. { startIndex: 48, type: 'variable.ref.scss' } /* '$total' */,
  1293. { startIndex: 54, type: '' },
  1294. { startIndex: 55, type: 'delimiter.curly.scss' } /* '{' */,
  1295. { startIndex: 56, type: '' },
  1296. { startIndex: 61, type: 'keyword.flow.scss' } /* '@if' */,
  1297. { startIndex: 64, type: '' },
  1298. { startIndex: 65, type: 'delimiter.parenthesis.scss' } /* '(' */,
  1299. { startIndex: 66, type: 'meta.scss' } /* 'unit(' */,
  1300. { startIndex: 71, type: 'variable.ref.scss' } /* '$a' */,
  1301. { startIndex: 73, type: 'meta.scss' } /* ')' */,
  1302. { startIndex: 74, type: '' },
  1303. { startIndex: 75, type: 'operator.scss' } /* '==' */,
  1304. { startIndex: 77, type: '' },
  1305. { startIndex: 78, type: 'string.delimiter.scss' } /* '"' */,
  1306. { startIndex: 79, type: 'string.scss' } /* '%' */,
  1307. { startIndex: 80, type: 'string.delimiter.scss' } /* '"' */,
  1308. { startIndex: 81, type: 'delimiter.parenthesis.scss' } /* ')' */,
  1309. { startIndex: 82, type: '' },
  1310. { startIndex: 83, type: 'operator.scss' } /* 'and' */,
  1311. { startIndex: 86, type: '' },
  1312. { startIndex: 87, type: 'delimiter.parenthesis.scss' } /* '(' */,
  1313. { startIndex: 88, type: 'variable.ref.scss' } /* '$i' */,
  1314. { startIndex: 90, type: '' },
  1315. { startIndex: 91, type: 'operator.scss' } /* '==' */,
  1316. { startIndex: 93, type: '' },
  1317. { startIndex: 94, type: 'delimiter.parenthesis.scss' } /* '(' */,
  1318. { startIndex: 95, type: 'variable.ref.scss' } /* '$total' */,
  1319. { startIndex: 101, type: '' },
  1320. { startIndex: 102, type: 'operator.scss' } /* '-' */,
  1321. { startIndex: 103, type: '' },
  1322. { startIndex: 104, type: 'number.scss' } /* '1' */,
  1323. { startIndex: 105, type: 'delimiter.parenthesis.scss' } /* ')' */,
  1324. { startIndex: 107, type: '' },
  1325. { startIndex: 108, type: 'delimiter.curly.scss' } /* '{' */,
  1326. { startIndex: 109, type: '' },
  1327. { startIndex: 116, type: 'variable.decl.scss' } /* '$z:' */,
  1328. { startIndex: 119, type: '' },
  1329. { startIndex: 120, type: 'number.scss' } /* '100%' */,
  1330. { startIndex: 124, type: 'delimiter.scss' } /* ';' */,
  1331. { startIndex: 125, type: '' },
  1332. { startIndex: 132, type: 'keyword.scss' } /* '@return' */,
  1333. { startIndex: 139, type: '' },
  1334. { startIndex: 140, type: 'string.delimiter.scss' } /* ''' */,
  1335. { startIndex: 141, type: 'string.scss' } /* '1' */,
  1336. { startIndex: 142, type: 'string.delimiter.scss' } /* ''' */,
  1337. { startIndex: 143, type: 'delimiter.scss' } /* ';' */,
  1338. { startIndex: 144, type: '' },
  1339. { startIndex: 149, type: 'delimiter.curly.scss' } /* '}' */,
  1340. { startIndex: 150, type: '' },
  1341. { startIndex: 153, type: 'delimiter.curly.scss' } /* '}' */,
  1342. { startIndex: 154, type: '' },
  1343. { startIndex: 157, type: 'keyword.scss' } /* '@return' */,
  1344. { startIndex: 164, type: '' },
  1345. { startIndex: 165, type: 'variable.ref.scss' } /* '$grid' */,
  1346. { startIndex: 170, type: 'delimiter.scss' } /* ';' */,
  1347. { startIndex: 171, type: '' },
  1348. { startIndex: 172, type: 'delimiter.curly.scss' } /* '}' */
  1349. ]}],
  1350. // @mixin simplewhitespaces
  1351. [{
  1352. line:
  1353. '@mixin large-text {\n' +
  1354. ' font: {\n' +
  1355. ' family: Arial;\n' +
  1356. ' size: 20px;\n' +
  1357. ' weight: bold;\n' +
  1358. ' }\n' +
  1359. ' color: #ff0000;\n' +
  1360. '}\n' +
  1361. '.page-title {\n' +
  1362. ' @include large-text;\n' +
  1363. ' padding: 4px;\n' +
  1364. '}',
  1365. tokens: [
  1366. { startIndex: 0, type: 'keyword.scss' } /* '@mixin' */,
  1367. { startIndex: 6, type: '' },
  1368. { startIndex: 7, type: 'meta.scss' } /* 'large-text' */,
  1369. { startIndex: 17, type: '' },
  1370. { startIndex: 18, type: 'delimiter.curly.scss' } /* '{' */,
  1371. { startIndex: 19, type: '' },
  1372. { startIndex: 22, type: 'attribute.name.scss' } /* 'font:' */,
  1373. { startIndex: 27, type: '' },
  1374. { startIndex: 28, type: 'delimiter.curly.scss' } /* '{' */,
  1375. { startIndex: 29, type: '' },
  1376. { startIndex: 34, type: 'attribute.name.scss' } /* 'family:' */,
  1377. { startIndex: 41, type: '' },
  1378. { startIndex: 42, type: 'attribute.value.scss' } /* 'Arial' */,
  1379. { startIndex: 47, type: 'delimiter.scss' } /* ';' */,
  1380. { startIndex: 48, type: '' },
  1381. { startIndex: 53, type: 'attribute.name.scss' } /* 'size:' */,
  1382. { startIndex: 58, type: '' },
  1383. { startIndex: 59, type: 'number.scss' } /* '20px' */,
  1384. { startIndex: 63, type: 'delimiter.scss' } /* ';' */,
  1385. { startIndex: 64, type: '' },
  1386. { startIndex: 69, type: 'attribute.name.scss' } /* 'weight:' */,
  1387. { startIndex: 76, type: '' },
  1388. { startIndex: 77, type: 'attribute.value.scss' } /* 'bold' */,
  1389. { startIndex: 81, type: 'delimiter.scss' } /* ';' */,
  1390. { startIndex: 82, type: '' },
  1391. { startIndex: 85, type: 'delimiter.curly.scss' } /* '}' */,
  1392. { startIndex: 86, type: '' },
  1393. { startIndex: 89, type: 'attribute.name.scss' } /* 'color:' */,
  1394. { startIndex: 95, type: '' },
  1395. { startIndex: 96, type: 'number.hex.scss' } /* '#ff0000' */,
  1396. { startIndex: 103, type: 'delimiter.scss' } /* ';' */,
  1397. { startIndex: 104, type: '' },
  1398. { startIndex: 105, type: 'delimiter.curly.scss' } /* '}' */,
  1399. { startIndex: 106, type: '' },
  1400. { startIndex: 107, type: 'tag.scss' } /* '.page-title' */,
  1401. { startIndex: 118, type: '' },
  1402. { startIndex: 119, type: 'delimiter.curly.scss' } /* '{' */,
  1403. { startIndex: 120, type: '' },
  1404. { startIndex: 123, type: 'keyword.scss' } /* '@include' */,
  1405. { startIndex: 131, type: '' },
  1406. { startIndex: 132, type: 'meta.scss' } /* 'large-text' */,
  1407. { startIndex: 142, type: 'delimiter.scss' } /* ';' */,
  1408. { startIndex: 143, type: '' },
  1409. { startIndex: 146, type: 'attribute.name.scss' } /* 'padding:' */,
  1410. { startIndex: 154, type: '' },
  1411. { startIndex: 155, type: 'number.scss' } /* '4px' */,
  1412. { startIndex: 158, type: 'delimiter.scss' } /* ';' */,
  1413. { startIndex: 159, type: '' },
  1414. { startIndex: 160, type: 'delimiter.curly.scss' } /* '}' */
  1415. ]}],
  1416. // @mixin with parameterswhitespaces
  1417. [{
  1418. line:
  1419. '@mixin sexy-border($color, $width: 1in) {\n' +
  1420. ' border: {\n' +
  1421. ' color: $color;\n' +
  1422. ' width: $width;\n' +
  1423. ' style: dashed;\n' +
  1424. ' }\n' +
  1425. '}\n' +
  1426. 'p { @include sexy-border(blue); }',
  1427. tokens: [
  1428. { startIndex: 0, type: 'keyword.scss' } /* '@mixin' */,
  1429. { startIndex: 6, type: '' },
  1430. { startIndex: 7, type: 'meta.scss' } /* 'sexy-border(' */,
  1431. { startIndex: 19, type: 'variable.ref.scss' } /* '$color' */,
  1432. { startIndex: 25, type: 'delimiter.scss' } /* ',' */,
  1433. { startIndex: 26, type: '' },
  1434. { startIndex: 27, type: 'variable.decl.scss' } /* '$width:' */,
  1435. { startIndex: 34, type: '' },
  1436. { startIndex: 35, type: 'number.scss' } /* '1in' */,
  1437. { startIndex: 38, type: 'meta.scss' } /* ')' */,
  1438. { startIndex: 39, type: '' },
  1439. { startIndex: 40, type: 'delimiter.curly.scss' } /* '{' */,
  1440. { startIndex: 41, type: '' },
  1441. { startIndex: 44, type: 'attribute.name.scss' } /* 'border:' */,
  1442. { startIndex: 51, type: '' },
  1443. { startIndex: 52, type: 'delimiter.curly.scss' } /* '{' */,
  1444. { startIndex: 53, type: '' },
  1445. { startIndex: 58, type: 'attribute.name.scss' } /* 'color:' */,
  1446. { startIndex: 64, type: '' },
  1447. { startIndex: 65, type: 'variable.ref.scss' } /* '$color' */,
  1448. { startIndex: 71, type: 'delimiter.scss' } /* ';' */,
  1449. { startIndex: 72, type: '' },
  1450. { startIndex: 77, type: 'attribute.name.scss' } /* 'width:' */,
  1451. { startIndex: 83, type: '' },
  1452. { startIndex: 84, type: 'variable.ref.scss' } /* '$width' */,
  1453. { startIndex: 90, type: 'delimiter.scss' } /* ';' */,
  1454. { startIndex: 91, type: '' },
  1455. { startIndex: 96, type: 'attribute.name.scss' } /* 'style:' */,
  1456. { startIndex: 102, type: '' },
  1457. { startIndex: 103, type: 'attribute.value.scss' } /* 'dashed' */,
  1458. { startIndex: 109, type: 'delimiter.scss' } /* ';' */,
  1459. { startIndex: 110, type: '' },
  1460. { startIndex: 113, type: 'delimiter.curly.scss' } /* '}' */,
  1461. { startIndex: 114, type: '' },
  1462. { startIndex: 115, type: 'delimiter.curly.scss' } /* '}' */,
  1463. { startIndex: 116, type: '' },
  1464. { startIndex: 117, type: 'tag.scss' } /* 'p' */,
  1465. { startIndex: 118, type: '' },
  1466. { startIndex: 119, type: 'delimiter.curly.scss' } /* '{' */,
  1467. { startIndex: 120, type: '' },
  1468. { startIndex: 121, type: 'keyword.scss' } /* '@include' */,
  1469. { startIndex: 129, type: '' },
  1470. { startIndex: 130, type: 'meta.scss' } /* 'sexy-border(' */,
  1471. { startIndex: 142, type: 'attribute.value.scss' } /* 'blue' */,
  1472. { startIndex: 146, type: 'meta.scss' } /* ')' */,
  1473. { startIndex: 147, type: 'delimiter.scss' } /* ';' */,
  1474. { startIndex: 148, type: '' },
  1475. { startIndex: 149, type: 'delimiter.curly.scss' } /* '}' */
  1476. ]}],
  1477. // @mixin with varargswhitespaces
  1478. [{
  1479. line:
  1480. '@mixin box-shadow($shadows...) {\n' +
  1481. ' -moz-box-shadow: $shadows;\n' +
  1482. ' -webkit-box-shadow: $shadows;\n' +
  1483. ' box-shadow: $shadows;\n' +
  1484. '}\n' +
  1485. '.shadows {\n' +
  1486. ' @include box-shadow(0px 4px 5px #666, 2px 6px 10px #999);\n' +
  1487. '}',
  1488. tokens: [
  1489. { startIndex: 0, type: 'keyword.scss' } /* '@mixin' */,
  1490. { startIndex: 6, type: '' },
  1491. { startIndex: 7, type: 'meta.scss' } /* 'box-shadow(' */,
  1492. { startIndex: 18, type: 'variable.ref.scss' } /* '$shadows' */,
  1493. { startIndex: 26, type: 'operator.scss' } /* '...' */,
  1494. { startIndex: 29, type: 'meta.scss' } /* ')' */,
  1495. { startIndex: 30, type: '' },
  1496. { startIndex: 31, type: 'delimiter.curly.scss' } /* '{' */,
  1497. { startIndex: 32, type: '' },
  1498. { startIndex: 35, type: 'attribute.name.scss' } /* '-moz-box-shadow:' */,
  1499. { startIndex: 51, type: '' },
  1500. { startIndex: 52, type: 'variable.ref.scss' } /* '$shadows' */,
  1501. { startIndex: 60, type: 'delimiter.scss' } /* ';' */,
  1502. { startIndex: 61, type: '' },
  1503. { startIndex: 64, type: 'attribute.name.scss' } /* '-webkit-box-shadow:' */,
  1504. { startIndex: 83, type: '' },
  1505. { startIndex: 84, type: 'variable.ref.scss' } /* '$shadows' */,
  1506. { startIndex: 92, type: 'delimiter.scss' } /* ';' */,
  1507. { startIndex: 93, type: '' },
  1508. { startIndex: 96, type: 'attribute.name.scss' } /* 'box-shadow:' */,
  1509. { startIndex: 107, type: '' },
  1510. { startIndex: 108, type: 'variable.ref.scss' } /* '$shadows' */,
  1511. { startIndex: 116, type: 'delimiter.scss' } /* ';' */,
  1512. { startIndex: 117, type: '' },
  1513. { startIndex: 118, type: 'delimiter.curly.scss' } /* '}' */,
  1514. { startIndex: 119, type: '' },
  1515. { startIndex: 120, type: 'tag.scss' } /* '.shadows' */,
  1516. { startIndex: 128, type: '' },
  1517. { startIndex: 129, type: 'delimiter.curly.scss' } /* '{' */,
  1518. { startIndex: 130, type: '' },
  1519. { startIndex: 133, type: 'keyword.scss' } /* '@include' */,
  1520. { startIndex: 141, type: '' },
  1521. { startIndex: 142, type: 'meta.scss' } /* 'box-shadow(' */,
  1522. { startIndex: 153, type: 'number.scss' } /* '0px' */,
  1523. { startIndex: 156, type: '' },
  1524. { startIndex: 157, type: 'number.scss' } /* '4px' */,
  1525. { startIndex: 160, type: '' },
  1526. { startIndex: 161, type: 'number.scss' } /* '5px' */,
  1527. { startIndex: 164, type: '' },
  1528. { startIndex: 165, type: 'number.hex.scss' } /* '#666' */,
  1529. { startIndex: 169, type: 'delimiter.scss' } /* ',' */,
  1530. { startIndex: 170, type: '' },
  1531. { startIndex: 171, type: 'number.scss' } /* '2px' */,
  1532. { startIndex: 174, type: '' },
  1533. { startIndex: 175, type: 'number.scss' } /* '6px' */,
  1534. { startIndex: 178, type: '' },
  1535. { startIndex: 179, type: 'number.scss' } /* '10px' */,
  1536. { startIndex: 183, type: '' },
  1537. { startIndex: 184, type: 'number.hex.scss' } /* '#999' */,
  1538. { startIndex: 188, type: 'meta.scss' } /* ')' */,
  1539. { startIndex: 189, type: 'delimiter.scss' } /* ';' */,
  1540. { startIndex: 190, type: '' },
  1541. { startIndex: 191, type: 'delimiter.curly.scss' } /* '}' */
  1542. ]}],
  1543. // @include with varargswhitespaces
  1544. [{
  1545. line:
  1546. '@mixin colors($text, $background, $border) {\n' +
  1547. ' color: $text;\n' +
  1548. ' background-color: $background;\n' +
  1549. ' border-color: $border;\n' +
  1550. '}\n' +
  1551. '$values: #ff0000, #00ff00, #0000ff;\n' +
  1552. '.primary {\n' +
  1553. ' @include colors($values...);\n' +
  1554. '}',
  1555. tokens: [
  1556. { startIndex: 0, type: 'keyword.scss' } /* '@mixin' */,
  1557. { startIndex: 6, type: '' },
  1558. { startIndex: 7, type: 'meta.scss' } /* 'colors(' */,
  1559. { startIndex: 14, type: 'variable.ref.scss' } /* '$text' */,
  1560. { startIndex: 19, type: 'delimiter.scss' } /* ',' */,
  1561. { startIndex: 20, type: '' },
  1562. { startIndex: 21, type: 'variable.ref.scss' } /* '$background' */,
  1563. { startIndex: 32, type: 'delimiter.scss' } /* ',' */,
  1564. { startIndex: 33, type: '' },
  1565. { startIndex: 34, type: 'variable.ref.scss' } /* '$border' */,
  1566. { startIndex: 41, type: 'meta.scss' } /* ')' */,
  1567. { startIndex: 42, type: '' },
  1568. { startIndex: 43, type: 'delimiter.curly.scss' } /* '{' */,
  1569. { startIndex: 44, type: '' },
  1570. { startIndex: 47, type: 'attribute.name.scss' } /* 'color:' */,
  1571. { startIndex: 53, type: '' },
  1572. { startIndex: 54, type: 'variable.ref.scss' } /* '$text' */,
  1573. { startIndex: 59, type: 'delimiter.scss' } /* ';' */,
  1574. { startIndex: 60, type: '' },
  1575. { startIndex: 63, type: 'attribute.name.scss' } /* 'background-color:' */,
  1576. { startIndex: 80, type: '' },
  1577. { startIndex: 81, type: 'variable.ref.scss' } /* '$background' */,
  1578. { startIndex: 92, type: 'delimiter.scss' } /* ';' */,
  1579. { startIndex: 93, type: '' },
  1580. { startIndex: 96, type: 'attribute.name.scss' } /* 'border-color:' */,
  1581. { startIndex: 109, type: '' },
  1582. { startIndex: 110, type: 'variable.ref.scss' } /* '$border' */,
  1583. { startIndex: 117, type: 'delimiter.scss' } /* ';' */,
  1584. { startIndex: 118, type: '' },
  1585. { startIndex: 119, type: 'delimiter.curly.scss' } /* '}' */,
  1586. { startIndex: 120, type: '' },
  1587. { startIndex: 121, type: 'variable.decl.scss' } /* '$values:' */,
  1588. { startIndex: 129, type: '' },
  1589. { startIndex: 130, type: 'number.hex.scss' } /* '#ff0000' */,
  1590. { startIndex: 137, type: 'operator.scss' } /* ',' */,
  1591. { startIndex: 138, type: '' },
  1592. { startIndex: 139, type: 'number.hex.scss' } /* '#00ff00' */,
  1593. { startIndex: 146, type: 'operator.scss' } /* ',' */,
  1594. { startIndex: 147, type: '' },
  1595. { startIndex: 148, type: 'number.hex.scss' } /* '#0000ff' */,
  1596. { startIndex: 155, type: 'delimiter.scss' } /* ';' */,
  1597. { startIndex: 156, type: '' },
  1598. { startIndex: 157, type: 'tag.scss' } /* '.primary' */,
  1599. { startIndex: 165, type: '' },
  1600. { startIndex: 166, type: 'delimiter.curly.scss' } /* '{' */,
  1601. { startIndex: 167, type: '' },
  1602. { startIndex: 170, type: 'keyword.scss' } /* '@include' */,
  1603. { startIndex: 178, type: '' },
  1604. { startIndex: 179, type: 'meta.scss' } /* 'colors(' */,
  1605. { startIndex: 186, type: 'variable.ref.scss' } /* '$values' */,
  1606. { startIndex: 193, type: 'operator.scss' } /* '...' */,
  1607. { startIndex: 196, type: 'meta.scss' } /* ')' */,
  1608. { startIndex: 197, type: 'delimiter.scss' } /* ';' */,
  1609. { startIndex: 198, type: '' },
  1610. { startIndex: 199, type: 'delimiter.curly.scss' } /* '}' */
  1611. ]}],
  1612. // @include with bodywhitespaces
  1613. [{
  1614. line:
  1615. '@mixin apply-to-ie6-only {\n' +
  1616. ' * html {\n' +
  1617. ' @content;\n' +
  1618. ' }\n' +
  1619. '}\n' +
  1620. '@include apply-to-ie6-only {\n' +
  1621. ' #logo {\n' +
  1622. ' background-image: url(/logo.gif);\n' +
  1623. ' }\n' +
  1624. '}',
  1625. tokens: [
  1626. { startIndex: 0, type: 'keyword.scss' } /* '@mixin' */,
  1627. { startIndex: 6, type: '' },
  1628. { startIndex: 7, type: 'meta.scss' } /* 'apply-to-ie6-only' */,
  1629. { startIndex: 24, type: '' },
  1630. { startIndex: 25, type: 'delimiter.curly.scss' } /* '{' */,
  1631. { startIndex: 26, type: '' },
  1632. { startIndex: 29, type: 'tag.scss' } /* '*' */,
  1633. { startIndex: 30, type: '' },
  1634. { startIndex: 31, type: 'tag.scss' } /* 'html' */,
  1635. { startIndex: 35, type: '' },
  1636. { startIndex: 36, type: 'delimiter.curly.scss' } /* '{' */,
  1637. { startIndex: 37, type: '' },
  1638. { startIndex: 42, type: 'keyword.scss' } /* '@content' */,
  1639. { startIndex: 50, type: '' },
  1640. { startIndex: 54, type: 'delimiter.curly.scss' } /* '}' */,
  1641. { startIndex: 55, type: '' },
  1642. { startIndex: 56, type: 'delimiter.curly.scss' } /* '}' */,
  1643. { startIndex: 57, type: '' },
  1644. { startIndex: 58, type: 'keyword.scss' } /* '@include' */,
  1645. { startIndex: 66, type: '' },
  1646. { startIndex: 67, type: 'meta.scss' } /* 'apply-to-ie6-only' */,
  1647. { startIndex: 84, type: '' },
  1648. { startIndex: 85, type: 'delimiter.curly.scss' } /* '{' */,
  1649. { startIndex: 86, type: '' },
  1650. { startIndex: 89, type: 'tag.scss' } /* '#logo' */,
  1651. { startIndex: 94, type: '' },
  1652. { startIndex: 95, type: 'delimiter.curly.scss' } /* '{' */,
  1653. { startIndex: 96, type: '' },
  1654. { startIndex: 101, type: 'attribute.name.scss' } /* 'background-image:' */,
  1655. { startIndex: 118, type: '' },
  1656. { startIndex: 119, type: 'meta.scss' } /* 'url(' */,
  1657. { startIndex: 123, type: 'string.scss' } /* '/logo.gif' */,
  1658. { startIndex: 132, type: 'meta.scss' } /* ')' */,
  1659. { startIndex: 133, type: 'delimiter.scss' } /* ';' */,
  1660. { startIndex: 134, type: '' },
  1661. { startIndex: 137, type: 'delimiter.curly.scss' } /* '}' */,
  1662. { startIndex: 138, type: '' },
  1663. { startIndex: 139, type: 'delimiter.curly.scss' } /* '}' */
  1664. ]}],
  1665. // CSS charsetwhitespaces
  1666. [{
  1667. line:
  1668. '@charset "UTF-8";',
  1669. tokens: [
  1670. { startIndex: 0, type: 'keyword.scss' } /* '@charset' */,
  1671. { startIndex: 8, type: '' },
  1672. { startIndex: 9, type: 'string.delimiter.scss' } /* '"' */,
  1673. { startIndex: 10, type: 'string.scss' } /* 'UTF-8' */,
  1674. { startIndex: 15, type: 'string.delimiter.scss' } /* '"' */,
  1675. { startIndex: 16, type: 'delimiter.scss' } /* ';' */
  1676. ]}],
  1677. // CSS attributeswhitespaces
  1678. [{
  1679. line:
  1680. '[rel="external"]::after {\n' +
  1681. ' content: \'s\';\n' +
  1682. '}',
  1683. tokens: [
  1684. { startIndex: 0, type: 'delimiter.bracket.scss' } /* '[' */,
  1685. { startIndex: 1, type: 'attribute.value.scss' } /* 'rel' */,
  1686. { startIndex: 4, type: 'operator.scss' } /* '=' */,
  1687. { startIndex: 5, type: 'string.delimiter.scss' } /* '"' */,
  1688. { startIndex: 6, type: 'string.scss' } /* 'external' */,
  1689. { startIndex: 14, type: 'string.delimiter.scss' } /* '"' */,
  1690. { startIndex: 15, type: 'delimiter.bracket.scss' } /* ']' */,
  1691. { startIndex: 16, type: 'tag.scss' } /* '::after' */,
  1692. { startIndex: 23, type: '' },
  1693. { startIndex: 24, type: 'delimiter.curly.scss' } /* '{' */,
  1694. { startIndex: 25, type: '' },
  1695. { startIndex: 30, type: 'attribute.name.scss' } /* 'content:' */,
  1696. { startIndex: 38, type: '' },
  1697. { startIndex: 39, type: 'string.delimiter.scss' } /* ''' */,
  1698. { startIndex: 40, type: 'string.scss' } /* 's' */,
  1699. { startIndex: 41, type: 'string.delimiter.scss' } /* ''' */,
  1700. { startIndex: 42, type: 'delimiter.scss' } /* ';' */,
  1701. { startIndex: 43, type: '' },
  1702. { startIndex: 44, type: 'delimiter.curly.scss' } /* '}' */
  1703. ]}],
  1704. // CSS @pagewhitespaces
  1705. [{
  1706. line:
  1707. '@page :left {\n' +
  1708. ' margin-left: 4cm;\n' +
  1709. ' margin-right: 3cm;\n' +
  1710. '}',
  1711. tokens: [
  1712. { startIndex: 0, type: 'keyword.scss' } /* '@page' */,
  1713. { startIndex: 5, type: '' },
  1714. { startIndex: 6, type: 'tag.scss' } /* ':left' */,
  1715. { startIndex: 11, type: '' },
  1716. { startIndex: 12, type: 'delimiter.curly.scss' } /* '{' */,
  1717. { startIndex: 13, type: '' },
  1718. { startIndex: 16, type: 'attribute.name.scss' } /* 'margin-left:' */,
  1719. { startIndex: 28, type: '' },
  1720. { startIndex: 29, type: 'number.scss' } /* '4cm' */,
  1721. { startIndex: 32, type: 'delimiter.scss' } /* ';' */,
  1722. { startIndex: 33, type: '' },
  1723. { startIndex: 36, type: 'attribute.name.scss' } /* 'margin-right:' */,
  1724. { startIndex: 49, type: '' },
  1725. { startIndex: 50, type: 'number.scss' } /* '3cm' */,
  1726. { startIndex: 53, type: 'delimiter.scss' } /* ';' */,
  1727. { startIndex: 54, type: '' },
  1728. { startIndex: 55, type: 'delimiter.curly.scss' } /* '}' */
  1729. ]}],
  1730. // Extend with interpolation variablewhitespaces
  1731. [{
  1732. line:
  1733. '@mixin error($a: false) {\n' +
  1734. ' @extend .#{$a};\n' +
  1735. ' @extend ##{$a};\n' +
  1736. '}\n' +
  1737. '#bar {a: 1px;}\n' +
  1738. '.bar {b: 1px;}\n' +
  1739. 'foo {\n' +
  1740. ' @include error(\'bar\'); \n' +
  1741. '}',
  1742. tokens: [
  1743. { startIndex: 0, type: 'keyword.scss' } /* '@mixin' */,
  1744. { startIndex: 6, type: '' },
  1745. { startIndex: 7, type: 'meta.scss' } /* 'error(' */,
  1746. { startIndex: 13, type: 'variable.decl.scss' } /* '$a:' */,
  1747. { startIndex: 16, type: '' },
  1748. { startIndex: 17, type: 'attribute.value.scss' } /* 'false' */,
  1749. { startIndex: 22, type: 'meta.scss' } /* ')' */,
  1750. { startIndex: 23, type: '' },
  1751. { startIndex: 24, type: 'delimiter.curly.scss' } /* '{' */,
  1752. { startIndex: 25, type: '' },
  1753. { startIndex: 28, type: 'keyword.scss' } /* '@extend' */,
  1754. { startIndex: 35, type: '' },
  1755. { startIndex: 36, type: 'tag.scss' } /* '.' */,
  1756. { startIndex: 37, type: 'meta.scss' } /* '#{' */,
  1757. { startIndex: 39, type: 'variable.ref.scss' } /* '$a' */,
  1758. { startIndex: 41, type: 'meta.scss' } /* '}' */,
  1759. { startIndex: 42, type: 'delimiter.scss' } /* ';' */,
  1760. { startIndex: 43, type: '' },
  1761. { startIndex: 46, type: 'keyword.scss' } /* '@extend' */,
  1762. { startIndex: 53, type: '' },
  1763. { startIndex: 54, type: 'tag.scss' } /* '#' */,
  1764. { startIndex: 55, type: 'meta.scss' } /* '#{' */,
  1765. { startIndex: 57, type: 'variable.ref.scss' } /* '$a' */,
  1766. { startIndex: 59, type: 'meta.scss' } /* '}' */,
  1767. { startIndex: 60, type: 'delimiter.scss' } /* ';' */,
  1768. { startIndex: 61, type: '' },
  1769. { startIndex: 62, type: 'delimiter.curly.scss' } /* '}' */,
  1770. { startIndex: 63, type: '' },
  1771. { startIndex: 64, type: 'tag.scss' } /* '#bar' */,
  1772. { startIndex: 68, type: '' },
  1773. { startIndex: 69, type: 'delimiter.curly.scss' } /* '{' */,
  1774. { startIndex: 70, type: 'attribute.name.scss' } /* 'a:' */,
  1775. { startIndex: 72, type: '' },
  1776. { startIndex: 73, type: 'number.scss' } /* '1px' */,
  1777. { startIndex: 76, type: 'delimiter.scss' } /* ';' */,
  1778. { startIndex: 77, type: 'delimiter.curly.scss' } /* '}' */,
  1779. { startIndex: 78, type: '' },
  1780. { startIndex: 79, type: 'tag.scss' } /* '.bar' */,
  1781. { startIndex: 83, type: '' },
  1782. { startIndex: 84, type: 'delimiter.curly.scss' } /* '{' */,
  1783. { startIndex: 85, type: 'attribute.name.scss' } /* 'b:' */,
  1784. { startIndex: 87, type: '' },
  1785. { startIndex: 88, type: 'number.scss' } /* '1px' */,
  1786. { startIndex: 91, type: 'delimiter.scss' } /* ';' */,
  1787. { startIndex: 92, type: 'delimiter.curly.scss' } /* '}' */,
  1788. { startIndex: 93, type: '' },
  1789. { startIndex: 94, type: 'tag.scss' } /* 'foo' */,
  1790. { startIndex: 97, type: '' },
  1791. { startIndex: 98, type: 'delimiter.curly.scss' } /* '{' */,
  1792. { startIndex: 99, type: '' },
  1793. { startIndex: 102, type: 'keyword.scss' } /* '@include' */,
  1794. { startIndex: 110, type: '' },
  1795. { startIndex: 111, type: 'meta.scss' } /* 'error(' */,
  1796. { startIndex: 117, type: 'string.delimiter.scss' } /* ''' */,
  1797. { startIndex: 118, type: 'string.scss' } /* 'bar' */,
  1798. { startIndex: 121, type: 'string.delimiter.scss' } /* ''' */,
  1799. { startIndex: 122, type: 'meta.scss' } /* ')' */,
  1800. { startIndex: 123, type: 'delimiter.scss' } /* ';' */,
  1801. { startIndex: 124, type: '' },
  1802. { startIndex: 128, type: 'delimiter.curly.scss' } /* '}' */
  1803. ]}],
  1804. // @font-facewhitespaces
  1805. [{
  1806. line:
  1807. '@font-face { font-family: Delicious; src: url(\'Delicious-Roman.otf\'); } ',
  1808. tokens: [
  1809. { startIndex: 0, type: 'keyword.scss' } /* '@font-face' */,
  1810. { startIndex: 10, type: '' },
  1811. { startIndex: 11, type: 'delimiter.curly.scss' } /* '{' */,
  1812. { startIndex: 12, type: '' },
  1813. { startIndex: 13, type: 'attribute.name.scss' } /* 'font-family:' */,
  1814. { startIndex: 25, type: '' },
  1815. { startIndex: 26, type: 'attribute.value.scss' } /* 'Delicious' */,
  1816. { startIndex: 35, type: 'delimiter.scss' } /* ';' */,
  1817. { startIndex: 36, type: '' },
  1818. { startIndex: 37, type: 'attribute.name.scss' } /* 'src:' */,
  1819. { startIndex: 41, type: '' },
  1820. { startIndex: 42, type: 'meta.scss' } /* 'url(' */,
  1821. { startIndex: 46, type: 'string.delimiter.scss' } /* ''' */,
  1822. { startIndex: 47, type: 'string.scss' } /* 'Delicious-Roman.otf' */,
  1823. { startIndex: 66, type: 'string.delimiter.scss' } /* ''' */,
  1824. { startIndex: 67, type: 'meta.scss' } /* ')' */,
  1825. { startIndex: 68, type: 'delimiter.scss' } /* ';' */,
  1826. { startIndex: 69, type: '' },
  1827. { startIndex: 70, type: 'delimiter.curly.scss' } /* '}' */,
  1828. { startIndex: 71, type: '' }
  1829. ]}],
  1830. // Keyframeswhitespaces
  1831. [{
  1832. line:
  1833. '@-webkit-keyframes NAME-YOUR-ANIMATION {\n' +
  1834. ' 0% { opacity: 0; }\n' +
  1835. ' 100% { opacity: 1; }\n' +
  1836. '}\n' +
  1837. '@-moz-keyframes NAME-YOUR-ANIMATION {\n' +
  1838. ' 0% { opacity: 0; }\n' +
  1839. ' 100% { opacity: 1; }\n' +
  1840. '}\n' +
  1841. '@-o-keyframes NAME-YOUR-ANIMATION {\n' +
  1842. ' 0% { opacity: 0; }\n' +
  1843. ' 100% { opacity: 1; }\n' +
  1844. '}\n' +
  1845. '@keyframes NAME-YOUR-ANIMATION {\n' +
  1846. ' 0% { opacity: 0; }\n' +
  1847. ' 100% { opacity: 1; }\n' +
  1848. '}',
  1849. tokens: [
  1850. { startIndex: 0, type: 'keyword.scss' } /* '@-webkit-keyframes' */,
  1851. { startIndex: 18, type: '' },
  1852. { startIndex: 19, type: 'meta.scss' } /* 'NAME-YOUR-ANIMATION' */,
  1853. { startIndex: 38, type: '' },
  1854. { startIndex: 39, type: 'delimiter.curly.scss' } /* '{' */,
  1855. { startIndex: 40, type: '' },
  1856. { startIndex: 43, type: 'number.scss' } /* '0%' */,
  1857. { startIndex: 45, type: '' },
  1858. { startIndex: 48, type: 'delimiter.curly.scss' } /* '{' */,
  1859. { startIndex: 49, type: '' },
  1860. { startIndex: 50, type: 'attribute.name.scss' } /* 'opacity:' */,
  1861. { startIndex: 58, type: '' },
  1862. { startIndex: 59, type: 'number.scss' } /* '0' */,
  1863. { startIndex: 60, type: 'delimiter.scss' } /* ';' */,
  1864. { startIndex: 61, type: '' },
  1865. { startIndex: 62, type: 'delimiter.curly.scss' } /* '}' */,
  1866. { startIndex: 63, type: '' },
  1867. { startIndex: 66, type: 'number.scss' } /* '100%' */,
  1868. { startIndex: 70, type: '' },
  1869. { startIndex: 71, type: 'delimiter.curly.scss' } /* '{' */,
  1870. { startIndex: 72, type: '' },
  1871. { startIndex: 73, type: 'attribute.name.scss' } /* 'opacity:' */,
  1872. { startIndex: 81, type: '' },
  1873. { startIndex: 82, type: 'number.scss' } /* '1' */,
  1874. { startIndex: 83, type: 'delimiter.scss' } /* ';' */,
  1875. { startIndex: 84, type: '' },
  1876. { startIndex: 85, type: 'delimiter.curly.scss' } /* '}' */,
  1877. { startIndex: 86, type: '' },
  1878. { startIndex: 87, type: 'delimiter.curly.scss' } /* '}' */,
  1879. { startIndex: 88, type: '' },
  1880. { startIndex: 89, type: 'keyword.scss' } /* '@-moz-keyframes' */,
  1881. { startIndex: 104, type: '' },
  1882. { startIndex: 105, type: 'meta.scss' } /* 'NAME-YOUR-ANIMATION' */,
  1883. { startIndex: 124, type: '' },
  1884. { startIndex: 125, type: 'delimiter.curly.scss' } /* '{' */,
  1885. { startIndex: 126, type: '' },
  1886. { startIndex: 129, type: 'number.scss' } /* '0%' */,
  1887. { startIndex: 131, type: '' },
  1888. { startIndex: 134, type: 'delimiter.curly.scss' } /* '{' */,
  1889. { startIndex: 135, type: '' },
  1890. { startIndex: 136, type: 'attribute.name.scss' } /* 'opacity:' */,
  1891. { startIndex: 144, type: '' },
  1892. { startIndex: 145, type: 'number.scss' } /* '0' */,
  1893. { startIndex: 146, type: 'delimiter.scss' } /* ';' */,
  1894. { startIndex: 147, type: '' },
  1895. { startIndex: 148, type: 'delimiter.curly.scss' } /* '}' */,
  1896. { startIndex: 149, type: '' },
  1897. { startIndex: 152, type: 'number.scss' } /* '100%' */,
  1898. { startIndex: 156, type: '' },
  1899. { startIndex: 157, type: 'delimiter.curly.scss' } /* '{' */,
  1900. { startIndex: 158, type: '' },
  1901. { startIndex: 159, type: 'attribute.name.scss' } /* 'opacity:' */,
  1902. { startIndex: 167, type: '' },
  1903. { startIndex: 168, type: 'number.scss' } /* '1' */,
  1904. { startIndex: 169, type: 'delimiter.scss' } /* ';' */,
  1905. { startIndex: 170, type: '' },
  1906. { startIndex: 171, type: 'delimiter.curly.scss' } /* '}' */,
  1907. { startIndex: 172, type: '' },
  1908. { startIndex: 173, type: 'delimiter.curly.scss' } /* '}' */,
  1909. { startIndex: 174, type: '' },
  1910. { startIndex: 175, type: 'keyword.scss' } /* '@-o-keyframes' */,
  1911. { startIndex: 188, type: '' },
  1912. { startIndex: 189, type: 'meta.scss' } /* 'NAME-YOUR-ANIMATION' */,
  1913. { startIndex: 208, type: '' },
  1914. { startIndex: 209, type: 'delimiter.curly.scss' } /* '{' */,
  1915. { startIndex: 210, type: '' },
  1916. { startIndex: 213, type: 'number.scss' } /* '0%' */,
  1917. { startIndex: 215, type: '' },
  1918. { startIndex: 218, type: 'delimiter.curly.scss' } /* '{' */,
  1919. { startIndex: 219, type: '' },
  1920. { startIndex: 220, type: 'attribute.name.scss' } /* 'opacity:' */,
  1921. { startIndex: 228, type: '' },
  1922. { startIndex: 229, type: 'number.scss' } /* '0' */,
  1923. { startIndex: 230, type: 'delimiter.scss' } /* ';' */,
  1924. { startIndex: 231, type: '' },
  1925. { startIndex: 232, type: 'delimiter.curly.scss' } /* '}' */,
  1926. { startIndex: 233, type: '' },
  1927. { startIndex: 236, type: 'number.scss' } /* '100%' */,
  1928. { startIndex: 240, type: '' },
  1929. { startIndex: 241, type: 'delimiter.curly.scss' } /* '{' */,
  1930. { startIndex: 242, type: '' },
  1931. { startIndex: 243, type: 'attribute.name.scss' } /* 'opacity:' */,
  1932. { startIndex: 251, type: '' },
  1933. { startIndex: 252, type: 'number.scss' } /* '1' */,
  1934. { startIndex: 253, type: 'delimiter.scss' } /* ';' */,
  1935. { startIndex: 254, type: '' },
  1936. { startIndex: 255, type: 'delimiter.curly.scss' } /* '}' */,
  1937. { startIndex: 256, type: '' },
  1938. { startIndex: 257, type: 'delimiter.curly.scss' } /* '}' */,
  1939. { startIndex: 258, type: '' },
  1940. { startIndex: 259, type: 'keyword.scss' } /* '@keyframes' */,
  1941. { startIndex: 269, type: '' },
  1942. { startIndex: 270, type: 'meta.scss' } /* 'NAME-YOUR-ANIMATION' */,
  1943. { startIndex: 289, type: '' },
  1944. { startIndex: 290, type: 'delimiter.curly.scss' } /* '{' */,
  1945. { startIndex: 291, type: '' },
  1946. { startIndex: 294, type: 'number.scss' } /* '0%' */,
  1947. { startIndex: 296, type: '' },
  1948. { startIndex: 299, type: 'delimiter.curly.scss' } /* '{' */,
  1949. { startIndex: 300, type: '' },
  1950. { startIndex: 301, type: 'attribute.name.scss' } /* 'opacity:' */,
  1951. { startIndex: 309, type: '' },
  1952. { startIndex: 310, type: 'number.scss' } /* '0' */,
  1953. { startIndex: 311, type: 'delimiter.scss' } /* ';' */,
  1954. { startIndex: 312, type: '' },
  1955. { startIndex: 313, type: 'delimiter.curly.scss' } /* '}' */,
  1956. { startIndex: 314, type: '' },
  1957. { startIndex: 317, type: 'number.scss' } /* '100%' */,
  1958. { startIndex: 321, type: '' },
  1959. { startIndex: 322, type: 'delimiter.curly.scss' } /* '{' */,
  1960. { startIndex: 323, type: '' },
  1961. { startIndex: 324, type: 'attribute.name.scss' } /* 'opacity:' */,
  1962. { startIndex: 332, type: '' },
  1963. { startIndex: 333, type: 'number.scss' } /* '1' */,
  1964. { startIndex: 334, type: 'delimiter.scss' } /* ';' */,
  1965. { startIndex: 335, type: '' },
  1966. { startIndex: 336, type: 'delimiter.curly.scss' } /* '}' */,
  1967. { startIndex: 337, type: '' },
  1968. { startIndex: 338, type: 'delimiter.curly.scss' } /* '}' */
  1969. ]}],
  1970. // String escapingwhitespaces
  1971. [{
  1972. line:
  1973. '[data-icon=\'test-1\']:before {\n' +
  1974. ' content:\'\\\\\';\n' +
  1975. '}\n' +
  1976. '/* a comment */\n' +
  1977. '$var1: \'\\\'\';\n' +
  1978. '$var2: "\\"";\n' +
  1979. '/* another comment */',
  1980. tokens: [
  1981. { startIndex: 0, type: 'delimiter.bracket.scss' } /* '[' */,
  1982. { startIndex: 1, type: 'attribute.value.scss' } /* 'data-icon' */,
  1983. { startIndex: 10, type: 'operator.scss' } /* '=' */,
  1984. { startIndex: 11, type: 'string.delimiter.scss' } /* ''' */,
  1985. { startIndex: 12, type: 'string.scss' } /* 'test-1' */,
  1986. { startIndex: 18, type: 'string.delimiter.scss' } /* ''' */,
  1987. { startIndex: 19, type: 'delimiter.bracket.scss' } /* ']' */,
  1988. { startIndex: 20, type: 'tag.scss' } /* ':before' */,
  1989. { startIndex: 27, type: '' },
  1990. { startIndex: 28, type: 'delimiter.curly.scss' } /* '{' */,
  1991. { startIndex: 29, type: '' },
  1992. { startIndex: 32, type: 'attribute.name.scss' } /* 'content:' */,
  1993. { startIndex: 40, type: 'string.delimiter.scss' } /* ''' */,
  1994. { startIndex: 41, type: 'string.scss' } /* '\\' */,
  1995. { startIndex: 43, type: 'string.delimiter.scss' } /* ''' */,
  1996. { startIndex: 44, type: 'delimiter.scss' } /* ';' */,
  1997. { startIndex: 45, type: '' },
  1998. { startIndex: 46, type: 'delimiter.curly.scss' } /* '}' */,
  1999. { startIndex: 47, type: '' },
  2000. { startIndex: 48, type: 'comment.scss' } /* '/* a comment * /' */,
  2001. { startIndex: 63, type: '' },
  2002. { startIndex: 64, type: 'variable.decl.scss' } /* '$var1:' */,
  2003. { startIndex: 70, type: '' },
  2004. { startIndex: 71, type: 'string.delimiter.scss' } /* ''' */,
  2005. { startIndex: 72, type: 'string.scss' } /* '\'' */,
  2006. { startIndex: 74, type: 'string.delimiter.scss' } /* ''' */,
  2007. { startIndex: 75, type: 'delimiter.scss' } /* ';' */,
  2008. { startIndex: 76, type: '' },
  2009. { startIndex: 77, type: 'variable.decl.scss' } /* '$var2:' */,
  2010. { startIndex: 83, type: '' },
  2011. { startIndex: 84, type: 'string.delimiter.scss' } /* '"' */,
  2012. { startIndex: 85, type: 'string.scss' } /* '\"' */,
  2013. { startIndex: 87, type: 'string.delimiter.scss' } /* '"' */,
  2014. { startIndex: 88, type: 'delimiter.scss' } /* ';' */,
  2015. { startIndex: 89, type: '' },
  2016. { startIndex: 90, type: 'comment.scss' } /* '/* another comment * /' */
  2017. ]}],
  2018. ]);