Одним из первых постов в этот блог был пост про ускорение работы с Jekyll с помощью Java. Там я писал, что:

Я засек время потраченное на написание программы 34 минуты. Мне надо сделать около 50 постов, чтобы оно окупилось, и надо чтобы в программе не нашлось новых багов.

Я написал эти 50 постов. Сейчас в блоге 125 записей. И эксперимент оказался очень удачным. Я решил продолжить его перевести программу для генерации постов с Java на Kotlin. Это оказалось очень просто, IntelliJ IDEA умеет делать это автоматически:

package ru.yamakarov.jekyll

import java.io.IOException
import java.nio.file.FileSystems
import java.nio.file.Files
import java.text.SimpleDateFormat
import java.util.*


fun main(args: Array<String>) {
    if (args.size < 2)
    {
        println("No command do nothing\n" +
                "possible options:\n" +
                "-n name  Creates new post \n")
    }

    val command = args[0]
    if ("-n" == command)
    {
        val name = args[1]
        val date = Date(System.currentTimeMillis())
        val template = "---\n" +
                "layout: post\n" +
                "title:  \"\"\n" +
                "date:   " + SimpleDateFormat("yyyy-MM-dd HH:mm").format(date) + "\n" +
                "categories: \n" +
                "---\n\n"
        val fileName = SimpleDateFormat("yyyy-MM-dd").format(date) +
                "-" + name + ".markdown"
        val path = FileSystems.getDefault().getPath("_posts",
                fileName)
        try {
            if (!Files.exists(path)) {
                Files.createFile(path)
            }
            Files.write(path, listOf(template))
            println(fileName)
        } catch (e: IOException) {
            println("Exception writing file")
            e.printStackTrace()
        }

    }
}

Оказалось очень удобно. Хочется отметить следующие моменты:

  • На Kotlin можно писать один в один как на Java. Это не значит, что нужно так делать. Но то, что можно очень хорошо. Существенно упрощает переход на новый язык.
  • Я не знал, но оказывается можно не ставить точку с запятой в конце утверждения
  • В IDEA работает sout тоже удобно для тех, кто переходит с Java
  • В сконвертированной программе нет ни одного объявления типа, а значит не надо писать Борщ борщ = new Борщ(), это удобно на мой взгляд.