UNPKG

cubb

Version:

cubb是一种命令行的文本标记语言, 用于输出更友好的命令行文本。

220 lines (154 loc) 5.93 kB
# cubb `cubb`是一种命令行的文本标记语言,用于输出更友好的命令行文本。 ## 安装与使用 ### 安装 ```bash $ npm install cubb --save ``` ### 使用 ```javascript var options = {}; var Cubb = require('cubb'); var cubb = new Cubb(options); cubb.render('<b>some text</b>'); ``` ## 选项 构造函数支持传入渲染选项 * options.tab: 如果显示`\t`,默认为4空格 * options.box: 盒子渲染选项 * options.box.margin: 盒子与前后内容之间的行距,默认为1行 * options.box.padding: 盒子左内补,默认为2空格 * options.box.borderColor: 边框颜色,默认为'yellow' * options.box.paddingVertical: 盒子内垂直间距,默认为0行 * options.box.paddingHorizontal: 盒子内水平间距,默认为1空格 * options.list: 列表渲染选项 * options.list.style: 列表项修饰符号 * options.list.space: 列表项与列表项之间的行距,默认为0行 * options.list.margin: 列表与前后内容之间的行距,默认为1行 * options.list.padding: 列表左内补,默认为2空格 * options.table: 表格渲染选项 * options.table.margin: 表格与前后内容之间的行距,默认为1行 * options.table.padding: 表格左内补,默认为2空格 * options.table.rowSpace: 两行之间的行距,默认为0行 * options.table.colSpace: 两个单元格之间的间距,默认为4空格 * options.table.titlePadding: 标题行左内补,默认为2空格 ## 方法 ### render(text,options) 将标记文本渲染成可以在命令行正确显示的文本。 * text: 要渲染的完整文本内容 * options: 同选项,只对当前渲染有效 ### clean(text) 清除所有标记样式。 ## 语法 所有语法标签都支持嵌套使用。 ### 粗体 ```html <b>some text</b> ``` ```markdown [b]some text[/b] ``` ### 斜体 ```html <b>some text</b> ``` ```markdown [b]some text[/b] ``` ### 下划线 ```html <u>some text</u> ``` ```markdown [u]some text[/u] ``` ### 弱化 ```html <d>some text</d> ``` ```markdown [d]some text[/d] ``` ### 文本颜色 支持的颜色: black,red,green,yellow,blue,magenta,cyan,white,gray,redBright,greenBright,yellowBright,blueBright,magentaBright,cyanBright,whiteBright。 ```html <red>some text</red> ``` ```html <color red>some text</color> ``` ```markdown [red]some text[/red] ``` ```markdown [color=red]some text[/color] ``` ### 背景颜色 ```html <bgRed>some text</bgRed> ``` ```html <bgColor red>some text</bgColor> ``` ```markdown [bgRed]some text[/bgRed] ``` ```markdown [bgColor=red]some text[/bgColor] ``` ### 列表 ```markdown * list item1 * list item2 * list item3 ``` ### 盒子 #### 单边框 ```markdown :----------------: | some text | | some long text | :----------------: ``` #### 双边框 ```markdown =================: ║ some text ║ ║ some long text ║ =================: ``` #### 文本对齐 通过在左边或者右边添加`:`可以指定盒子内部文本的对齐方式。 ### 表格 #### 带表头表格 与markdown的表格一样,支持使用冒号定义单元格左右对齐方式。单元格的宽度是自动计算的,并不强行要求预先定义好。 `title`行是一个特殊的行,需要使用`[]`将标题文本内容包裹起来。 ```markdown | Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari | | ----------------------------------- | :------: | :----------: | :--------------: | :--------------------------: | :----: | :----: | | [title 1] | | Basic support | 38 | 12<u>[1]</u> | 36 (36) | <red><b>No support</b></red> | 25 | 9 | | Symbol.iterator (@@iterator) | 38 | 12 | 36 (36) | <red><b>No support</b></red> | 25 | 9 | | [title 2] | | Symbol.unscopables (@@unscopables) | 38 | 12 | 48 (48) | <red><b>No support</b></red> | 25 | 9 | | Symbol.species (@@species) | 51 | ? | 41 (41) | <red><b>No support</b></red> | ? | ? | ``` #### 无表头表格 暂不支持定义单元格左右对齐方式。 ```markdown | [<b>title 1</b>] | | Basic support | 38 | 12<u>[1]</u> | 36 (36) | <red><b>No support</b></red> | 25 | 9 | | Symbol.iterator (@@iterator) | 38 | 12 | 36 (36) | <red><b>No support</b></red> | 25 | 9 | | [<b>title 2</b>] | | Symbol.unscopables (@@unscopables) | 38 | 12 | 48 (48) | <red><b>No support</b></red> | 25 | 9 | | Symbol.species (@@species) | 51 | ? | 41 (41) | <red><b>No support</b></red> | ? | ? | ``` ## 与chalk对比 * `chalk`支持更多的颜色与样式定义 `chalk`支持了一些只有在某些特定终端上才可以使用的特性,并在不兼容的时候做降级处理,`cubb`只实现了能够兼容所有终端的特性。 * 使用方式不同 相比`chalk`采用api的方式,标记语言的方式使用起来更加直观方便。 * `cubb`支持`list``table`块的渲染 `chalk`只处理纯文本的渲染,相对而言,`cubb`更适合用于大段内容的渲染。 ## 致谢 在实现`cubb`框架过程中,参考了`chalk``marked`的部分代码,在此表示感谢!