// This is a TextMate grammar distributed by `starry-night`. // This grammar is developed at // // and licensed `mit`. // See for more info. /** * @import {Grammar} from '@wooorm/starry-night' */ /** @type {Grammar} */ const grammar = { extensions: ['.cook'], names: ['cooklang'], patterns: [ {include: '#frontmatter'}, {include: '#comments'}, {include: '#metadata'}, {include: '#section'}, {include: '#recipe_note'}, {include: '#step'} ], repository: { comments: { patterns: [ { begin: '(?>)$', name: 'keyword.cooklang.punctuation.section.mapping.begin.cooklang' }, { captures: { 1: { name: 'keyword.cooklang.punctuation.section.mapping.begin.cooklang' }, 2: {name: 'invalid.illegal.expected-mapping-key.cooklang'} }, match: '(^>>)([^:]+?)$' }, { captures: { 1: { name: 'keyword.cooklang.punctuation.section.mapping.begin.cooklang' }, 2: { name: 'entity.name.tag.metadata.cooklang string.unquoted.plain.out.cooklang' }, 3: {name: 'invalid.illegal.expected-mapping-key.cooklang'} }, match: '(^>>)([^:]+?)(:\\s*?)$' }, { captures: { 1: { name: 'keyword.cooklang.punctuation.section.mapping.begin.cooklang' }, 2: { name: 'entity.name.tag.metadata.cooklang string.unquoted.plain.out.cooklang' }, 3: { name: 'keyword.cooklang.punctuation.separator.mapping.key-value.cooklang' }, 4: { name: 'value.metadata.cooklang string.unquoted.plain.out.cooklang' } }, match: '(^>>)([^:]+?)(:)(.*?)$' } ] }, recipe_note: { patterns: [ { begin: '^>', beginCaptures: {0: {name: 'punctuation.definition.note.cooklang'}}, contentName: 'comment.block.documentation.cooklang', end: '$\\n?', patterns: [{match: '.+', name: 'string.quoted.other.cooklang'}] } ] }, section: { patterns: [ { captures: { 1: {name: 'punctuation.definition.heading.begin.cooklang'}, 2: {name: 'entity.name.section.cooklang markup.heading.cooklang'}, 3: {name: 'punctuation.definition.heading.end.cooklang'} }, match: '^(={1,})([^=]+)(={1,})?$' } ] }, step: { patterns: [ {include: '#ingredient'}, {include: '#equipment'}, {include: '#timer'} ] }, timer: { patterns: [ { match: '(~)$', name: 'keyword.cooklang.punctuation.definition.timer.cooklang' }, { captures: { 1: {name: 'keyword.cooklang.punctuation.definition.timer.cooklang'}, 2: {patterns: [{include: '#timer_word'}]}, 3: {name: 'invalid.illegal.expected-duration.cooklang'} }, match: '(~)(\\w*?|[^@#~]+?)({\\s*?})' }, { captures: { 1: {name: 'keyword.cooklang.punctuation.definition.timer.cooklang'}, 2: {patterns: [{include: '#timer_word'}]}, 3: { name: 'keyword.cooklang.punctuation.definition.timer.duration.begin.cooklang' }, 4: {patterns: [{include: '#timer_duration'}]}, 5: { name: 'keyword.cooklang.punctuation.definition.timer.duration.end.cooklang' } }, match: '(~)(\\w*?|[^@#~]+?)({)([^}]*?)(})' }, { captures: { 1: {name: 'keyword.cooklang.punctuation.definition.timer.cooklang'}, 2: {patterns: [{include: '#timer_word'}]}, 3: {name: 'invalid.illegal.expected-end-of-duration.cooklang'}, 4: {name: 'invalid.illegal.expected-end-of-duration.cooklang'} }, match: '(~)(\\w*?|[^@#~]+?)({)(.*?)$' }, { captures: { 1: {name: 'keyword.cooklang.punctuation.definition.timer.cooklang'}, 2: {name: 'invalid.illegal.expected-begining-of-duration.cooklang'} }, match: '(~)([^@#~]+?)$' } ] }, timer_duration: { patterns: [ { match: '(\\d+)', name: 'meta.number.integer.decimal.cooklang constant.numeric.value.cooklang' }, {match: '([^}%]+?)', name: 'constant.string.timer.duration.cooklang'}, { match: '(%)', name: 'keyword.cooklang.punctuation.definition.timer.duration.separator.cooklang' } ] }, timer_word: { patterns: [ { match: '(\\w+?)$', name: 'entity.name.tag.css.cooklang.entity.name.tag.timer.one-word.cooklang' }, { match: '([^@#~]+?)$', name: 'entity.name.tag.css.cooklang.entity.name.tag.timer.multi-word.cooklang' } ] } }, scopeName: 'source.cooklang' } export default grammar