{"name":"Cucumber Steps","scopeName":"source.ruby.rspec.cucumber.steps","patterns":[{"name":"keyword.other.step.cucumber","match":"\\b(GivenScenario|Given|When|Then)\\b"},{"contentName":"string.quoted.step.cucumber.classic.ruby","begin":"\\b(?\u003c=GivenScenario|Given|When|Then) (\")","end":"((\\1))","patterns":[{"include":"#interpolated_ruby"},{"include":"#regex_sub"}],"captures":{"1":{"name":"string.quoted.double.ruby"},"2":{"name":"punctuation.definition.string.ruby"}}},{"contentName":"string.quoted.step.cucumber.classic.ruby","begin":"\\b(?\u003c=GivenScenario|Given|When|Then) (')","end":"((\\1))","patterns":[{"include":"#regex_sub"},{"include":"#interpolated_ruby"}],"captures":{"1":{"name":"string.quoted.single.ruby"},"2":{"name":"punctuation.definition.string.ruby"}}},{"contentName":"string.regexp.step.cucumber.classic.ruby","begin":"\\b(?\u003c=GivenScenario|Given|When|Then) (/)","end":"((/[eimnosux]*))","patterns":[{"include":"#regex_sub"}],"captures":{"1":{"name":"string.regexp.classic.ruby"},"2":{"name":"punctuation.definition.string.ruby"}}},{"contentName":"string.regexp.step.cucumber.mod-r.ruby","begin":"\\b(?\u003c=GivenScenario|Given|When|Then) (%r{)","end":"((}[eimnosux]*))","patterns":[{"include":"#regex_sub"}],"captures":{"1":{"name":"string.regexp.mod-r.ruby"},"2":{"name":"punctuation.definition.string.ruby"}}},{"name":"string.unquoted.embedded.cucumber.feature","contentName":"text.cucumber.embedded.ruby","begin":"(?\u003e\u003c\u003c-CUCUMBER\\b)","end":"\\s*CUCUMBER$","patterns":[{"include":"text.gherkin.feature"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ruby"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.ruby"}}},{"include":"source.ruby"}],"repository":{"escaped_char":{"name":"constant.character.escape.ruby","match":"\\\\(?:[0-7]{1,3}|x[\\da-fA-F]{1,2}|.)"},"interpolated_ruby":{"patterns":[{"name":"source.ruby.embedded.source","match":"#\\{(\\})","captures":{"0":{"name":"punctuation.section.embedded.ruby"},"1":{"name":"source.ruby.embedded.source.empty"}}},{"name":"source.ruby.embedded.source","begin":"#\\{","end":"\\}","patterns":[{"include":"#nest_curly_and_self"},{"include":"source.ruby"}],"captures":{"0":{"name":"punctuation.section.embedded.ruby"}}},{"name":"variable.other.readwrite.instance.ruby","match":"(#@)[a-zA-Z_]\\w*","captures":{"1":{"name":"punctuation.definition.variable.ruby"}}},{"name":"variable.other.readwrite.class.ruby","match":"(#@@)[a-zA-Z_]\\w*","captures":{"1":{"name":"punctuation.definition.variable.ruby"}}},{"name":"variable.other.readwrite.global.ruby","match":"(#\\$)[a-zA-Z_]\\w*","captures":{"1":{"name":"punctuation.definition.variable.ruby"}}}]},"nest_curly_and_self":{"patterns":[{"begin":"\\{","end":"\\}","patterns":[{"include":"#nest_curly_and_self"}],"captures":{"0":{"name":"punctuation.section.scope.ruby"}}},{"include":"source.ruby"}]},"regex_sub":{"patterns":[{"include":"#interpolated_ruby"},{"include":"#escaped_char"},{"name":"string.regexp.arbitrary-repitition.ruby","match":"(\\{)\\d+(,\\d+)?(\\})","captures":{"1":{"name":"punctuation.definition.arbitrary-repitition.ruby"},"3":{"name":"punctuation.definition.arbitrary-repitition.ruby"}}},{"name":"string.regexp.character-class.ruby","begin":"\\[(?:\\^?\\])?","end":"\\]","patterns":[{"include":"#escaped_char"}],"captures":{"0":{"name":"punctuation.definition.character-class.ruby"}}},{"name":"string.regexp.group.ruby","begin":"\\(","end":"\\)","patterns":[{"include":"#regex_sub"}],"captures":{"0":{"name":"punctuation.definition.group.ruby"}}},{"name":"comment.line.number-sign.ruby","match":"(?\u003c=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$","captures":{"1":{"name":"punctuation.definition.comment.ruby"}}}]}}}