create and test the style and formatting of text in your terminal applications
Switch branches/tags
Nothing to show
Clone or download
Latest commit 4a63b93 Feb 12, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
img 0.1: first release Jan 10, 2018
src add set_plain Feb 12, 2018
tests 1.1: fix minor bug with repr and add links to docs Jan 10, 2018
.gitignore initial commit Jan 8, 2018
.travis.yml add set_plain Feb 12, 2018
Cargo.toml add set_plain Feb 12, 2018
LICENSE-APACHE add licenses Jan 10, 2018
LICENSE-MIT add licenses Jan 10, 2018
README.md 1.1: fix minor bug with repr and add links to docs Jan 10, 2018
appveyor.yml configure ci scripts Jan 10, 2018

README.md

  • description: create and test the style and formatting of text in your terminal applications
  • docs: https://docs.rs/termstyle

termstyle is a library that aims to make it easy to build (and test) formatted and styled command line applications. It supports the following "elements":

  • styled-text
    • italic
    • bold
    • colors
  • tables: composed of styled text with identical width columns

Text can be constructed programatically by pushing tokens onto a vector and then paint()ing them, or by parsing a yaml file. This allows you to easily write unit tests for your command line applications.

Example

Given the following config (written in yaml):

- {t: "-- EXAMPLE --\n", b: true}
- "This is a regular string with a newline\n"
- "This does not have a newline, but "
- {t: "this is red", c: red}
- ", but this is NOT red!\n"
- "Bold is easy like this: "
- {t: "see I'm bold!!\n", b: true}
- And so is multiple settings
- # long-form
  t: |

      bold AND green!
      and even multiple lines :) :)
  b: true
  c: green
- ["\nyou can group multiple text items ", {t: "on one line!", b: true}]
- "\nGrouping things in one line is necessary for tables\n"
- "Notice that some cells are grouped and some are not.\n\n"
- [{t: "# Table", b: true}, "\n"]
-
  table:
  - [["header ", {t: "col1", b: true}] ,"| header col2"]
  - ["row col1", ["| ", {t: "row col2", c: green}]]

Use the following to render it:

let els = termstyle::from_str(serde_yaml::from_str, example).unwrap();
termstyle::paint(&mut ::std::io::stdout(), &els).unwrap();

Which gets rendered as:

rendered

You can also create the "stream of elements" using the types provided by the library. For more information, see the library docs.

LICENSE

The source code is Licensed under either of

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.