--- fileTypes: - steps.rb foldingStartMarker: ^\s*\b(Given|When|Then|def) foldingStopMarker: ^\s*(end)$ 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