cucumber 0.4.4 → 0.4.5.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +2 -1
- data/Caliper.yml +5 -0
- data/History.txt +24 -1
- data/Rakefile +1 -1
- data/VERSION.yml +2 -2
- data/cucumber.gemspec +18 -27
- data/cucumber.yml +10 -4
- data/examples/i18n/README.textile +1 -1
- data/examples/i18n/bg/features/consecutive_calculations.feature +1 -1
- data/examples/i18n/bg/features/division.feature +1 -1
- data/examples/i18n/en-lol/Rakefile +1 -3
- data/examples/i18n/en/features/division.feature +4 -4
- data/examples/i18n/et/features/jagamine.feature +1 -1
- data/examples/i18n/fr/features/addition2.feature +17 -0
- data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +13 -0
- data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +3 -3
- data/examples/i18n/lt/features/addition.feature +2 -2
- data/examples/i18n/lt/features/division.feature +1 -1
- data/examples/i18n/zh-CN/Rakefile +1 -3
- data/examples/i18n/zh-TW/Rakefile +1 -3
- data/examples/tcl/README.textile +11 -0
- data/examples/tcl/Rakefile +6 -0
- data/examples/tcl/features/fibonnacci.feature +17 -0
- data/examples/tcl/features/step_definitions/fib_steps.rb +7 -0
- data/examples/tcl/features/support/env.rb +6 -0
- data/examples/tcl/src/fib.tcl +3 -0
- data/examples/tickets/features/177/1.feature +3 -4
- data/examples/tickets/features/177/2.feature +2 -3
- data/examples/tickets/features/241.feature +2 -3
- data/examples/tickets/features/301/filter_background_tagged_hooks.feature +1 -1
- data/features/cucumber_cli.feature +4 -2
- data/features/custom_formatter.feature +32 -31
- data/features/html_formatter/a.html +319 -102
- data/features/language_help.feature +12 -14
- data/features/support/env.rb +1 -1
- data/features/transform.feature +17 -3
- data/gem_tasks/features.rake +3 -1
- data/lib/cucumber/ast/scenario_outline.rb +1 -1
- data/lib/cucumber/ast/step_invocation.rb +2 -2
- data/lib/cucumber/cli/configuration.rb +2 -17
- data/lib/cucumber/cli/language_help_formatter.rb +1 -1
- data/lib/cucumber/cli/options.rb +5 -4
- data/lib/cucumber/formatter/cucumber.css +198 -82
- data/lib/cucumber/formatter/cucumber.sass +173 -71
- data/lib/cucumber/formatter/html.rb +371 -195
- data/lib/cucumber/formatter/io.rb +33 -0
- data/lib/cucumber/formatter/junit.rb +16 -7
- data/lib/cucumber/formatter/pdf.rb +5 -5
- data/lib/cucumber/formatter/pretty.rb +6 -8
- data/lib/cucumber/formatter/progress.rb +4 -2
- data/lib/cucumber/formatter/rerun.rb +4 -2
- data/lib/cucumber/formatter/steps.rb +2 -2
- data/lib/cucumber/formatter/tag_cloud.rb +6 -2
- data/lib/cucumber/formatter/usage.rb +2 -2
- data/lib/cucumber/languages.yml +205 -281
- data/lib/cucumber/parser/feature.rb +348 -82
- data/lib/cucumber/parser/feature.tt +47 -11
- data/lib/cucumber/parser/i18n.tt +7 -17
- data/lib/cucumber/parser/natural_language.rb +45 -18
- data/lib/cucumber/rb_support/rb_transform.rb +1 -1
- data/lib/cucumber/step_mother.rb +2 -3
- data/lib/cucumber/webrat/element_locator.rb +9 -5
- data/spec/cucumber/cli/options_spec.rb +0 -3
- data/spec/cucumber/formatter/html_spec.rb +15 -2
- data/spec/cucumber/formatter/junit_spec.rb +3 -0
- data/spec/cucumber/treetop_parser/fit_scenario.feature +2 -2
- data/spec/cucumber/treetop_parser/given_scenario.feature +1 -1
- data/spec/cucumber/treetop_parser/multiple_tables.feature +2 -2
- data/spec/cucumber/treetop_parser/test_dos.feature +1 -1
- metadata +17 -26
- data/Manifest.txt +0 -0
- data/lib/cucumber/rails/action_controller.rb +0 -38
- data/lib/cucumber/rails/active_record.rb +0 -30
- data/lib/cucumber/rails/rspec.rb +0 -10
- data/lib/cucumber/rails/test_unit.rb +0 -9
- data/lib/cucumber/rails/world.rb +0 -30
- data/rails_generators/cucumber/USAGE +0 -11
- data/rails_generators/cucumber/cucumber_generator.rb +0 -117
- data/rails_generators/cucumber/templates/cucumber +0 -17
- data/rails_generators/cucumber/templates/cucumber.rake +0 -46
- data/rails_generators/cucumber/templates/cucumber_environment.rb +0 -30
- data/rails_generators/cucumber/templates/env.rb +0 -49
- data/rails_generators/cucumber/templates/paths.rb +0 -27
- data/rails_generators/cucumber/templates/spork_env.rb +0 -57
- data/rails_generators/cucumber/templates/version_check.rb +0 -31
- data/rails_generators/cucumber/templates/webrat_steps.rb +0 -241
- data/rails_generators/feature/USAGE +0 -12
- data/rails_generators/feature/feature_generator.rb +0 -40
- data/rails_generators/feature/templates/feature.erb +0 -31
- data/rails_generators/feature/templates/steps.erb +0 -14
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'cucumber/formatter/color_io'
|
2
|
+
|
3
|
+
module Cucumber
|
4
|
+
module Formatter
|
5
|
+
module Io
|
6
|
+
def ensure_io(path_or_io, name)
|
7
|
+
return nil if path_or_io.nil?
|
8
|
+
return path_or_io if ColorIO === path_or_io || path_or_io.respond_to?(:write)
|
9
|
+
file = File.open(path_or_io, Cucumber.file_mode('w'))
|
10
|
+
at_exit do
|
11
|
+
unless file.closed?
|
12
|
+
file.flush
|
13
|
+
file.close
|
14
|
+
end
|
15
|
+
end
|
16
|
+
file
|
17
|
+
end
|
18
|
+
|
19
|
+
def ensure_file(path, name)
|
20
|
+
raise "You *must* specify --out FILE for the #{name} formatter" unless String === path
|
21
|
+
raise "I can't write #{name} to a directory - it has to be a file" if File.directory?(path)
|
22
|
+
ensure_io(path, name)
|
23
|
+
end
|
24
|
+
|
25
|
+
def ensure_dir(path, name)
|
26
|
+
raise "You *must* specify --out DIR for the #{name} formatter" unless String === path
|
27
|
+
raise "I can't write #{name} reports to a file - it has to be a directory" if File.file?(path)
|
28
|
+
FileUtils.mkdir_p(path) unless File.directory?(path)
|
29
|
+
path
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -1,9 +1,13 @@
|
|
1
1
|
require 'cucumber/formatter/ordered_xml_markup'
|
2
|
+
require 'cucumber/formatter/io'
|
3
|
+
require 'fileutils'
|
2
4
|
|
3
5
|
module Cucumber
|
4
6
|
module Formatter
|
5
7
|
# The formatter used for <tt>--format junit</tt>
|
6
8
|
class Junit
|
9
|
+
include Io
|
10
|
+
|
7
11
|
class UnNamedFeatureError < StandardError
|
8
12
|
def initialize(feature_file)
|
9
13
|
super("The feature in '#{feature_file}' does not have a name. The JUnit XML format requires a name for the testsuite element.")
|
@@ -11,8 +15,7 @@ module Cucumber
|
|
11
15
|
end
|
12
16
|
|
13
17
|
def initialize(step_mother, io, options)
|
14
|
-
|
15
|
-
@reportdir = io
|
18
|
+
@reportdir = ensure_dir(io, "junit")
|
16
19
|
@options = options
|
17
20
|
end
|
18
21
|
|
@@ -56,8 +59,9 @@ module Cucumber
|
|
56
59
|
scenario_name = name.strip.delete(".\r\n")
|
57
60
|
scenario_name = "Unnamed scenario" if name.blank?
|
58
61
|
@scenario = scenario_name
|
59
|
-
|
60
|
-
|
62
|
+
description = "Scenario"
|
63
|
+
description << " outline" if keyword.include?('Scenario Outline')
|
64
|
+
@output = "#{description}: #{@scenario}\n\n"
|
61
65
|
end
|
62
66
|
|
63
67
|
def before_steps(steps)
|
@@ -65,7 +69,7 @@ module Cucumber
|
|
65
69
|
end
|
66
70
|
|
67
71
|
def after_steps(steps)
|
68
|
-
return if @in_background || @
|
72
|
+
return if @in_background || @in_examples
|
69
73
|
|
70
74
|
duration = Time.now - @steps_start
|
71
75
|
if steps.failed?
|
@@ -77,16 +81,21 @@ module Cucumber
|
|
77
81
|
|
78
82
|
def before_examples(*args)
|
79
83
|
@header_row = true
|
84
|
+
@in_examples = true
|
85
|
+
end
|
86
|
+
|
87
|
+
def after_examples(*args)
|
88
|
+
@in_examples = false
|
80
89
|
end
|
81
90
|
|
82
91
|
def before_table_row(table_row)
|
83
|
-
return unless @
|
92
|
+
return unless @in_examples
|
84
93
|
|
85
94
|
@table_start = Time.now
|
86
95
|
end
|
87
96
|
|
88
97
|
def after_table_row(table_row)
|
89
|
-
return unless @
|
98
|
+
return unless @in_examples
|
90
99
|
duration = Time.now - @table_start
|
91
100
|
unless @header_row
|
92
101
|
name_suffix = " (outline example : #{table_row.name})"
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'cucumber/formatter/console'
|
2
|
+
require 'cucumber/formatter/io'
|
2
3
|
require 'fileutils'
|
3
4
|
require 'prawn'
|
4
5
|
require "prawn/layout"
|
@@ -13,11 +14,12 @@ module Cucumber
|
|
13
14
|
class Pdf
|
14
15
|
include FileUtils
|
15
16
|
include Console
|
17
|
+
include Io
|
16
18
|
attr_writer :indent
|
17
19
|
|
18
|
-
def initialize(step_mother,
|
20
|
+
def initialize(step_mother, path_or_io, options)
|
19
21
|
@step_mother = step_mother
|
20
|
-
|
22
|
+
@file = ensure_file(path_or_io, "pdf")
|
21
23
|
|
22
24
|
if(options[:dry_run])
|
23
25
|
@status_colors = { :passed => BLACK, :skipped => BLACK, :undefined => BLACK, :failed => BLACK}
|
@@ -28,12 +30,10 @@ module Cucumber
|
|
28
30
|
@pdf = Prawn::Document.new
|
29
31
|
@scrap = Prawn::Document.new
|
30
32
|
@doc = @scrap
|
31
|
-
@io = io
|
32
33
|
@options = options
|
33
34
|
@exceptions = []
|
34
35
|
@indent = 0
|
35
36
|
@buffer = []
|
36
|
-
puts "writing to #{io.path}"
|
37
37
|
load_cover_page_image
|
38
38
|
@pdf.text "\n\n\nCucumber features", :align => :center, :size => 32
|
39
39
|
@pdf.text "Generated: #{Time.now.strftime("%Y-%m-%d %H:%M")}", :size => 10, :at => [0, 24]
|
@@ -66,7 +66,7 @@ module Cucumber
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def after_features(features)
|
69
|
-
@pdf.render_file(@
|
69
|
+
@pdf.render_file(@file.path)
|
70
70
|
puts "\ndone"
|
71
71
|
end
|
72
72
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'cucumber/formatter/console'
|
2
|
+
require 'cucumber/formatter/io'
|
2
3
|
require 'fileutils'
|
3
4
|
|
4
5
|
module Cucumber
|
@@ -13,11 +14,12 @@ module Cucumber
|
|
13
14
|
class Pretty
|
14
15
|
include FileUtils
|
15
16
|
include Console
|
17
|
+
include Io
|
16
18
|
attr_writer :indent
|
17
19
|
attr_reader :step_mother
|
18
20
|
|
19
|
-
def initialize(step_mother,
|
20
|
-
@step_mother, @io, @options = step_mother,
|
21
|
+
def initialize(step_mother, path_or_io, options)
|
22
|
+
@step_mother, @io, @options = step_mother, ensure_io(path_or_io, "pretty"), options
|
21
23
|
@exceptions = []
|
22
24
|
@indent = 0
|
23
25
|
@prefixes = options[:prefixes] || {}
|
@@ -35,14 +37,10 @@ module Cucumber
|
|
35
37
|
file = File.join(@options[:autoformat], feature.file)
|
36
38
|
dir = File.dirname(file)
|
37
39
|
mkdir_p(dir) unless File.directory?(dir)
|
38
|
-
@io =
|
40
|
+
@io = ensure_file(file, "pretty")
|
39
41
|
end
|
40
42
|
end
|
41
43
|
|
42
|
-
def after_feature(*args)
|
43
|
-
@io.close if @options[:autoformat]
|
44
|
-
end
|
45
|
-
|
46
44
|
def comment_line(comment_line)
|
47
45
|
@io.puts(comment_line.indent(@indent))
|
48
46
|
@io.flush
|
@@ -188,7 +186,7 @@ module Cucumber
|
|
188
186
|
print_table_row_announcements
|
189
187
|
@io.puts
|
190
188
|
if table_row.exception && !@exceptions.include?(table_row.exception)
|
191
|
-
print_exception(table_row.exception,
|
189
|
+
print_exception(table_row.exception, table_row.status, @indent)
|
192
190
|
end
|
193
191
|
end
|
194
192
|
|
@@ -1,14 +1,16 @@
|
|
1
1
|
require 'cucumber/formatter/console'
|
2
|
+
require 'cucumber/formatter/io'
|
2
3
|
|
3
4
|
module Cucumber
|
4
5
|
module Formatter
|
5
6
|
# The formatter used for <tt>--format progress</tt>
|
6
7
|
class Progress
|
7
8
|
include Console
|
9
|
+
include Io
|
8
10
|
attr_reader :step_mother
|
9
11
|
|
10
|
-
def initialize(step_mother,
|
11
|
-
@step_mother, @io, @options = step_mother,
|
12
|
+
def initialize(step_mother, path_or_io, options)
|
13
|
+
@step_mother, @io, @options = step_mother, ensure_io(path_or_io, "progress"), options
|
12
14
|
end
|
13
15
|
|
14
16
|
def after_features(features)
|
@@ -11,8 +11,10 @@ module Cucumber
|
|
11
11
|
# to run the next time, simply passing the output string on the command line.
|
12
12
|
#
|
13
13
|
class Rerun
|
14
|
-
|
15
|
-
|
14
|
+
include Io
|
15
|
+
|
16
|
+
def initialize(step_mother, path_or_io, options)
|
17
|
+
@io = ensure_io(path_or_io, "rerun")
|
16
18
|
@options = options
|
17
19
|
@file_names = []
|
18
20
|
@file_colon_lines = Hash.new{|h,k| h[k] = []}
|
@@ -3,8 +3,8 @@ module Cucumber
|
|
3
3
|
# The formatter used for <tt>--format steps</tt>
|
4
4
|
class Steps
|
5
5
|
|
6
|
-
def initialize(step_mother,
|
7
|
-
@io =
|
6
|
+
def initialize(step_mother, path_or_io, options)
|
7
|
+
@io = ensure_io(path_or_io, "steps")
|
8
8
|
@options = options
|
9
9
|
@step_definition_files = collect_steps(step_mother)
|
10
10
|
end
|
@@ -1,10 +1,14 @@
|
|
1
|
+
require 'cucumber/formatter/io'
|
2
|
+
|
1
3
|
module Cucumber
|
2
4
|
module Formatter
|
3
5
|
# The formatter used for <tt>--format tag_cloud</tt>
|
4
6
|
# Custom formatter that prints a tag cloud as a table.
|
5
7
|
class TagCloud
|
6
|
-
|
7
|
-
|
8
|
+
include Io
|
9
|
+
|
10
|
+
def initialize(step_mother, path_or_io, options)
|
11
|
+
@io = ensure_io(path_or_io, "tag_cloud")
|
8
12
|
@options = options
|
9
13
|
@counts = Hash.new{|h,k| h[k] = 0}
|
10
14
|
end
|
@@ -10,9 +10,9 @@ module Cucumber
|
|
10
10
|
attr_accessor :mean_duration, :status
|
11
11
|
end
|
12
12
|
|
13
|
-
def initialize(step_mother,
|
13
|
+
def initialize(step_mother, path_or_io, options)
|
14
14
|
@step_mother = step_mother
|
15
|
-
@io =
|
15
|
+
@io = ensure_io(path_or_io, "usage")
|
16
16
|
@options = options
|
17
17
|
@stepdef_to_match = Hash.new{|h,stepdef_key| h[stepdef_key] = []}
|
18
18
|
end
|
data/lib/cucumber/languages.yml
CHANGED
@@ -9,18 +9,16 @@
|
|
9
9
|
"en":
|
10
10
|
name: English
|
11
11
|
native: English
|
12
|
-
encoding: UTF-8
|
13
12
|
feature: Feature
|
14
13
|
background: Background
|
15
14
|
scenario: Scenario
|
16
15
|
scenario_outline: Scenario Outline
|
17
16
|
examples: Examples|Scenarios
|
18
|
-
given: Given
|
19
|
-
when: When
|
20
|
-
then: Then
|
21
|
-
and: And
|
22
|
-
but: But
|
23
|
-
space_after_keyword: true
|
17
|
+
given: *|Given
|
18
|
+
when: *|When
|
19
|
+
then: *|Then
|
20
|
+
and: *|And
|
21
|
+
but: *|But
|
24
22
|
|
25
23
|
# Please help us keeping the languages below uptodate. The parsers for a language
|
26
24
|
# that is missing a keyword will expect the English word until the missing word(s)
|
@@ -31,581 +29,507 @@
|
|
31
29
|
"ar":
|
32
30
|
name: Arabic
|
33
31
|
native: العربية
|
34
|
-
encoding: UTF-8
|
35
32
|
feature: خاصية
|
36
33
|
background: الخلفية
|
37
34
|
scenario: سيناريو
|
38
35
|
scenario_outline: سيناريو مخطط
|
39
36
|
examples: امثلة
|
40
|
-
given:
|
41
|
-
when:
|
42
|
-
then:
|
43
|
-
and:
|
44
|
-
but:
|
45
|
-
space_after_keyword: true
|
37
|
+
given: *|بفرض
|
38
|
+
when: *|متى|عندما
|
39
|
+
then: *|اذاً|ثم
|
40
|
+
and: *|و
|
41
|
+
but: *|لكن
|
46
42
|
"bg":
|
47
43
|
name: Bulgarian
|
48
44
|
native: български
|
49
|
-
encoding: UTF-8
|
50
45
|
feature: Функционалност
|
51
46
|
background: Предистория
|
52
47
|
scenario: Сценарий
|
53
48
|
scenario_outline: Рамка на сценарий
|
54
49
|
examples: Примери
|
55
|
-
given:
|
56
|
-
when:
|
57
|
-
then:
|
58
|
-
and:
|
59
|
-
but:
|
60
|
-
space_after_keyword: true
|
50
|
+
given: *|Дадено
|
51
|
+
when: *|Когато
|
52
|
+
then: *|То
|
53
|
+
and: *|И
|
54
|
+
but: *|Но
|
61
55
|
"cat":
|
62
56
|
name: Catalan
|
63
57
|
native: català
|
64
|
-
encoding: UTF-8
|
65
58
|
background: Rerefons|Antecedents
|
66
59
|
feature: Característica
|
67
60
|
scenario: Escenari
|
68
|
-
scenario_outline: Esquema de l
|
61
|
+
scenario_outline: Esquema de l'escenari
|
69
62
|
examples: Exemples
|
70
|
-
given: Donat|Donada
|
71
|
-
when: Quan
|
72
|
-
then: Aleshores
|
73
|
-
and: I
|
74
|
-
but: Però
|
75
|
-
space_after_keyword: true
|
63
|
+
given: *|Donat|Donada
|
64
|
+
when: *|Quan
|
65
|
+
then: *|Aleshores
|
66
|
+
and: *|I
|
67
|
+
but: *|Però
|
76
68
|
"cy":
|
77
69
|
name: Welsh
|
78
70
|
native: Cymraeg
|
79
|
-
|
71
|
+
background: Cefndir
|
80
72
|
feature: Arwedd
|
81
73
|
scenario: Scenario
|
74
|
+
scenario_outline: Scenario Amlinellol
|
82
75
|
examples: Enghreifftiau
|
83
|
-
given: anrhegedig a
|
84
|
-
when: Pryd
|
85
|
-
then: Yna
|
86
|
-
and: A
|
87
|
-
but: Ond
|
88
|
-
space_after_keyword: true
|
76
|
+
given: *|anrhegedig a
|
77
|
+
when: *|Pryd
|
78
|
+
then: *|Yna
|
79
|
+
and: *|A
|
80
|
+
but: *|Ond
|
89
81
|
"cs":
|
90
82
|
name: Czech
|
91
83
|
native: Česky
|
92
|
-
encoding: UTF-8
|
93
84
|
feature: Požadavek
|
94
85
|
background: Pozadí|Kontext
|
95
86
|
scenario: Scénář
|
96
87
|
scenario_outline: Náčrt Scénáře|Osnova scénáře
|
97
88
|
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
|
89
|
+
given: *|Pokud
|
90
|
+
when: *|Když
|
91
|
+
then: *|Pak
|
92
|
+
and: *|A|A také
|
93
|
+
but: *|Ale
|
104
94
|
"da":
|
105
95
|
name: Danish
|
106
96
|
native: dansk
|
107
|
-
encoding: UTF-8
|
108
97
|
feature: Egenskab
|
109
98
|
background: Baggrund
|
110
99
|
scenario: Scenarie
|
111
100
|
scenario_outline: Abstrakt Scenario
|
112
101
|
examples: Eksempler
|
113
|
-
given: Givet
|
114
|
-
when: Når
|
115
|
-
then: Så
|
116
|
-
and: Og
|
117
|
-
but: Men
|
118
|
-
space_after_keyword: true
|
102
|
+
given: *|Givet
|
103
|
+
when: *|Når
|
104
|
+
then: *|Så
|
105
|
+
and: *|Og
|
106
|
+
but: *|Men
|
119
107
|
"de":
|
120
108
|
name: German
|
121
109
|
native: Deutsch
|
122
|
-
encoding: UTF-8
|
123
110
|
feature: Funktionalität
|
124
111
|
background: Grundlage
|
125
112
|
scenario: Szenario
|
126
113
|
scenario_outline: Szenariogrundriss
|
127
114
|
examples: Beispiele
|
128
|
-
given: Gegeben sei
|
129
|
-
when: Wenn
|
130
|
-
then: Dann
|
131
|
-
and: Und
|
132
|
-
but: Aber
|
133
|
-
space_after_keyword: true
|
115
|
+
given: *|Gegeben sei
|
116
|
+
when: *|Wenn
|
117
|
+
then: *|Dann
|
118
|
+
and: *|Und
|
119
|
+
but: *|Aber
|
134
120
|
"en-au":
|
135
121
|
name: Australian
|
136
122
|
native: Australian
|
137
|
-
encoding: UTF-8
|
138
123
|
feature: Crikey
|
139
124
|
background: Background
|
140
125
|
scenario: Mate
|
141
126
|
scenario_outline: Blokes
|
142
127
|
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
|
128
|
+
given: *|Ya know how
|
129
|
+
when: *|When
|
130
|
+
then: *|Ya gotta
|
131
|
+
and: *|N
|
132
|
+
but: *|Cept
|
149
133
|
"en-lol":
|
150
134
|
name: LOLCAT
|
151
135
|
native: LOLCAT
|
152
|
-
encoding: UTF-8
|
153
136
|
feature: OH HAI
|
154
137
|
background: B4
|
155
138
|
scenario: MISHUN
|
156
139
|
scenario_outline: MISHUN SRSLY
|
157
140
|
examples: EXAMPLZ
|
158
|
-
given: I CAN HAZ
|
159
|
-
when: WEN
|
160
|
-
then: DEN
|
161
|
-
and: AN
|
162
|
-
but: BUT
|
163
|
-
space_after_keyword: true
|
141
|
+
given: *|I CAN HAZ
|
142
|
+
when: *|WEN
|
143
|
+
then: *|DEN
|
144
|
+
and: *|AN
|
145
|
+
but: *|BUT
|
164
146
|
"en-tx":
|
165
147
|
name: Texan
|
166
148
|
native: Texan
|
167
|
-
encoding: UTF-8
|
168
149
|
feature: Feature
|
169
150
|
background: Background
|
170
151
|
scenario: Scenario
|
171
|
-
scenario_outline: All y
|
152
|
+
scenario_outline: All y'all
|
172
153
|
examples: Examples
|
173
|
-
given: Given y
|
174
|
-
when: When y
|
175
|
-
then: Then y
|
176
|
-
and: And y
|
177
|
-
but: But y
|
178
|
-
space_after_keyword: true
|
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
|
179
159
|
"es":
|
180
160
|
name: Spanish
|
181
161
|
native: español
|
182
|
-
encoding: UTF-8
|
183
162
|
background: Antecedentes
|
184
163
|
feature: Característica
|
185
164
|
scenario: Escenario
|
186
165
|
scenario_outline: Esquema del escenario
|
187
166
|
examples: Ejemplos
|
188
|
-
given: Dado
|
189
|
-
when: Cuando
|
190
|
-
then: Entonces
|
191
|
-
and: Y
|
192
|
-
but: Pero
|
193
|
-
space_after_keyword: true
|
167
|
+
given: *|Dado
|
168
|
+
when: *|Cuando
|
169
|
+
then: *|Entonces
|
170
|
+
and: *|Y
|
171
|
+
but: *|Pero
|
194
172
|
"et":
|
195
173
|
name: Estonian
|
196
174
|
native: eesti keel
|
197
|
-
encoding: UTF-8
|
198
175
|
feature: Omadus
|
199
176
|
background: Taust
|
200
177
|
scenario: Stsenaarium
|
201
178
|
scenario_outline: Raamstsenaarium
|
202
179
|
examples: Juhtumid
|
203
|
-
given: Eeldades
|
204
|
-
when: Kui
|
205
|
-
then: Siis
|
206
|
-
and: Ja
|
207
|
-
but: Kuid
|
208
|
-
space_after_keyword: true
|
180
|
+
given: *|Eeldades
|
181
|
+
when: *|Kui
|
182
|
+
then: *|Siis
|
183
|
+
and: *|Ja
|
184
|
+
but: *|Kuid
|
209
185
|
"fi":
|
210
186
|
name: Finnish
|
211
187
|
native: suomi
|
212
|
-
encoding: UTF-8
|
213
188
|
feature: Ominaisuus
|
214
189
|
background: Tausta
|
215
190
|
scenario: Tapaus
|
216
191
|
scenario_outline: Tapausaihio
|
217
192
|
examples: Tapaukset
|
218
|
-
given: Oletetaan
|
219
|
-
when: Kun
|
220
|
-
then: Niin
|
221
|
-
and: Ja
|
222
|
-
but: Mutta
|
223
|
-
space_after_keyword: true
|
193
|
+
given: *|Oletetaan
|
194
|
+
when: *|Kun
|
195
|
+
then: *|Niin
|
196
|
+
and: *|Ja
|
197
|
+
but: *|Mutta
|
224
198
|
"fr":
|
225
199
|
name: French
|
226
200
|
native: français
|
227
|
-
encoding: UTF-8
|
228
201
|
feature: Fonctionnalité
|
229
202
|
background: Contexte
|
230
203
|
scenario: Scénario
|
231
|
-
scenario_outline: Plan du Scénario
|
204
|
+
scenario_outline: Plan du scénario|Plan du Scénario
|
232
205
|
examples: Exemples
|
233
|
-
given: Soit
|
234
|
-
when: Lorsque
|
235
|
-
then: Alors
|
236
|
-
and: Et
|
237
|
-
but: Mais
|
238
|
-
space_after_keyword: true
|
206
|
+
given: *|Soit|Etant donné
|
207
|
+
when: *|Quand|Lorsque|Lorsqu'<
|
208
|
+
then: *|Alors
|
209
|
+
and: *|Et
|
210
|
+
but: *|Mais
|
239
211
|
"he":
|
240
212
|
name: Hebrew
|
241
213
|
native: עברית
|
242
|
-
encoding: UTF-8
|
243
214
|
feature: תכונה
|
244
215
|
background: רקע
|
245
216
|
scenario: תרחיש
|
246
217
|
scenario_outline: תבנית תרחיש
|
247
218
|
examples: דוגמאות
|
248
|
-
given:
|
249
|
-
when:
|
250
|
-
then:
|
251
|
-
and:
|
252
|
-
but:
|
253
|
-
space_after_keyword: true
|
219
|
+
given: *|בהינתן
|
220
|
+
when: *|כאשר
|
221
|
+
then: *|אז|אזי
|
222
|
+
and: *|וגם
|
223
|
+
but: *|אבל
|
254
224
|
"hr":
|
255
225
|
name: Croatian
|
256
226
|
native: hrvatski
|
257
|
-
encoding: UTF-8
|
258
227
|
feature: Osobina|Mogućnost|Mogucnost
|
259
228
|
background: Pozadina
|
260
229
|
scenario: Scenarij
|
261
230
|
scenario_outline: Skica|Koncept
|
262
231
|
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
|
232
|
+
given: *|Zadan|Zadani|Zadano
|
233
|
+
when: *|Kada|Kad
|
234
|
+
then: *|Onda
|
235
|
+
and: *|I
|
236
|
+
but: *|Ali
|
269
237
|
"hu":
|
270
238
|
name: Hungarian
|
271
239
|
native: magyar
|
272
|
-
encoding: UTF-8
|
273
240
|
feature: Jellemző
|
274
241
|
background: Háttér
|
275
242
|
scenario: Forgatókönyv
|
276
243
|
scenario_outline: Forgatókönyv vázlat
|
277
244
|
examples: Példák
|
278
|
-
given: Ha
|
279
|
-
when: Majd
|
280
|
-
then: Akkor
|
281
|
-
and:
|
282
|
-
but: De
|
283
|
-
space_after_keyword: true
|
245
|
+
given: *|Ha
|
246
|
+
when: *|Majd
|
247
|
+
then: *|Akkor
|
248
|
+
and: *|És
|
249
|
+
but: *|De
|
284
250
|
"id":
|
285
251
|
name: Indonesian
|
286
252
|
native: Bahasa Indonesia
|
287
|
-
encoding: UTF-8
|
288
253
|
feature: Fitur
|
289
254
|
background: Dasar
|
290
255
|
scenario: Skenario
|
291
256
|
scenario_outline: Skenario konsep
|
292
257
|
examples: Contoh
|
293
|
-
given: Dengan
|
294
|
-
when: Ketika
|
295
|
-
then: Maka
|
296
|
-
and: Dan
|
297
|
-
but: Tapi
|
298
|
-
space_after_keyword: true
|
258
|
+
given: *|Dengan
|
259
|
+
when: *|Ketika
|
260
|
+
then: *|Maka
|
261
|
+
and: *|Dan
|
262
|
+
but: *|Tapi
|
299
263
|
"it":
|
300
264
|
name: Italian
|
301
265
|
native: italiano
|
302
|
-
encoding: UTF-8
|
303
266
|
feature: Funzionalità
|
304
267
|
background: Contesto
|
305
268
|
scenario: Scenario
|
306
269
|
scenario_outline: Schema dello scenario
|
307
270
|
examples: Esempi
|
308
|
-
given: Dato
|
309
|
-
when: Quando
|
310
|
-
then: Allora
|
311
|
-
and: E
|
312
|
-
but: Ma
|
313
|
-
space_after_keyword: true
|
271
|
+
given: *|Dato
|
272
|
+
when: *|Quando
|
273
|
+
then: *|Allora
|
274
|
+
and: *|E
|
275
|
+
but: *|Ma
|
314
276
|
"ja":
|
315
277
|
name: Japanese
|
316
278
|
native: 日本語
|
317
|
-
encoding: UTF-8
|
318
279
|
feature: フィーチャ|機能
|
319
280
|
background: 背景
|
320
281
|
scenario: シナリオ
|
321
282
|
scenario_outline: シナリオアウトライン|シナリオテンプレート|テンプレ|シナリオテンプレ
|
322
283
|
examples: 例|サンプル
|
323
|
-
given:
|
324
|
-
when:
|
325
|
-
then:
|
326
|
-
and:
|
327
|
-
but:
|
328
|
-
space_after_keyword: false
|
284
|
+
given: *|前提<
|
285
|
+
when: *|もし<
|
286
|
+
then: *|ならば<
|
287
|
+
and: *|かつ<
|
288
|
+
but: *|しかし<|但し<|ただし<
|
329
289
|
"ko":
|
330
290
|
name: Korean
|
331
291
|
native: 한국어
|
332
|
-
encoding: UTF-8
|
333
292
|
background: 배경
|
334
293
|
feature: 기능
|
335
294
|
scenario: 시나리오
|
336
295
|
scenario_outline: 시나리오 개요
|
337
296
|
examples: 예
|
338
|
-
given:
|
339
|
-
when:
|
340
|
-
then:
|
341
|
-
and:
|
342
|
-
but:
|
343
|
-
space_after_keyword: false
|
297
|
+
given: *|조건<
|
298
|
+
when: *|만일<
|
299
|
+
then: *|그러면<
|
300
|
+
and: *|그리고<
|
301
|
+
but: *|하지만<
|
344
302
|
"lt":
|
345
303
|
name: Lithuanian
|
346
304
|
native: lietuvių kalba
|
347
|
-
encoding: UTF-8
|
348
305
|
feature: Savybė
|
349
306
|
background: Kontekstas
|
350
307
|
scenario: Scenarijus
|
351
308
|
scenario_outline: Scenarijaus šablonas
|
352
309
|
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
|
310
|
+
given: *|Duota
|
311
|
+
when: *|Kai
|
312
|
+
then: *|Tada
|
313
|
+
and: *|Ir
|
314
|
+
but: *|Bet
|
359
315
|
"lv":
|
360
316
|
name: Latvian
|
361
317
|
native: latviešu
|
362
|
-
encoding: UTF-8
|
363
318
|
feature: Funkcionalitāte|Fīča
|
364
319
|
background: Konteksts|Situācija
|
365
320
|
scenario: Scenārijs
|
366
321
|
scenario_outline: Scenārijs pēc parauga
|
367
322
|
examples: Piemēri|Paraugs
|
368
|
-
given: Kad
|
369
|
-
when: Ja
|
370
|
-
then: Tad
|
371
|
-
and: Un
|
372
|
-
but: Bet
|
373
|
-
space_after_keyword: true
|
323
|
+
given: *|Kad
|
324
|
+
when: *|Ja
|
325
|
+
then: *|Tad
|
326
|
+
and: *|Un
|
327
|
+
but: *|Bet
|
374
328
|
"nl":
|
375
329
|
name: Dutch
|
376
330
|
native: Nederlands
|
377
|
-
encoding: UTF-8
|
378
331
|
feature: Functionaliteit
|
379
332
|
background: Achtergrond
|
380
333
|
scenario: Scenario
|
381
334
|
scenario_outline: Abstract Scenario
|
382
335
|
examples: Voorbeelden
|
383
|
-
given: Gegeven
|
384
|
-
when: Als
|
385
|
-
then: Dan
|
386
|
-
and: En
|
387
|
-
but: Maar
|
388
|
-
space_after_keyword: true
|
336
|
+
given: *|Gegeven
|
337
|
+
when: *|Als
|
338
|
+
then: *|Dan
|
339
|
+
and: *|En
|
340
|
+
but: *|Maar
|
389
341
|
"no":
|
390
342
|
name: Norwegian
|
391
343
|
native: norsk
|
392
|
-
encoding: UTF-8
|
393
344
|
feature: Egenskap
|
394
345
|
background: Bakgrunn
|
395
346
|
scenario: Scenario
|
396
347
|
scenario_outline: Abstrakt Scenario
|
397
348
|
examples: Eksempler
|
398
|
-
given: Gitt
|
399
|
-
when: Når
|
400
|
-
then: Så
|
401
|
-
and: Og
|
402
|
-
but: Men
|
403
|
-
space_after_keyword: true
|
349
|
+
given: *|Gitt
|
350
|
+
when: *|Når
|
351
|
+
then: *|Så
|
352
|
+
and: *|Og
|
353
|
+
but: *|Men
|
404
354
|
"pl":
|
405
355
|
name: Polish
|
406
356
|
native: polski
|
407
|
-
encoding: UTF-8
|
408
357
|
feature: Właściwość
|
409
358
|
background: Założenia
|
410
359
|
scenario: Scenariusz
|
411
360
|
scenario_outline: Szablon scenariusza
|
412
361
|
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
|
362
|
+
given: *|Zakładając
|
363
|
+
when: *|Jeżeli
|
364
|
+
then: *|Wtedy
|
365
|
+
and: *|Oraz
|
366
|
+
but: *|Ale
|
419
367
|
"pt":
|
420
368
|
name: Portuguese
|
421
369
|
native: português
|
422
|
-
encoding: UTF-8
|
423
370
|
background: Contexto
|
424
371
|
feature: Funcionalidade
|
425
372
|
scenario: Cenário|Cenario
|
426
373
|
scenario_outline: Esquema do Cenário|Esquema do Cenario
|
427
374
|
examples: Exemplos
|
428
|
-
given: Dado
|
429
|
-
when: Quando
|
430
|
-
then: Então|Entao
|
431
|
-
and: E
|
432
|
-
but: Mas
|
433
|
-
space_after_keyword: true
|
375
|
+
given: *|Dado
|
376
|
+
when: *|Quando
|
377
|
+
then: *|Então|Entao
|
378
|
+
and: *|E
|
379
|
+
but: *|Mas
|
434
380
|
"ro":
|
435
381
|
name: Romanian
|
436
382
|
native: română
|
437
|
-
encoding: UTF-8
|
438
383
|
background: Conditii
|
439
384
|
feature: Functionalitate
|
440
385
|
scenario: Scenariu
|
441
386
|
scenario_outline: Scenariul de sablon
|
442
387
|
examples: Exemplele
|
443
|
-
given: Daca
|
444
|
-
when: Cand
|
445
|
-
then: Atunci
|
446
|
-
and: Si
|
447
|
-
but: Dar
|
448
|
-
space_after_keyword: true
|
388
|
+
given: *|Daca
|
389
|
+
when: *|Cand
|
390
|
+
then: *|Atunci
|
391
|
+
and: *|Si
|
392
|
+
but: *|Dar
|
449
393
|
"ro2":
|
450
394
|
name: Romanian (diacritical)
|
451
395
|
native: română (diacritical)
|
452
|
-
encoding: UTF-8
|
453
396
|
background: Condiţii
|
454
397
|
feature: Funcționalitate
|
455
398
|
scenario: Scenariu
|
456
399
|
scenario_outline: Scenariul de şablon
|
457
400
|
examples: Exemplele
|
458
|
-
given: Dacă
|
459
|
-
when: Când
|
460
|
-
then: Atunci
|
461
|
-
and:
|
462
|
-
but: Dar
|
463
|
-
space_after_keyword: true
|
401
|
+
given: *|Dacă
|
402
|
+
when: *|Când
|
403
|
+
then: *|Atunci
|
404
|
+
and: *|Și
|
405
|
+
but: *|Dar
|
464
406
|
"ru":
|
465
407
|
name: Russian
|
466
408
|
native: русский
|
467
|
-
encoding: UTF-8
|
468
409
|
feature: Функционал
|
469
410
|
background: Предыстория
|
470
411
|
scenario: Сценарий
|
471
412
|
scenario_outline: Структура сценария
|
472
413
|
examples: Значения
|
473
|
-
given:
|
474
|
-
when:
|
475
|
-
then:
|
476
|
-
and:
|
477
|
-
but:
|
478
|
-
space_after_keyword: true
|
414
|
+
given: *|Допустим
|
415
|
+
when: *|Если
|
416
|
+
then: *|То
|
417
|
+
and: *|И|К тому же
|
418
|
+
but: *|Но|А
|
479
419
|
"se":
|
480
420
|
name: Swedish
|
481
421
|
native: Svenska
|
482
|
-
encoding: UTF-8
|
483
422
|
feature: Egenskap
|
484
423
|
background: Bakgrund
|
485
424
|
scenario: Scenario
|
486
425
|
scenario_outline: Abstrakt Scenario
|
487
426
|
examples: Exempel
|
488
|
-
given: Givet
|
489
|
-
when: När
|
490
|
-
then: Så
|
491
|
-
and: Och
|
492
|
-
but: Men
|
493
|
-
space_after_keyword: true
|
427
|
+
given: *|Givet
|
428
|
+
when: *|När
|
429
|
+
then: *|Så
|
430
|
+
and: *|Och
|
431
|
+
but: *|Men
|
494
432
|
"sk":
|
495
433
|
name: Slovak
|
496
434
|
native: Slovensky
|
497
|
-
encoding: UTF-8
|
498
435
|
feature: Požiadavka
|
499
436
|
background: Pozadie
|
500
437
|
scenario: Scenár
|
501
438
|
scenario_outline: Náčrt Scenáru
|
502
439
|
examples: Príklady
|
503
|
-
given: Pokiaľ
|
504
|
-
when: Keď
|
505
|
-
then: Tak
|
506
|
-
and: A
|
507
|
-
but: Ale
|
508
|
-
space_after_keyword: true
|
440
|
+
given: *|Pokiaľ
|
441
|
+
when: *|Keď
|
442
|
+
then: *|Tak
|
443
|
+
and: *|A
|
444
|
+
but: *|Ale
|
509
445
|
"sr-Latn":
|
510
446
|
name: Serbian_latin
|
511
447
|
native: Srpski_latinica
|
512
|
-
encoding: UTF-8
|
513
448
|
feature: Funkcionalnost|Mogućnost|Mogucnost|Osobina
|
514
449
|
background: Kontekst|Osnova|Pozadina
|
515
450
|
scenario: Scenario|Primer
|
516
451
|
scenario_outline: Struktura scenarija|Skica|Koncept
|
517
452
|
examples: Primeri|Scenariji
|
518
|
-
given: Zadato|Zadate|Zatati
|
519
|
-
when: Kada|Kad
|
520
|
-
then: Onda
|
521
|
-
and: I
|
522
|
-
but: Ali
|
523
|
-
space_after_keyword: true
|
453
|
+
given: *|Zadato|Zadate|Zatati
|
454
|
+
when: *|Kada|Kad
|
455
|
+
then: *|Onda
|
456
|
+
and: *|I
|
457
|
+
but: *|Ali
|
524
458
|
"sr":
|
525
459
|
name: Serbian
|
526
460
|
native: Српски
|
527
|
-
encoding: UTF-8
|
528
461
|
feature: Функционалност|Могућност|Особина
|
529
462
|
background: Контекст|Основа|Позадина
|
530
463
|
scenario: Сценарио|Пример
|
531
464
|
scenario_outline: Структура сценарија|Скица|Концепт
|
532
465
|
examples: Примери|Сценарији
|
533
|
-
given:
|
534
|
-
when:
|
535
|
-
then:
|
536
|
-
and:
|
537
|
-
but:
|
538
|
-
space_after_keyword: true
|
466
|
+
given: *|Задато|Задате|Задати
|
467
|
+
when: *|Када|Кад
|
468
|
+
then: *|Онда
|
469
|
+
and: *|И
|
470
|
+
but: *|Али
|
539
471
|
"tr":
|
540
472
|
name: Turkish
|
541
473
|
native: Türkçe
|
542
|
-
encoding: UTF-8
|
543
474
|
feature: Özellik
|
544
475
|
background: Geçmiş
|
545
476
|
scenario: Senaryo
|
546
477
|
scenario_outline: Senaryo taslağı
|
547
478
|
examples: Örnekler
|
548
|
-
given: Diyelim ki
|
549
|
-
when: Eğer ki
|
550
|
-
then: O zaman
|
551
|
-
and: Ve
|
552
|
-
but: Fakat|Ama
|
479
|
+
given: *|Diyelim ki
|
480
|
+
when: *|Eğer ki
|
481
|
+
then: *|O zaman
|
482
|
+
and: *|Ve
|
483
|
+
but: *|Fakat|Ama
|
553
484
|
"uz":
|
554
485
|
name: Uzbek
|
555
486
|
native: Узбекча
|
556
|
-
encoding: UTF-8
|
557
487
|
feature: Функционал
|
558
488
|
background: Тарих
|
559
489
|
scenario: Сценарий
|
560
490
|
scenario_outline: Сценарий структураси
|
561
491
|
examples: Мисоллар
|
562
|
-
given:
|
563
|
-
when:
|
564
|
-
then:
|
565
|
-
and:
|
566
|
-
but:
|
492
|
+
given: *|Агар
|
493
|
+
when: *|Агар
|
494
|
+
then: *|Унда
|
495
|
+
and: *|Ва
|
496
|
+
but: *|Лекин|Бирок|Аммо
|
567
497
|
"vi":
|
568
498
|
name: Vietnamese
|
569
499
|
native: Tiếng Việt
|
570
|
-
encoding: UTF-8
|
571
500
|
feature: Tính năng
|
572
501
|
background: Bối cảnh
|
573
502
|
scenario: Tình huống|Kịch bản
|
574
503
|
scenario_outline: Khung tình huống|Khung kịch bản
|
575
504
|
examples: Dữ liệu
|
576
|
-
given: Biết|Cho
|
577
|
-
when: Khi
|
578
|
-
then: Thì
|
579
|
-
and: Và
|
580
|
-
but: Nhưng
|
581
|
-
space_after_keyword: true
|
505
|
+
given: *|Biết|Cho
|
506
|
+
when: *|Khi
|
507
|
+
then: *|Thì
|
508
|
+
and: *|Và
|
509
|
+
but: *|Nhưng
|
582
510
|
"zh-CN":
|
583
511
|
name: Chinese simplified
|
584
512
|
native: 简体中文
|
585
|
-
encoding: UTF-8
|
586
513
|
feature: 功能
|
587
514
|
background: 背景
|
588
515
|
scenario: 场景
|
589
516
|
scenario_outline: 场景大纲
|
590
517
|
examples: 例子
|
591
|
-
given:
|
592
|
-
when:
|
593
|
-
then:
|
594
|
-
and:
|
595
|
-
but:
|
596
|
-
space_after_keyword: false
|
518
|
+
given: *|假如<
|
519
|
+
when: *|当<
|
520
|
+
then: *|那么<
|
521
|
+
and: *|而且<
|
522
|
+
but: *|但是<
|
597
523
|
"zh-TW":
|
598
524
|
name: Chinese traditional
|
599
525
|
native: 繁體中文
|
600
|
-
encoding: UTF-8
|
601
526
|
feature: 功能
|
602
527
|
background: 背景
|
603
528
|
scenario: 場景|劇本
|
604
529
|
scenario_outline: 場景大綱|劇本大綱
|
605
530
|
examples: 例子
|
606
|
-
given:
|
607
|
-
when:
|
608
|
-
then:
|
609
|
-
and:
|
610
|
-
but:
|
611
|
-
space_after_keyword: false
|
531
|
+
given: *|假設<
|
532
|
+
when: *|當<
|
533
|
+
then: *|那麼<
|
534
|
+
and: *|而且<|並且<
|
535
|
+
but: *|但是<
|