aslakhellesoy-gherkin 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ *.sw?
2
+ .DS_Store
3
+ coverage
4
+ rdoc
5
+ pkg
6
+ lib/gherkin/parser/*.rb
7
+ *.dot
8
+ *.png
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Aslak Hellesøy
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,37 @@
1
+ = Gherkin
2
+
3
+ Fast Gherkin parser based on Ragel.
4
+
5
+ Gherkin is the language that has evolved out of the Cucumber project. Cucumber currently uses
6
+ Treetop, which is too slow for larger projects.
7
+
8
+ This project will *not* include code to build an AST. Instead, this parser will have an API
9
+ that makes it possible to plug in a builder that can buld an AST.
10
+
11
+ == Notes
12
+
13
+ Ragel supports Ruby, but it's much slower than C. The ruby target will be used for development.
14
+ The final version will use C for MRI and Java for JRuby.
15
+
16
+ == Ragel links
17
+
18
+ * http://www.complang.org/ragel/
19
+ * http://dev.sipdoc.net/attachments/2/ragel_talk.pdf
20
+ * http://lambda-the-ultimate.org/node/1125
21
+ * http://www.zedshaw.com/essays/ragel_state_charts.html
22
+ * http://www.devchix.com/2008/01/13/a-hello-world-for-ruby-on-ragel-60/
23
+
24
+ == Note on Patches/Pull Requests
25
+
26
+ * Fork the project.
27
+ * Make your feature addition or bug fix.
28
+ * Add tests for it. This is important so I don't break it in a
29
+ future version unintentionally.
30
+ * Commit, do not mess with rakefile, version, or history.
31
+ (if you want to have your own version, that is fine but
32
+ bump version in a commit by itself I can ignore when I pull)
33
+ * Send me a pull request. Bonus points for topic branches.
34
+
35
+ == Copyright
36
+
37
+ Copyright (c) 2009 Aslak Hellesøy. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+ require 'rubygems'
3
+ require 'rake'
4
+ require 'rake/clean'
5
+
6
+ begin
7
+ require 'jeweler'
8
+ Jeweler::Tasks.new do |gem|
9
+ gem.name = "gherkin"
10
+ gem.summary = %Q{Fast Gherkin parser}
11
+ gem.description = %Q{A fast Gherkin parser in Ragel}
12
+ gem.email = "aslak.hellesoy@gmail.com"
13
+ gem.homepage = "http://github.com/aslakhellesoy/gherkin"
14
+ gem.authors = ["Aslak Hellesøy"]
15
+ gem.add_development_dependency "rspec"
16
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
+ end
18
+ Jeweler::GemcutterTasks.new
19
+ rescue LoadError
20
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
21
+ end
22
+
23
+ Dir['tasks/**/*.rake'].each { |rake| load rake }
24
+
25
+ task :default => :spec
data/VERSION.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ :major: 0
3
+ :minor: 0
4
+ :patch: 1
@@ -0,0 +1,6 @@
1
+ require 'mkmf'
2
+
3
+ dir_config("gherkin")
4
+ have_library("c", "main")
5
+
6
+ create_makefile("gherkin")
data/gherkin.gemspec ADDED
@@ -0,0 +1,82 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{gherkin}
8
+ s.version = "0.0.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Aslak Helles\303\270y"]
12
+ s.date = %q{2009-09-12}
13
+ s.description = %q{A fast Gherkin parser in Ragel}
14
+ s.email = %q{aslak.hellesoy@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ "LICENSE",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "VERSION.yml",
26
+ "ext/gherkin/extconf.rb",
27
+ "gherkin.gemspec",
28
+ "lib/gherkin.rb",
29
+ "lib/gherkin/i18n.yml",
30
+ "lib/gherkin/parser.rb",
31
+ "lib/gherkin/parser/.preserve",
32
+ "ragel/feature.rb.rl.erb",
33
+ "ragel/feature_common.rl.erb",
34
+ "ragel/misc.c.rl",
35
+ "ragel/misc.rb.rl",
36
+ "ragel/table.rb.rl",
37
+ "ragel/table_common.rl",
38
+ "spec/gherkin/feature_spec.rb",
39
+ "spec/gherkin/gherkin_parser/complex.feature",
40
+ "spec/gherkin/gherkin_parser/i18n_no.feature",
41
+ "spec/gherkin/gherkin_parser/simple.feature",
42
+ "spec/gherkin/gherkin_parser/simple_with_comments.feature",
43
+ "spec/gherkin/gherkin_parser/simple_with_tags.feature",
44
+ "spec/gherkin/i18n_spec.rb",
45
+ "spec/gherkin/multiline_step_args_spec.rb",
46
+ "spec/gherkin/sexp_recorder.rb",
47
+ "spec/gherkin/table_spec.rb",
48
+ "spec/gherkin/tags_spec.rb",
49
+ "spec/spec_helper.rb",
50
+ "tasks/ext.rake",
51
+ "tasks/ragel.rake",
52
+ "tasks/rdoc.rake",
53
+ "tasks/rspec.rake"
54
+ ]
55
+ s.homepage = %q{http://github.com/aslakhellesoy/gherkin}
56
+ s.rdoc_options = ["--charset=UTF-8"]
57
+ s.require_paths = ["lib"]
58
+ s.rubygems_version = %q{1.3.4}
59
+ s.summary = %q{Fast Gherkin parser}
60
+ s.test_files = [
61
+ "spec/gherkin/feature_spec.rb",
62
+ "spec/gherkin/i18n_spec.rb",
63
+ "spec/gherkin/multiline_step_args_spec.rb",
64
+ "spec/gherkin/sexp_recorder.rb",
65
+ "spec/gherkin/table_spec.rb",
66
+ "spec/gherkin/tags_spec.rb",
67
+ "spec/spec_helper.rb"
68
+ ]
69
+
70
+ if s.respond_to? :specification_version then
71
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
72
+ s.specification_version = 3
73
+
74
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
75
+ s.add_development_dependency(%q<rspec>, [">= 0"])
76
+ else
77
+ s.add_dependency(%q<rspec>, [">= 0"])
78
+ end
79
+ else
80
+ s.add_dependency(%q<rspec>, [">= 0"])
81
+ end
82
+ end
data/lib/gherkin.rb ADDED
@@ -0,0 +1 @@
1
+ require 'gherkin/parser'
@@ -0,0 +1,561 @@
1
+ # encoding: UTF-8
2
+ # We use the codes here (prefer 2 letters when possible)
3
+ # http://en.wikipedia.org/wiki/List_of_ISO_639-2_codes
4
+ #
5
+ # If you want several aliases for a keyword, just separate them
6
+ # with a | character. Make sure there are no ambiguities in the
7
+ # keywords.
8
+ #
9
+ "en":
10
+ name: English
11
+ native: English
12
+ encoding: UTF-8
13
+ feature: Feature
14
+ background: Background
15
+ scenario: Scenario
16
+ scenario_outline: Scenario Outline
17
+ examples: Examples|Scenarios
18
+ given: Given
19
+ when: When
20
+ then: Then
21
+ and: And
22
+ but: But
23
+ space_after_keyword: true
24
+
25
+ # Please help us keeping the languages below uptodate. The parsers for a language
26
+ # that is missing a keyword will expect the English word until the missing word(s)
27
+ # are added.
28
+ #
29
+ # Please keep the grammars in alphabetical order by name from here and down.
30
+
31
+ "ar":
32
+ name: Arabic
33
+ native: العربية
34
+ encoding: UTF-8
35
+ feature: خاصية
36
+ background: الخلفية
37
+ scenario: سيناريو
38
+ scenario_outline: سيناريو مخطط
39
+ examples: امثلة
40
+ given: بفرض
41
+ when: متى|عندما
42
+ then: اذاً|ثم
43
+ and: و
44
+ but: لكن
45
+ space_after_keyword: true
46
+ "bg":
47
+ name: Bulgarian
48
+ native: български
49
+ encoding: UTF-8
50
+ feature: Функционалност
51
+ background: Предистория
52
+ scenario: Сценарий
53
+ scenario_outline: Рамка на сценарий
54
+ examples: Примери
55
+ given: Дадено
56
+ when: Когато
57
+ then: То
58
+ and: И
59
+ but: Но
60
+ space_after_keyword: true
61
+ "cat":
62
+ name: Catalan
63
+ native: català
64
+ encoding: UTF-8
65
+ background: Rerefons|Antecedents
66
+ feature: Característica
67
+ scenario: Escenari
68
+ scenario_outline: Esquema de l\'escenari
69
+ examples: Exemples
70
+ given: Donat|Donada
71
+ when: Quan
72
+ then: Aleshores
73
+ and: I
74
+ but: Però
75
+ space_after_keyword: true
76
+ "cy":
77
+ name: Welsh
78
+ native: Cymraeg
79
+ encoding: UTF-8
80
+ feature: Arwedd
81
+ scenario: Scenario
82
+ examples: Enghreifftiau
83
+ given: anrhegedig a
84
+ when: Pryd
85
+ then: Yna
86
+ and: A
87
+ but: Ond
88
+ space_after_keyword: true
89
+ "cz":
90
+ name: Czech
91
+ native: Česky
92
+ encoding: UTF-8
93
+ feature: Požadavek
94
+ background: Pozadí|Kontext
95
+ scenario: Scénář
96
+ scenario_outline: Náčrt Scénáře|Osnova scénáře
97
+ examples: Příklady
98
+ given: Pokud
99
+ when: Když
100
+ then: Pak
101
+ and: A|A také
102
+ but: Ale
103
+ space_after_keyword: true
104
+ "da":
105
+ name: Danish
106
+ native: dansk
107
+ encoding: UTF-8
108
+ feature: Egenskab
109
+ background: Baggrund
110
+ scenario: Scenarie
111
+ scenario_outline: Abstrakt Scenario
112
+ examples: Eksempler
113
+ given: Givet
114
+ when: Når
115
+ then: Så
116
+ and: Og
117
+ but: Men
118
+ space_after_keyword: true
119
+ "de":
120
+ name: German
121
+ native: Deutsch
122
+ encoding: UTF-8
123
+ feature: Funktionalität
124
+ background: Grundlage
125
+ scenario: Szenario
126
+ scenario_outline: Szenariogrundriss
127
+ examples: Beispiele
128
+ given: Gegeben sei
129
+ when: Wenn
130
+ then: Dann
131
+ and: Und
132
+ but: Aber
133
+ space_after_keyword: true
134
+ "en-au":
135
+ name: Australian
136
+ native: Australian
137
+ encoding: UTF-8
138
+ feature: Crikey
139
+ background: Background
140
+ scenario: Mate
141
+ scenario_outline: Blokes
142
+ examples: Cobber
143
+ given: Ya know how
144
+ when: When
145
+ then: Ya gotta
146
+ and: N
147
+ but: Cept
148
+ space_after_keyword: true
149
+ "en-lol":
150
+ name: LOLCAT
151
+ native: LOLCAT
152
+ encoding: UTF-8
153
+ feature: OH HAI
154
+ background: B4
155
+ scenario: MISHUN
156
+ scenario_outline: MISHUN SRSLY
157
+ examples: EXAMPLZ
158
+ given: I CAN HAZ
159
+ when: WEN
160
+ then: DEN
161
+ and: AN
162
+ but: BUT
163
+ space_after_keyword: true
164
+ "en-tx":
165
+ name: Texan
166
+ native: Texan
167
+ encoding: UTF-8
168
+ feature: Feature
169
+ background: Background
170
+ scenario: Scenario
171
+ scenario_outline: All y\'all
172
+ examples: Examples
173
+ given: Given y\'all
174
+ when: When y\'all
175
+ then: Then y\'all
176
+ and: And y\'all
177
+ but: But y\'all
178
+ space_after_keyword: true
179
+ "es":
180
+ name: Spanish
181
+ native: español
182
+ encoding: UTF-8
183
+ background: Antecedentes
184
+ feature: Característica
185
+ scenario: Escenario
186
+ scenario_outline: Esquema del escenario
187
+ examples: Ejemplos
188
+ given: Dado
189
+ when: Cuando
190
+ then: Entonces
191
+ and: Y
192
+ but: Pero
193
+ space_after_keyword: true
194
+ "et":
195
+ name: Estonian
196
+ native: eesti keel
197
+ encoding: UTF-8
198
+ feature: Omadus
199
+ background: Taust
200
+ scenario: Stsenaarium
201
+ scenario_outline: Raamstsenaarium
202
+ examples: Juhtumid
203
+ given: Eeldades
204
+ when: Kui
205
+ then: Siis
206
+ and: Ja
207
+ but: Kuid
208
+ space_after_keyword: true
209
+ "fi":
210
+ name: Finnish
211
+ native: suomi
212
+ encoding: UTF-8
213
+ feature: Ominaisuus
214
+ background: Tausta
215
+ scenario: Tapaus
216
+ scenario_outline: Tapausaihio
217
+ examples: Tapaukset
218
+ given: Oletetaan
219
+ when: Kun
220
+ then: Niin
221
+ and: Ja
222
+ but: Mutta
223
+ space_after_keyword: true
224
+ "fr":
225
+ name: French
226
+ native: français
227
+ encoding: UTF-8
228
+ feature: Fonctionnalité
229
+ background: Contexte
230
+ scenario: Scénario
231
+ scenario_outline: Plan du Scénario
232
+ examples: Exemples
233
+ given: Soit
234
+ when: Lorsque
235
+ then: Alors
236
+ and: Et
237
+ but: Mais
238
+ space_after_keyword: true
239
+ "he":
240
+ name: Hebrew
241
+ native: עברית
242
+ encoding: UTF-8
243
+ feature: תכונה
244
+ background: רקע
245
+ scenario: תרחיש
246
+ scenario_outline: תבנית תרחיש
247
+ examples: דוגמאות
248
+ given: בהינתן
249
+ when: כאשר
250
+ then: אז|אזי
251
+ and: וגם
252
+ but: אבל
253
+ space_after_keyword: true
254
+ "hr":
255
+ name: Croatian
256
+ native: hrvatski
257
+ encoding: UTF-8
258
+ feature: Osobina|Mogućnost|Mogucnost
259
+ background: Pozadina
260
+ scenario: Scenarij
261
+ scenario_outline: Skica|Koncept
262
+ examples: Primjeri|Scenariji
263
+ given: Zadan|Zadani|Zadano
264
+ when: Kada|Kad
265
+ then: Onda
266
+ and: I
267
+ but: Ali
268
+ space_after_keyword: true
269
+ "hu":
270
+ name: Hungarian
271
+ native: magyar
272
+ encoding: UTF-8
273
+ feature: Jellemző
274
+ background: Háttér
275
+ scenario: Forgatókönyv
276
+ scenario_outline: Forgatókönyv vázlat
277
+ examples: Példák
278
+ given: Ha
279
+ when: Majd
280
+ then: Akkor
281
+ and: És
282
+ but: De
283
+ space_after_keyword: true
284
+ "id":
285
+ name: Indonesian
286
+ native: Bahasa Indonesia
287
+ encoding: UTF-8
288
+ feature: Fitur
289
+ background: Dasar
290
+ scenario: Skenario
291
+ scenario_outline: Skenario konsep
292
+ examples: Contoh
293
+ given: Dengan
294
+ when: Ketika
295
+ then: Maka
296
+ and: Dan
297
+ but: Tapi
298
+ space_after_keyword: true
299
+ "it":
300
+ name: Italian
301
+ native: italiano
302
+ encoding: UTF-8
303
+ feature: Funzionalità
304
+ background: Contesto
305
+ scenario: Scenario
306
+ scenario_outline: Schema dello scenario
307
+ examples: Esempi
308
+ given: Dato
309
+ when: Quando
310
+ then: Allora
311
+ and: E
312
+ but: Ma
313
+ space_after_keyword: true
314
+ "ja":
315
+ name: Japanese
316
+ native: 日本語
317
+ encoding: UTF-8
318
+ feature: フィーチャ|機能
319
+ background: 背景
320
+ scenario: シナリオ
321
+ scenario_outline: シナリオアウトライン|シナリオテンプレート|テンプレ|シナリオテンプレ
322
+ examples: 例|サンプル
323
+ given: 前提
324
+ when: もし
325
+ then: ならば
326
+ and: かつ
327
+ but: しかし|但し
328
+ space_after_keyword: false
329
+ "ko":
330
+ name: Korean
331
+ native: 한국어
332
+ encoding: UTF-8
333
+ background: 배경
334
+ feature: 기능
335
+ scenario: 시나리오
336
+ scenario_outline: 시나리오 개요
337
+ examples: 예
338
+ given: 조건
339
+ when: 만일
340
+ then: 그러면
341
+ and: 그리고
342
+ but: 하지만
343
+ space_after_keyword: false
344
+ "lt":
345
+ name: Lithuanian
346
+ native: lietuvių kalba
347
+ encoding: UTF-8
348
+ feature: Savybė
349
+ background: Kontekstas
350
+ scenario: Scenarijus
351
+ scenario_outline: Scenarijaus šablonas
352
+ examples: Pavyzdžiai|Scenarijai|Variantai
353
+ given: Duota
354
+ when: Kai
355
+ then: Tada
356
+ and: Ir
357
+ but: Bet
358
+ space_after_keyword: true
359
+ "lv":
360
+ name: Latvian
361
+ native: latviešu
362
+ encoding: UTF-8
363
+ feature: Funkcionalitāte|Fīča
364
+ background: Konteksts|Situācija
365
+ scenario: Scenārijs
366
+ scenario_outline: Scenārijs pēc parauga
367
+ examples: Piemēri|Paraugs
368
+ given: Kad
369
+ when: Ja
370
+ then: Tad
371
+ and: Un
372
+ but: Bet
373
+ space_after_keyword: true
374
+ "nl":
375
+ name: Dutch
376
+ native: Nederlands
377
+ encoding: UTF-8
378
+ feature: Functionaliteit
379
+ background: Achtergrond
380
+ scenario: Scenario
381
+ scenario_outline: Abstract Scenario
382
+ examples: Voorbeelden
383
+ given: Gegeven
384
+ when: Als
385
+ then: Dan
386
+ and: En
387
+ but: Maar
388
+ space_after_keyword: true
389
+ "no":
390
+ name: Norwegian
391
+ native: norsk
392
+ encoding: UTF-8
393
+ feature: Egenskap
394
+ background: Bakgrunn
395
+ scenario: Scenario
396
+ scenario_outline: Abstrakt Scenario
397
+ examples: Eksempler
398
+ given: Gitt
399
+ when: Når
400
+ then: Så
401
+ and: Og
402
+ but: Men
403
+ space_after_keyword: true
404
+ "pl":
405
+ name: Polish
406
+ native: polski
407
+ encoding: UTF-8
408
+ feature: Właściwość
409
+ background: Założenia
410
+ scenario: Scenariusz
411
+ scenario_outline: Szablon scenariusza
412
+ examples: Przykłady
413
+ given: Zakładając
414
+ when: Jeżeli
415
+ then: Wtedy
416
+ and: Oraz
417
+ but: Ale
418
+ space_after_keyword: true
419
+ "pt":
420
+ name: Portuguese
421
+ native: português
422
+ encoding: UTF-8
423
+ background: Contexto
424
+ feature: Funcionalidade
425
+ scenario: Cenário|Cenario
426
+ scenario_outline: Esquema do Cenário|Esquema do Cenario
427
+ examples: Exemplos
428
+ given: Dado
429
+ when: Quando
430
+ then: Então|Entao
431
+ and: E
432
+ but: Mas
433
+ space_after_keyword: true
434
+ "ro":
435
+ name: Romanian
436
+ native: română
437
+ encoding: UTF-8
438
+ feature: Functionalitate
439
+ scenario: Scenariu
440
+ given: Daca
441
+ when: Cand
442
+ then: Atunci
443
+ and: Si
444
+ but: Dar
445
+ space_after_keyword: true
446
+ "ro2":
447
+ name: Romanian (diacritical)
448
+ native: română (diacritical)
449
+ encoding: UTF-8
450
+ feature: Funcționalitate
451
+ scenario: Scenariu
452
+ given: Dacă
453
+ when: Când
454
+ then: Atunci
455
+ and: Și
456
+ but: Dar
457
+ space_after_keyword: true
458
+ "ru":
459
+ name: Russian
460
+ native: русский
461
+ encoding: UTF-8
462
+ feature: Функционал
463
+ background: Предыстория
464
+ scenario: Сценарий
465
+ scenario_outline: Структура сценария
466
+ examples: Значения
467
+ given: Допустим
468
+ when: Если
469
+ then: То
470
+ and: И|К тому же
471
+ but: Но|А
472
+ space_after_keyword: true
473
+ "se":
474
+ name: Swedish
475
+ native: Svenska
476
+ encoding: UTF-8
477
+ feature: Egenskap
478
+ background: Bakgrund
479
+ scenario: Scenario
480
+ scenario_outline: Abstrakt Scenario
481
+ examples: Exempel
482
+ given: Givet
483
+ when: När
484
+ then: Så
485
+ and: Och
486
+ but: Men
487
+ space_after_keyword: true
488
+ "sk":
489
+ name: Slovak
490
+ native: Slovensky
491
+ encoding: UTF-8
492
+ feature: Požiadavka
493
+ background: Pozadie
494
+ scenario: Scenár
495
+ scenario_outline: Náčrt Scenáru
496
+ examples: Príklady
497
+ given: Pokiaľ
498
+ when: Keď
499
+ then: Tak
500
+ and: A
501
+ but: Ale
502
+ space_after_keyword: true
503
+ "uz":
504
+ name: Uzbek
505
+ native: Узбекча
506
+ encoding: UTF-8
507
+ feature: Функционал
508
+ background: Тарих
509
+ scenario: Сценарий
510
+ scenario_outline: Сценарий структураси
511
+ examples: Мисоллар
512
+ given: Агар
513
+ when: Агар
514
+ then: Унда
515
+ and: Ва
516
+ but: Лекин|Бирок|Аммо
517
+ "vi":
518
+ name: Vietnamese
519
+ native: Tiếng Việt
520
+ encoding: UTF-8
521
+ feature: Tính năng
522
+ background: Bối cảnh
523
+ scenario: Tình huống|Kịch bản
524
+ scenario_outline: Khung tình huống|Khung kịch bản
525
+ examples: Dữ liệu
526
+ given: Biết|Cho
527
+ when: Khi
528
+ then: Thì
529
+ and: Và
530
+ but: Nhưng
531
+ space_after_keyword: true
532
+ "zh-CN":
533
+ name: Chinese simplified
534
+ native: 简体中文
535
+ encoding: UTF-8
536
+ feature: 功能
537
+ background: 背景
538
+ scenario: 场景
539
+ scenario_outline: 场景大纲
540
+ examples: 例子
541
+ given: 假如
542
+ when: 当
543
+ then: 那么
544
+ and: 而且
545
+ but: 但是
546
+ space_after_keyword: false
547
+ "zh-TW":
548
+ name: Chinese traditional
549
+ native: 繁體中文
550
+ encoding: UTF-8
551
+ feature: 功能
552
+ background: 背景
553
+ scenario: 場景|劇本
554
+ scenario_outline: 場景大綱|劇本大綱
555
+ examples: 例子
556
+ given: 假設
557
+ when: 當
558
+ then: 那麼
559
+ and: 而且|並且
560
+ but: 但是
561
+ space_after_keyword: false