Merge pull request #5158 from eatkins/scripted-parser

Scripted parser fixes
This commit is contained in:
eugene yokota 2019-10-07 14:27:50 +02:00 committed by GitHub
commit 22a9fd4de0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 4 deletions

View File

@ -136,7 +136,10 @@ object ScriptedPlugin extends AutoPlugin {
val groupP = token(id.examples(pairMap.keySet)) <~ token('/')
// A parser for page definitions
val pageNumber = NatBasic & not('0', "zero page number")
val pageNumber = (NatBasic & not('0', "zero page number")).flatMap { i =>
if (i <= pairs.size) Parser.success(i)
else Parser.failure(s"$i exceeds the number of tests (${pairs.size})")
}
val pageP: Parser[ScriptedTestPage] = ("*" ~> pageNumber ~ ("of" ~> pageNumber)) flatMap {
case (page, total) if page <= total => success(ScriptedTestPage(page, total))
case (page, total) => failure(s"Page $page was greater than $total")
@ -144,7 +147,7 @@ object ScriptedPlugin extends AutoPlugin {
// Grabs the filenames from a given test group in the current page definition.
def pagedFilenames(group: String, page: ScriptedTestPage): Seq[String] = {
val files = pairMap(group).toSeq.sortBy(_.toLowerCase)
val files = pairMap.get(group).toSeq.flatten.sortBy(_.toLowerCase)
val pageSize = files.size / page.total
// The last page may loose some values, so we explicitly keep them
val dropped = files.drop(pageSize * (page.page - 1))

View File

@ -53,7 +53,10 @@ object Scripted {
val groupP = token(id.examples(pairMap.keySet)) <~ token('/')
// A parser for page definitions
val pageNumber = NatBasic & not('0', "zero page number")
val pageNumber = (NatBasic & not('0', "zero page number")).flatMap { i =>
if (i <= pairs.size) Parser.success(i)
else Parser.failure(s"$i exceeds the number of tests (${pairs.size})")
}
val pageP: Parser[ScriptedTestPage] = ("*" ~> pageNumber ~ ("of" ~> pageNumber)) flatMap {
case (page, total) if page <= total => success(ScriptedTestPage(page, total))
case (page, total) => failure(s"Page $page was greater than $total")
@ -61,7 +64,7 @@ object Scripted {
// Grabs the filenames from a given test group in the current page definition.
def pagedFilenames(group: String, page: ScriptedTestPage): Seq[String] = {
val files = pairMap(group).toSeq.sortBy(_.toLowerCase)
val files = pairMap.get(group).toSeq.flatten.sortBy(_.toLowerCase)
val pageSize = if (page.total == 0) files.size else files.size / page.total
// The last page may loose some values, so we explicitly keep them
val dropped = files.drop(pageSize * (page.page - 1))