|
1 # -*- coding: utf-8 -*- |
|
2 """ |
|
3 pygments.lexers.testing |
|
4 ~~~~~~~~~~~~~~~~~~~~~~~ |
|
5 |
|
6 Lexers for testing languages. |
|
7 |
|
8 :copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS. |
|
9 :license: BSD, see LICENSE for details. |
|
10 """ |
|
11 |
|
12 from pygments.lexer import RegexLexer, include, bygroups |
|
13 from pygments.token import Comment, Keyword, Name, String |
|
14 |
|
15 __all__ = ['GherkinLexer'] |
|
16 |
|
17 |
|
18 class GherkinLexer(RegexLexer): |
|
19 """ |
|
20 For `Gherkin <http://github.com/aslakhellesoy/gherkin/>` syntax. |
|
21 |
|
22 .. versionadded:: 1.2 |
|
23 """ |
|
24 name = 'Gherkin' |
|
25 aliases = ['cucumber', 'gherkin'] |
|
26 filenames = ['*.feature'] |
|
27 mimetypes = ['text/x-gherkin'] |
|
28 |
|
29 feature_keywords = u'^(기능|機能|功能|フィーチャ|خاصية|תכונה|Функціонал|Функционалност|Функционал|Фича|Особина|Могућност|Özellik|Właściwość|Tính năng|Trajto|Savybė|Požiadavka|Požadavek|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Fīča|Funzionalità|Funktionalität|Funkcionalnost|Funkcionalitāte|Funcționalitate|Functionaliteit|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Feature|Egenskap|Egenskab|Crikey|Característica|Arwedd)(:)(.*)$' |
|
30 feature_element_keywords = u'^(\\s*)(시나리오 개요|시나리오|배경|背景|場景大綱|場景|场景大纲|场景|劇本大綱|劇本|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|シナリオ|سيناريو مخطط|سيناريو|الخلفية|תרחיש|תבנית תרחיש|רקע|Тарих|Сценарій|Сценарио|Сценарий структураси|Сценарий|Структура сценарію|Структура сценарија|Структура сценария|Скица|Рамка на сценарий|Пример|Предыстория|Предистория|Позадина|Передумова|Основа|Концепт|Контекст|Założenia|Wharrimean is|Tình huống|The thing of it is|Tausta|Taust|Tapausaihio|Tapaus|Szenariogrundriss|Szenario|Szablon scenariusza|Stsenaarium|Struktura scenarija|Skica|Skenario konsep|Skenario|Situācija|Senaryo taslağı|Senaryo|Scénář|Scénario|Schema dello scenario|Scenārijs pēc parauga|Scenārijs|Scenár|Scenaro|Scenariusz|Scenariul de şablon|Scenariul de sablon|Scenariu|Scenario Outline|Scenario Amlinellol|Scenario|Scenarijus|Scenarijaus šablonas|Scenarij|Scenarie|Rerefons|Raamstsenaarium|Primer|Pozadí|Pozadina|Pozadie|Plan du scénario|Plan du Scénario|Osnova scénáře|Osnova|Náčrt Scénáře|Náčrt Scenáru|Mate|MISHUN SRSLY|MISHUN|Kịch bản|Konturo de la scenaro|Kontext|Konteksts|Kontekstas|Kontekst|Koncept|Khung tình huống|Khung kịch bản|Háttér|Grundlage|Geçmiş|Forgatókönyv vázlat|Forgatókönyv|Fono|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l\'escenari|Escenario|Escenari|Dis is what went down|Dasar|Contexto|Contexte|Contesto|Condiţii|Conditii|Cenário|Cenario|Cefndir|Bối cảnh|Blokes|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|All y\'all|Achtergrond|Abstrakt Scenario|Abstract Scenario)(:)(.*)$' |
|
31 examples_keywords = u'^(\\s*)(예|例子|例|サンプル|امثلة|דוגמאות|Сценарији|Примери|Приклади|Мисоллар|Значения|Örnekler|Voorbeelden|Variantai|Tapaukset|Scenarios|Scenariji|Scenarijai|Příklady|Példák|Príklady|Przykłady|Primjeri|Primeri|Piemēri|Pavyzdžiai|Paraugs|Juhtumid|Exemplos|Exemples|Exemplele|Exempel|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|EXAMPLZ|Dữ liệu|Contoh|Cobber|Beispiele)(:)(.*)$' |
|
32 step_keywords = u'^(\\s*)(하지만|조건|먼저|만일|만약|단|그리고|그러면|那麼|那么|而且|當|当|前提|假設|假如|但是|但し|並且|もし|ならば|ただし|しかし|かつ|و |متى |لكن |عندما |ثم |بفرض |اذاً |כאשר |וגם |בהינתן |אזי |אז |אבל |Якщо |Унда |То |Припустимо, що |Припустимо |Онда |Но |Нехай |Лекин |Когато |Када |Кад |К тому же |И |Задато |Задати |Задате |Если |Допустим |Дадено |Ва |Бирок |Аммо |Али |Але |Агар |А |І |Și |És |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Youse know when youse got |Youse know like when |Yna |Ya know how |Ya gotta |Y |Wun |Wtedy |When y\'all |When |Wenn |WEN |Và |Ve |Und |Un |Thì |Then y\'all |Then |Tapi |Tak |Tada |Tad |Så |Stel |Soit |Siis |Si |Sed |Se |Quando |Quand |Quan |Pryd |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Når |När |Niin |Nhưng |N |Mutta |Men |Mas |Maka |Majd |Mais |Maar |Ma |Lorsque |Lorsqu\'|Kun |Kuid |Kui |Khi |Keď |Ketika |Když |Kaj |Kai |Kada |Kad |Jeżeli |Ja |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y\'all |Given |Gitt |Gegeven |Gegeben sei |Fakat |Eğer ki |Etant donné |Et |Então |Entonces |Entao |En |Eeldades |E |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Dengan |Den youse gotta |De |Dato |Dar |Dann |Dan |Dado |Dacă |Daca |DEN |Când |Cuando |Cho |Cept |Cand |Cal |But y\'all |But |Buh |Biết |Bet |BUT |Atès |Atunci |Atesa |Anrhegedig a |Angenommen |And y\'all |And |An |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Aber |AN |A také |A |\* )' |
|
33 |
|
34 tokens = { |
|
35 'comments': [ |
|
36 (r'^\s*#.*$', Comment), |
|
37 ], |
|
38 'feature_elements': [ |
|
39 (step_keywords, Keyword, "step_content_stack"), |
|
40 include('comments'), |
|
41 (r"(\s|.)", Name.Function), |
|
42 ], |
|
43 'feature_elements_on_stack': [ |
|
44 (step_keywords, Keyword, "#pop:2"), |
|
45 include('comments'), |
|
46 (r"(\s|.)", Name.Function), |
|
47 ], |
|
48 'examples_table': [ |
|
49 (r"\s+\|", Keyword, 'examples_table_header'), |
|
50 include('comments'), |
|
51 (r"(\s|.)", Name.Function), |
|
52 ], |
|
53 'examples_table_header': [ |
|
54 (r"\s+\|\s*$", Keyword, "#pop:2"), |
|
55 include('comments'), |
|
56 (r"\\\|", Name.Variable), |
|
57 (r"\s*\|", Keyword), |
|
58 (r"[^|]", Name.Variable), |
|
59 ], |
|
60 'scenario_sections_on_stack': [ |
|
61 (feature_element_keywords, |
|
62 bygroups(Name.Function, Keyword, Keyword, Name.Function), |
|
63 "feature_elements_on_stack"), |
|
64 ], |
|
65 'narrative': [ |
|
66 include('scenario_sections_on_stack'), |
|
67 include('comments'), |
|
68 (r"(\s|.)", Name.Function), |
|
69 ], |
|
70 'table_vars': [ |
|
71 (r'(<[^>]+>)', Name.Variable), |
|
72 ], |
|
73 'numbers': [ |
|
74 (r'(\d+\.?\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', String), |
|
75 ], |
|
76 'string': [ |
|
77 include('table_vars'), |
|
78 (r'(\s|.)', String), |
|
79 ], |
|
80 'py_string': [ |
|
81 (r'"""', Keyword, "#pop"), |
|
82 include('string'), |
|
83 ], |
|
84 'step_content_root': [ |
|
85 (r"$", Keyword, "#pop"), |
|
86 include('step_content'), |
|
87 ], |
|
88 'step_content_stack': [ |
|
89 (r"$", Keyword, "#pop:2"), |
|
90 include('step_content'), |
|
91 ], |
|
92 'step_content': [ |
|
93 (r'"', Name.Function, "double_string"), |
|
94 include('table_vars'), |
|
95 include('numbers'), |
|
96 include('comments'), |
|
97 (r'(\s|.)', Name.Function), |
|
98 ], |
|
99 'table_content': [ |
|
100 (r"\s+\|\s*$", Keyword, "#pop"), |
|
101 include('comments'), |
|
102 (r"\\\|", String), |
|
103 (r"\s*\|", Keyword), |
|
104 include('string'), |
|
105 ], |
|
106 'double_string': [ |
|
107 (r'"', Name.Function, "#pop"), |
|
108 include('string'), |
|
109 ], |
|
110 'root': [ |
|
111 (r'\n', Name.Function), |
|
112 include('comments'), |
|
113 (r'"""', Keyword, "py_string"), |
|
114 (r'\s+\|', Keyword, 'table_content'), |
|
115 (r'"', Name.Function, "double_string"), |
|
116 include('table_vars'), |
|
117 include('numbers'), |
|
118 (r'(\s*)(@[^@\r\n\t ]+)', bygroups(Name.Function, Name.Tag)), |
|
119 (step_keywords, bygroups(Name.Function, Keyword), |
|
120 'step_content_root'), |
|
121 (feature_keywords, bygroups(Keyword, Keyword, Name.Function), |
|
122 'narrative'), |
|
123 (feature_element_keywords, |
|
124 bygroups(Name.Function, Keyword, Keyword, Name.Function), |
|
125 'feature_elements'), |
|
126 (examples_keywords, |
|
127 bygroups(Name.Function, Keyword, Keyword, Name.Function), |
|
128 'examples_table'), |
|
129 (r'(\s|.)', Name.Function), |
|
130 ] |
|
131 } |