fileTypes steps.rb keyEquivalent ^~C name Cucumber Steps patterns match \b(GivenScenario|Given|When|Then)\b name keyword.other.step.cucumber begin \b(?<=GivenScenario|Given|When|Then) (") captures 1 name string.quoted.double.ruby 2 name punctuation.definition.string.ruby comment string after a Cucumber keyword contentName string.quoted.step.cucumber.classic.ruby end ((\1)) patterns include #interpolated_ruby include #regex_sub begin \b(?<=GivenScenario|Given|When|Then) (') captures 1 name string.quoted.single.ruby 2 name punctuation.definition.string.ruby comment string after a Cucumber keyword contentName string.quoted.step.cucumber.classic.ruby end ((\1)) patterns include #regex_sub include #interpolated_ruby begin \b(?<=GivenScenario|Given|When|Then) (/) captures 1 name string.regexp.classic.ruby 2 name punctuation.definition.string.ruby comment regular expression after a Cucumber keyword contentName string.regexp.step.cucumber.classic.ruby end ((/[eimnosux]*)) patterns include #regex_sub begin \b(?<=GivenScenario|Given|When|Then) (%r{) captures 1 name string.regexp.mod-r.ruby 2 name punctuation.definition.string.ruby comment regular expression after a Cucumber keyword contentName string.regexp.step.cucumber.mod-r.ruby end ((}[eimnosux]*)) patterns include #regex_sub begin (?><<-CUCUMBER\b) beginCaptures 0 name punctuation.definition.string.begin.ruby comment embedded Cucumber feature contentName text.cucumber.embedded.ruby end \s*CUCUMBER$ endCaptures 0 name punctuation.definition.string.end.ruby name string.unquoted.embedded.cucumber.feature patterns include text.gherkin.feature include source.ruby repository escaped_char match \\(?:[0-7]{1,3}|x[\da-fA-F]{1,2}|.) name constant.character.escape.ruby interpolated_ruby patterns captures 0 name punctuation.section.embedded.ruby 1 name source.ruby.embedded.source.empty match #\{(\}) name source.ruby.embedded.source begin #\{ captures 0 name punctuation.section.embedded.ruby end \} name source.ruby.embedded.source patterns include #nest_curly_and_self include source.ruby captures 1 name punctuation.definition.variable.ruby match (#@)[a-zA-Z_]\w* name variable.other.readwrite.instance.ruby captures 1 name punctuation.definition.variable.ruby match (#@@)[a-zA-Z_]\w* name variable.other.readwrite.class.ruby captures 1 name punctuation.definition.variable.ruby match (#\$)[a-zA-Z_]\w* name variable.other.readwrite.global.ruby nest_curly_and_self patterns begin \{ captures 0 name punctuation.section.scope.ruby end \} patterns include #nest_curly_and_self include source.ruby regex_sub patterns include #interpolated_ruby include #escaped_char captures 1 name punctuation.definition.arbitrary-repitition.ruby 3 name punctuation.definition.arbitrary-repitition.ruby match (\{)\d+(,\d+)?(\}) name string.regexp.arbitrary-repitition.ruby begin \[(?:\^?\])? captures 0 name punctuation.definition.character-class.ruby end \] name string.regexp.character-class.ruby patterns include #escaped_char begin \( captures 0 name punctuation.definition.group.ruby end \) name string.regexp.group.ruby patterns include #regex_sub captures 1 name punctuation.definition.comment.ruby comment We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags. match (?<=^|\s)(#)\s[[a-zA-Z0-9,. \t?!-][^\x{00}-\x{7F}]]*$ name comment.line.number-sign.ruby scopeName source.ruby.rspec.cucumber.steps uuid B269B8F3-3A6D-4169-9E70-DD89A679416A