最新の安定バージョンについては、Spring Shell 4.0.0 を使用してください! |
テーマ
現在のターミナル実装は豊富な機能を備えており、プレーンテキスト以外のものも表示できます。たとえば、テキストを太字にしたり、色を変えたりといったスタイル設定が可能です。また、シェルの出力をより美しくするために使われる絵文字など、Unicode テーブルに登録された様々な文字を表示できるターミナルも一般的です。
Spring Shell は、2 つの部分からなるテーマフレームワークを通じてこれらをサポートしています。まず、スタイルを使用してテキストの種類を変更し、次に数字を使用して文字の表示方法をカスタマイズします。これら 2 つの部分は、テーマとして統合されます。
テーマ設定の内部の詳細については、テーマを参照してください。
デフォルトのテーマは default ですが、spring.shell.theme.name プロパティを使用して変更できます。また、dump という組み込みテーマも用意されており、こちらは色にスタイルを適用せず、特殊な数字も使用しません。 |
デフォルト設定を上書きすることで、既存のスタイルと図を変更できます。
static class MyStyleSettings extends StyleSettings {
@Override
public String highlight() {
return super.highlight();
}
}static class MyFigureSettings extends FigureSettings {
@Override
public String error() {
return super.error();
}
}ThemeSettings を作成して独自のスタイルと図の実装を提供することで、新しいテーマを作成することもできます。
static class MyThemeSettings extends ThemeSettings {
@Override
public StyleSettings styles() {
return new MyStyleSettings();
}
@Override
public FigureSettings figures() {
return new MyFigureSettings();
}
} カスタム ThemeSettings とテーマ名を返すことができる新しい Bean Theme を登録します。
@Configuration
static class CustomThemeConfig {
@Bean
Theme myTheme() {
return new Theme() {
@Override
public String getName() {
return "mytheme";
}
@Override
public ThemeSettings getSettings() {
return new MyThemeSettings();
}
};
}
} プログラムで JLine スタイルの文字列を作成する場合は ThemeResolver を使用してスタイルを解決し、文字をよりきれいにするためにテーマを設定する場合は Figure を使用できます。
@Autowired
private ThemeResolver resolver;
void resolve() {
String resolvedStyle = resolver.resolveStyleTag(StyleSettings.TAG_TITLE);
// bold,fg:bright-white
AttributedStyle style = resolver.resolveStyle(resolvedStyle);
// jline attributed style from expression above
String resolvedFigure = resolver.resolveFigureTag(FigureSettings.TAG_ERROR);
// character i.e. U+2716 Heavy Multiplication X Emoji, cross
}