Spade

Mini Shell

Directory:~$ /home/lmsyaran/public_html/j3/media/editors/codemirror/mode/gherkin/
Upload File

[Home] [System Details] [Kill Me]
Current File:~$ /home/lmsyaran/public_html/j3/media/editors/codemirror/mode/gherkin/gherkin.js

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE

/*
Gherkin mode - http://www.cukes.info/
Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues
*/

// Following Objs from Brackets implementation:
https://github.com/tregusti/brackets-gherkin/blob/master/main.js
//var Quotes = {
//  SINGLE: 1,
//  DOUBLE: 2
//};

//var regex = {
//  keywords: /(Feature| {2}(Scenario|In order to|As|I)|
{4}(Given|When|Then|And))/
//};

(function(mod) {
  if (typeof exports == "object" && typeof module ==
"object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) //
AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.defineMode("gherkin", function () {
  return {
    startState: function () {
      return {
        lineNumber: 0,
        tableHeaderLine: false,
        allowFeature: true,
        allowBackground: false,
        allowScenario: false,
        allowSteps: false,
        allowPlaceholders: false,
        allowMultilineArgument: false,
        inMultilineString: false,
        inMultilineTable: false,
        inKeywordLine: false
      };
    },
    token: function (stream, state) {
      if (stream.sol()) {
        state.lineNumber++;
        state.inKeywordLine = false;
        if (state.inMultilineTable) {
            state.tableHeaderLine = false;
            if (!stream.match(/\s*\|/, false)) {
              state.allowMultilineArgument = false;
              state.inMultilineTable = false;
            }
        }
      }

      stream.eatSpace();

      if (state.allowMultilineArgument) {

        // STRING
        if (state.inMultilineString) {
          if (stream.match('"""')) {
            state.inMultilineString = false;
            state.allowMultilineArgument = false;
          } else {
            stream.match(/.*/);
          }
          return "string";
        }

        // TABLE
        if (state.inMultilineTable) {
          if (stream.match(/\|\s*/)) {
            return "bracket";
          } else {
            stream.match(/[^\|]*/);
            return state.tableHeaderLine ? "header" :
"string";
          }
        }

        // DETECT START
        if (stream.match('"""')) {
          // String
          state.inMultilineString = true;
          return "string";
        } else if (stream.match("|")) {
          // Table
          state.inMultilineTable = true;
          state.tableHeaderLine = true;
          return "bracket";
        }

      }

      // LINE COMMENT
      if (stream.match(/#.*/)) {
        return "comment";

      // TAG
      } else if (!state.inKeywordLine && stream.match(/@\S+/)) {
        return "tag";

      // FEATURE
      } 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):/)) {
        state.allowScenario = true;
        state.allowBackground = true;
        state.allowPlaceholders = false;
        state.allowSteps = false;
        state.allowMultilineArgument = false;
        state.inKeywordLine = true;
        return "keyword";

      // BACKGROUND
      } 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):/))
{
        state.allowPlaceholders = false;
        state.allowSteps = true;
        state.allowBackground = false;
        state.allowMultilineArgument = false;
        state.inKeywordLine = true;
        return "keyword";

      // SCENARIO OUTLINE
      } 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):/)) {
        state.allowPlaceholders = true;
        state.allowSteps = true;
        state.allowMultilineArgument = false;
        state.inKeywordLine = true;
        return "keyword";

      // EXAMPLES
      } 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):/))
{
        state.allowPlaceholders = false;
        state.allowSteps = true;
        state.allowBackground = false;
        state.allowMultilineArgument = true;
        return "keyword";

      // SCENARIO
      } 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):/)) {
        state.allowPlaceholders = false;
        state.allowSteps = true;
        state.allowBackground = false;
        state.allowMultilineArgument = false;
        state.inKeywordLine = true;
        return "keyword";

      // STEPS
      } 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 |\* )/)) {
        state.inStep = true;
        state.allowPlaceholders = true;
        state.allowMultilineArgument = true;
        state.inKeywordLine = true;
        return "keyword";

      // INLINE STRING
      } else if (stream.match(/"[^"]*"?/)) {
        return "string";

      // PLACEHOLDER
      } else if (state.allowPlaceholders &&
stream.match(/<[^>]*>?/)) {
        return "variable";

      // Fall through
      } else {
        stream.next();
        stream.eatWhile(/[^@"<#]/);
        return null;
      }
    }
  };
});

CodeMirror.defineMIME("text/x-feature", "gherkin");

});