地味に出せない。
ここに「ドル円」を表示したい。
こんな感じでできるようです。
こうなりました。
SOL は「SOL-JPY」ですね、今気付きました。
地味に出せない。
ここに「ドル円」を表示したい。
こんな感じでできるようです。
こうなりました。
SOL は「SOL-JPY」ですね、今気付きました。
以前書いたやつですが1行ごとでは面倒な場合が多いです。
👉 【Android Studio】Gradle Version Catalog「Live Template」を使って インライン・テーブル に瞬時に書き換える
一括でまとめて
"androidx.cardview:cardview:1.0.0"
のような記述を
{ module = "androidx.cardview:cardview", version = "1.0.0" }
のように置き換えたいです。
今回は、簡単な Groovy スクリプト を使ってそんなツールを作ってみました。
Android Studio 単体で利用できます。
Android Studio 上で、
TOMLなどの以下のような箇所を含む複数行をクリップボードにコピーします。
[libraries]
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" }
androidx-cardview = "androidx.cardview:cardview:1.0.0"
[plugins]
android-application = "com.android.application:7.3.1"
kotlin-android = "org.jetbrains.kotlin.android:1.7.20"
「inl
」 (inline) と文字入力して、Live Templates で一括置換したものを入力します。
[libraries]
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" }
androidx-cardview = { module = "androidx.cardview:cardview", version = "1.0.0" }
[plugins]
android-application = { id = "com.android.application", version = "7.3.1" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version = "1.7.20" }
必要な部分だけ置換します。
以下のスクリプト inline.groovy
をどこかに配置します。
Android Studio の Live Templates にそのスクリプトを実行するように設定します。
注意する点は、スクリプトを配置した「絶対パス」を設定することです。
強引に正規表現で別ファイルを使わない版。
最近はこれを使ってます。
groovyScript("def ls = System.lineSeparator();return _1.split(ls).collect() { l -> l.replaceAll(/^([a-z0-9\\-]+) = \"([^\\:\"]+):([^\\:\"]+)\"/) { _, k, i, v -> \"$k = { id = \\\"$i\\\", version = \\\"$v\\\" }\"}.replaceAll(/^([a-z0-9\\-]+) = \"([^\\:\"]+):([^\\:\"]+):([^\\:\"]+)\"/) { _, k, g, a, v -> \"$k = { module = \\\"$g:$a\\\", version = \\\"$v\\\" }\"}}.join(ls)", clipboard());
👉 Gist - comment - inline.groovy
👉 Jetpack Compose Samples でも使われている「Version catalog update plugin」で libs.versions.toml を書き出してみる
👉 How to debug groovy script using in live template? – IDEs Support (IntelliJ Platform) | JetBrains
👉 Live template variables | IntelliJ IDEA
だるいですよね、インラインテーブル記述。
name = { first = "Tom", last = "Preston-Werner" }
point = { x = 1, y = 2 }
animal = { type.name = "pug" }
Android Studio でも
Graadle Version Catalog で、最初は、こんな記述でも
[plugins]
android-material = "com.google.android.material:material:1.8.0-alpha02"
やがて、
[plugins]
android-material = { module = "com.google.android.material:material", version = "1.8.0-alpha02" }
となり
[versions]
android-material = "1.8.0-alpha02"
[plugins]
android-material = { module = "com.google.android.material:material", version.ref = "android-material" }
というふうに変わっていきます。
大量にやってるのも地味にだるい。
Live Templete を使って書き換えます。
Preferences
↓
Live Templates
から作っていきます。
ここマクロたちは、思ったより使いづらいものが多い。
割と使える Groovy のマクロ。
groovyScript(
, [arg, ...]) Executes the Groovy script passed as a string.
The first argument is a string with either the text of the script or the path to the file that contains the script. The function passes other optional arguments to the script as values for _1, _2, _3, ..., _n variables. Also, you can access the current editor from inside the script using the _editor variable.
The following example shows a groovyScript() function that splits the selected text into words and displays them as a numbered list:
groovyScript("def result = ''; _1.split().eachWithIndex { item, index -> result = result + index.next() + '. ' + item + System.lineSeparator() }; return result;", SELECTION);
👉 Edit Template Variables dialog | IntelliJ IDEA
以下の感じで設定して4つのテンプレートを記述しました。
どれも似たような記述なので、一つだけ貼っておきます。
使い回せます。
使い方は、該当文字列をコピーしてから、Abbreviation を入力で、テンプレートを吐き出しながらキーなどを編集してください。
結果。
キーの編集に連携されて関連記述が編集されるのがいいところでしょうか。
けどまあ、Android Studio 本体の機能更新が待たれるところですが。
複数行一括のほうがいいので以下の方法を実際は使っています。
【Android Studio】TOML内のすべてをインライン・テーブルに書き換える Live Templates 用 Groovy スクリプト https://t.co/hTpsezFD2d #android #kotlin #groovy #androiddev #プログラミング pic.twitter.com/7PyX7I95gX
— chanzmao (@maochanz) November 11, 2022