annotate .cms/lib/codemirror/mode/gherkin/gherkin.js @ 1:1d486627aa1e draft default tip

24.10
author Coffee CMS <info@coffee-cms.ru>
date Sat, 12 Oct 2024 02:51:39 +0000
parents 78edf6b517a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1 // CodeMirror, copyright (c) by Marijn Haverbeke and others
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
2 // Distributed under an MIT license: https://codemirror.net/5/LICENSE
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
3
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
4 /*
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
5 Gherkin mode - http://www.cukes.info/
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
6 Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
7 */
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
8
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
9 // Following Objs from Brackets implementation: https://github.com/tregusti/brackets-gherkin/blob/master/main.js
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
10 //var Quotes = {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
11 // SINGLE: 1,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
12 // DOUBLE: 2
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
13 //};
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
14
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
15 //var regex = {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
16 // keywords: /(Feature| {2}(Scenario|In order to|As|I)| {4}(Given|When|Then|And))/
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
17 //};
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
18
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
19 (function(mod) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
20 if (typeof exports == "object" && typeof module == "object") // CommonJS
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
21 mod(require("../../lib/codemirror"));
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
22 else if (typeof define == "function" && define.amd) // AMD
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
23 define(["../../lib/codemirror"], mod);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
24 else // Plain browser env
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
25 mod(CodeMirror);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
26 })(function(CodeMirror) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
27 "use strict";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
28
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
29 CodeMirror.defineMode("gherkin", function () {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
30 return {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
31 startState: function () {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
32 return {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
33 lineNumber: 0,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
34 tableHeaderLine: false,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
35 allowFeature: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
36 allowBackground: false,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
37 allowScenario: false,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
38 allowSteps: false,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
39 allowPlaceholders: false,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
40 allowMultilineArgument: false,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
41 inMultilineString: false,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
42 inMultilineTable: false,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
43 inKeywordLine: false
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
44 };
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
45 },
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
46 token: function (stream, state) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
47 if (stream.sol()) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
48 state.lineNumber++;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
49 state.inKeywordLine = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
50 if (state.inMultilineTable) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
51 state.tableHeaderLine = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
52 if (!stream.match(/\s*\|/, false)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
53 state.allowMultilineArgument = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
54 state.inMultilineTable = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
55 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
56 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
57 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
58
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
59 stream.eatSpace();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
60
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
61 if (state.allowMultilineArgument) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
62
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
63 // STRING
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
64 if (state.inMultilineString) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
65 if (stream.match('"""')) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
66 state.inMultilineString = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
67 state.allowMultilineArgument = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
68 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
69 stream.match(/.*/);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
70 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
71 return "string";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
72 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
73
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
74 // TABLE
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
75 if (state.inMultilineTable) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
76 if (stream.match(/\|\s*/)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
77 return "bracket";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
78 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
79 stream.match(/[^\|]*/);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
80 return state.tableHeaderLine ? "header" : "string";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
81 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
82 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
83
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
84 // DETECT START
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
85 if (stream.match('"""')) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
86 // String
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
87 state.inMultilineString = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
88 return "string";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
89 } else if (stream.match("|")) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
90 // Table
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
91 state.inMultilineTable = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
92 state.tableHeaderLine = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
93 return "bracket";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
94 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
95
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
96 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
97
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
98 // LINE COMMENT
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
99 if (stream.match(/#.*/)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
100 return "comment";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
101
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
102 // TAG
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
103 } else if (!state.inKeywordLine && stream.match(/@\S+/)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
104 return "tag";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
105
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
106 // FEATURE
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
107 } else if (!state.inKeywordLine && state.allowFeature && stream.match(/(機能|功能|フィーチャ|기능|โครงหลัก|ความสามารถ|ความต้องการทางธุรกิจ|ಹೆಚ್ಚಳ|గుణము|ਮੁਹਾਂਦਰਾ|ਨਕਸ਼ ਨੁਹਾਰ|ਖਾਸੀਅਤ|रूप लेख|وِیژگی|خاصية|תכונה|Функціонал|Функция|Функционалност|Функционал|Үзенчәлеклелек|Свойство|Особина|Мөмкинлек|Могућност|Λειτουργία|Δυνατότητα|Właściwość|Vlastnosť|Trajto|Tính năng|Savybė|Pretty much|Požiadavka|Požadavek|Potrzeba biznesowa|Özellik|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Hwæt|Hwaet|Funzionalità|Funktionalitéit|Funktionalität|Funkcja|Funkcionalnost|Funkcionalitāte|Funkcia|Fungsi|Functionaliteit|Funcționalitate|Funcţionalitate|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Fīča|Feature|Eiginleiki|Egenskap|Egenskab|Característica|Caracteristica|Business Need|Aspekt|Arwedd|Ahoy matey!|Ability):/)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
108 state.allowScenario = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
109 state.allowBackground = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
110 state.allowPlaceholders = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
111 state.allowSteps = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
112 state.allowMultilineArgument = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
113 state.inKeywordLine = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
114 return "keyword";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
115
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
116 // BACKGROUND
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
117 } else if (!state.inKeywordLine && state.allowBackground && stream.match(/(背景|배경|แนวคิด|ಹಿನ್ನೆಲೆ|నేపథ్యం|ਪਿਛੋਕੜ|पृष्ठभूमि|زمینه|الخلفية|רקע|Тарих|Предыстория|Предистория|Позадина|Передумова|Основа|Контекст|Кереш|Υπόβαθρο|Założenia|Yo\-ho\-ho|Tausta|Taust|Situācija|Rerefons|Pozadina|Pozadie|Pozadí|Osnova|Latar Belakang|Kontext|Konteksts|Kontekstas|Kontekst|Háttér|Hannergrond|Grundlage|Geçmiş|Fundo|Fono|First off|Dis is what went down|Dasar|Contexto|Contexte|Context|Contesto|Cenário de Fundo|Cenario de Fundo|Cefndir|Bối cảnh|Bakgrunnur|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|Ær|Aer|Achtergrond):/)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
118 state.allowPlaceholders = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
119 state.allowSteps = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
120 state.allowBackground = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
121 state.allowMultilineArgument = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
122 state.inKeywordLine = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
123 return "keyword";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
124
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
125 // SCENARIO OUTLINE
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
126 } else if (!state.inKeywordLine && state.allowScenario && stream.match(/(場景大綱|场景大纲|劇本大綱|剧本大纲|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|시나리오 개요|สรุปเหตุการณ์|โครงสร้างของเหตุการณ์|ವಿವರಣೆ|కథనం|ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ|ਪਟਕਥਾ ਢਾਂਚਾ|परिदृश्य रूपरेखा|سيناريو مخطط|الگوی سناریو|תבנית תרחיש|Сценарийның төзелеше|Сценарий структураси|Структура сценарію|Структура сценария|Структура сценарија|Скица|Рамка на сценарий|Концепт|Περιγραφή Σεναρίου|Wharrimean is|Template Situai|Template Senario|Template Keadaan|Tapausaihio|Szenariogrundriss|Szablon scenariusza|Swa hwær swa|Swa hwaer swa|Struktura scenarija|Structură scenariu|Structura scenariu|Skica|Skenario konsep|Shiver me timbers|Senaryo taslağı|Schema dello scenario|Scenariomall|Scenariomal|Scenario Template|Scenario Outline|Scenario Amlinellol|Scenārijs pēc parauga|Scenarijaus šablonas|Reckon it's like|Raamstsenaarium|Plang vum Szenario|Plan du Scénario|Plan du scénario|Osnova scénáře|Osnova Scenára|Náčrt Scenáru|Náčrt Scénáře|Náčrt Scenára|MISHUN SRSLY|Menggariskan Senario|Lýsing Dæma|Lýsing Atburðarásar|Konturo de la scenaro|Koncept|Khung tình huống|Khung kịch bản|Forgatókönyv vázlat|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l'escenari|Esbozo do escenario|Delineação do Cenário|Delineacao do Cenario|All y'all|Abstrakt Scenario|Abstract Scenario):/)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
127 state.allowPlaceholders = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
128 state.allowSteps = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
129 state.allowMultilineArgument = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
130 state.inKeywordLine = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
131 return "keyword";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
132
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
133 // EXAMPLES
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
134 } else if (state.allowScenario && stream.match(/(例子|例|サンプル|예|ชุดของเหตุการณ์|ชุดของตัวอย่าง|ಉದಾಹರಣೆಗಳು|ఉదాహరణలు|ਉਦਾਹਰਨਾਂ|उदाहरण|نمونه ها|امثلة|דוגמאות|Үрнәкләр|Сценарији|Примеры|Примери|Приклади|Мисоллар|Мисаллар|Σενάρια|Παραδείγματα|You'll wanna|Voorbeelden|Variantai|Tapaukset|Se þe|Se the|Se ðe|Scenarios|Scenariji|Scenarijai|Przykłady|Primjeri|Primeri|Příklady|Príklady|Piemēri|Példák|Pavyzdžiai|Paraugs|Örnekler|Juhtumid|Exemplos|Exemples|Exemple|Exempel|EXAMPLZ|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|Dữ liệu|Dead men tell no tales|Dæmi|Contoh|Cenários|Cenarios|Beispiller|Beispiele|Atburðarásir):/)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
135 state.allowPlaceholders = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
136 state.allowSteps = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
137 state.allowBackground = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
138 state.allowMultilineArgument = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
139 return "keyword";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
140
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
141 // SCENARIO
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
142 } else if (!state.inKeywordLine && state.allowScenario && stream.match(/(場景|场景|劇本|剧本|シナリオ|시나리오|เหตุการณ์|ಕಥಾಸಾರಾಂಶ|సన్నివేశం|ਪਟਕਥਾ|परिदृश्य|سيناريو|سناریو|תרחיש|Сценарій|Сценарио|Сценарий|Пример|Σενάριο|Tình huống|The thing of it is|Tapaus|Szenario|Swa|Stsenaarium|Skenario|Situai|Senaryo|Senario|Scenaro|Scenariusz|Scenariu|Scénario|Scenario|Scenarijus|Scenārijs|Scenarij|Scenarie|Scénář|Scenár|Primer|MISHUN|Kịch bản|Keadaan|Heave to|Forgatókönyv|Escenario|Escenari|Cenário|Cenario|Awww, look mate|Atburðarás):/)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
143 state.allowPlaceholders = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
144 state.allowSteps = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
145 state.allowBackground = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
146 state.allowMultilineArgument = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
147 state.inKeywordLine = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
148 return "keyword";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
149
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
150 // STEPS
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
151 } else if (!state.inKeywordLine && state.allowSteps && stream.match(/(那麼|那么|而且|當|当|并且|同時|同时|前提|假设|假設|假定|假如|但是|但し|並且|もし|ならば|ただし|しかし|かつ|하지만|조건|먼저|만일|만약|단|그리고|그러면|และ |เมื่อ |แต่ |ดังนั้น |กำหนดให้ |ಸ್ಥಿತಿಯನ್ನು |ಮತ್ತು |ನೀಡಿದ |ನಂತರ |ಆದರೆ |మరియు |చెప్పబడినది |కాని |ఈ పరిస్థితిలో |అప్పుడు |ਪਰ |ਤਦ |ਜੇਕਰ |ਜਿਵੇਂ ਕਿ |ਜਦੋਂ |ਅਤੇ |यदि |परन्तु |पर |तब |तदा |तथा |जब |चूंकि |किन्तु |कदा |और |अगर |و |هنگامی |متى |لكن |عندما |ثم |بفرض |با فرض |اما |اذاً |آنگاه |כאשר |וגם |בהינתן |אזי |אז |אבל |Якщо |Һәм |Унда |Тоді |Тогда |То |Также |Та |Пусть |Припустимо, що |Припустимо |Онда |Но |Нехай |Нәтиҗәдә |Лекин |Ләкин |Коли |Когда |Когато |Када |Кад |К тому же |І |И |Задато |Задати |Задате |Если |Допустим |Дано |Дадено |Вә |Ва |Бирок |Әмма |Әйтик |Әгәр |Аммо |Али |Але |Агар |А також |А |Τότε |Όταν |Και |Δεδομένου |Αλλά |Þurh |Þegar |Þa þe |Þá |Þa |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Za předpokladu |Za predpokladu |Youse know when youse got |Youse know like when |Yna |Yeah nah |Y'know |Y |Wun |Wtedy |When y'all |When |Wenn |WEN |wann |Ve |Và |Und |Un |ugeholl |Too right |Thurh |Thì |Then y'all |Then |Tha the |Tha |Tetapi |Tapi |Tak |Tada |Tad |Stel |Soit |Siis |Și |Şi |Si |Sed |Se |Så |Quando |Quand |Quan |Pryd |Potom |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Niin |Nhưng |När |Når |Mutta |Men |Mas |Maka |Majd |Mając |Mais |Maar |mä |Ma |Lorsque |Lorsqu'|Logo |Let go and haul |Kun |Kuid |Kui |Kiedy |Khi |Ketika |Kemudian |Keď |Když |Kaj |Kai |Kada |Kad |Jeżeli |Jeśli |Ja |It's just unbelievable |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y'all |Given |Gitt |Gegeven |Gegeben seien |Gegeben sei |Gdy |Gangway! |Fakat |Étant donnés |Etant donnés |Étant données |Etant données |Étant donnée |Etant donnée |Étant donné |Etant donné |Et |És |Entonces |Entón |Então |Entao |En |Eğer ki |Ef |Eeldades |E |Ðurh |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Diberi |Dengan |Den youse gotta |DEN |De |Dato |Dați fiind |Daţi fiind |Dati fiind |Dati |Date fiind |Date |Data |Dat fiind |Dar |Dann |dann |Dan |Dados |Dado |Dadas |Dada |Ða ðe |Ða |Cuando |Cho |Cando |Când |Cand |Cal |But y'all |But at the end of the day I reckon |BUT |But |Buh |Blimey! |Biết |Bet |Bagi |Aye |awer |Avast! |Atunci |Atesa |Atès |Apabila |Anrhegedig a |Angenommen |And y'all |And |AN |An |an |Amikor |Amennyiben |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Ak |Adott |Ac |Aber |A zároveň |A tiež |A taktiež |A také |A |a |7 |\* )/)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
152 state.inStep = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
153 state.allowPlaceholders = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
154 state.allowMultilineArgument = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
155 state.inKeywordLine = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
156 return "keyword";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
157
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
158 // INLINE STRING
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
159 } else if (stream.match(/"[^"]*"?/)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
160 return "string";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
161
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
162 // PLACEHOLDER
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
163 } else if (state.allowPlaceholders && stream.match(/<[^>]*>?/)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
164 return "variable";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
165
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
166 // Fall through
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
167 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
168 stream.next();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
169 stream.eatWhile(/[^@"<#]/);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
170 return null;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
171 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
172 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
173 };
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
174 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
175
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
176 CodeMirror.defineMIME("text/x-feature", "gherkin");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
177
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
178 });