【macOS】コピーしているテキストをHTMLエスケープする

zsh 向けです。

pbpaste | recode utf8..html | tee >(pbcopy)


pbpaste | recode utf8..html | tee >(pbcopy)

例えば、以下のテキストをコピーしてから、上のワンライナーをターミナルで実行する。


@Serializable
class House(
    private val rooms: Int? = 3,
    val name: String = "Palace"
) : Building {
    var residents: Int = 4
        get() {
            println("Current residents: $field")
            return field
        }

    fun burn(evacuation: (people: Int) -> Boolean) {
        rooms ?: return
        if (evacuation((0..residents).random()))
            residents = 0
    }
}

クリップボード内のテキストがHTMLエスケープされ、同時にターミナル上にも表示される。


@Serializable
class House(
    private val rooms: Int? = 3,
    val name: String = "Palace"
) : Building {
    var residents: Int = 4
        get() {
            println("Current residents: $field")
            return field
        }

    fun burn(evacuation: (people: Int) -> Boolean) {
        rooms ?: return
        if (evacuation((0..residents).random()))
            residents = 0
    }
}

表示と同じようにクリップボード内もテキストも置換されているので、そのまま利用先にペーストする。

必要があったので少しやってみました。

👉 highlight.js に「AndroidStudio」スタイルが登場してた件 
👉 標準出力に出しつつ、パイプ先のコマンドにも繋ぐ | tellme.tokyo 



highlight.js に「AndroidStudio」スタイルが登場してた件

WEBサイトでコードをシンタックス・ハイライトするなら「highlight.js」がおすすめです。

highlight.js Android Studio style

👉 highlight.js 

「スタイル」と呼ばれるきれいなテーマが今では 246個 もあるようです。

Androidアプリ向けIDE「AndroidStudio」というスタイルも登場していました。

ダークなほうの「Darcula」ですね、これ。

highlight.js Android Studio style

その他、いくつかメジャーどころを貼っておきます。

github

github-dark

github-dark-dimmed

stackoverflow-light

stackoverflow-dark

使い方

HTMLヘッダーの中に表示したいスタイル「androidstudio」のCSSファイルと、プログラミング言語を認識するJavaScriptファイルについて記述しておきます。


<link rel="stylesheet" href="/path/to/styles/androidstudio.min.css">
<script src="/path/to/highlight.min.js"></script>
<script>hljs.highlightAll();</script>

<pre><code class="language-kotlin"> ~ </code></pre> 内にコードを差し込みます。

言語はここで指定しなくても自動検出してくれるようですが、短いコードなどもあるので、念のため記述しておいたほうが良いでしょう。

実体参照にエスケープしたコードを以下のように差し込み貼り付けます。


<pre><code class="language-kotlin">
import kotlinx.serialization.Serializable
import kotlin.random.Random

interface Building

@Serializable
class House(
    private val rooms: Int? = 3,
    val name: String = &quot;Palace&quot;
) : Building {
    var residents: Int = 4
        get() {
            println(&quot;Current residents: $field&quot;)
            return field
        }

    fun burn(evacuation: (people: Int) -&gt; Boolean) {
        rooms ?: return
        if (evacuation((0..residents).random()))
            residents = 0
    }
}

fun main() {
    val house = House(name = &quot;Skyscraper 1&quot;)
    house.burn {
        Random.nextBoolean()
    }
}

</code></pre>

👉 【macOS】コピーしているテキストをHTMLエスケープする 

ブラウザでアクセスすると以下のように表示されています。


import kotlinx.serialization.Serializable
import kotlin.random.Random

interface Building

@Serializable
class House(
    private val rooms: Int? = 3,
    val name: String = "Palace"
) : Building {
    var residents: Int = 4
        get() {
            println("Current residents: $field")
            return field
        }

    fun burn(evacuation: (people: Int) -> Boolean) {
        rooms ?: return
        if (evacuation((0..residents).random()))
            residents = 0
    }
}

fun main() {
    val house = House(name = "Skyscraper 1")
    house.burn {
        Random.nextBoolean()
    }
}

👉 How to use highlight.js 

このサイトでも使っていましたが6年ぶりに更新してみましたので 🙆



build.gadle* に 'android-library' や 'kotlin-kapt' があったらやばい!

あるライブラリツールに Jake が反応しています。


👉 (1) Sam EdwardsさんはTwitterを使っています 「Looks like @AutonomousApps used "com.autonomousapps.dependency-analysis" for https://t.co/9rXv9Yb5tm But then there is "java-library", "kotlin-kapt", etc, etc. 🤔 https://t.co/yUFrUc2KLc」 / Twitter 

私的には、android-library はなかったものの kotlin-kapt はありました。

gradle 周りの記述は、どうしてもメンテが雑になっていたりします。

GitHub で検索してみます。

結構ヒットします。


👉 Search · android-library 

kotlin-kapt
👉 Search · kotlin-kapt 

つまり、こういうことでしょうかね。


plugins {
    id 'com.android.application'
-   id 'kotlin-android'
-   id 'android-library'
-   id 'kotlin-kapt'
+   id 'org.jetbrains.kotlin.android'
+   id 'org.jetbrains.kotlin.kapt'

あとは、不要な記述を消し去りたいのですが !

そんなツールを探していたのですが 😅😅😅