Sha256: 8b30092076f3c3cd5c7b6204b6e3684f73eb1d973acaa1faed721f5eebd3235e

Contents?: true

Size: 892 Bytes

Versions: 10

Compression:

Stored size: 892 Bytes

Contents

# https://github.com/mjackson/citrus/blob/master/doc/syntax.markdown

grammar CommitMessageParser
  rule commit_message
    (anything commit_directive*) { captures(:commit_directive).map(&:value).flatten.uniq.sort }
  end

  rule commit_directive
    ('[' space commit_fragment+ ']' anything) { captures(:commit_fragment).map(&:value).flatten }
  end

  rule commit_fragment
    (finishes? story_id+ space) { captures(:story_id).map(&:value) }
  end

  rule finishes
    # shortest versions go at the end (e.g. "finish" comes after the longer variants)
    (`finishes` | `finished` | `finish` | `fixes` | `fixed` | `fix` | `completes` | `completed` | `complete`) space
  end

  rule story_id
    ('#'? number space) { capture(:number).value }
  end

  rule number
    [0-9]+ { to_s }
  end

  rule space
    [ ,\t\n]*
  end

  rule anything
    ([^\[] | '[' !(finishes | story_id))*
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
stenographer-rails-0.7.4 lib/stenographer/commit_message_parser.citrus
stenographer-rails-0.7.3 lib/stenographer/commit_message_parser.citrus
stenographer-rails-0.7.1 lib/stenographer/commit_message_parser.citrus
stenographer-rails-0.7.0 lib/stenographer/commit_message_parser.citrus
stenographer-rails-0.6.5 lib/stenographer/commit_message_parser.citrus
stenographer-rails-0.6.4 lib/stenographer/commit_message_parser.citrus
stenographer-rails-0.6.3 lib/stenographer/commit_message_parser.citrus
stenographer-rails-0.6.2 lib/stenographer/commit_message_parser.citrus
stenographer-rails-0.6.1 lib/stenographer/commit_message_parser.citrus
stenographer-rails-0.6.0 lib/stenographer/commit_message_parser.citrus