190 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # RenderKid
 | |
| [](http://travis-ci.org/AriaMinaei/RenderKid)
 | |
| 
 | |
| RenderKid allows you to use HTML and CSS to style your CLI output, making it easy to create a beautiful, readable, and consistent look for your nodejs tool.
 | |
| 
 | |
| ## Installation
 | |
| 
 | |
| Install with npm:
 | |
| ```
 | |
| $ npm install renderkid
 | |
| ```
 | |
| 
 | |
| ## Usage
 | |
| 
 | |
| ```coffeescript
 | |
| RenderKid = require('renderkid')
 | |
| 
 | |
| r = new RenderKid()
 | |
| 
 | |
| r.style({
 | |
|   "ul": {
 | |
|     display: "block"
 | |
|     margin: "2 0 2"
 | |
|   }
 | |
| 
 | |
|   "li": {
 | |
|     display: "block"
 | |
|     marginBottom: "1"
 | |
|   }
 | |
| 
 | |
|   "key": {
 | |
|     color: "grey"
 | |
|     marginRight: "1"
 | |
|   }
 | |
| 
 | |
|   "value": {
 | |
|     color: "bright-white"
 | |
|   }
 | |
| })
 | |
| 
 | |
| output = r.render("
 | |
| <ul>
 | |
|   <li>
 | |
|     <key>Name:</key>
 | |
|     <value>RenderKid</value>
 | |
|   </li>
 | |
|   <li>
 | |
|     <key>Version:</key>
 | |
|     <value>0.2</value>
 | |
|   </li>
 | |
|   <li>
 | |
|     <key>Last Update:</key>
 | |
|     <value>Jan 2015</value>
 | |
|   </li>
 | |
| </ul>
 | |
| ")
 | |
| 
 | |
| console.log(output)
 | |
| ```
 | |
| 
 | |
| 
 | |
| 
 | |
| ## Stylesheet properties
 | |
| 
 | |
| ### Display mode
 | |
| 
 | |
| Elements can have a `display` of either `inline`, `block`, or `none`:
 | |
| ```coffeescript
 | |
| r.style({
 | |
|   "div": {
 | |
|     display: "block"
 | |
|   }
 | |
| 
 | |
|   "span": {
 | |
|     display: "inline" # default
 | |
|   }
 | |
| 
 | |
|   "hidden": {
 | |
|     display: "none"
 | |
|   }
 | |
| })
 | |
| 
 | |
| output = r.render("
 | |
| <div>This will fill one or more rows.</div>
 | |
| <span>These</span> <span>will</span> <span>be</span> in the same <span>line.</span>
 | |
| <hidden>This won't be displayed.</hidden>
 | |
| ")
 | |
| 
 | |
| console.log(output)
 | |
| ```
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| ### Margin
 | |
| 
 | |
| Margins work just like they do in browsers:
 | |
| ```coffeescript
 | |
| r.style({
 | |
|   "li": {
 | |
|     display: "block"
 | |
| 
 | |
|     marginTop: "1"
 | |
|     marginRight: "2"
 | |
|     marginBottom: "3"
 | |
|     marginLeft: "4"
 | |
| 
 | |
|     # or the shorthand version:
 | |
|     "margin": "1 2 3 4"
 | |
|   },
 | |
| 
 | |
|   "highlight": {
 | |
|     display: "inline"
 | |
|     marginLeft: "2"
 | |
|     marginRight: "2"
 | |
|   }
 | |
| })
 | |
| 
 | |
| r.render("
 | |
| <ul>
 | |
|   <li>Item <highlgiht>1</highlight></li>
 | |
|   <li>Item <highlgiht>2</highlight></li>
 | |
|   <li>Item <highlgiht>3</highlight></li>
 | |
| </ul>
 | |
| ")
 | |
| ```
 | |
| 
 | |
| ### Padding
 | |
| 
 | |
| See margins above. Paddings work the same way, only inward.
 | |
| 
 | |
| ### Width and Height
 | |
| 
 | |
| Block elements can have explicit width and height:
 | |
| ```coffeescript
 | |
| r.style({
 | |
|   "box": {
 | |
|     display: "block"
 | |
|     "width": "4"
 | |
|     "height": "2"
 | |
|   }
 | |
| })
 | |
| 
 | |
| r.render("<box>This is a box and some of its text will be truncated.</box>")
 | |
| ```
 | |
| 
 | |
| ### Colors
 | |
| 
 | |
| You can set a custom color and background color for each element:
 | |
| 
 | |
| ```coffeescript
 | |
| r.style({
 | |
|   "error": {
 | |
|     color: "black"
 | |
|     background: "red"
 | |
|   }
 | |
| })
 | |
| ```
 | |
| 
 | |
| List of colors currently supported are `black`, `red`, `green`, `yellow`, `blue`, `magenta`, `cyan`, `white`, `grey`, `bright-red`, `bright-green`, `bright-yellow`, `bright-blue`, `bright-magenta`, `bright-cyan`, `bright-white`.
 | |
| 
 | |
| ### Bullet points
 | |
| 
 | |
| Block elements can have bullet points on their margins. Let's start with an example:
 | |
| ```coffeescript
 | |
| r.style({
 | |
|   "li": {
 | |
|     # To add bullet points to an element, first you
 | |
|     # should make some room for the bullet point by
 | |
|     # giving your element some margin to the left:
 | |
|     marginLeft: "4",
 | |
| 
 | |
|     # Now we can add a bullet point to our margin:
 | |
|     bullet: '"-"'
 | |
|   }
 | |
| })
 | |
| 
 | |
| # The four hyphens are there for visual reference
 | |
| r.render("
 | |
| ----
 | |
| <li>Item 1</li>
 | |
| <li>Item 2</li>
 | |
| <li>Item 3</li>
 | |
| ----
 | |
| ")
 | |
| ```
 | |
| And here is the result:
 | |
| 
 | |
| 
 |