«Ожидаемый символ пробела» при запуске пользовательского inputKey - PullRequest
2 голосов
/ 04 мая 2019

Я создаю пользовательский inputKey, который выглядит как

val rating = inputKey[Option[Int]]("How will you rate this course?")
rating := {
  import complete.DefaultParsers._
  import complete.Parser
  val r: Parser[Int] = IntBasic.examples("<rating>")
  r.result
}

Это находится в файле projectRoot/build.sbt.

Я пытаюсь запустить это на sbt shell, используя несколько раз, каждый раз, когда это не удается

sbt:Hello> rating 1
[error] Expected whitespace character
[error] Expected '/'
[error] rating 1
[error]        ^
sbt:Hello>

Тогда

sbt:Hello> show "rating 3"
[error] Expected whitespace character
[error] Expected 'Global'
[error] Expected '*'
[error] Expected 'Zero'
[error] Expected 'ThisBuild'
[error] Expected 'ProjectRef('
[error] Expected '{'
[error] Expected project ID
[error] Expected configuration
[error] Expected configuration ident
[error] Expected key
[error] show "rating 3"
[error]      ^
sbt:Hello>

Также как

sbt:Hello> rating "5"
[error] Expected whitespace character
[error] Expected '/'
[error] rating "5"
[error]        ^
sbt:Hello>

Я не знаю, чего мне здесь не хватает. Может кто-нибудь указать на мою ошибку здесь?

1 Ответ

3 голосов
/ 04 мая 2019

Поскольку перед целым числом стоит пробел, попробуйте использовать комбинацию парсера Space ~> IntBasic, например,

lazy val rating = inputKey[Int]("How will you rate this course?")
rating := {
  import complete.DefaultParsers._
  val rating = (Space ~> IntBasic).examples("<rating>").parsed
  println(s"Rating input = $rating")
  rating
}

Выполнение rating 3 в sbt должно теперь вывести Rating input = 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...