テーマ
現在のターミナルの実装は機能が豊富で、通常はプレーンテキスト以外の何かを表示できます。たとえば、テキストを太字にしたり、異なる色にしたりすることができます。シェル出力をよりきれいにするために通常使用される絵文字のような、Unicode テーブルからさまざまな文字を表示できるターミナルも一般的です。
Spring Shell は、2 つの部分を含むテーマフレームワークを介してこれらをサポートします。1 つ目は、スタイルを使用してテキスト型を変更し、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
}