gherkin 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.mailmap +2 -0
- data/History.txt +9 -0
- data/README.rdoc +14 -43
- data/Rakefile +13 -17
- data/VERSION.yml +1 -1
- data/bin/gherkin +2 -7
- data/features/feature_parser.feature +36 -36
- data/features/native_lexer.feature +2 -2
- data/features/parser_with_native_lexer.feature +32 -32
- data/features/pretty_printer.feature +4 -4
- data/features/step_definitions/pretty_printer_steps.rb +2 -2
- data/features/steps_parser.feature +5 -5
- data/gherkin.gemspec +28 -16
- data/java/src/gherkin/FixJava.java +4 -4
- data/lib/gherkin/cli/main.rb +34 -0
- data/lib/gherkin/i18n.rb +8 -1
- data/lib/gherkin/i18n.yml +201 -201
- data/lib/gherkin/i18n_lexer.rb +8 -8
- data/lib/gherkin/lexer.rb +2 -1
- data/lib/gherkin/tools.rb +8 -0
- data/lib/gherkin/tools/files.rb +30 -0
- data/lib/gherkin/tools/{pretty_printer.rb → pretty_listener.rb} +5 -4
- data/lib/gherkin/tools/reformat.rb +19 -0
- data/lib/gherkin/tools/stats.rb +21 -0
- data/lib/gherkin/tools/stats_listener.rb +50 -0
- data/nativegems.sh +1 -1
- data/ragel/lexer.java.rl.erb +58 -58
- data/spec/gherkin/i18n_lexer_spec.rb +22 -0
- data/tasks/bench.rake +0 -7
- data/tasks/compile.rake +4 -4
- metadata +30 -12
- data/bin/gherkin-purdy +0 -16
@@ -6,9 +6,9 @@ Feature: Pretty printer
|
|
6
6
|
Given I have Cucumber's home dir defined in CUCUMBER_HOME
|
7
7
|
When I find all of the .feature files
|
8
8
|
And I parse the prettified representation of each of them
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
# Of course, we don't really want any errors. The last
|
10
|
+
# two files that were not identical are written to p1.feature
|
11
|
+
# and p2.feature. Do a diff -u p1.feature p2.feature
|
12
|
+
#
|
13
13
|
Then the following files should have errors:
|
14
14
|
| Path | Error |
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'stringio'
|
2
2
|
require 'gherkin'
|
3
|
-
require 'gherkin/tools/
|
3
|
+
require 'gherkin/tools/pretty_listener'
|
4
4
|
|
5
5
|
module PrettyPlease
|
6
6
|
def pretty(source)
|
7
7
|
io = StringIO.new
|
8
|
-
listener = Gherkin::Tools::
|
8
|
+
listener = Gherkin::Tools::PrettyListener.new(io)
|
9
9
|
parser = Gherkin::Parser.new(listener, true)
|
10
10
|
lexer = Gherkin::I18nLexer.new(parser)
|
11
11
|
lexer.scan(source)
|
@@ -3,9 +3,9 @@ Feature: Gherkin Steps parser
|
|
3
3
|
As a Cucumber developer
|
4
4
|
I want a steps parser to make writing compound steps easier
|
5
5
|
|
6
|
-
Background:
|
6
|
+
Background:
|
7
7
|
Given a "en", "ruby" "steps" parser
|
8
|
-
|
8
|
+
|
9
9
|
Scenario: Parsing steps
|
10
10
|
Given the following text is parsed:
|
11
11
|
"""
|
@@ -23,7 +23,7 @@ Feature: Gherkin Steps parser
|
|
23
23
|
| foo | bar | #{arg} |
|
24
24
|
"""
|
25
25
|
Then there should be no parse errors
|
26
|
-
|
26
|
+
|
27
27
|
Scenario: Trying to parse a full feature with the step parser
|
28
28
|
Given the following text is parsed:
|
29
29
|
"""
|
@@ -34,7 +34,7 @@ Feature: Gherkin Steps parser
|
|
34
34
|
Then something should happen
|
35
35
|
"""
|
36
36
|
Then there should be parse errors on lines 1 and 2
|
37
|
-
|
37
|
+
|
38
38
|
Scenario: Tags
|
39
39
|
Given the following text is parsed:
|
40
40
|
"""
|
@@ -43,4 +43,4 @@ Feature: Gherkin Steps parser
|
|
43
43
|
When I trip
|
44
44
|
Then I should sign up for dancing lessons
|
45
45
|
"""
|
46
|
-
Then there should be a parse error on line 1
|
46
|
+
Then there should be a parse error on line 1
|
data/gherkin.gemspec
CHANGED
@@ -5,15 +5,15 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{gherkin}
|
8
|
-
s.version = "1.0.
|
8
|
+
s.version = "1.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Mike Sassak", "Gregory Hnatiuk", "Aslak Helles\303\270y"]
|
12
|
-
s.date = %q{2009-12-
|
12
|
+
s.date = %q{2009-12-30}
|
13
13
|
s.default_executable = %q{gherkin}
|
14
|
-
s.description = %q{A fast Gherkin lexer
|
14
|
+
s.description = %q{A fast Gherkin lexer/parser based on the Ragel State Machine Compiler.}
|
15
15
|
s.email = %q{cukes@googlegroups.com}
|
16
|
-
s.executables = ["gherkin"
|
16
|
+
s.executables = ["gherkin"]
|
17
17
|
s.extensions = ["ext/gherkin_lexer_ar/extconf.rb", "ext/gherkin_lexer_bg/extconf.rb", "ext/gherkin_lexer_cat/extconf.rb", "ext/gherkin_lexer_cs/extconf.rb", "ext/gherkin_lexer_cy/extconf.rb", "ext/gherkin_lexer_da/extconf.rb", "ext/gherkin_lexer_de/extconf.rb", "ext/gherkin_lexer_en/extconf.rb", "ext/gherkin_lexer_enau/extconf.rb", "ext/gherkin_lexer_enlol/extconf.rb", "ext/gherkin_lexer_entx/extconf.rb", "ext/gherkin_lexer_es/extconf.rb", "ext/gherkin_lexer_et/extconf.rb", "ext/gherkin_lexer_fi/extconf.rb", "ext/gherkin_lexer_fr/extconf.rb", "ext/gherkin_lexer_he/extconf.rb", "ext/gherkin_lexer_hr/extconf.rb", "ext/gherkin_lexer_hu/extconf.rb", "ext/gherkin_lexer_id/extconf.rb", "ext/gherkin_lexer_it/extconf.rb", "ext/gherkin_lexer_ja/extconf.rb", "ext/gherkin_lexer_ko/extconf.rb", "ext/gherkin_lexer_lt/extconf.rb", "ext/gherkin_lexer_lv/extconf.rb", "ext/gherkin_lexer_nl/extconf.rb", "ext/gherkin_lexer_no/extconf.rb", "ext/gherkin_lexer_pl/extconf.rb", "ext/gherkin_lexer_pt/extconf.rb", "ext/gherkin_lexer_ro/extconf.rb", "ext/gherkin_lexer_ro2/extconf.rb", "ext/gherkin_lexer_ru/extconf.rb", "ext/gherkin_lexer_se/extconf.rb", "ext/gherkin_lexer_sk/extconf.rb", "ext/gherkin_lexer_sr/extconf.rb", "ext/gherkin_lexer_srLatn/extconf.rb", "ext/gherkin_lexer_tr/extconf.rb", "ext/gherkin_lexer_uz/extconf.rb", "ext/gherkin_lexer_vi/extconf.rb", "ext/gherkin_lexer_zhCN/extconf.rb", "ext/gherkin_lexer_zhTW/extconf.rb"]
|
18
18
|
s.extra_rdoc_files = [
|
19
19
|
"LICENSE",
|
@@ -21,12 +21,13 @@ Gem::Specification.new do |s|
|
|
21
21
|
]
|
22
22
|
s.files = [
|
23
23
|
".gitignore",
|
24
|
+
".mailmap",
|
25
|
+
"History.txt",
|
24
26
|
"LICENSE",
|
25
27
|
"README.rdoc",
|
26
28
|
"Rakefile",
|
27
29
|
"VERSION.yml",
|
28
30
|
"bin/gherkin",
|
29
|
-
"bin/gherkin-purdy",
|
30
31
|
"cucumber.yml",
|
31
32
|
"ext/gherkin_lexer_ar/gherkin_lexer_ar.c",
|
32
33
|
"ext/gherkin_lexer_bg/gherkin_lexer_bg.c",
|
@@ -91,6 +92,7 @@ Gem::Specification.new do |s|
|
|
91
92
|
"lib/.gitignore",
|
92
93
|
"lib/gherkin.rb",
|
93
94
|
"lib/gherkin/c_lexer.rb",
|
95
|
+
"lib/gherkin/cli/main.rb",
|
94
96
|
"lib/gherkin/core_ext/array.rb",
|
95
97
|
"lib/gherkin/i18n.rb",
|
96
98
|
"lib/gherkin/i18n.yml",
|
@@ -145,7 +147,12 @@ Gem::Specification.new do |s|
|
|
145
147
|
"lib/gherkin/rb_lexer/zhCN.rb",
|
146
148
|
"lib/gherkin/rb_lexer/zhTW.rb",
|
147
149
|
"lib/gherkin/rb_parser.rb",
|
148
|
-
"lib/gherkin/tools
|
150
|
+
"lib/gherkin/tools.rb",
|
151
|
+
"lib/gherkin/tools/files.rb",
|
152
|
+
"lib/gherkin/tools/pretty_listener.rb",
|
153
|
+
"lib/gherkin/tools/reformat.rb",
|
154
|
+
"lib/gherkin/tools/stats.rb",
|
155
|
+
"lib/gherkin/tools/stats_listener.rb",
|
149
156
|
"nativegems.sh",
|
150
157
|
"ragel/i18n/.gitignore",
|
151
158
|
"ragel/lexer.c.rl.erb",
|
@@ -161,6 +168,7 @@ Gem::Specification.new do |s|
|
|
161
168
|
"spec/gherkin/fixtures/simple.feature",
|
162
169
|
"spec/gherkin/fixtures/simple_with_comments.feature",
|
163
170
|
"spec/gherkin/fixtures/simple_with_tags.feature",
|
171
|
+
"spec/gherkin/i18n_lexer_spec.rb",
|
164
172
|
"spec/gherkin/i18n_spec.rb",
|
165
173
|
"spec/gherkin/java_lexer_spec.rb",
|
166
174
|
"spec/gherkin/parser_spec.rb",
|
@@ -185,9 +193,10 @@ Gem::Specification.new do |s|
|
|
185
193
|
s.rdoc_options = ["--charset=UTF-8"]
|
186
194
|
s.require_paths = ["lib"]
|
187
195
|
s.rubygems_version = %q{1.3.5}
|
188
|
-
s.summary = %q{Fast Gherkin lexer}
|
196
|
+
s.summary = %q{Fast Gherkin lexer/parser}
|
189
197
|
s.test_files = [
|
190
198
|
"spec/gherkin/c_lexer_spec.rb",
|
199
|
+
"spec/gherkin/i18n_lexer_spec.rb",
|
191
200
|
"spec/gherkin/i18n_spec.rb",
|
192
201
|
"spec/gherkin/java_lexer_spec.rb",
|
193
202
|
"spec/gherkin/parser_spec.rb",
|
@@ -205,18 +214,21 @@ Gem::Specification.new do |s|
|
|
205
214
|
s.specification_version = 3
|
206
215
|
|
207
216
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
208
|
-
s.
|
209
|
-
s.add_development_dependency(%q<
|
210
|
-
s.add_development_dependency(%q<
|
217
|
+
s.add_runtime_dependency(%q<trollop>, [">= 1.15"])
|
218
|
+
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
219
|
+
s.add_development_dependency(%q<cucumber>, [">= 0.5.1"])
|
220
|
+
s.add_development_dependency(%q<rake-compiler>, [">= 0.7.0"])
|
211
221
|
else
|
212
|
-
s.add_dependency(%q<
|
213
|
-
s.add_dependency(%q<
|
214
|
-
s.add_dependency(%q<
|
222
|
+
s.add_dependency(%q<trollop>, [">= 1.15"])
|
223
|
+
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
224
|
+
s.add_dependency(%q<cucumber>, [">= 0.5.1"])
|
225
|
+
s.add_dependency(%q<rake-compiler>, [">= 0.7.0"])
|
215
226
|
end
|
216
227
|
else
|
217
|
-
s.add_dependency(%q<
|
218
|
-
s.add_dependency(%q<
|
219
|
-
s.add_dependency(%q<
|
228
|
+
s.add_dependency(%q<trollop>, [">= 1.15"])
|
229
|
+
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
230
|
+
s.add_dependency(%q<cucumber>, [">= 0.5.1"])
|
231
|
+
s.add_dependency(%q<rake-compiler>, [">= 0.7.0"])
|
220
232
|
end
|
221
233
|
end
|
222
234
|
|
@@ -7,7 +7,7 @@ import java.util.List;
|
|
7
7
|
|
8
8
|
public class FixJava {
|
9
9
|
public static String join(List<String> strings, String separator) {
|
10
|
-
|
10
|
+
StringBuilder sb = new StringBuilder();
|
11
11
|
int i = 0;
|
12
12
|
for (String s : strings) {
|
13
13
|
if (i != 0) sb.append(separator);
|
@@ -21,14 +21,14 @@ public class FixJava {
|
|
21
21
|
Reader machine = new InputStreamReader(FixJava.class.getResourceAsStream(filePath));
|
22
22
|
|
23
23
|
final char[] buffer = new char[0x10000];
|
24
|
-
StringBuilder
|
24
|
+
StringBuilder sb = new StringBuilder();
|
25
25
|
int read;
|
26
26
|
do {
|
27
27
|
read = machine.read(buffer, 0, buffer.length);
|
28
28
|
if (read > 0) {
|
29
|
-
|
29
|
+
sb.append(buffer, 0, read);
|
30
30
|
}
|
31
31
|
} while (read >= 0);
|
32
|
-
return
|
32
|
+
return sb.toString();
|
33
33
|
}
|
34
34
|
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
begin
|
2
|
+
require 'trollop'
|
3
|
+
rescue LoadError
|
4
|
+
require 'rubygems'
|
5
|
+
require 'trollop'
|
6
|
+
end
|
7
|
+
require 'gherkin/tools'
|
8
|
+
|
9
|
+
module Gherkin
|
10
|
+
module Cli
|
11
|
+
class Main
|
12
|
+
def self.run(args)
|
13
|
+
Trollop::options(args) do
|
14
|
+
banner "Super fast gherkin parser"
|
15
|
+
stop_on Tools::SUB_COMMANDS
|
16
|
+
end
|
17
|
+
|
18
|
+
cmd_name = args.shift
|
19
|
+
begin
|
20
|
+
die("Missing command") if cmd_name.nil?
|
21
|
+
Tools.const_get(cmd_name.capitalize.to_sym).new(args).run
|
22
|
+
rescue NameError
|
23
|
+
die("Unknown command #{cmd_name}")
|
24
|
+
rescue => e
|
25
|
+
Trollop::die(e.message)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.die(msg)
|
30
|
+
Trollop::die("#{msg}\nusage: gherkin COMMAND [ARGS]\nAvailable commands: #{Tools::SUB_COMMANDS.join(' ')}")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/gherkin/i18n.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
1
3
|
module Gherkin
|
2
4
|
class I18n
|
3
5
|
KEYWORD_KEYS = %w{name native feature background scenario scenario_outline examples given when then and but}
|
@@ -18,12 +20,13 @@ module Gherkin
|
|
18
20
|
end
|
19
21
|
end
|
20
22
|
|
23
|
+
attr_reader :key
|
24
|
+
|
21
25
|
def initialize(key)
|
22
26
|
@key = key
|
23
27
|
@keywords = LANGUAGES[key]
|
24
28
|
raise "Language not supported: #{key.inspect}" if @key.nil?
|
25
29
|
@keywords['grammar_name'] = @keywords['name'].gsub(/\s/, '')
|
26
|
-
@parser = nil
|
27
30
|
end
|
28
31
|
|
29
32
|
def sanitized_key
|
@@ -71,6 +74,10 @@ module Gherkin
|
|
71
74
|
@keywords[key].split('|').map{|kw| space ? keyword_space(kw) : kw}
|
72
75
|
end
|
73
76
|
|
77
|
+
def adverbs
|
78
|
+
%w{given when then and but}.map{|keyword| @keywords[keyword].split('|').map{|w| w.gsub(/[\s<']/, '')}}.flatten
|
79
|
+
end
|
80
|
+
|
74
81
|
private
|
75
82
|
|
76
83
|
def keyword_space(val)
|
data/lib/gherkin/i18n.yml
CHANGED
@@ -14,13 +14,13 @@
|
|
14
14
|
scenario: Scenario
|
15
15
|
scenario_outline: Scenario Outline
|
16
16
|
examples: Examples|Scenarios
|
17
|
-
given: *|Given
|
18
|
-
when: *|When
|
19
|
-
then: *|Then
|
20
|
-
and: *|And
|
21
|
-
but: *|But
|
17
|
+
given: "*|Given"
|
18
|
+
when: "*|When"
|
19
|
+
then: "*|Then"
|
20
|
+
and: "*|And"
|
21
|
+
but: "*|But"
|
22
22
|
|
23
|
-
# Please help us keeping the languages below uptodate. The
|
23
|
+
# Please help us keeping the languages below uptodate. The parsers for a language
|
24
24
|
# that is missing a keyword will expect the English word until the missing word(s)
|
25
25
|
# are added.
|
26
26
|
#
|
@@ -34,11 +34,11 @@
|
|
34
34
|
scenario: سيناريو
|
35
35
|
scenario_outline: سيناريو مخطط
|
36
36
|
examples: امثلة
|
37
|
-
given: *|بفرض
|
38
|
-
when: *|متى|عندما
|
39
|
-
then: *|اذاً|ثم
|
40
|
-
and: *|و
|
41
|
-
but: *|لكن
|
37
|
+
given: "*|بفرض"
|
38
|
+
when: "*|متى|عندما"
|
39
|
+
then: "*|اذاً|ثم"
|
40
|
+
and: "*|و"
|
41
|
+
but: "*|لكن"
|
42
42
|
"bg":
|
43
43
|
name: Bulgarian
|
44
44
|
native: български
|
@@ -47,11 +47,11 @@
|
|
47
47
|
scenario: Сценарий
|
48
48
|
scenario_outline: Рамка на сценарий
|
49
49
|
examples: Примери
|
50
|
-
given: *|Дадено
|
51
|
-
when: *|Когато
|
52
|
-
then: *|То
|
53
|
-
and: *|И
|
54
|
-
but: *|Но
|
50
|
+
given: "*|Дадено"
|
51
|
+
when: "*|Когато"
|
52
|
+
then: "*|То"
|
53
|
+
and: "*|И"
|
54
|
+
but: "*|Но"
|
55
55
|
"cat":
|
56
56
|
name: Catalan
|
57
57
|
native: català
|
@@ -60,11 +60,11 @@
|
|
60
60
|
scenario: Escenari
|
61
61
|
scenario_outline: Esquema de l'escenari
|
62
62
|
examples: Exemples
|
63
|
-
given: *|Donat|Donada
|
64
|
-
when: *|Quan
|
65
|
-
then: *|Aleshores
|
66
|
-
and: *|I
|
67
|
-
but: *|Però
|
63
|
+
given: "*|Donat|Donada"
|
64
|
+
when: "*|Quan"
|
65
|
+
then: "*|Aleshores"
|
66
|
+
and: "*|I"
|
67
|
+
but: "*|Però"
|
68
68
|
"cy":
|
69
69
|
name: Welsh
|
70
70
|
native: Cymraeg
|
@@ -73,11 +73,11 @@
|
|
73
73
|
scenario: Scenario
|
74
74
|
scenario_outline: Scenario Amlinellol
|
75
75
|
examples: Enghreifftiau
|
76
|
-
given: *|anrhegedig a
|
77
|
-
when: *|Pryd
|
78
|
-
then: *|Yna
|
79
|
-
and: *|A
|
80
|
-
but: *|Ond
|
76
|
+
given: "*|anrhegedig a"
|
77
|
+
when: "*|Pryd"
|
78
|
+
then: "*|Yna"
|
79
|
+
and: "*|A"
|
80
|
+
but: "*|Ond"
|
81
81
|
"cs":
|
82
82
|
name: Czech
|
83
83
|
native: Česky
|
@@ -86,11 +86,11 @@
|
|
86
86
|
scenario: Scénář
|
87
87
|
scenario_outline: Náčrt Scénáře|Osnova scénáře
|
88
88
|
examples: Příklady
|
89
|
-
given: *|Pokud
|
90
|
-
when: *|Když
|
91
|
-
then: *|Pak
|
92
|
-
and: *|A|A také
|
93
|
-
but: *|Ale
|
89
|
+
given: "*|Pokud"
|
90
|
+
when: "*|Když"
|
91
|
+
then: "*|Pak"
|
92
|
+
and: "*|A|A také"
|
93
|
+
but: "*|Ale"
|
94
94
|
"da":
|
95
95
|
name: Danish
|
96
96
|
native: dansk
|
@@ -99,11 +99,11 @@
|
|
99
99
|
scenario: Scenarie
|
100
100
|
scenario_outline: Abstrakt Scenario
|
101
101
|
examples: Eksempler
|
102
|
-
given: *|Givet
|
103
|
-
when: *|Når
|
104
|
-
then: *|Så
|
105
|
-
and: *|Og
|
106
|
-
but: *|Men
|
102
|
+
given: "*|Givet"
|
103
|
+
when: "*|Når"
|
104
|
+
then: "*|Så"
|
105
|
+
and: "*|Og"
|
106
|
+
but: "*|Men"
|
107
107
|
"de":
|
108
108
|
name: German
|
109
109
|
native: Deutsch
|
@@ -112,11 +112,11 @@
|
|
112
112
|
scenario: Szenario
|
113
113
|
scenario_outline: Szenariogrundriss
|
114
114
|
examples: Beispiele
|
115
|
-
given: *|Gegeben sei
|
116
|
-
when: *|Wenn
|
117
|
-
then: *|Dann
|
118
|
-
and: *|Und
|
119
|
-
but: *|Aber
|
115
|
+
given: "*|Gegeben sei"
|
116
|
+
when: "*|Wenn"
|
117
|
+
then: "*|Dann"
|
118
|
+
and: "*|Und"
|
119
|
+
but: "*|Aber"
|
120
120
|
"en-au":
|
121
121
|
name: Australian
|
122
122
|
native: Australian
|
@@ -125,11 +125,11 @@
|
|
125
125
|
scenario: Mate
|
126
126
|
scenario_outline: Blokes
|
127
127
|
examples: Cobber
|
128
|
-
given: *|Ya know how
|
129
|
-
when: *|When
|
130
|
-
then: *|Ya gotta
|
131
|
-
and: *|N
|
132
|
-
but: *|Cept
|
128
|
+
given: "*|Ya know how"
|
129
|
+
when: "*|When"
|
130
|
+
then: "*|Ya gotta"
|
131
|
+
and: "*|N"
|
132
|
+
but: "*|Cept"
|
133
133
|
"en-lol":
|
134
134
|
name: LOLCAT
|
135
135
|
native: LOLCAT
|
@@ -138,11 +138,11 @@
|
|
138
138
|
scenario: MISHUN
|
139
139
|
scenario_outline: MISHUN SRSLY
|
140
140
|
examples: EXAMPLZ
|
141
|
-
given: *|I CAN HAZ
|
142
|
-
when: *|WEN
|
143
|
-
then: *|DEN
|
144
|
-
and: *|AN
|
145
|
-
but: *|BUT
|
141
|
+
given: "*|I CAN HAZ"
|
142
|
+
when: "*|WEN"
|
143
|
+
then: "*|DEN"
|
144
|
+
and: "*|AN"
|
145
|
+
but: "*|BUT"
|
146
146
|
"en-tx":
|
147
147
|
name: Texan
|
148
148
|
native: Texan
|
@@ -151,11 +151,11 @@
|
|
151
151
|
scenario: Scenario
|
152
152
|
scenario_outline: All y'all
|
153
153
|
examples: Examples
|
154
|
-
given: *|Given y'all
|
155
|
-
when: *|When y'all
|
156
|
-
then: *|Then y'all
|
157
|
-
and: *|And y'all
|
158
|
-
but: *|But y'all
|
154
|
+
given: "*|Given y'all"
|
155
|
+
when: "*|When y'all"
|
156
|
+
then: "*|Then y'all"
|
157
|
+
and: "*|And y'all"
|
158
|
+
but: "*|But y'all"
|
159
159
|
"es":
|
160
160
|
name: Spanish
|
161
161
|
native: español
|
@@ -164,11 +164,11 @@
|
|
164
164
|
scenario: Escenario
|
165
165
|
scenario_outline: Esquema del escenario
|
166
166
|
examples: Ejemplos
|
167
|
-
given: *|Dado
|
168
|
-
when: *|Cuando
|
169
|
-
then: *|Entonces
|
170
|
-
and: *|Y
|
171
|
-
but: *|Pero
|
167
|
+
given: "*|Dado"
|
168
|
+
when: "*|Cuando"
|
169
|
+
then: "*|Entonces"
|
170
|
+
and: "*|Y"
|
171
|
+
but: "*|Pero"
|
172
172
|
"et":
|
173
173
|
name: Estonian
|
174
174
|
native: eesti keel
|
@@ -177,11 +177,11 @@
|
|
177
177
|
scenario: Stsenaarium
|
178
178
|
scenario_outline: Raamstsenaarium
|
179
179
|
examples: Juhtumid
|
180
|
-
given: *|Eeldades
|
181
|
-
when: *|Kui
|
182
|
-
then: *|Siis
|
183
|
-
and: *|Ja
|
184
|
-
but: *|Kuid
|
180
|
+
given: "*|Eeldades"
|
181
|
+
when: "*|Kui"
|
182
|
+
then: "*|Siis"
|
183
|
+
and: "*|Ja"
|
184
|
+
but: "*|Kuid"
|
185
185
|
"fi":
|
186
186
|
name: Finnish
|
187
187
|
native: suomi
|
@@ -190,11 +190,11 @@
|
|
190
190
|
scenario: Tapaus
|
191
191
|
scenario_outline: Tapausaihio
|
192
192
|
examples: Tapaukset
|
193
|
-
given: *|Oletetaan
|
194
|
-
when: *|Kun
|
195
|
-
then: *|Niin
|
196
|
-
and: *|Ja
|
197
|
-
but: *|Mutta
|
193
|
+
given: "*|Oletetaan"
|
194
|
+
when: "*|Kun"
|
195
|
+
then: "*|Niin"
|
196
|
+
and: "*|Ja"
|
197
|
+
but: "*|Mutta"
|
198
198
|
"fr":
|
199
199
|
name: French
|
200
200
|
native: français
|
@@ -203,11 +203,11 @@
|
|
203
203
|
scenario: Scénario
|
204
204
|
scenario_outline: Plan du scénario|Plan du Scénario
|
205
205
|
examples: Exemples
|
206
|
-
given: *|Soit|Etant donné
|
207
|
-
when: *|Quand|Lorsque|Lorsqu'<
|
208
|
-
then: *|Alors
|
209
|
-
and: *|Et
|
210
|
-
but: *|Mais
|
206
|
+
given: "*|Soit|Etant donné"
|
207
|
+
when: "*|Quand|Lorsque|Lorsqu'<"
|
208
|
+
then: "*|Alors"
|
209
|
+
and: "*|Et"
|
210
|
+
but: "*|Mais"
|
211
211
|
"he":
|
212
212
|
name: Hebrew
|
213
213
|
native: עברית
|
@@ -216,11 +216,11 @@
|
|
216
216
|
scenario: תרחיש
|
217
217
|
scenario_outline: תבנית תרחיש
|
218
218
|
examples: דוגמאות
|
219
|
-
given: *|בהינתן
|
220
|
-
when: *|כאשר
|
221
|
-
then: *|אז|אזי
|
222
|
-
and: *|וגם
|
223
|
-
but: *|אבל
|
219
|
+
given: "*|בהינתן"
|
220
|
+
when: "*|כאשר"
|
221
|
+
then: "*|אז|אזי"
|
222
|
+
and: "*|וגם"
|
223
|
+
but: "*|אבל"
|
224
224
|
"hr":
|
225
225
|
name: Croatian
|
226
226
|
native: hrvatski
|
@@ -229,11 +229,11 @@
|
|
229
229
|
scenario: Scenarij
|
230
230
|
scenario_outline: Skica|Koncept
|
231
231
|
examples: Primjeri|Scenariji
|
232
|
-
given: *|Zadan|Zadani|Zadano
|
233
|
-
when: *|Kada|Kad
|
234
|
-
then: *|Onda
|
235
|
-
and: *|I
|
236
|
-
but: *|Ali
|
232
|
+
given: "*|Zadan|Zadani|Zadano"
|
233
|
+
when: "*|Kada|Kad"
|
234
|
+
then: "*|Onda"
|
235
|
+
and: "*|I"
|
236
|
+
but: "*|Ali"
|
237
237
|
"hu":
|
238
238
|
name: Hungarian
|
239
239
|
native: magyar
|
@@ -242,11 +242,11 @@
|
|
242
242
|
scenario: Forgatókönyv
|
243
243
|
scenario_outline: Forgatókönyv vázlat
|
244
244
|
examples: Példák
|
245
|
-
given: *|Ha
|
246
|
-
when: *|Majd
|
247
|
-
then: *|Akkor
|
248
|
-
and: *|És
|
249
|
-
but: *|De
|
245
|
+
given: "*|Ha"
|
246
|
+
when: "*|Majd"
|
247
|
+
then: "*|Akkor"
|
248
|
+
and: "*|És"
|
249
|
+
but: "*|De"
|
250
250
|
"id":
|
251
251
|
name: Indonesian
|
252
252
|
native: Bahasa Indonesia
|
@@ -255,11 +255,11 @@
|
|
255
255
|
scenario: Skenario
|
256
256
|
scenario_outline: Skenario konsep
|
257
257
|
examples: Contoh
|
258
|
-
given: *|Dengan
|
259
|
-
when: *|Ketika
|
260
|
-
then: *|Maka
|
261
|
-
and: *|Dan
|
262
|
-
but: *|Tapi
|
258
|
+
given: "*|Dengan"
|
259
|
+
when: "*|Ketika"
|
260
|
+
then: "*|Maka"
|
261
|
+
and: "*|Dan"
|
262
|
+
but: "*|Tapi"
|
263
263
|
"it":
|
264
264
|
name: Italian
|
265
265
|
native: italiano
|
@@ -268,11 +268,11 @@
|
|
268
268
|
scenario: Scenario
|
269
269
|
scenario_outline: Schema dello scenario
|
270
270
|
examples: Esempi
|
271
|
-
given: *|Dato
|
272
|
-
when: *|Quando
|
273
|
-
then: *|Allora
|
274
|
-
and: *|E
|
275
|
-
but: *|Ma
|
271
|
+
given: "*|Dato"
|
272
|
+
when: "*|Quando"
|
273
|
+
then: "*|Allora"
|
274
|
+
and: "*|E"
|
275
|
+
but: "*|Ma"
|
276
276
|
"ja":
|
277
277
|
name: Japanese
|
278
278
|
native: 日本語
|
@@ -281,11 +281,11 @@
|
|
281
281
|
scenario: シナリオ
|
282
282
|
scenario_outline: シナリオアウトライン|シナリオテンプレート|テンプレ|シナリオテンプレ
|
283
283
|
examples: 例|サンプル
|
284
|
-
given: *|前提<
|
285
|
-
when: *|もし<
|
286
|
-
then: *|ならば<
|
287
|
-
and: *|かつ<
|
288
|
-
but: *|しかし<|但し<|ただし<
|
284
|
+
given: "*|前提<"
|
285
|
+
when: "*|もし<"
|
286
|
+
then: "*|ならば<"
|
287
|
+
and: "*|かつ<"
|
288
|
+
but: "*|しかし<|但し<|ただし<"
|
289
289
|
"ko":
|
290
290
|
name: Korean
|
291
291
|
native: 한국어
|
@@ -294,11 +294,11 @@
|
|
294
294
|
scenario: 시나리오
|
295
295
|
scenario_outline: 시나리오 개요
|
296
296
|
examples: 예
|
297
|
-
given: *|조건<
|
298
|
-
when: *|만일<
|
299
|
-
then: *|그러면<
|
300
|
-
and: *|그리고<
|
301
|
-
but: *|하지만<
|
297
|
+
given: "*|조건<"
|
298
|
+
when: "*|만일<"
|
299
|
+
then: "*|그러면<"
|
300
|
+
and: "*|그리고<"
|
301
|
+
but: "*|하지만<"
|
302
302
|
"lt":
|
303
303
|
name: Lithuanian
|
304
304
|
native: lietuvių kalba
|
@@ -307,11 +307,11 @@
|
|
307
307
|
scenario: Scenarijus
|
308
308
|
scenario_outline: Scenarijaus šablonas
|
309
309
|
examples: Pavyzdžiai|Scenarijai|Variantai
|
310
|
-
given: *|Duota
|
311
|
-
when: *|Kai
|
312
|
-
then: *|Tada
|
313
|
-
and: *|Ir
|
314
|
-
but: *|Bet
|
310
|
+
given: "*|Duota"
|
311
|
+
when: "*|Kai"
|
312
|
+
then: "*|Tada"
|
313
|
+
and: "*|Ir"
|
314
|
+
but: "*|Bet"
|
315
315
|
"lv":
|
316
316
|
name: Latvian
|
317
317
|
native: latviešu
|
@@ -320,11 +320,11 @@
|
|
320
320
|
scenario: Scenārijs
|
321
321
|
scenario_outline: Scenārijs pēc parauga
|
322
322
|
examples: Piemēri|Paraugs
|
323
|
-
given: *|Kad
|
324
|
-
when: *|Ja
|
325
|
-
then: *|Tad
|
326
|
-
and: *|Un
|
327
|
-
but: *|Bet
|
323
|
+
given: "*|Kad"
|
324
|
+
when: "*|Ja"
|
325
|
+
then: "*|Tad"
|
326
|
+
and: "*|Un"
|
327
|
+
but: "*|Bet"
|
328
328
|
"nl":
|
329
329
|
name: Dutch
|
330
330
|
native: Nederlands
|
@@ -333,11 +333,11 @@
|
|
333
333
|
scenario: Scenario
|
334
334
|
scenario_outline: Abstract Scenario
|
335
335
|
examples: Voorbeelden
|
336
|
-
given: *|Gegeven
|
337
|
-
when: *|Als
|
338
|
-
then: *|Dan
|
339
|
-
and: *|En
|
340
|
-
but: *|Maar
|
336
|
+
given: "*|Gegeven|Stel"
|
337
|
+
when: "*|Als"
|
338
|
+
then: "*|Dan"
|
339
|
+
and: "*|En"
|
340
|
+
but: "*|Maar"
|
341
341
|
"no":
|
342
342
|
name: Norwegian
|
343
343
|
native: norsk
|
@@ -346,11 +346,11 @@
|
|
346
346
|
scenario: Scenario
|
347
347
|
scenario_outline: Abstrakt Scenario
|
348
348
|
examples: Eksempler
|
349
|
-
given: *|Gitt
|
350
|
-
when: *|Når
|
351
|
-
then: *|Så
|
352
|
-
and: *|Og
|
353
|
-
but: *|Men
|
349
|
+
given: "*|Gitt"
|
350
|
+
when: "*|Når"
|
351
|
+
then: "*|Så"
|
352
|
+
and: "*|Og"
|
353
|
+
but: "*|Men"
|
354
354
|
"pl":
|
355
355
|
name: Polish
|
356
356
|
native: polski
|
@@ -359,11 +359,11 @@
|
|
359
359
|
scenario: Scenariusz
|
360
360
|
scenario_outline: Szablon scenariusza
|
361
361
|
examples: Przykłady
|
362
|
-
given: *|Zakładając
|
363
|
-
when: *|Jeżeli
|
364
|
-
then: *|Wtedy
|
365
|
-
and: *|Oraz
|
366
|
-
but: *|Ale
|
362
|
+
given: "*|Zakładając"
|
363
|
+
when: "*|Jeżeli"
|
364
|
+
then: "*|Wtedy"
|
365
|
+
and: "*|Oraz"
|
366
|
+
but: "*|Ale"
|
367
367
|
"pt":
|
368
368
|
name: Portuguese
|
369
369
|
native: português
|
@@ -372,11 +372,11 @@
|
|
372
372
|
scenario: Cenário|Cenario
|
373
373
|
scenario_outline: Esquema do Cenário|Esquema do Cenario
|
374
374
|
examples: Exemplos
|
375
|
-
given: *|Dado
|
376
|
-
when: *|Quando
|
377
|
-
then: *|Então|Entao
|
378
|
-
and: *|E
|
379
|
-
but: *|Mas
|
375
|
+
given: "*|Dado"
|
376
|
+
when: "*|Quando"
|
377
|
+
then: "*|Então|Entao"
|
378
|
+
and: "*|E"
|
379
|
+
but: "*|Mas"
|
380
380
|
"ro":
|
381
381
|
name: Romanian
|
382
382
|
native: română
|
@@ -385,11 +385,11 @@
|
|
385
385
|
scenario: Scenariu
|
386
386
|
scenario_outline: Scenariul de sablon
|
387
387
|
examples: Exemplele
|
388
|
-
given: *|Daca
|
389
|
-
when: *|Cand
|
390
|
-
then: *|Atunci
|
391
|
-
and: *|Si
|
392
|
-
but: *|Dar
|
388
|
+
given: "*|Daca"
|
389
|
+
when: "*|Cand"
|
390
|
+
then: "*|Atunci"
|
391
|
+
and: "*|Si"
|
392
|
+
but: "*|Dar"
|
393
393
|
"ro2":
|
394
394
|
name: Romanian (diacritical)
|
395
395
|
native: română (diacritical)
|
@@ -398,11 +398,11 @@
|
|
398
398
|
scenario: Scenariu
|
399
399
|
scenario_outline: Scenariul de şablon
|
400
400
|
examples: Exemplele
|
401
|
-
given: *|Dacă
|
402
|
-
when: *|Când
|
403
|
-
then: *|Atunci
|
404
|
-
and: *|Și
|
405
|
-
but: *|Dar
|
401
|
+
given: "*|Dacă"
|
402
|
+
when: "*|Când"
|
403
|
+
then: "*|Atunci"
|
404
|
+
and: "*|Și"
|
405
|
+
but: "*|Dar"
|
406
406
|
"ru":
|
407
407
|
name: Russian
|
408
408
|
native: русский
|
@@ -411,11 +411,11 @@
|
|
411
411
|
scenario: Сценарий
|
412
412
|
scenario_outline: Структура сценария
|
413
413
|
examples: Значения
|
414
|
-
given: *|Допустим
|
415
|
-
when: *|Если
|
416
|
-
then: *|То
|
417
|
-
and: *|И|К тому же
|
418
|
-
but: *|Но|А
|
414
|
+
given: "*|Допустим"
|
415
|
+
when: "*|Если"
|
416
|
+
then: "*|То"
|
417
|
+
and: "*|И|К тому же"
|
418
|
+
but: "*|Но|А"
|
419
419
|
"se":
|
420
420
|
name: Swedish
|
421
421
|
native: Svenska
|
@@ -424,11 +424,11 @@
|
|
424
424
|
scenario: Scenario
|
425
425
|
scenario_outline: Abstrakt Scenario
|
426
426
|
examples: Exempel
|
427
|
-
given: *|Givet
|
428
|
-
when: *|När
|
429
|
-
then: *|Så
|
430
|
-
and: *|Och
|
431
|
-
but: *|Men
|
427
|
+
given: "*|Givet"
|
428
|
+
when: "*|När"
|
429
|
+
then: "*|Så"
|
430
|
+
and: "*|Och"
|
431
|
+
but: "*|Men"
|
432
432
|
"sk":
|
433
433
|
name: Slovak
|
434
434
|
native: Slovensky
|
@@ -437,11 +437,11 @@
|
|
437
437
|
scenario: Scenár
|
438
438
|
scenario_outline: Náčrt Scenáru
|
439
439
|
examples: Príklady
|
440
|
-
given: *|Pokiaľ
|
441
|
-
when: *|Keď
|
442
|
-
then: *|Tak
|
443
|
-
and: *|A
|
444
|
-
but: *|Ale
|
440
|
+
given: "*|Pokiaľ"
|
441
|
+
when: "*|Keď"
|
442
|
+
then: "*|Tak"
|
443
|
+
and: "*|A"
|
444
|
+
but: "*|Ale"
|
445
445
|
"sr-Latn":
|
446
446
|
name: Serbian_latin
|
447
447
|
native: Srpski_latinica
|
@@ -450,11 +450,11 @@
|
|
450
450
|
scenario: Scenario|Primer
|
451
451
|
scenario_outline: Struktura scenarija|Skica|Koncept
|
452
452
|
examples: Primeri|Scenariji
|
453
|
-
given: *|Zadato|Zadate|Zatati
|
454
|
-
when: *|Kada|Kad
|
455
|
-
then: *|Onda
|
456
|
-
and: *|I
|
457
|
-
but: *|Ali
|
453
|
+
given: "*|Zadato|Zadate|Zatati"
|
454
|
+
when: "*|Kada|Kad"
|
455
|
+
then: "*|Onda"
|
456
|
+
and: "*|I"
|
457
|
+
but: "*|Ali"
|
458
458
|
"sr":
|
459
459
|
name: Serbian
|
460
460
|
native: Српски
|
@@ -463,11 +463,11 @@
|
|
463
463
|
scenario: Сценарио|Пример
|
464
464
|
scenario_outline: Структура сценарија|Скица|Концепт
|
465
465
|
examples: Примери|Сценарији
|
466
|
-
given: *|Задато|Задате|Задати
|
467
|
-
when: *|Када|Кад
|
468
|
-
then: *|Онда
|
469
|
-
and: *|И
|
470
|
-
but: *|Али
|
466
|
+
given: "*|Задато|Задате|Задати"
|
467
|
+
when: "*|Када|Кад"
|
468
|
+
then: "*|Онда"
|
469
|
+
and: "*|И"
|
470
|
+
but: "*|Али"
|
471
471
|
"tr":
|
472
472
|
name: Turkish
|
473
473
|
native: Türkçe
|
@@ -476,11 +476,11 @@
|
|
476
476
|
scenario: Senaryo
|
477
477
|
scenario_outline: Senaryo taslağı
|
478
478
|
examples: Örnekler
|
479
|
-
given: *|Diyelim ki
|
480
|
-
when: *|Eğer ki
|
481
|
-
then: *|O zaman
|
482
|
-
and: *|Ve
|
483
|
-
but: *|Fakat|Ama
|
479
|
+
given: "*|Diyelim ki"
|
480
|
+
when: "*|Eğer ki"
|
481
|
+
then: "*|O zaman"
|
482
|
+
and: "*|Ve"
|
483
|
+
but: "*|Fakat|Ama"
|
484
484
|
"uz":
|
485
485
|
name: Uzbek
|
486
486
|
native: Узбекча
|
@@ -489,11 +489,11 @@
|
|
489
489
|
scenario: Сценарий
|
490
490
|
scenario_outline: Сценарий структураси
|
491
491
|
examples: Мисоллар
|
492
|
-
given: *|Агар
|
493
|
-
when: *|Агар
|
494
|
-
then: *|Унда
|
495
|
-
and: *|Ва
|
496
|
-
but: *|Лекин|Бирок|Аммо
|
492
|
+
given: "*|Агар"
|
493
|
+
when: "*|Агар"
|
494
|
+
then: "*|Унда"
|
495
|
+
and: "*|Ва"
|
496
|
+
but: "*|Лекин|Бирок|Аммо"
|
497
497
|
"vi":
|
498
498
|
name: Vietnamese
|
499
499
|
native: Tiếng Việt
|
@@ -502,11 +502,11 @@
|
|
502
502
|
scenario: Tình huống|Kịch bản
|
503
503
|
scenario_outline: Khung tình huống|Khung kịch bản
|
504
504
|
examples: Dữ liệu
|
505
|
-
given: *|Biết|Cho
|
506
|
-
when: *|Khi
|
507
|
-
then: *|Thì
|
508
|
-
and: *|Và
|
509
|
-
but: *|Nhưng
|
505
|
+
given: "*|Biết|Cho"
|
506
|
+
when: "*|Khi"
|
507
|
+
then: "*|Thì"
|
508
|
+
and: "*|Và"
|
509
|
+
but: "*|Nhưng"
|
510
510
|
"zh-CN":
|
511
511
|
name: Chinese simplified
|
512
512
|
native: 简体中文
|
@@ -515,11 +515,11 @@
|
|
515
515
|
scenario: 场景
|
516
516
|
scenario_outline: 场景大纲
|
517
517
|
examples: 例子
|
518
|
-
given: *|假如<
|
519
|
-
when: *|当<
|
520
|
-
then: *|那么<
|
521
|
-
and: *|而且<
|
522
|
-
but: *|但是<
|
518
|
+
given: "*|假如<"
|
519
|
+
when: "*|当<"
|
520
|
+
then: "*|那么<"
|
521
|
+
and: "*|而且<"
|
522
|
+
but: "*|但是<"
|
523
523
|
"zh-TW":
|
524
524
|
name: Chinese traditional
|
525
525
|
native: 繁體中文
|
@@ -528,8 +528,8 @@
|
|
528
528
|
scenario: 場景|劇本
|
529
529
|
scenario_outline: 場景大綱|劇本大綱
|
530
530
|
examples: 例子
|
531
|
-
given: *|假設<
|
532
|
-
when: *|當<
|
533
|
-
then: *|那麼<
|
534
|
-
and: *|而且<|並且<
|
535
|
-
but: *|但是<
|
531
|
+
given: "*|假設<"
|
532
|
+
when: "*|當<"
|
533
|
+
then: "*|那麼<"
|
534
|
+
and: "*|而且<|並且<"
|
535
|
+
but: "*|但是<"
|