diff --git a/changelog_parser.pony b/changelog_parser.pony index aa9035b..f05ec71 100644 --- a/changelog_parser.pony +++ b/changelog_parser.pony @@ -41,7 +41,7 @@ primitive ChangelogParser fun version(): Parser val => recover let frac = L(".") * digits() - (digits() * frac * frac).term(TVersion) + (digits() * frac * frac.opt()).term(TVersion) end fun date(): Parser val => @@ -53,10 +53,11 @@ primitive ChangelogParser fun entries(): Parser val => recover + let bullet = L("-") / L("*") let line = Forward line() = L("\n") / (Unicode * line) - let sep = L("-") / L("#") / L("\n") - let entry = L("- ") * line * (not sep * line).many() + let sep = bullet / L("#") / L("\n") + let entry = bullet * L(" ") * line * (not sep * line).many() (entry.term(TEntry) * -L("\n").many()).many1().node(TEntries) end diff --git a/tests/main.pony b/tests/main.pony index 9f2479d..4a57fb6 100644 --- a/tests/main.pony +++ b/tests/main.pony @@ -21,7 +21,9 @@ class iso _TestParseVersion is UnitTest fun apply(h: TestHelper) => ParseTest(h, ChangelogParser.version()).run( [ ("0.0.0", "$(Version$0.0.0)") + ("0.0", "$(Version$0.0)") ("1.23.9", "$(Version$1.23.9)") + ("1.23", "$(Version$1.23)") ("0..0", "") (".0.0", "") ("0..", "") @@ -52,20 +54,20 @@ class iso _TestParseEntries is UnitTest ("- abc\n - def\n\n", "$(Entries$(Entry$- abc\n - def\n))") ( """ - abc - - def + * def - ghi - jkl """, - "$(Entries$(Entry$- abc\n - def\n - ghi\n))" ) + "$(Entries$(Entry$- abc\n * def\n - ghi\n))" ) ( "- @fowles: handle regex empty match.\n", "$(Entries$(Entry$- @fowles: handle regex empty match.\n))" ) ( "- Upgrade to LLVM 3.9.1 ([PR #1498](https://github.com/ponylang/ponyc/pull/1498))\n", "$(Entries$(Entry$- Upgrade to LLVM 3.9.1 ([PR #1498](https://github.com/ponylang/ponyc/pull/1498))\n))" ) ( """ - - stuff + * stuff - - things + * things @@ -73,7 +75,7 @@ class iso _TestParseEntries is UnitTest # """, - "$(Entries$(Entry$- stuff\n)$(Entry$- things\n)$(Entry$- more things\n))" + "$(Entries$(Entry$* stuff\n)$(Entry$* things\n)$(Entry$- more things\n))" ) ])