Реализация новой особенности Scala Process, такой как URLBuilder и FileBuilder - PullRequest
0 голосов
/ 11 июня 2019

Scala 2.12.8 предоставляет удобные черты URLBuilder и FileBuilder . Вот пример того, как использовать FileBuilder:

def run(input: java.io.File, cmdSeq: String*): String = {
  import scala.sys.process._
  (input #> Process(cmdSeq)).!!.trim
}

# Run jq against the contents of test.json
run(new java.io.File("test.json"), "jq", "-r", ".property")

Я бы хотел определить и реализовать аналогичную черту, которую мы могли бы назвать InStreamBuilder. Использование этой черты приведет к вводу java.io.InputStream в стандартный ввод процесса Scala. Вот пример того, как я хотел бы использовать его; использование будет очень похоже на приведенный выше пример:

def run(input: java.io.InputString, cmdSeq: String*): String = {
  import scala.sys.process._
  (input #> Process(cmdSeq)).!!.trim
}

# Run jq against the json in the string
val json = """{ "property": "asdf" }"""
val inStream = new java.io.ByteArrayInputStream(input.getBytes)
run(inStream, "jq", "-r", ".property")

Конечно, это должно быть легко ... и все же для меня не очевидно, как написать реализацию черты:)

Да, я знаю, что это можно сделать на Java. Я ищу решение Scala на 100%, как описано выше, без создания временного файла.

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