Сервис классификации
(домашнее задание)

Страничка курса: https://maxcom.github.io/scala-course-2022/

Будем делать "классический" сайт, а не приложение.

(не будем писать код на front-end)

Задание:

Сделаем HTML форму для ввода текста.

Обработчик вернет класс текста (позитив/негатив) и исходный текст с диагностикой (html подсветка!).

Используем HTML шаблоны Twirl

project/plugins.sbt


addSbtPlugin("com.typesafe.sbt" % "sbt-twirl" % "1.5.1")
					

build.sbt


enablePlugins(SbtTwirl)
					

src/main/twirl/views/form.scala.html

@(text: Option[String], category: Option[String], 
        debug: Option[String])

Классификатор

@if(category.nonEmpty) {

Результат: @category

@debug

}

В контроллере возвращаем HTML:


implicit val twirlMarshaller: ToEntityMarshaller[Html] =
  Marshaller.withFixedContentType(`text/html(UTF-8)`) { html =>
    HttpEntity(`text/html(UTF-8)`, html.body)
  }
					

complete(form(None, None, None))
					

Добавляем обработку формы

См. документацию

Страшный "программистский" дизайн?

Можно легко исправить

Используем готовый CSS шаблон

Популярный вариант: Bootstrap

Его можно подключить как зависимость в sbt


libraryDependencies ++= Seq(
  "org.webjars.npm" % "bootstrap" % "5.1.3",
  "org.mdedetrich" %% "akka-http-webjars" % "0.5.0")
					

документация на akka-http-webjars

/webjars/bootstrap.min.css

Срок сдачи - 4 мая.