主題
當前的終端實現功能豐富,通常可以顯示除了純文字之外的內容。例如,文字可以設定為粗體或具有不同的顏色。終端也常見能夠顯示 Unicode 表中的各種字元,例如表情符號,這些通常用於美化 shell 輸出。
Spring Shell 透過其主題框架支援這些功能,該框架包含兩部分:首先,樣式可用於更改文字型別;其次,圖形決定某些字元如何顯示。這兩者然後結合起來形成一個主題。
有關主題內部原理的更多資訊,請參閱 主題。
預設主題名為 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();
}
}
註冊一個新的 Bean Theme
,您可以在其中返回自定義的 ThemeSettings
和主題名稱。
@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
來解析樣式;如果您想為字元設定主題以使其更美觀,可以使用 ThemeResolver
來解析圖形。
@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
}