├── .gitignore ├── .travis.yml ├── AUTHORS ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── Makefile ├── README.md ├── VERSION ├── docs ├── .gitignore ├── 404.html ├── Gemfile ├── Gemfile.lock ├── _config.yml ├── _includes │ ├── attributes.md │ ├── background.md │ ├── color-bar.md │ ├── confirm.md │ ├── elements.md │ ├── emojis.md │ ├── footer.html │ ├── foreground.md │ ├── head.html │ ├── icons.md │ ├── index-sidebar.html │ ├── install.md │ ├── sidebar.html │ └── sourcing.md ├── _layouts │ ├── default.html │ ├── home.html │ ├── page.html │ └── post.html ├── _posts │ ├── _site │ │ ├── 404.html │ │ ├── atom.xml │ │ ├── getting-started │ │ │ └── index.html │ │ ├── index.html │ │ ├── public │ │ │ ├── apple-touch-icon-144-precomposed.png │ │ │ ├── code │ │ │ │ ├── attributes.sh │ │ │ │ ├── background.sh │ │ │ │ ├── color-bar.sh │ │ │ │ ├── elements.sh │ │ │ │ ├── emojis.sh │ │ │ │ ├── foreground.sh │ │ │ │ └── icons.sh │ │ │ ├── css │ │ │ │ ├── hyde.css │ │ │ │ ├── poole.css │ │ │ │ ├── style.css │ │ │ │ ├── syntax-new.css │ │ │ │ ├── syntax.css │ │ │ │ └── syntax.css.old │ │ │ ├── favicon.ico │ │ │ └── images │ │ │ │ ├── attributes-demo.png │ │ │ │ ├── attributes-slide.png │ │ │ │ ├── background-demo.png │ │ │ │ ├── background-slide.png │ │ │ │ ├── color-bar-demo.png │ │ │ │ ├── cowsay-slide.png │ │ │ │ ├── cowsay-source-slide.png │ │ │ │ ├── demo-home.png │ │ │ │ ├── demo-on-runnable.png │ │ │ │ ├── elements-hr-demo.png │ │ │ │ ├── elements-other-demo.png │ │ │ │ ├── emojis-demo.png │ │ │ │ ├── emojis-slide.png │ │ │ │ ├── foreground-demo.png │ │ │ │ ├── foreground-slide.png │ │ │ │ ├── icons-demo.png │ │ │ │ ├── icons-slide.png │ │ │ │ ├── logo.png │ │ │ │ └── terminal-home.png │ │ └── slideshow.html │ └── template.md ├── _site │ ├── 404.html │ ├── getting-started │ │ └── index.html │ ├── index.html │ ├── public │ │ ├── apple-touch-icon-144-precomposed.png │ │ ├── code │ │ │ ├── attributes.sh │ │ │ ├── background.sh │ │ │ ├── color-bar.sh │ │ │ ├── elements.sh │ │ │ ├── emojis.sh │ │ │ ├── foreground.sh │ │ │ └── icons.sh │ │ ├── css │ │ │ ├── hyde.css │ │ │ ├── poole.css │ │ │ ├── style.css │ │ │ ├── syntax-new.css │ │ │ ├── syntax.css │ │ │ └── syntax.css.old │ │ ├── favicon.ico │ │ └── images │ │ │ ├── attributes-demo.png │ │ │ ├── attributes-slide.png │ │ │ ├── background-demo.png │ │ │ ├── background-slide.png │ │ │ ├── color-bar-demo.png │ │ │ ├── confirm-demo.png │ │ │ ├── cowsay-slide.png │ │ │ ├── cowsay-source-slide.png │ │ │ ├── demo-home.png │ │ │ ├── demo-on-runnable.png │ │ │ ├── elements-hr-demo.png │ │ │ ├── elements-other-demo.png │ │ │ ├── emojis-demo.png │ │ │ ├── emojis-slide.png │ │ │ ├── foreground-demo.png │ │ │ ├── foreground-slide.png │ │ │ ├── icons-demo.png │ │ │ ├── icons-slide.png │ │ │ ├── logo.png │ │ │ ├── odb-shml-logo.svg │ │ │ └── terminal-home.png │ └── slideshow.html ├── getting-started.md ├── index.md ├── public │ ├── apple-touch-icon-144-precomposed.png │ ├── code │ │ ├── attributes.sh │ │ ├── background.sh │ │ ├── color-bar.sh │ │ ├── elements.sh │ │ ├── emojis.sh │ │ ├── foreground.sh │ │ └── icons.sh │ ├── css │ │ ├── hyde.css │ │ ├── poole.css │ │ ├── style.css │ │ ├── syntax-new.css │ │ ├── syntax.css │ │ └── syntax.css.old │ ├── favicon.ico │ └── images │ │ ├── _site │ │ ├── attributes-demo.png │ │ ├── attributes-slide.png │ │ ├── background-demo.png │ │ ├── background-slide.png │ │ ├── color-bar-demo.png │ │ ├── confirm-demo.png │ │ ├── cowsay-slide.png │ │ ├── cowsay-source-slide.png │ │ ├── demo-home.png │ │ ├── demo-on-runnable.png │ │ ├── elements-hr-demo.png │ │ ├── elements-other-demo.png │ │ ├── emojis-demo.png │ │ ├── emojis-slide.png │ │ ├── foreground-demo.png │ │ ├── foreground-slide.png │ │ ├── icons-demo.png │ │ ├── icons-slide.png │ │ ├── logo.png │ │ ├── odb-shml-logo.svg │ │ └── terminal-home.png │ │ ├── attributes-demo.png │ │ ├── attributes-slide.png │ │ ├── background-demo.png │ │ ├── background-slide.png │ │ ├── color-bar-demo.png │ │ ├── confirm-demo.png │ │ ├── cowsay-slide.png │ │ ├── cowsay-source-slide.png │ │ ├── demo-home.png │ │ ├── demo-on-runnable.png │ │ ├── elements-hr-demo.png │ │ ├── elements-other-demo.png │ │ ├── emojis-demo.png │ │ ├── emojis-slide.png │ │ ├── foreground-demo.png │ │ ├── foreground-slide.png │ │ ├── icons-demo.png │ │ ├── icons-slide.png │ │ ├── logo.png │ │ ├── odb-shml-logo-readme.svg │ │ ├── odb-shml-logo.svg │ │ └── terminal-home.png └── slideshow.html ├── examples ├── confirm_dialog.sh └── progress_bar.sh ├── package.json ├── shml.sh └── test ├── attributes_tests.sh ├── background_color_tests.sh ├── confirm_tests.sh ├── dialog_tests.sh ├── elements_tests.sh ├── emojis_tests.sh ├── foreground_color_tests.sh ├── icons_tests.sh └── mixed_tests.sh /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | test/shunt.sh 3 | example.sh 4 | npm-debug.log 5 | FEEDBACK.md 6 | TODO.md 7 | docs/_site/atom.xml 8 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | script: 3 | - make test 4 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Justin Dorfman (http://www.justindorfman.com/) 2 | Joshua Mervine (http://www.mervine.net/) 3 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## [1.0.4] - 2015-11-16 (Sewed Up) 2 | 3 | #### Added 4 | - Better Source Detect (PR #15) 5 | - `package.json` for NPM 6 | - Broke tests out in to their own files (PR #19) 7 | - `112` new tests, `137` in total (PR #26) 8 | - `VERSION` (PR #27 & #28) 9 | 10 | #### Updated 11 | - `Makefile` 12 | - `bump` (version bumper) 13 | - `publish` (NPM Publish) 14 | - `install` (shml binary) 15 | - `remove` (shml binary) 16 | - Documentation 17 | - `index.md` 18 | - `install.md` 19 | 20 | #### Removed 21 | - Entity mentions (PR #20) 22 | 23 | 24 | ## [1.0.3] - 2015-11-07 (Almost Famous) 25 | 26 | #### Added 27 | - `docs/` 28 | - `.travis.yml` (PR #18) & badge to `README.md` 29 | - New Makefile commands: `docs-serve`, `docs-build` & `docs-deploy` 30 | 31 | #### Removed 32 | - 2 invalid tests: `$(indent 2)`, `$(i 2)` 33 | 34 | #### Updated 35 | - Documentation (minor config issues, bug fixes, mixed content errors) 36 | 37 | ## [1.0.2] - 2015-10-11 38 | 39 | #### Fixed 40 | - `.gitignore` 41 | - Version Bump on Documentation/Chagelog/Readme 42 | 43 | ## [1.0.1] - 2015-10-09 44 | 45 | #### Removed 46 | - Bullet Entity reference ([Reported on Reddit](https://www.reddit.com/r/bash/comments/3nps8x/shml_shell_markup_language/cvr3gm2)) 47 | 48 | ## [1.0.0] - 2015-10-05 49 | 50 | #### Added 51 | - Emojis 52 | - New method shortcuts (`fgc`, `bgc`, `e`, `color`, `background`) 53 | - [Changlelog.md](http://keepachangelog.com/) 54 | - CONTRIBUTING.md 55 | 56 | #### Changed 57 | - Foreground method name to `fgcolor` 58 | - Background method name to `bgcolor` 59 | - README.md 60 | 61 | #### Fixed 62 | - Fix typos in recent README changes. 63 | 64 | #### Removed 65 | - Function prefixes 66 | - Entity Support (for now) 67 | - Obsolete files 68 | - EXAMPLES.md 69 | 70 | ## [beta] - 2013-11-01 71 | - Merge pull request #14 from jimaek/master 72 | - Merge pull request #13 from trumbitta/patch-1 73 | - Merge pull request #12 from odb/develop 74 | - Merge pull request #11 from odb/jdorfman 75 | - Fixed the icons 76 | - Fixing declare 77 | - typo: add a missing e in Enhancement 78 | - Fixing help misspelling. 79 | - bash style updates 80 | - Tweaking attributes, including changing italic to underline. 81 | - Removing -e from the examples, as it's not required. 82 | - Fixing br and tab so that echo -e isn't required. 83 | - Adding entity support. 84 | - Fixing x vs. <3 and refactoring icons a bit. 85 | - Update year to match in every README example. 86 | - Writes dates in a strange way. 87 | - Replaced icons with unicode 88 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | Please ensure your pull request adheres to the following guidelines: 4 | 5 | - **Please [open an issue](https://github.com/odb/shml/issues) before creating any new features for SHML**. 6 | - Bug fixes are more than welcome. 7 | - Check your spelling and grammar (if applicable). 8 | - Make sure your text editor is set to remove trailing whitespace. 9 | 10 | Thank you! 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Justin Dorfman 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # By default 'bump' does nothing. 2 | VERSION?=$(shell cat VERSION) 3 | 4 | test/shunt.sh: 5 | cd test && curl -L https://raw.githubusercontent.com/odb/shunt/latest/install.sh | bash -s latest local 6 | 7 | test: test/shunt.sh .PHONY 8 | # Check 'source' for supported shells 9 | $(shell which bash) -c 'source ./shml.sh && color-bar' 10 | $(shell which zsh) -c 'source ./shml.sh && color-bar' 11 | # Execute test suite 12 | ./test/shunt.sh --verbose ./test/*_tests.sh 13 | 14 | test/%: .PHONY 15 | ./test/shunt.sh --verbose $@ 16 | 17 | clean: 18 | -rm test/shunt.sh 19 | 20 | BRANCH=master 21 | 22 | docs-build: 23 | cd docs/ && jekyll build 24 | 25 | docs-serve: 26 | cd docs/ && jekyll serve 27 | 28 | docs-deploy: 29 | @git status | grep "working directory clean" || (echo "ERROR: You have uncommitted changes!"; git status; exit 1) 30 | -git branch -D gh-pages 31 | git checkout -b gh-pages $(BRANCH) 32 | git rm -rf CHANGELOG.md CONTRIBUTING.md LICENSE Makefile README.md shml.sh test/ .travis.yml 33 | @for dir in $$(find docs -type d); do \ 34 | mkdir -v -p $$(echo $$dir | sed 's/docs\///'); \ 35 | done 36 | @for file in $$(find docs -type f); do \ 37 | git mv --force -v $$file $$(echo $$file | sed 's/docs\///') || exit 1; \ 38 | done 39 | git add . 40 | git commit -m "Deploying Docs to gh-pages." 41 | git push origin gh-pages --force 42 | git checkout $(BRANCH) 43 | 44 | # Usage: make bump VERSION= 45 | bump: 46 | # Updating $(shell cat VERSION) to $(VERSION) 47 | find . -type f | grep -v ".git\|CHANGELOG" | xargs grep -l $(shell cat VERSION) | xargs sed -i '' -e "s/$(shell cat VERSION)/$(VERSION)/g" 48 | 49 | publish: publish/npm 50 | 51 | publish/npm: 52 | npm publish 53 | 54 | # support a single make command from brew 55 | install: 56 | install -m 0755 shml.sh /usr/local/bin 57 | install -T -m 0755 shml.sh /usr/local/bin/shml 58 | 59 | remove: 60 | rm -f /usr/local/bin/shml.sh /usr/local/bin/shml 61 | 62 | .PHONY: 63 | 64 | # vim: ft=make: 65 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | SHML by ODB 3 |
4 | 5 | SHML v.1.1.0 6 | ==== 7 | 8 | [![Build Status](https://travis-ci.org/odb/shml.svg)](https://travis-ci.org/odb/shml) 9 | 10 | SHML is a shell framework for faster and easier script development. 11 | 12 | ### Why 13 | 14 | HTML has CSS, terminals have "ANSI/VT100 Control Sequences". SHML makes is easy to apply some style to your shell scripts without trying to remember that Yellow = `\033[33m` instead Yellow is `$(color yellow)`. 15 | 16 | ### 1-liner Install 17 | ```bash 18 | # Unix-like 19 | $ sudo bash -c 'curl -L https://raw.githubusercontent.com/odb/shml/1.1.0/shml.sh -o /usr/local/bin/shml && chmod +x /usr/local/bin/shml' 20 | 21 | # Homebrew 22 | $ brew install shml 23 | 24 | # npm 25 | $ npm install -g shml 26 | ``` 27 | 28 | ### Download 29 | 30 | > You can just download SHML without installing it... 31 | 32 | #### Git 33 | 34 | `$ git clone https://github.com/odb/shml.git` 35 | 36 | #### wget 37 | 38 | `$ wget https://raw.githubusercontent.com/odb/shml/master/shml.sh` 39 | 40 | ### Sourcing 41 | 42 | In order to use SHML you must tell your shell environment where it is located. Lets assume that we are writing a BASH script and want to use SHML. 43 | 44 | If you installed in using the 1-liner above you would do: 45 | 46 | ```bash 47 | #!/usr/bin/env bash 48 | source $(which shml) 49 | ``` 50 | If you downloaded SHML using git or wget you would do: 51 | 52 | ```bash 53 | #!/usr/bin/env bash 54 | source ./shml.sh 55 | ``` 56 | ### Examples 57 | 58 | ```bash 59 | #!/usr/bin/env bash 60 | source "$(which shml)" 61 | 62 | echo " 63 | $(fgcolor red) 64 | This will make the text red... 65 | $(fgcolor end) 66 | " 67 | ``` 68 | 69 | View all examples: [https://odb.github.io/shml/getting-started/](https://odb.github.io/shml/getting-started/) 70 | 71 | ### Contributing 72 | 73 | Contributions are more than welcome. Before submitting ANY new features please read the [Contribution Guidelines](https://github.com/odb/shml/blob/master/CONTRIBUTING.md). 74 | 75 | To report any bugs or if you have a feature request feel free to [open an issue](https://github.com/odb/shml/issues). 76 | 77 | #### Updating The Docs 78 | Updating the docs requires Ruby/Jekyll to generate & view locally. 79 | 80 | **Run once:** 81 | ``` 82 | $ cd docs/ 83 | $ gem install bundler 84 | $ bundle install 85 | ``` 86 | 87 | **Generate and serve:** 88 | ``` 89 | $ bundle exec jekyll s --watch 90 | ``` 91 | Then go to: `http://localhost:4000/shml/` 92 | -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | 1.0.4 2 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | .bundle 2 | -------------------------------------------------------------------------------- /docs/404.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: "404: Page not found" 4 | permalink: 404.html 5 | --- 6 | 7 |
8 |

404: Page not found

9 |

Sorry, we've misplaced that URL or it's pointing to something that doesn't exist. Head back home to try finding it again.

10 |
11 | -------------------------------------------------------------------------------- /docs/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "yajl-ruby", "~> 1.3.1" 4 | gem "github-pages" 5 | gem "pathutil" 6 | gem "rouge" 7 | -------------------------------------------------------------------------------- /docs/Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | activesupport (4.2.9) 5 | i18n (~> 0.7) 6 | minitest (~> 5.1) 7 | thread_safe (~> 0.3, >= 0.3.4) 8 | tzinfo (~> 1.1) 9 | addressable (2.5.2) 10 | public_suffix (>= 2.0.2, < 4.0) 11 | coffee-script (2.4.1) 12 | coffee-script-source 13 | execjs 14 | coffee-script-source (1.11.1) 15 | colorator (1.1.0) 16 | commonmarker (0.17.7.1) 17 | ruby-enum (~> 0.5) 18 | concurrent-ruby (1.0.5) 19 | ethon (0.11.0) 20 | ffi (>= 1.3.0) 21 | execjs (2.7.0) 22 | faraday (0.13.1) 23 | multipart-post (>= 1.2, < 3) 24 | ffi (1.9.18) 25 | forwardable-extended (2.6.0) 26 | gemoji (3.0.0) 27 | github-pages (172) 28 | activesupport (= 4.2.9) 29 | github-pages-health-check (= 1.3.5) 30 | jekyll (= 3.6.2) 31 | jekyll-avatar (= 0.5.0) 32 | jekyll-coffeescript (= 1.0.2) 33 | jekyll-commonmark-ghpages (= 0.1.3) 34 | jekyll-default-layout (= 0.1.4) 35 | jekyll-feed (= 0.9.2) 36 | jekyll-gist (= 1.4.1) 37 | jekyll-github-metadata (= 2.9.3) 38 | jekyll-mentions (= 1.2.0) 39 | jekyll-optional-front-matter (= 0.3.0) 40 | jekyll-paginate (= 1.1.0) 41 | jekyll-readme-index (= 0.2.0) 42 | jekyll-redirect-from (= 0.12.1) 43 | jekyll-relative-links (= 0.5.2) 44 | jekyll-remote-theme (= 0.2.3) 45 | jekyll-sass-converter (= 1.5.0) 46 | jekyll-seo-tag (= 2.3.0) 47 | jekyll-sitemap (= 1.1.1) 48 | jekyll-swiss (= 0.4.0) 49 | jekyll-theme-architect (= 0.1.0) 50 | jekyll-theme-cayman (= 0.1.0) 51 | jekyll-theme-dinky (= 0.1.0) 52 | jekyll-theme-hacker (= 0.1.0) 53 | jekyll-theme-leap-day (= 0.1.0) 54 | jekyll-theme-merlot (= 0.1.0) 55 | jekyll-theme-midnight (= 0.1.0) 56 | jekyll-theme-minimal (= 0.1.0) 57 | jekyll-theme-modernist (= 0.1.0) 58 | jekyll-theme-primer (= 0.5.2) 59 | jekyll-theme-slate (= 0.1.0) 60 | jekyll-theme-tactile (= 0.1.0) 61 | jekyll-theme-time-machine (= 0.1.0) 62 | jekyll-titles-from-headings (= 0.5.0) 63 | jemoji (= 0.8.1) 64 | kramdown (= 1.14.0) 65 | liquid (= 4.0.0) 66 | listen (= 3.0.6) 67 | mercenary (~> 0.3) 68 | minima (= 2.1.1) 69 | rouge (= 2.2.1) 70 | terminal-table (~> 1.4) 71 | github-pages-health-check (1.3.5) 72 | addressable (~> 2.3) 73 | net-dns (~> 0.8) 74 | octokit (~> 4.0) 75 | public_suffix (~> 2.0) 76 | typhoeus (~> 0.7) 77 | html-pipeline (2.7.1) 78 | activesupport (>= 2) 79 | nokogiri (>= 1.4) 80 | i18n (0.9.1) 81 | concurrent-ruby (~> 1.0) 82 | jekyll (3.6.2) 83 | addressable (~> 2.4) 84 | colorator (~> 1.0) 85 | jekyll-sass-converter (~> 1.0) 86 | jekyll-watch (~> 1.1) 87 | kramdown (~> 1.14) 88 | liquid (~> 4.0) 89 | mercenary (~> 0.3.3) 90 | pathutil (~> 0.9) 91 | rouge (>= 1.7, < 3) 92 | safe_yaml (~> 1.0) 93 | jekyll-avatar (0.5.0) 94 | jekyll (~> 3.0) 95 | jekyll-coffeescript (1.0.2) 96 | coffee-script (~> 2.2) 97 | coffee-script-source (~> 1.11.1) 98 | jekyll-commonmark (1.1.0) 99 | commonmarker (~> 0.14) 100 | jekyll (>= 3.0, < 4.0) 101 | jekyll-commonmark-ghpages (0.1.3) 102 | commonmarker (~> 0.17.6) 103 | jekyll-commonmark (~> 1) 104 | rouge (~> 2) 105 | jekyll-default-layout (0.1.4) 106 | jekyll (~> 3.0) 107 | jekyll-feed (0.9.2) 108 | jekyll (~> 3.3) 109 | jekyll-gist (1.4.1) 110 | octokit (~> 4.2) 111 | jekyll-github-metadata (2.9.3) 112 | jekyll (~> 3.1) 113 | octokit (~> 4.0, != 4.4.0) 114 | jekyll-mentions (1.2.0) 115 | activesupport (~> 4.0) 116 | html-pipeline (~> 2.3) 117 | jekyll (~> 3.0) 118 | jekyll-optional-front-matter (0.3.0) 119 | jekyll (~> 3.0) 120 | jekyll-paginate (1.1.0) 121 | jekyll-readme-index (0.2.0) 122 | jekyll (~> 3.0) 123 | jekyll-redirect-from (0.12.1) 124 | jekyll (~> 3.3) 125 | jekyll-relative-links (0.5.2) 126 | jekyll (~> 3.3) 127 | jekyll-remote-theme (0.2.3) 128 | jekyll (~> 3.5) 129 | rubyzip (>= 1.2.1, < 3.0) 130 | typhoeus (>= 0.7, < 2.0) 131 | jekyll-sass-converter (1.5.0) 132 | sass (~> 3.4) 133 | jekyll-seo-tag (2.3.0) 134 | jekyll (~> 3.3) 135 | jekyll-sitemap (1.1.1) 136 | jekyll (~> 3.3) 137 | jekyll-swiss (0.4.0) 138 | jekyll-theme-architect (0.1.0) 139 | jekyll (~> 3.5) 140 | jekyll-seo-tag (~> 2.0) 141 | jekyll-theme-cayman (0.1.0) 142 | jekyll (~> 3.5) 143 | jekyll-seo-tag (~> 2.0) 144 | jekyll-theme-dinky (0.1.0) 145 | jekyll (~> 3.5) 146 | jekyll-seo-tag (~> 2.0) 147 | jekyll-theme-hacker (0.1.0) 148 | jekyll (~> 3.5) 149 | jekyll-seo-tag (~> 2.0) 150 | jekyll-theme-leap-day (0.1.0) 151 | jekyll (~> 3.5) 152 | jekyll-seo-tag (~> 2.0) 153 | jekyll-theme-merlot (0.1.0) 154 | jekyll (~> 3.5) 155 | jekyll-seo-tag (~> 2.0) 156 | jekyll-theme-midnight (0.1.0) 157 | jekyll (~> 3.5) 158 | jekyll-seo-tag (~> 2.0) 159 | jekyll-theme-minimal (0.1.0) 160 | jekyll (~> 3.5) 161 | jekyll-seo-tag (~> 2.0) 162 | jekyll-theme-modernist (0.1.0) 163 | jekyll (~> 3.5) 164 | jekyll-seo-tag (~> 2.0) 165 | jekyll-theme-primer (0.5.2) 166 | jekyll (~> 3.5) 167 | jekyll-github-metadata (~> 2.9) 168 | jekyll-seo-tag (~> 2.2) 169 | jekyll-theme-slate (0.1.0) 170 | jekyll (~> 3.5) 171 | jekyll-seo-tag (~> 2.0) 172 | jekyll-theme-tactile (0.1.0) 173 | jekyll (~> 3.5) 174 | jekyll-seo-tag (~> 2.0) 175 | jekyll-theme-time-machine (0.1.0) 176 | jekyll (~> 3.5) 177 | jekyll-seo-tag (~> 2.0) 178 | jekyll-titles-from-headings (0.5.0) 179 | jekyll (~> 3.3) 180 | jekyll-watch (1.5.1) 181 | listen (~> 3.0) 182 | jemoji (0.8.1) 183 | activesupport (~> 4.0, >= 4.2.9) 184 | gemoji (~> 3.0) 185 | html-pipeline (~> 2.2) 186 | jekyll (>= 3.0) 187 | kramdown (1.14.0) 188 | liquid (4.0.0) 189 | listen (3.0.6) 190 | rb-fsevent (>= 0.9.3) 191 | rb-inotify (>= 0.9.7) 192 | mercenary (0.3.6) 193 | mini_portile2 (2.3.0) 194 | minima (2.1.1) 195 | jekyll (~> 3.3) 196 | minitest (5.11.1) 197 | multipart-post (2.0.0) 198 | net-dns (0.8.0) 199 | nokogiri (1.8.2) 200 | mini_portile2 (~> 2.3.0) 201 | octokit (4.8.0) 202 | sawyer (~> 0.8.0, >= 0.5.3) 203 | pathutil (0.16.1) 204 | forwardable-extended (~> 2.6) 205 | public_suffix (2.0.5) 206 | rb-fsevent (0.10.2) 207 | rb-inotify (0.9.10) 208 | ffi (>= 0.5.0, < 2) 209 | rouge (2.2.1) 210 | ruby-enum (0.7.1) 211 | i18n 212 | rubyzip (1.2.1) 213 | safe_yaml (1.0.4) 214 | sass (3.5.4) 215 | sass-listen (~> 4.0.0) 216 | sass-listen (4.0.0) 217 | rb-fsevent (~> 0.9, >= 0.9.4) 218 | rb-inotify (~> 0.9, >= 0.9.7) 219 | sawyer (0.8.1) 220 | addressable (>= 2.3.5, < 2.6) 221 | faraday (~> 0.8, < 1.0) 222 | terminal-table (1.8.0) 223 | unicode-display_width (~> 1.1, >= 1.1.1) 224 | thread_safe (0.3.6) 225 | typhoeus (0.8.0) 226 | ethon (>= 0.8.0) 227 | tzinfo (1.2.4) 228 | thread_safe (~> 0.1) 229 | unicode-display_width (1.3.0) 230 | yajl-ruby (1.3.1) 231 | 232 | PLATFORMS 233 | ruby 234 | 235 | DEPENDENCIES 236 | github-pages 237 | pathutil 238 | rouge 239 | yajl-ruby (~> 1.3.1) 240 | 241 | BUNDLED WITH 242 | 1.16.1 243 | -------------------------------------------------------------------------------- /docs/_config.yml: -------------------------------------------------------------------------------- 1 | markdown: kramdown 2 | highlighter: rouge 3 | 4 | kramdown: 5 | # auto_ids: true 6 | # footnote_nr: 1 7 | # entity_output: as_char 8 | # toc_levels: 1..6 9 | # smart_quotes: lsquo,rsquo,ldquo,rdquo 10 | input: GFM 11 | hard_wrap: false 12 | # footnote_nr: 1 13 | # fenced_code_blocks: true 14 | syntax_highlighter: rouge 15 | 16 | # Permalinks 17 | permalink: pretty 18 | 19 | # Setup 20 | title: SHML 21 | tagline: '$(shell markup language)' 22 | description: 'SHML is a shell framework for faster and easier script development.' 23 | url: https://github.com/odb/shml/ 24 | baseurl: /shml/ 25 | 26 | # paginate: 1 27 | 28 | # Custom vars 29 | version: 1.1.0 30 | -------------------------------------------------------------------------------- /docs/_includes/attributes.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | # Attributes 5 | 6 | The `attribute` method lets you stylize your text in 5 different ways. 7 | 8 | ### Arguments 9 | 10 | bold 11 | dim 12 | underline 13 | invert 14 | `hidden` 15 | 16 | #### Termination 17 | 18 | You can use any of the following termination arguments: 19 | 20 | `end` `off` `reset` 21 | 22 | Following a string or object you must terminate the `attribute` method. 23 | Typing `$(attribute end)` turns off everything, including `foreground` and `background` color methods. 24 | 25 | ### Code Samples 26 | 27 | ```bash 28 | echo "$(attribute underline "So Underlined") $(attribute end)" 29 | ``` 30 | 31 | ```bash 32 | echo "$(attribute bold "Such Bold") $(attribute end)" 33 | ``` 34 | 35 | ```bash 36 | echo "$(attribute invert "Why this inverted?") $(attribute end)" 37 | ``` 38 | 39 | You can also use `a` as an alias for `attribute` 40 | 41 | ```bash 42 | echo "$(a bold "such BOLD shorter") $(a end)" 43 | ``` 44 | 45 | ### Results 46 | Here is what the output should look like. Style may differ slightly depending on your terminal emulator settings. 47 | 48 |
49 | 50 |
51 | -------------------------------------------------------------------------------- /docs/_includes/background.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | # Background 5 | To set the background color of any string or object you need to call the `bgcolor` method followed by an argument. 6 | 7 | ### Arguments 8 | 9 | #### Colors 10 | 11 | Fifteen different colors to choose from:
12 | black 13 | red 14 | green 15 | yellow 16 | blue 17 | magenta 18 | cyan 19 | gray 20 | white 21 | darkgray 22 | lightgreen 23 | lightyellow 24 | lightblue 25 | lightmagenta 26 | lightcyan 27 | 28 | #### Termination 29 | 30 | Following a string or object you must terminate the `background` method to ensure color doesn't bleed. You can use any of the following termination arguments: 31 | 32 | `end` `off` `reset` 33 | 34 | ### Code Samples 35 | 36 | Here we will demonstrate how the `background` method can be used on a single line. 37 | 38 | ```shell 39 | echo $(bgcolor red "I'm the O-D-B") $(bgcolor end) 40 | ``` 41 | Some times one-line is not enough. 42 | 43 | ```bash 44 | echo " 45 | $(bgcolor cyan) 46 | ...as you can see 47 | F.B.I. don't you be watching me 48 | $(bgcolor end) 49 | " 50 | ``` 51 | 52 | You can also use `bgc` as an alias for `bgcolor` 53 | 54 | ```bash 55 | echo "$(bgc green)NUH you know name, now give me my money!$(bgc end)" 56 | ``` 57 | 58 | ### Results 59 | 60 | Here is what the output should look like. Style may differ slightly depending on your terminal emulator settings. 61 |
62 | 63 |
64 | -------------------------------------------------------------------------------- /docs/_includes/color-bar.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | # Color Bar 5 | 6 | To add a color bar you need to call the `color-bar` method followed by an (optional) argument. 7 | 8 | ### Arguments 9 | 10 | Fifteen different colors to choose from: 11 | 12 | black 13 | red 14 | green 15 | yellow 16 | blue 17 | magenta 18 | cyan 19 | gray 20 | white 21 | darkgray 22 | lightgreen 23 | lightyellow 24 | lightblue 25 | lightmagenta 26 | lightcyan 27 | 28 | ### Code Samples 29 | 30 | ```bash 31 | echo "$(color-bar)" 32 | 33 | echo " 34 | $(color-bar red green yellow blue magenta \ 35 | cyan lightgray darkgray lightred \ 36 | lightmagenta lightcyan) 37 | " 38 | 39 | echo "Yeah ahuh, you know what it is $(color-bar black yellow black yellow)" 40 | ``` 41 | 42 | You can also use `bar` as an alias for `color-bar` 43 | 44 | ```bash 45 | echo "I put it down from the whip to my diamonds, I'm in $(bar black yellow black yellow)" 46 | ``` 47 | 48 | ### Results 49 |
50 | 51 |
52 | -------------------------------------------------------------------------------- /docs/_includes/confirm.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | # Confirm 5 | Confirm allows you to simply ask end-users questions. 6 | 7 | ### Usage 8 | 9 | `confirm QUESTION [SUCCESS_FUNCTION] [FAILURE_FUNCTION]` 10 | 11 | ### Code Samples 12 | 13 | ```bash 14 | on_human() { 15 | dialog "What is your name?" "on_dialog" 16 | } 17 | 18 | on_dialog() { 19 | echo "$(color green "Hello, $1! $(emoji beer)")" 20 | } 21 | 22 | on_not_human() { 23 | confirm "$(color red "Do you come in peace?")" "on_friend" "on_enemy" 24 | } 25 | 26 | on_friend() { 27 | echo "$(emoji '=)') $(emoji beer)" 28 | } 29 | 30 | on_enemy() { 31 | echo "$(emoji rage) $(emoji poop)" 32 | } 33 | 34 | confirm "$(color blue "Are you human?")" "on_human" "on_not_human" 35 | exit 0 36 | ``` 37 | 38 | ### Results 39 |
40 | 41 |
42 | -------------------------------------------------------------------------------- /docs/_includes/elements.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | # Elements 5 | 6 | Elements are methods that work a lot like `
` & `
` HTML element tags. There is also a `tab` & `indent` method that acts like a ` ` character entity. They are empty which means that they have no termination ends like the foreground `color`, `background` and `attribute` methods. 7 | 8 | ### Arguments 9 | 10 | The only method that allows arguments is `hr`: 11 | 12 | `~` `#` `*` `+` and/or any number e.g. `50` 13 | 14 | ### Code Samples (hr) 15 | ```bash 16 | echo "$(hr)" 17 | ``` 18 | ```bash 19 | echo "$(hr 40)" 20 | ``` 21 | ```bash 22 | echo "$(hr '~' 30)" 23 | ``` 24 | ```bash 25 | echo "$(hr '#' 20)" 26 | ``` 27 | ```bash 28 | echo "$(hr '*' 10)" 29 | ``` 30 | ```bash 31 | echo "$(hr '+' 5)" 32 | ``` 33 | 34 | ### Results (hr) 35 |
36 | 37 |
38 | 39 | ### Code Samples (br, indent, tab) 40 | 41 | Break Line 42 | 43 | ```bash 44 | echo "Wu$(br)Wu Tang$(br)Wu Tang$(br)Killah Beez$(br)We on a swarm" 45 | ``` 46 | Indent 47 | 48 | ```bash 49 | echo "W$(indent)U$(indent)T$(indent)A$(indent)N$(indent)G" 50 | ``` 51 | 52 | You can also use `i` as an alias for `indent` 53 | 54 | ```bash 55 | echo "F$(i)O$(i)R$(i)E$(i)V$(i)A" 56 | ``` 57 | 58 | Tab 59 | 60 | ```bash 61 | echo "W$(tab)U$(tab)T$(tab)A$(tab)N$(tab)G" 62 | ``` 63 | 64 | ### Results (br, indent, tab) 65 |
66 | 67 |
68 | -------------------------------------------------------------------------------- /docs/_includes/emojis.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | # Emojis 5 | 6 | To add an emoji you need to call the `emoji` method followed by an argument. Each emoji added to SHML was approved as part of [Unicode® 6.0.0 Standard](http://unicode.org/versions/Unicode6.0.0/) in 2010. 7 | 8 | ### Arguments 9 | 10 | | Argument | Alias(es) | Result | 11 | |--- |--- |--- | 12 | | `smiley` | `1F603` `'=)'` `':-)'` `':)'` | 😄 | 13 | | `innocent` | `1F607` `halo` | 😇 | 14 | | `joy` | `1F602` `lol` `laughing` | 😂 | 15 | | `=p`| `1F61B` `stuck_out_tongue` `=P` | 😛 | 16 | | `worried`| `1F61F` `sadface` `sad` | 😟 | 17 | | `cry`| `1F622` `crying` `tear` | 😢 | 18 | | `rage`| `1F621` `redface` | 😡 | 19 | | `wave`| `1F44B` `hello` `goodbye` | 👋 | 20 | | `ok_hand`| `1F44C` `perfect` `okay` `nice` | 👌 | 21 | | `thumbsup`| `1F44D` `+1` `like` | 👍 | 22 | | `thumbsdown`| `1F44E` `-1` `no` `dislike` | 👎 | 23 | | `smiley_cat` | `1F63A` `happycat` | 😺 | 24 | | `cat` | `1F431` `kitten` `:3` `kitty` | 🐱 | 25 | | `dog` | `1F436` `puppy` | 🐶 | 26 | | `bee` | `1F41D` `honeybee` `bumblebee` | 🐝 | 27 | | `pig` | `1F437` `pighead` | 🐷 | 28 | | `monkey` | `1F437` `monkey_face` | 🐵 | 29 | | `cow` | `1F42E` `happycow` | 🐮 | 30 | | `panda` | `1F43C` `panda_face` `shpanda` | 🐼 | 31 | | `sushi` | `1F363` `raw` `sashimi` | 🍣 | 32 | | `home` | `1F3E0` `house` | 🏠 | 33 | | `eyeglases` | `1F453` `bifocals` `eyeglasses` | 👓 | 34 | | `smoke` | `1F6AC` `smoking` `cigarette` | 🚬 | 35 | | `fire` | `1F525` `flame` `hot` | 🔥 | 36 | | `hankey` | `1F4A9` `poop` `shit` | 💩 | 37 | | `beer` | `1F37A` `homebrew` `brew` | 🍺 | 38 | | `cookie` | `1F36A` `biscuit` `chocolate` | 🍪 | 39 | | `lock` | `1F512` `padlock` `secure` | 🔒 | 40 | | `unlock` | `1F513` `openpadlock` | 🔓 | 41 | | `star` | `2B50` `yellowstar` | ⭐ | 42 | | `joker` | `1F0CF` `black_joker` `wild` | 🃏 | 43 | | `check` | `2705` `white_check_mark` | ✅ | 44 | | `x` | `274C` `cross` `xmark` | ❌ | 45 | | `toilet` | `1F6BD` `restroom` `loo` | 🚽 | 46 | | `bell` | `1F514` `ringer` `ring` | 🔔 | 47 | | `search` | `1F50E` `mag_right` `magnify` | 🔎 | 48 | | `dart` | `1F3AF` `bullseye` `darts` | 🎯 | 49 | | `cash` | `1F4B5` `dollar` `cream` | 💵 | 50 | | `thinking` | `1F4AD` `thought_balloon` | 💭 | 51 | | `luck` | `1F340` `four_leaf_clover` | 🍀 | 52 | 53 | ### Code Samples 54 | 55 | ```bash 56 | echo "Couldn't peep it with a pair of $(emoji bifocals)" 57 | echo "I'm no $(emoji joker) play me as a $(emoji joker)" 58 | echo "$(emoji bee) on you like a $(emoji house) on $(emoji fire), $(emoji smoke) ya" 59 | ``` 60 | 61 | ### Results 62 |
63 | 64 |
65 | -------------------------------------------------------------------------------- /docs/_includes/footer.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | Designed and built by @jdorfman and mervinej.
4 | Code licensed under MIT, documentation under CC BY 4.0. 5 |
6 |
7 | -------------------------------------------------------------------------------- /docs/_includes/foreground.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | # Foreground 5 | 6 | To set the foreground color of any string or object you need to call the `fgcolor` method followed by an argument. 7 | 8 | ### Arguments 9 | 10 | #### Colors 11 | 12 | Fifteen different colors to choose from:
13 | black 14 | red 15 | green 16 | yellow 17 | blue 18 | magenta 19 | cyan 20 | gray 21 | white 22 | darkgray 23 | lightgreen 24 | lightyellow 25 | lightblue 26 | lightmagenta 27 | lightcyan 28 | 29 | #### Termination 30 | Following a string or object you must terminate the `fgcolor` method to ensure color doesn't bleed. You can use any of the following termination arguments: 31 | 32 | `end` `off` or `reset` 33 | 34 | ### Code Samples 35 | 36 | Here we will demonstrate how the `fgcolor` method can be used on a single line. 37 | 38 | ```bash 39 | echo $(fgcolor green "RZA GZA") $(fgcolor end) 40 | ``` 41 | Some times one-line is not enough. 42 | 43 | ```bash 44 | echo " 45 | $(fgcolor yellow) 46 | Inspectah Deck 47 | Ghostface Killah 48 | $(fgcolor end) 49 | " 50 | ``` 51 | 52 | You can also use `fgc` as an alias for `fgcolor`. 53 | 54 | ```bash 55 | echo $(fgc red "Killa Beez on a swarm") $(fgc end) 56 | ``` 57 | 58 | ### Results 59 | Here is what the output should look like. Style may differ slightly depending on your terminal emulator settings. 60 |
61 | 62 |
63 | -------------------------------------------------------------------------------- /docs/_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | {% if page.title == "Home" %} 11 | {{ site.title }} · {{ site.tagline }} 12 | {% else %} 13 | {{ page.title }} · {{ site.title }} 14 | {% endif %} 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/_includes/icons.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | # Icons 5 | Icons are flat ascii characters that are supported by most unix-like systems. If you run into compatibility issues please [report it here](https://github.com/odb/shml/issues). 6 | 7 | ### Arguments 8 | 9 | `checkmark` `xmark` `heart` `sun` `star` 10 | `darkstar` `umbrella` `flag` `snowflake` `music` 11 | `scissors` `trademark` `copyright` `apple` `smile` 12 | 13 | ### Code Samples 14 | 15 | Peter, a software engineer likes to use the `xmark` icon in his programs: 16 | 17 | ```bash 18 | echo "$(icon xmark)TPS Reports $(icon xmark)Lumbergh $(icon xmark)Working" 19 | ``` 20 | 21 | When he is in a better mood, he tends to use the `check` icon: 22 | 23 | ```bash 24 | echo "$(icon check)Kung Fu $(icon check)Fishing $(icon check)Sleep" 25 | ``` 26 | 27 | Sometimes he even uses the foreground `color` method to add some emphasis: 28 | 29 | ```bash 30 | echo "$(color red)$(icon xmark)$(color end)TPS Reports $(color green)$(icon check)$(color end)Fishing" 31 | ``` 32 | 33 | ### Results 34 |
35 | 36 |
37 | -------------------------------------------------------------------------------- /docs/_includes/index-sidebar.html: -------------------------------------------------------------------------------- 1 | 38 | -------------------------------------------------------------------------------- /docs/_includes/install.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | # Install 5 | 6 | #### Unix-like 7 | ``` bash 8 | $ sudo bash -c 'curl -L https://raw.githubusercontent.com/odb/shml/1.1.0/shml.sh -o /usr/local/bin/shml && chmod +x /usr/local/bin/shml' 9 | ``` 10 | 11 | #### npm 12 | 13 | ``` shell 14 | $ npm install -g shml 15 | ``` 16 | 17 | #### Homebrew 18 | ```bash 19 | $ brew install shml 20 | ``` 21 |

22 | You can also just download SHML without installing it... 23 |

24 | 25 | #### Git 26 | ```bash 27 | $ git clone git@github.com:odb/shml.git 28 | ``` 29 | 30 | #### Wget 31 | ```bash 32 | $ wget https://github.com/odb/shml/archive/master.zip 33 | ``` 34 | -------------------------------------------------------------------------------- /docs/_includes/sidebar.html: -------------------------------------------------------------------------------- 1 | 38 | -------------------------------------------------------------------------------- /docs/_includes/sourcing.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | # Sourcing 5 | In order to use SHML you must tell your shell environment where it is located. Lets assume that we are writing a BASH script and want to use SHML. 6 | 7 | If you installed in using the 1-liner above you would do: 8 | 9 | ```bash 10 | #!/usr/bin/env bash 11 | source $(which shml) 12 | ``` 13 | 14 | If you downloaded SHML using git or wget you would do: 15 | 16 | ```bash 17 | #!/usr/bin/env bash 18 | source ./shml.sh 19 | ``` 20 | -------------------------------------------------------------------------------- /docs/_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% include head.html %} 5 | 6 | 7 | 8 | {% include sidebar.html %} 9 | 10 |
11 | {{ content }} 12 |
13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/_layouts/home.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% include head.html %} 5 | 6 | 7 | 8 | {% include index-sidebar.html %} 9 | 10 | 11 |
12 |
13 | SHML is a shell framework for faster and easier script development. 14 |
15 |
16 |     17 |     18 |     19 | 20 | 21 |
22 |
23 | {{ content }} 24 |
25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /docs/_layouts/page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 |

{{ page.title }}

7 | {{ content }} 8 |
9 | -------------------------------------------------------------------------------- /docs/_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 |

{{ page.title }}

7 | 8 | {{ content }} 9 |
10 | 11 | 26 | -------------------------------------------------------------------------------- /docs/_posts/_site/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 404: Page not found · SHML 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 79 | 80 | 81 |
82 |
83 |

404: Page not found

84 |

Sorry, we've misplaced that URL or it's pointing to something that doesn't exist. Head back home to try finding it again.

85 |
86 | 87 |
88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /docs/_posts/_site/atom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SHML 5 | 6 | 7 | 2017-02-11T10:34:24-08:00 8 | http://localhost:4000 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /docs/_posts/_site/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | SHML · $(shell markup language) 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 79 | 80 | 81 | 82 |
83 |
84 | SHML is a shell framework for faster and easier script development. 85 |
86 |
87 |     88 |     89 |     90 | 91 | 92 |
93 |
94 |

Why

95 |

HTML has CSS, Unix-like shells have ANSI/VT100 Control Sequences. SHML makes is easy to apply style to your shell scripts without trying to remember that yellow is \033[33m instead it’s $(color yellow).

96 | 97 |

1-liner Install

98 |
# Unix-like
 99 | $ sudo bash -c 'curl -L https://raw.githubusercontent.com/odb/shml/1.1.0/shml.sh -o /usr/local/bin/shml && chmod +x /usr/local/bin/shml'
100 | 
101 | # Homebrew
102 | $ brew install shml
103 | 
104 | # npm
105 | $ npm install -g shml
106 | 
107 |
108 | 109 |
110 | Currently v1.0.4 111 |
Please be responsible & RTFM 112 |
113 |

114 | 115 |

116 |
117 |
118 | 119 |
120 | 121 | Designed and built by @jdorfman and mervinej.
122 | Code licensed under MIT, documentation under CC BY 4.0. 123 |
124 |
125 | 126 | 127 |
128 | 129 | 130 | 131 | -------------------------------------------------------------------------------- /docs/_posts/_site/public/apple-touch-icon-144-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/apple-touch-icon-144-precomposed.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/code/attributes.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | echo '' 6 | echo "$(attribute underline "So Underlined") $(attribute end)" 7 | echo '' 8 | echo "$(attribute bold " such BOLD") $(attribute end)" 9 | echo '' 10 | echo "$(attribute invert "Why this inverted?") $(attribute end)" 11 | echo '' 12 | echo "$(a bold " such BOLD shorter") $(a end)" 13 | echo '' 14 | echo '' 15 | -------------------------------------------------------------------------------- /docs/_posts/_site/public/code/background.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | echo "" 6 | echo "$(bgcolor green "THE RZA THE GZA") $(color end)" 7 | echo " 8 | $(bgcolor blue) 9 | Ol' Dirty Bastard, Inspectah Deck 10 | Raekwon the Chef, U-God, Ghostface Killah and$(bgcolor end) 11 | " 12 | echo "$(bgc red "M-E-T, H-O-D, Man") $(c end)" 13 | echo "" 14 | -------------------------------------------------------------------------------- /docs/_posts/_site/public/code/color-bar.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | echo "$(color-bar)" 6 | echo " 7 | $(color-bar red green yellow blue magenta \ 8 | cyan lightgray darkgray lightred \ 9 | lightmagenta lightcyan)" 10 | echo "" 11 | echo "Yeah ahuh, you know what it is $(color-bar black yellow black yellow)" 12 | echo "I put it down from the whip to my diamonds, I'm in $(bar black yellow black yellow)" 13 | -------------------------------------------------------------------------------- /docs/_posts/_site/public/code/elements.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | 6 | echo "$(hr)" 7 | echo "$(hr 40)" 8 | echo "$(hr '~' 30)" 9 | echo "$(hr '#' 20)" 10 | echo "$(hr '*' 10)" 11 | echo "$(hr '+' 5)" 12 | 13 | echo "Wu$(br)Wu Tang$(br)Wu Tang$(br)Killah Beez$(br)We on a swarm" 14 | echo "W$(indent)U$(indent)T$(indent)A$(indent)N$(indent)G" 15 | echo "F$(i)O$(i)R$(i)E$(i)V$(i)A" 16 | echo "W$(tab)U$(tab)T$(tab)A$(tab)N$(tab)G" 17 | -------------------------------------------------------------------------------- /docs/_posts/_site/public/code/emojis.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | echo "" 6 | echo " Couldn't peep it with a pair of $(emoji bifocals)" 7 | echo "" 8 | echo " I'm no $(emoji joker) play me as a $(emoji joker)" 9 | echo "" 10 | echo " $(emoji bee) on you like a $(emoji house) on $(emoji fire), $(emoji smoke) ya" 11 | echo "" 12 | echo "$(hr)" 13 | echo "" 14 | echo "$(a bold 'Faces:') $(emoji '=)') $(emoji halo) $(emoji tongue) $(emoji blush) $(emoji worried) $(emoji cry) $(emoji rage)" 15 | echo "" 16 | echo "$(a bold 'Hands:') $(emoji hello) $(emoji nice) $(emoji like) $(emoji dislike)" 17 | echo "" 18 | echo "$(a bold 'Animals:') $(emoji happycat) $(emoji cat) $(emoji dog) $(emoji 'bee') $(emoji pig) $(emoji monkey) $(emoji cow) $(emoji panda)" 19 | echo "" 20 | echo "$(a bold 'Misc:') $(emoji sushi) $(emoji hankey) $(emoji brew) $(emoji lock) $(emoji star) $(emoji check) $(emoji xmark) $(emoji ring)" 21 | echo "" 22 | echo "$(ascii a) $(ascii b) $(ascii c)" 23 | -------------------------------------------------------------------------------- /docs/_posts/_site/public/code/foreground.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | echo "$(color green "RZA GZA") $(color end)" 6 | echo " 7 | $(color yellow) 8 | Inspectah Deck 9 | Ghostface Killah 10 | $(color end) 11 | " 12 | echo "$(c red "Killa Beez on a swarm") $(c end)" 13 | -------------------------------------------------------------------------------- /docs/_posts/_site/public/code/icons.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | echo "" 6 | echo "$(icon xmark) TPS Reports $(icon xmark) Lumbergh $(icon xmark) Working" 7 | echo "" 8 | echo "$(icon check) Kung Fu $(icon check) Fishing $(icon check) Sleep" 9 | echo "" 10 | echo "$(color red)$(icon xmark)$(color end)TPS Reports $(color green)$(icon check)$(color end)Fishing" 11 | echo "$(color red)$(icon xmark)$(color end)Working $(color green)$(icon check)$(color end)Kung Fu" 12 | echo "$(color red)$(icon xmark)$(color end)Lumbergh $(color green)$(icon check)$(color end)Sleeping" 13 | -------------------------------------------------------------------------------- /docs/_posts/_site/public/css/hyde.css: -------------------------------------------------------------------------------- 1 | /* 2 | * __ __ 3 | * /\ \ /\ \ 4 | * \ \ \___ __ __ \_\ \ __ 5 | * \ \ _ `\/\ \/\ \ /'_` \ /'__`\ 6 | * \ \ \ \ \ \ \_\ \/\ \_\ \/\ __/ 7 | * \ \_\ \_\/`____ \ \___,_\ \____\ 8 | * \/_/\/_/`/___/> \/__,_ /\/____/ 9 | * /\___/ 10 | * \/__/ 11 | * 12 | * Designed, built, and released under MIT license by @mdo. Learn more at 13 | * https://github.com/poole/hyde. 14 | */ 15 | 16 | 17 | /* 18 | * Contents 19 | * 20 | * Global resets 21 | * Sidebar 22 | * Container 23 | * Reverse layout 24 | * Themes 25 | */ 26 | 27 | 28 | /* 29 | * Global resets 30 | * 31 | * Update the foundational and global aspects of the page. 32 | */ 33 | 34 | html { 35 | font-family: "PT Sans", Helvetica, Arial, sans-serif; 36 | } 37 | @media (min-width: 48em) { 38 | html { 39 | font-size: 16px; 40 | } 41 | } 42 | @media (min-width: 58em) { 43 | html { 44 | font-size: 20px; 45 | } 46 | } 47 | 48 | 49 | /* 50 | * Sidebar 51 | * 52 | * Flexible banner for housing site name, intro, and "footer" content. Starts 53 | * out above content in mobile and later moves to the side with wider viewports. 54 | */ 55 | 56 | .sidebar { 57 | text-align: center; 58 | padding: 2rem 1rem; 59 | color: rgba(255,255,255,.5); 60 | background-color: #000000; 61 | } 62 | @media (min-width: 48em) { 63 | .sidebar { 64 | position: fixed; 65 | top: 0; 66 | left: 0; 67 | bottom: 0; 68 | width: 18rem; 69 | text-align: left; 70 | } 71 | } 72 | 73 | /* Sidebar links */ 74 | .sidebar a { 75 | color: #fff; 76 | } 77 | 78 | /* About section */ 79 | .sidebar-about h1 { 80 | color: #fff; 81 | margin-top: 0; 82 | font-family: "Impact", serif; 83 | font-size: 3.25rem; 84 | } 85 | 86 | /* Sidebar nav */ 87 | .sidebar-nav { 88 | margin-bottom: 1rem; 89 | font-family: monospace, courier; 90 | font-size: .7rem; 91 | } 92 | .sidebar-nav-item { 93 | display: block; 94 | line-height: 1.75; 95 | } 96 | .sidebar-nav-indent { 97 | text-indent: 3mm; 98 | } 99 | a.sidebar-nav-item:hover, 100 | a.sidebar-nav-item:focus { 101 | text-decoration: underline; 102 | } 103 | .sidebar-nav-item.active { 104 | font-weight: bold; 105 | } 106 | 107 | /* Sticky sidebar 108 | * 109 | * Add the `sidebar-sticky` class to the sidebar's container to affix it the 110 | * contents to the bottom of the sidebar in tablets and up. 111 | */ 112 | 113 | @media (min-width: 48em) { 114 | .sidebar-sticky { 115 | position: absolute; 116 | right: 1rem; 117 | bottom: 1rem; 118 | left: 1rem; 119 | } 120 | } 121 | 122 | 123 | /* Container 124 | * 125 | * Align the contents of the site above the proper threshold with some margin-fu 126 | * with a 25%-wide `.sidebar`. 127 | */ 128 | 129 | .content { 130 | padding-top: 4rem; 131 | padding-bottom: 4rem; 132 | } 133 | 134 | @media (min-width: 48em) { 135 | .content { 136 | max-width: 38rem; 137 | margin-left: 20rem; 138 | margin-right: 2rem; 139 | } 140 | } 141 | 142 | @media (min-width: 64em) { 143 | .content { 144 | margin-left: 22rem; 145 | margin-right: 4rem; 146 | } 147 | } 148 | 149 | 150 | /* 151 | * Reverse layout 152 | * 153 | * Flip the orientation of the page by placing the `.sidebar` on the right. 154 | */ 155 | 156 | @media (min-width: 48em) { 157 | .layout-reverse .sidebar { 158 | left: auto; 159 | right: 0; 160 | } 161 | .layout-reverse .content { 162 | margin-left: 2rem; 163 | margin-right: 20rem; 164 | } 165 | } 166 | 167 | @media (min-width: 64em) { 168 | .layout-reverse .content { 169 | margin-left: 4rem; 170 | margin-right: 22rem; 171 | } 172 | } 173 | 174 | 175 | 176 | /* 177 | * Themes 178 | * 179 | * As of v1.1, Hyde includes optional themes to color the sidebar and links 180 | * within blog posts. To use, add the class of your choosing to the `body`. 181 | */ 182 | 183 | /* Base16 (http://chriskempson.github.io/base16/#default) */ 184 | 185 | /* Red */ 186 | .theme-base-08 .sidebar { 187 | background-color: #ac4142; 188 | } 189 | .theme-base-08 .content a, 190 | .theme-base-08 .related-posts li a:hover { 191 | color: #ac4142; 192 | } 193 | 194 | /* Orange */ 195 | .theme-base-09 .sidebar { 196 | background-color: #d28445; 197 | } 198 | .theme-base-09 .content a, 199 | .theme-base-09 .related-posts li a:hover { 200 | color: #d28445; 201 | } 202 | 203 | /* Yellow */ 204 | .theme-base-0a .sidebar { 205 | background-color: #f4bf75; 206 | } 207 | .theme-base-0a .content a, 208 | .theme-base-0a .related-posts li a:hover { 209 | color: #f4bf75; 210 | } 211 | 212 | /* Green */ 213 | .theme-base-0b .sidebar { 214 | background-color: #90a959; 215 | } 216 | .theme-base-0b .content a, 217 | .theme-base-0b .related-posts li a:hover { 218 | color: #90a959; 219 | } 220 | 221 | /* Cyan */ 222 | .theme-base-0c .sidebar { 223 | background-color: #75b5aa; 224 | } 225 | .theme-base-0c .content a, 226 | .theme-base-0c .related-posts li a:hover { 227 | color: #75b5aa; 228 | } 229 | 230 | /* Blue */ 231 | .theme-base-0d .sidebar { 232 | background-color: #6a9fb5; 233 | } 234 | .theme-base-0d .content a, 235 | .theme-base-0d .related-posts li a:hover { 236 | color: #6a9fb5; 237 | } 238 | 239 | /* Magenta */ 240 | .theme-base-0e .sidebar { 241 | background-color: #aa759f; 242 | } 243 | .theme-base-0e .content a, 244 | .theme-base-0e .related-posts li a:hover { 245 | color: #aa759f; 246 | } 247 | 248 | /* Brown */ 249 | .theme-base-0f .sidebar { 250 | background-color: #8f5536; 251 | } 252 | .theme-base-0f .content a, 253 | .theme-base-0f .related-posts li a:hover { 254 | color: #8f5536; 255 | } 256 | -------------------------------------------------------------------------------- /docs/_posts/_site/public/css/poole.css: -------------------------------------------------------------------------------- 1 | /* 2 | * ___ 3 | * /\_ \ 4 | * _____ ___ ___\//\ \ __ 5 | * /\ '__`\ / __`\ / __`\\ \ \ /'__`\ 6 | * \ \ \_\ \/\ \_\ \/\ \_\ \\_\ \_/\ __/ 7 | * \ \ ,__/\ \____/\ \____//\____\ \____\ 8 | * \ \ \/ \/___/ \/___/ \/____/\/____/ 9 | * \ \_\ 10 | * \/_/ 11 | * 12 | * Designed, built, and released under MIT license by @mdo. Learn more at 13 | * https://github.com/poole/poole. 14 | */ 15 | 16 | 17 | /* 18 | * Contents 19 | * 20 | * Body resets 21 | * Custom type 22 | * Messages 23 | * Container 24 | * Masthead 25 | * Posts and pages 26 | * Pagination 27 | * Reverse layout 28 | * Themes 29 | */ 30 | 31 | 32 | /* 33 | * Body resets 34 | * 35 | * Update the foundational and global aspects of the page. 36 | */ 37 | 38 | * { 39 | -webkit-box-sizing: border-box; 40 | -moz-box-sizing: border-box; 41 | box-sizing: border-box; 42 | } 43 | 44 | html, 45 | body { 46 | margin: 0; 47 | padding: 0; 48 | } 49 | 50 | html { 51 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 52 | font-size: 16px; 53 | line-height: 1.5; 54 | } 55 | @media (min-width: 38em) { 56 | html { 57 | font-size: 20px; 58 | } 59 | } 60 | 61 | body { 62 | color: #515151; 63 | background-color: #fff; 64 | -webkit-text-size-adjust: 100%; 65 | -ms-text-size-adjust: 100%; 66 | } 67 | 68 | /* No `:visited` state is required by default (browsers will use `a`) */ 69 | a { 70 | color: #268bd2; 71 | text-decoration: none; 72 | } 73 | a strong { 74 | color: inherit; 75 | } 76 | /* `:focus` is linked to `:hover` for basic accessibility */ 77 | a:hover, 78 | a:focus { 79 | text-decoration: underline; 80 | } 81 | 82 | /* Headings */ 83 | h1, h2, h3, h4, h5, h6 { 84 | margin-bottom: .5rem; 85 | font-weight: bold; 86 | line-height: 1.25; 87 | color: #313131; 88 | text-rendering: optimizeLegibility; 89 | } 90 | h1 { 91 | font-size: 2rem; 92 | } 93 | h2 { 94 | margin-top: 1rem; 95 | font-size: 1.5rem; 96 | } 97 | h3 { 98 | margin-top: 1.5rem; 99 | font-size: 1.25rem; 100 | } 101 | h4, h5, h6 { 102 | margin-top: 1rem; 103 | font-size: 1rem; 104 | } 105 | 106 | /* Body text */ 107 | p { 108 | margin-top: 0; 109 | margin-bottom: 1rem; 110 | } 111 | 112 | strong { 113 | color: #303030; 114 | } 115 | 116 | 117 | /* Lists */ 118 | ul, ol, dl { 119 | margin-top: 0; 120 | margin-bottom: 1rem; 121 | } 122 | 123 | dt { 124 | font-weight: bold; 125 | } 126 | dd { 127 | margin-bottom: .5rem; 128 | } 129 | 130 | /* Misc */ 131 | hr { 132 | position: relative; 133 | margin: 1.5rem 0; 134 | border: 17; 135 | border-top: 2px solid #eee; 136 | border-bottom: 1px solid #fff; 137 | border-style: dashed; 138 | } 139 | 140 | abbr { 141 | font-size: 85%; 142 | font-weight: bold; 143 | color: #555; 144 | text-transform: uppercase; 145 | } 146 | abbr[title] { 147 | cursor: help; 148 | border-bottom: 1px dotted #e5e5e5; 149 | } 150 | 151 | /* Code */ 152 | code, 153 | pre { 154 | font-family: Menlo, Monaco, "Courier New", monospace; 155 | } 156 | code { 157 | padding: .25em .5em; 158 | font-size: 85%; 159 | color: #fff; 160 | background-color: #000; 161 | border-radius: 3px; 162 | } 163 | pre { 164 | display: block; 165 | margin-top: 0; 166 | margin-bottom: 1rem; 167 | padding: 1rem; 168 | font-size: .8rem; 169 | line-height: 1.4; 170 | white-space: pre; 171 | white-space: pre-wrap; 172 | word-break: break-all; 173 | word-wrap: break-word; 174 | background-color: #000; 175 | } 176 | pre code { 177 | padding: 0; 178 | font-size: 100%; 179 | color: fff; 180 | background-color: transparent; 181 | } 182 | 183 | /* Pygments via Jekyll */ 184 | .highlight { 185 | margin-bottom: 1rem; 186 | border-radius: 4px; 187 | } 188 | .highlight pre { 189 | margin-bottom: 0; 190 | } 191 | 192 | /* Gist via GitHub Pages */ 193 | .gist .gist-file { 194 | font-family: Menlo, Monaco, "Courier New", monospace !important; 195 | } 196 | .gist .markdown-body { 197 | padding: 15px; 198 | } 199 | .gist pre { 200 | padding: 0; 201 | background-color: transparent; 202 | } 203 | .gist .gist-file .gist-data { 204 | font-size: .8rem !important; 205 | line-height: 1.4; 206 | } 207 | .gist code { 208 | padding: 0; 209 | color: inherit; 210 | background-color: transparent; 211 | border-radius: 0; 212 | } 213 | 214 | /* Quotes */ 215 | blockquote { 216 | padding: .5rem 1rem; 217 | margin: .8rem 0; 218 | color: #7a7a7a; 219 | border-left: .25rem solid #e5e5e5; 220 | } 221 | blockquote p:last-child { 222 | margin-bottom: 0; 223 | } 224 | @media (min-width: 30em) { 225 | blockquote { 226 | padding-right: 5rem; 227 | padding-left: 1.25rem; 228 | } 229 | } 230 | 231 | img { 232 | display: block; 233 | max-width: 100%; 234 | margin: 0 0 1rem; 235 | border-radius: 5px; 236 | } 237 | 238 | /* Tables */ 239 | table { 240 | margin-bottom: 1rem; 241 | width: 100%; 242 | border: 1px solid #e5e5e5; 243 | border-collapse: collapse; 244 | } 245 | td, 246 | th { 247 | padding: .25rem .5rem; 248 | border: 1px solid #e5e5e5; 249 | } 250 | tbody tr:nth-child(odd) td, 251 | tbody tr:nth-child(odd) th { 252 | background-color: #f9f9f9; 253 | } 254 | 255 | 256 | /* 257 | * Custom type 258 | * 259 | * Extend paragraphs with `.lead` for larger introductory text. 260 | */ 261 | 262 | .lead { 263 | font-size: 1.25rem; 264 | font-weight: 300; 265 | } 266 | 267 | 268 | /* 269 | * Messages 270 | * 271 | * Show alert messages to users. You may add it to single elements like a `

`, 272 | * or to a parent if there are multiple elements to show. 273 | */ 274 | 275 | .message { 276 | margin-bottom: 1rem; 277 | padding: 1rem; 278 | color: #717171; 279 | background-color: #f9f9f9; 280 | } 281 | 282 | 283 | /* 284 | * Container 285 | * 286 | * Center the page content. 287 | */ 288 | 289 | .container { 290 | max-width: 38rem; 291 | padding-left: 1rem; 292 | padding-right: 1rem; 293 | margin-left: auto; 294 | margin-right: auto; 295 | } 296 | 297 | 298 | /* 299 | * Masthead 300 | * 301 | * Super small header above the content for site name and short description. 302 | */ 303 | 304 | .masthead { 305 | padding-top: 1rem; 306 | padding-bottom: 1rem; 307 | margin-bottom: 3rem; 308 | } 309 | .masthead-title { 310 | margin-top: 0; 311 | margin-bottom: 0; 312 | color: #505050; 313 | } 314 | .masthead-title a { 315 | color: #505050; 316 | } 317 | .masthead-title small { 318 | font-size: 75%; 319 | font-weight: 400; 320 | color: #c0c0c0; 321 | letter-spacing: 0; 322 | } 323 | 324 | 325 | /* 326 | * Posts and pages 327 | * 328 | * Each post is wrapped in `.post` and is used on default and post layouts. Each 329 | * page is wrapped in `.page` and is only used on the page layout. 330 | */ 331 | 332 | .page, 333 | .post { 334 | margin-bottom: 4em; 335 | } 336 | 337 | /* Blog post or page title */ 338 | .page-title, 339 | .post-title, 340 | .post-title a { 341 | color: #303030; 342 | } 343 | .page-title, 344 | .post-title { 345 | margin-top: 0; 346 | } 347 | 348 | /* Meta data line below post title */ 349 | .post-date { 350 | display: block; 351 | margin-top: -.5rem; 352 | margin-bottom: 1rem; 353 | color: #9a9a9a; 354 | } 355 | 356 | /* Related posts */ 357 | .related { 358 | padding-top: 2rem; 359 | padding-bottom: 2rem; 360 | border-top: 1px solid #eee; 361 | } 362 | .related-posts { 363 | padding-left: 0; 364 | list-style: none; 365 | } 366 | .related-posts h3 { 367 | margin-top: 0; 368 | } 369 | .related-posts li small { 370 | font-size: 75%; 371 | color: #999; 372 | } 373 | .related-posts li a:hover { 374 | color: #268bd2; 375 | text-decoration: none; 376 | } 377 | .related-posts li a:hover small { 378 | color: inherit; 379 | } 380 | 381 | 382 | /* 383 | * Pagination 384 | * 385 | * Super lightweight (HTML-wise) blog pagination. `span`s are provide for when 386 | * there are no more previous or next posts to show. 387 | */ 388 | 389 | .pagination { 390 | overflow: hidden; /* clearfix */ 391 | margin-left: -1rem; 392 | margin-right: -1rem; 393 | font-family: "PT Sans", Helvetica, Arial, sans-serif; 394 | color: #ccc; 395 | text-align: center; 396 | } 397 | 398 | /* Pagination items can be `span`s or `a`s */ 399 | .pagination-item { 400 | display: block; 401 | padding: 1rem; 402 | border: 1px solid #eee; 403 | } 404 | .pagination-item:first-child { 405 | margin-bottom: -1px; 406 | } 407 | 408 | /* Only provide a hover state for linked pagination items */ 409 | a.pagination-item:hover { 410 | background-color: #f5f5f5; 411 | } 412 | 413 | @media (min-width: 30em) { 414 | .pagination { 415 | margin: 3rem 0; 416 | } 417 | .pagination-item { 418 | float: left; 419 | width: 50%; 420 | } 421 | .pagination-item:first-child { 422 | margin-bottom: 0; 423 | border-top-left-radius: 4px; 424 | border-bottom-left-radius: 4px; 425 | } 426 | .pagination-item:last-child { 427 | margin-left: -1px; 428 | border-top-right-radius: 4px; 429 | border-bottom-right-radius: 4px; 430 | } 431 | } 432 | -------------------------------------------------------------------------------- /docs/_posts/_site/public/css/style.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Demo color boxes. 3 | */ 4 | code.color-box-black { 5 | color: black; 6 | background-color: white; 7 | 8 | padding: 2px; 9 | border: 2px solid black; 10 | } 11 | 12 | code.color-box-red { color: #cc0000; } 13 | code.color-box-green { color: #4e9a06; } 14 | code.color-box-yellow { color: #c4a000; } 15 | code.color-box-blue { color: #3465a4; } 16 | code.color-box-magenta { color: #75507b; } 17 | code.color-box-cyan { color: #0b939b; } 18 | code.color-box-gray { color: #555753; } 19 | code.color-box-white { color: #EEEEEC; } 20 | code.color-box-darkgray { color: #555753; } 21 | code.color-box-lightgreen { color: #8ae234; } 22 | code.color-box-lightyellow { color: #fce94f; } 23 | code.color-box-lightblue { color: #729fcf; } 24 | code.color-box-lightmagenta { color: #ad7fa8; } 25 | code.color-box-lightcyan { color: #00f5e9; } 26 | 27 | code.bg-color-box-white { 28 | color: black; 29 | background-color: white; 30 | 31 | padding: 2px; 32 | border: 2px solid black; 33 | } 34 | 35 | code.bg-color-box-red { background-color: #cc0000; } 36 | code.bg-color-box-green { background-color: #4e9a06; } 37 | code.bg-color-box-yellow { background-color: #c4a000; } 38 | code.bg-color-box-blue { background-color: #3465a4; } 39 | code.bg-color-box-magenta { background-color: #75507b; } 40 | code.bg-color-box-cyan { background-color: #0b939b; } 41 | code.bg-color-box-gray { background-color: #555753; } 42 | code.bg-color-box-white { background-color: #EEEEEC; } 43 | code.bg-color-box-darkgray { background-color: #555753; } 44 | code.bg-color-box-lightgreen { background-color: #8ae234; } 45 | code.bg-color-box-lightyellow { background-color: #fce94f; } 46 | code.bg-color-box-lightblue { background-color: #729fcf; } 47 | code.bg-color-box-lightmagenta { background-color: #ad7fa8; } 48 | code.bg-color-box-lightcyan { background-color: #00f5e9; } 49 | -------------------------------------------------------------------------------- /docs/_posts/_site/public/css/syntax-new.css: -------------------------------------------------------------------------------- 1 | .highlight pre { background-color: #272822; } 2 | .highlight .hll { background-color: #272822; } 3 | .highlight .c { color: #75715e } /* Comment */ 4 | .highlight .err { color: #960050; background-color: #1e0010 } /* Error */ 5 | .highlight .k { color: #66d9ef } /* Keyword */ 6 | .highlight .l { color: #ae81ff } /* Literal */ 7 | .highlight .n { color: #f8f8f2 } /* Name */ 8 | .highlight .o { color: #f92672 } /* Operator */ 9 | .highlight .p { color: #f8f8f2 } /* Punctuation */ 10 | .highlight .cm { color: #75715e } /* Comment.Multiline */ 11 | .highlight .cp { color: #75715e } /* Comment.Preproc */ 12 | .highlight .c1 { color: #75715e } /* Comment.Single */ 13 | .highlight .cs { color: #75715e } /* Comment.Special */ 14 | .highlight .ge { font-style: italic } /* Generic.Emph */ 15 | .highlight .gs { font-weight: bold } /* Generic.Strong */ 16 | .highlight .kc { color: #66d9ef } /* Keyword.Constant */ 17 | .highlight .kd { color: #66d9ef } /* Keyword.Declaration */ 18 | .highlight .kn { color: #f92672 } /* Keyword.Namespace */ 19 | .highlight .kp { color: #66d9ef } /* Keyword.Pseudo */ 20 | .highlight .kr { color: #66d9ef } /* Keyword.Reserved */ 21 | .highlight .kt { color: #66d9ef } /* Keyword.Type */ 22 | .highlight .ld { color: #e6db74 } /* Literal.Date */ 23 | .highlight .m { color: #ae81ff } /* Literal.Number */ 24 | .highlight .s { color: #e6db74 } /* Literal.String */ 25 | .highlight .na { color: #a6e22e } /* Name.Attribute */ 26 | .highlight .nb { color: #f8f8f2 } /* Name.Builtin */ 27 | .highlight .nc { color: #a6e22e } /* Name.Class */ 28 | .highlight .no { color: #66d9ef } /* Name.Constant */ 29 | .highlight .nd { color: #a6e22e } /* Name.Decorator */ 30 | .highlight .ni { color: #f8f8f2 } /* Name.Entity */ 31 | .highlight .ne { color: #a6e22e } /* Name.Exception */ 32 | .highlight .nf { color: #a6e22e } /* Name.Function */ 33 | .highlight .nl { color: #f8f8f2 } /* Name.Label */ 34 | .highlight .nn { color: #f8f8f2 } /* Name.Namespace */ 35 | .highlight .nx { color: #a6e22e } /* Name.Other */ 36 | .highlight .py { color: #f8f8f2 } /* Name.Property */ 37 | .highlight .nt { color: #f92672 } /* Name.Tag */ 38 | .highlight .nv { color: #f8f8f2 } /* Name.Variable */ 39 | .highlight .ow { color: #f92672 } /* Operator.Word */ 40 | .highlight .w { color: #f8f8f2 } /* Text.Whitespace */ 41 | .highlight .mf { color: #ae81ff } /* Literal.Number.Float */ 42 | .highlight .mh { color: #ae81ff } /* Literal.Number.Hex */ 43 | .highlight .mi { color: #ae81ff } /* Literal.Number.Integer */ 44 | .highlight .mo { color: #ae81ff } /* Literal.Number.Oct */ 45 | .highlight .sb { color: #e6db74 } /* Literal.String.Backtick */ 46 | .highlight .sc { color: #e6db74 } /* Literal.String.Char */ 47 | .highlight .sd { color: #e6db74 } /* Literal.String.Doc */ 48 | .highlight .s2 { color: #e6db74 } /* Literal.String.Double */ 49 | .highlight .se { color: #ae81ff } /* Literal.String.Escape */ 50 | .highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */ 51 | .highlight .si { color: #e6db74 } /* Literal.String.Interpol */ 52 | .highlight .sx { color: #e6db74 } /* Literal.String.Other */ 53 | .highlight .sr { color: #e6db74 } /* Literal.String.Regex */ 54 | .highlight .s1 { color: #e6db74 } /* Literal.String.Single */ 55 | .highlight .ss { color: #e6db74 } /* Literal.String.Symbol */ 56 | .highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ 57 | .highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */ 58 | .highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ 59 | .highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ 60 | .highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ 61 | 62 | .highlight .gh { } /* Generic Heading & Diff Header */ 63 | .highlight .gu { color: #75715e; } /* Generic.Subheading & Diff Unified/Comment? */ 64 | .highlight .gd { color: #f92672; } /* Generic.Deleted & Diff Deleted */ 65 | .highlight .gi { color: #a6e22e; } /* Generic.Inserted & Diff Inserted */ 66 | -------------------------------------------------------------------------------- /docs/_posts/_site/public/css/syntax.css: -------------------------------------------------------------------------------- 1 | .highlight { background: #ffffff; } 2 | .highlight .c { color: #999988; font-style: italic } /* Comment */ 3 | .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ 4 | .highlight .k { font-weight: bold } /* Keyword */ 5 | .highlight .o { font-weight: bold } /* Operator */ 6 | .highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ 7 | .highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ 8 | .highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ 9 | .highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ 10 | .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ 11 | .highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ 12 | .highlight .ge { font-style: italic } /* Generic.Emph */ 13 | .highlight .gr { color: #aa0000 } /* Generic.Error */ 14 | .highlight .gh { color: #999999 } /* Generic.Heading */ 15 | .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ 16 | .highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ 17 | .highlight .go { color: #888888 } /* Generic.Output */ 18 | .highlight .gp { color: #555555 } /* Generic.Prompt */ 19 | .highlight .gs { font-weight: bold } /* Generic.Strong */ 20 | .highlight .gu { color: #aaaaaa } /* Generic.Subheading */ 21 | .highlight .gt { color: #aa0000 } /* Generic.Traceback */ 22 | .highlight .kc { font-weight: bold } /* Keyword.Constant */ 23 | .highlight .kd { font-weight: bold } /* Keyword.Declaration */ 24 | .highlight .kp { font-weight: bold } /* Keyword.Pseudo */ 25 | .highlight .kr { font-weight: bold } /* Keyword.Reserved */ 26 | .highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ 27 | .highlight .m { color: #009999 } /* Literal.Number */ 28 | .highlight .s { color: #d14 } /* Literal.String */ 29 | .highlight .na { color: #008080 } /* Name.Attribute */ 30 | .highlight .nb { color: #FF66FF } /* Name.Builtin */ 31 | .highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ 32 | .highlight .no { color: #008080 } /* Name.Constant */ 33 | .highlight .ni { color: #800080 } /* Name.Entity */ 34 | .highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ 35 | .highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ 36 | .highlight .nn { color: #555555 } /* Name.Namespace */ 37 | .highlight .nt { color: #000080 } /* Name.Tag */ 38 | .highlight .nv { color: #999999 } /* Name.Variable */ 39 | .highlight .ow { font-weight: bold } /* Operator.Word */ 40 | .highlight .w { color: #bbbbbb } /* Text.Whitespace */ 41 | .highlight .mf { color: #009999 } /* Literal.Number.Float */ 42 | .highlight .mh { color: #009999 } /* Literal.Number.Hex */ 43 | .highlight .mi { color: #009999 } /* Literal.Number.Integer */ 44 | .highlight .mo { color: #009999 } /* Literal.Number.Oct */ 45 | .highlight .sb { color: #d14 } /* Literal.String.Backtick */ 46 | .highlight .sc { color: #d14 } /* Literal.String.Char */ 47 | .highlight .sd { color: #d14 } /* Literal.String.Doc */ 48 | .highlight .s2 { color: #ffff33 } /* Literal.String.Double */ 49 | .highlight .se { color: #d14 } /* Literal.String.Escape */ 50 | .highlight .sh { color: #d14 } /* Literal.String.Heredoc */ 51 | .highlight .si { color: #d14 } /* Literal.String.Interpol */ 52 | .highlight .sx { color: #d14 } /* Literal.String.Other */ 53 | .highlight .sr { color: #66ffff } /* Literal.String.Regex */ 54 | .highlight .s1 { color: #DDDDDD;} /* Literal.String.Single */ 55 | .highlight .ss { color: #990073 } /* Literal.String.Symbol */ 56 | .highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ 57 | .highlight .vc { color: #008080 } /* Name.Variable.Class */ 58 | .highlight .vg { color: #008080 } /* Name.Variable.Global */ 59 | .highlight .vi { color: #008080 } /* Name.Variable.Instance */ 60 | .highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ 61 | .post > .highlight .lineno { color: #ccc; display:inline-block; padding: 0 5px; border-right:1px solid #ccc; } 62 | .post > .highlight pre code { display: block; white-space: pre; overflow-x: auto; word-wrap: normal; } 63 | -------------------------------------------------------------------------------- /docs/_posts/_site/public/css/syntax.css.old: -------------------------------------------------------------------------------- 1 | .highlight .hll { background-color: #ffc; } 2 | .highlight .c { color: #999; } /* Comment */ 3 | .highlight .err { color: #a00; background-color: #faa } /* Error */ 4 | .highlight .k { color: #069; } /* Keyword */ 5 | .highlight .o { color: #555 } /* Operator */ 6 | .highlight .cm { color: #09f; font-style: italic } /* Comment.Multiline */ 7 | .highlight .cp { color: #099 } /* Comment.Preproc */ 8 | .highlight .c1 { color: #999; } /* Comment.Single */ 9 | .highlight .cs { color: #999; } /* Comment.Special */ 10 | .highlight .gd { background-color: #fcc; border: 1px solid #c00 } /* Generic.Deleted */ 11 | .highlight .ge { font-style: italic } /* Generic.Emph */ 12 | .highlight .gr { color: #f00 } /* Generic.Error */ 13 | .highlight .gh { color: #030; } /* Generic.Heading */ 14 | .highlight .gi { background-color: #cfc; border: 1px solid #0c0 } /* Generic.Inserted */ 15 | .highlight .go { color: #aaa } /* Generic.Output */ 16 | .highlight .gp { color: #009; } /* Generic.Prompt */ 17 | .highlight .gs { } /* Generic.Strong */ 18 | .highlight .gu { color: #030; } /* Generic.Subheading */ 19 | .highlight .gt { color: #9c6 } /* Generic.Traceback */ 20 | .highlight .kc { color: #069; } /* Keyword.Constant */ 21 | .highlight .kd { color: #069; } /* Keyword.Declaration */ 22 | .highlight .kn { color: #069; } /* Keyword.Namespace */ 23 | .highlight .kp { color: #069 } /* Keyword.Pseudo */ 24 | .highlight .kr { color: #069; } /* Keyword.Reserved */ 25 | .highlight .kt { color: #078; } /* Keyword.Type */ 26 | .highlight .m { color: #f60 } /* Literal.Number */ 27 | .highlight .s { color: #d44950 } /* Literal.String */ 28 | .highlight .na { color: #4f9fcf } /* Name.Attribute */ 29 | .highlight .nb { color: #366 } /* Name.Builtin */ 30 | .highlight .nc { color: #0a8; } /* Name.Class */ 31 | .highlight .no { color: #360 } /* Name.Constant */ 32 | .highlight .nd { color: #99f } /* Name.Decorator */ 33 | .highlight .ni { color: #999; } /* Name.Entity */ 34 | .highlight .ne { color: #c00; } /* Name.Exception */ 35 | .highlight .nf { color: #c0f } /* Name.Function */ 36 | .highlight .nl { color: #99f } /* Name.Label */ 37 | .highlight .nn { color: #0cf; } /* Name.Namespace */ 38 | .highlight .nt { color: #2f6f9f; } /* Name.Tag */ 39 | .highlight .nv { color: #033 } /* Name.Variable */ 40 | .highlight .ow { color: #000; } /* Operator.Word */ 41 | .highlight .w { color: #bbb } /* Text.Whitespace */ 42 | .highlight .mf { color: #f60 } /* Literal.Number.Float */ 43 | .highlight .mh { color: #f60 } /* Literal.Number.Hex */ 44 | .highlight .mi { color: #f60 } /* Literal.Number.Integer */ 45 | .highlight .mo { color: #f60 } /* Literal.Number.Oct */ 46 | .highlight .sb { color: #c30 } /* Literal.String.Backtick */ 47 | .highlight .sc { color: #c30 } /* Literal.String.Char */ 48 | .highlight .sd { color: #c30; font-style: italic } /* Literal.String.Doc */ 49 | .highlight .s2 { color: #c30 } /* Literal.String.Double */ 50 | .highlight .se { color: #c30; } /* Literal.String.Escape */ 51 | .highlight .sh { color: #c30 } /* Literal.String.Heredoc */ 52 | .highlight .si { color: #a00 } /* Literal.String.Interpol */ 53 | .highlight .sx { color: #c30 } /* Literal.String.Other */ 54 | .highlight .sr { color: #3aa } /* Literal.String.Regex */ 55 | .highlight .s1 { color: #c30 } /* Literal.String.Single */ 56 | .highlight .ss { color: #fc3 } /* Literal.String.Symbol */ 57 | .highlight .bp { color: #366 } /* Name.Builtin.Pseudo */ 58 | .highlight .vc { color: #033 } /* Name.Variable.Class */ 59 | .highlight .vg { color: #033 } /* Name.Variable.Global */ 60 | .highlight .vi { color: #033 } /* Name.Variable.Instance */ 61 | .highlight .il { color: #f60 } /* Literal.Number.Integer.Long */ 62 | 63 | .css .o, 64 | .css .o + .nt, 65 | .css .nt + .nt { color: #999; } 66 | -------------------------------------------------------------------------------- /docs/_posts/_site/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/favicon.ico -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/attributes-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/attributes-demo.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/attributes-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/attributes-slide.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/background-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/background-demo.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/background-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/background-slide.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/color-bar-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/color-bar-demo.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/cowsay-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/cowsay-slide.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/cowsay-source-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/cowsay-source-slide.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/demo-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/demo-home.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/demo-on-runnable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/demo-on-runnable.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/elements-hr-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/elements-hr-demo.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/elements-other-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/elements-other-demo.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/emojis-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/emojis-demo.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/emojis-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/emojis-slide.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/foreground-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/foreground-demo.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/foreground-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/foreground-slide.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/icons-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/icons-demo.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/icons-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/icons-slide.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/logo.png -------------------------------------------------------------------------------- /docs/_posts/_site/public/images/terminal-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_posts/_site/public/images/terminal-home.png -------------------------------------------------------------------------------- /docs/_posts/_site/slideshow.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | SHML Slideshow 8 | 9 | 13 | 14 | 15 |

74 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /docs/_posts/template.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: Foo Bar 4 | published: True 5 | categories: [foo] 6 | tags: [bar] 7 | --- 8 | 9 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 10 | -------------------------------------------------------------------------------- /docs/_site/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 404: Page not found · SHML 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 78 | 79 | 80 |
81 |
82 |

404: Page not found

83 |

Sorry, we've misplaced that URL or it's pointing to something that doesn't exist. Head back home to try finding it again.

84 |
85 | 86 |
87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /docs/_site/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | SHML · $(shell markup language) 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 78 | 79 | 80 | 81 |
82 |
83 | SHML is a shell framework for faster and easier script development. 84 |
85 |
86 |     87 |     88 |     89 | 90 | 91 |
92 |
93 |

Why

94 |

HTML has CSS, Unix-like shells have ANSI/VT100 Control Sequences. SHML makes is easy to apply style to your shell scripts without trying to remember that yellow is \033[33m instead it’s $(color yellow).

95 | 96 |

1-liner Install

97 |
# Unix-like
 98 | $ sudo bash -c 'curl -L https://raw.githubusercontent.com/odb/shml/1.1.0/shml.sh -o /usr/local/bin/shml && chmod +x /usr/local/bin/shml'
 99 | 
100 | # Homebrew
101 | $ brew install shml
102 | 
103 | # npm
104 | $ npm install -g shml
105 | 
106 | 107 |
108 | Currently v1.1.0 109 |
Please be responsible & RTFM 110 |
111 |

112 | 113 |
114 |
115 | 116 |
117 | 118 | Designed and built by @jdorfman and mervinej.
119 | Code licensed under MIT, documentation under CC BY 4.0. 120 |
121 |
122 | 123 | 124 |
125 | 126 | 127 | 128 | -------------------------------------------------------------------------------- /docs/_site/public/apple-touch-icon-144-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/apple-touch-icon-144-precomposed.png -------------------------------------------------------------------------------- /docs/_site/public/code/attributes.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | echo '' 6 | echo "$(attribute underline "So Underlined") $(attribute end)" 7 | echo '' 8 | echo "$(attribute bold " such BOLD") $(attribute end)" 9 | echo '' 10 | echo "$(attribute invert "Why this inverted?") $(attribute end)" 11 | echo '' 12 | echo "$(a bold " such BOLD shorter") $(a end)" 13 | echo '' 14 | echo '' 15 | -------------------------------------------------------------------------------- /docs/_site/public/code/background.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | echo "" 6 | echo "$(bgcolor green "THE RZA THE GZA") $(color end)" 7 | echo " 8 | $(bgcolor blue) 9 | Ol' Dirty Bastard, Inspectah Deck 10 | Raekwon the Chef, U-God, Ghostface Killah and$(bgcolor end) 11 | " 12 | echo "$(bgc red "M-E-T, H-O-D, Man") $(c end)" 13 | echo "" 14 | -------------------------------------------------------------------------------- /docs/_site/public/code/color-bar.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | echo "$(color-bar)" 6 | echo " 7 | $(color-bar red green yellow blue magenta \ 8 | cyan lightgray darkgray lightred \ 9 | lightmagenta lightcyan)" 10 | echo "" 11 | echo "Yeah ahuh, you know what it is $(color-bar black yellow black yellow)" 12 | echo "I put it down from the whip to my diamonds, I'm in $(bar black yellow black yellow)" 13 | -------------------------------------------------------------------------------- /docs/_site/public/code/elements.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | 6 | echo "$(hr)" 7 | echo "$(hr 40)" 8 | echo "$(hr '~' 30)" 9 | echo "$(hr '#' 20)" 10 | echo "$(hr '*' 10)" 11 | echo "$(hr '+' 5)" 12 | 13 | echo "Wu$(br)Wu Tang$(br)Wu Tang$(br)Killah Beez$(br)We on a swarm" 14 | echo "W$(indent)U$(indent)T$(indent)A$(indent)N$(indent)G" 15 | echo "F$(i)O$(i)R$(i)E$(i)V$(i)A" 16 | echo "W$(tab)U$(tab)T$(tab)A$(tab)N$(tab)G" 17 | -------------------------------------------------------------------------------- /docs/_site/public/code/emojis.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | echo "" 6 | echo " Couldn't peep it with a pair of $(emoji bifocals)" 7 | echo "" 8 | echo " I'm no $(emoji joker) play me as a $(emoji joker)" 9 | echo "" 10 | echo " $(emoji bee) on you like a $(emoji house) on $(emoji fire), $(emoji smoke) ya" 11 | echo "" 12 | echo "$(hr)" 13 | echo "" 14 | echo "$(a bold 'Faces:') $(emoji '=)') $(emoji halo) $(emoji tongue) $(emoji blush) $(emoji worried) $(emoji cry) $(emoji rage)" 15 | echo "" 16 | echo "$(a bold 'Hands:') $(emoji hello) $(emoji nice) $(emoji like) $(emoji dislike)" 17 | echo "" 18 | echo "$(a bold 'Animals:') $(emoji happycat) $(emoji cat) $(emoji dog) $(emoji 'bee') $(emoji pig) $(emoji monkey) $(emoji cow) $(emoji panda)" 19 | echo "" 20 | echo "$(a bold 'Misc:') $(emoji sushi) $(emoji hankey) $(emoji brew) $(emoji lock) $(emoji star) $(emoji check) $(emoji xmark) $(emoji ring)" 21 | echo "" 22 | echo "$(ascii a) $(ascii b) $(ascii c)" 23 | -------------------------------------------------------------------------------- /docs/_site/public/code/foreground.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | echo "$(color green "RZA GZA") $(color end)" 6 | echo " 7 | $(color yellow) 8 | Inspectah Deck 9 | Ghostface Killah 10 | $(color end) 11 | " 12 | echo "$(c red "Killa Beez on a swarm") $(c end)" 13 | -------------------------------------------------------------------------------- /docs/_site/public/code/icons.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | echo "" 6 | echo "$(icon xmark) TPS Reports $(icon xmark) Lumbergh $(icon xmark) Working" 7 | echo "" 8 | echo "$(icon check) Kung Fu $(icon check) Fishing $(icon check) Sleep" 9 | echo "" 10 | echo "$(color red)$(icon xmark)$(color end)TPS Reports $(color green)$(icon check)$(color end)Fishing" 11 | echo "$(color red)$(icon xmark)$(color end)Working $(color green)$(icon check)$(color end)Kung Fu" 12 | echo "$(color red)$(icon xmark)$(color end)Lumbergh $(color green)$(icon check)$(color end)Sleeping" 13 | -------------------------------------------------------------------------------- /docs/_site/public/css/hyde.css: -------------------------------------------------------------------------------- 1 | /* 2 | * __ __ 3 | * /\ \ /\ \ 4 | * \ \ \___ __ __ \_\ \ __ 5 | * \ \ _ `\/\ \/\ \ /'_` \ /'__`\ 6 | * \ \ \ \ \ \ \_\ \/\ \_\ \/\ __/ 7 | * \ \_\ \_\/`____ \ \___,_\ \____\ 8 | * \/_/\/_/`/___/> \/__,_ /\/____/ 9 | * /\___/ 10 | * \/__/ 11 | * 12 | * Designed, built, and released under MIT license by @mdo. Learn more at 13 | * https://github.com/poole/hyde. 14 | */ 15 | 16 | 17 | /* 18 | * Contents 19 | * 20 | * Global resets 21 | * Sidebar 22 | * Container 23 | * Reverse layout 24 | * Themes 25 | */ 26 | 27 | 28 | /* 29 | * Global resets 30 | * 31 | * Update the foundational and global aspects of the page. 32 | */ 33 | 34 | html { 35 | font-family: "PT Sans", Helvetica, Arial, sans-serif; 36 | } 37 | @media (min-width: 48em) { 38 | html { 39 | font-size: 16px; 40 | } 41 | } 42 | @media (min-width: 58em) { 43 | html { 44 | font-size: 20px; 45 | } 46 | } 47 | 48 | 49 | /* 50 | * Sidebar 51 | * 52 | * Flexible banner for housing site name, intro, and "footer" content. Starts 53 | * out above content in mobile and later moves to the side with wider viewports. 54 | */ 55 | 56 | .sidebar { 57 | text-align: center; 58 | padding: 2rem 1rem; 59 | color: rgba(255,255,255,.5); 60 | background-color: #000000; 61 | } 62 | @media (min-width: 48em) { 63 | .sidebar { 64 | position: fixed; 65 | top: 0; 66 | left: 0; 67 | bottom: 0; 68 | width: 18rem; 69 | text-align: left; 70 | } 71 | } 72 | 73 | /* Sidebar links */ 74 | .sidebar a { 75 | color: #fff; 76 | } 77 | 78 | /* About section */ 79 | .sidebar-about h1 { 80 | color: #fff; 81 | margin-top: 0; 82 | font-family: "Impact", serif; 83 | font-size: 3.25rem; 84 | } 85 | 86 | /* Sidebar nav */ 87 | .sidebar-nav { 88 | margin-bottom: 1rem; 89 | font-family: monospace, courier; 90 | font-size: .7rem; 91 | } 92 | .sidebar-nav-item { 93 | display: block; 94 | line-height: 1.75; 95 | } 96 | .sidebar-nav-indent { 97 | text-indent: 3mm; 98 | } 99 | a.sidebar-nav-item:hover, 100 | a.sidebar-nav-item:focus { 101 | text-decoration: underline; 102 | } 103 | .sidebar-nav-item.active { 104 | font-weight: bold; 105 | } 106 | 107 | /* Sticky sidebar 108 | * 109 | * Add the `sidebar-sticky` class to the sidebar's container to affix it the 110 | * contents to the bottom of the sidebar in tablets and up. 111 | */ 112 | 113 | @media (min-width: 48em) { 114 | .sidebar-sticky { 115 | position: absolute; 116 | right: 1rem; 117 | bottom: 1rem; 118 | left: 1rem; 119 | } 120 | } 121 | 122 | 123 | /* Container 124 | * 125 | * Align the contents of the site above the proper threshold with some margin-fu 126 | * with a 25%-wide `.sidebar`. 127 | */ 128 | 129 | .content { 130 | padding-top: 4rem; 131 | padding-bottom: 4rem; 132 | } 133 | 134 | @media (min-width: 48em) { 135 | .content { 136 | max-width: 38rem; 137 | margin-left: 20rem; 138 | margin-right: 2rem; 139 | } 140 | } 141 | 142 | @media (min-width: 64em) { 143 | .content { 144 | margin-left: 22rem; 145 | margin-right: 4rem; 146 | } 147 | } 148 | 149 | 150 | /* 151 | * Reverse layout 152 | * 153 | * Flip the orientation of the page by placing the `.sidebar` on the right. 154 | */ 155 | 156 | @media (min-width: 48em) { 157 | .layout-reverse .sidebar { 158 | left: auto; 159 | right: 0; 160 | } 161 | .layout-reverse .content { 162 | margin-left: 2rem; 163 | margin-right: 20rem; 164 | } 165 | } 166 | 167 | @media (min-width: 64em) { 168 | .layout-reverse .content { 169 | margin-left: 4rem; 170 | margin-right: 22rem; 171 | } 172 | } 173 | 174 | 175 | 176 | /* 177 | * Themes 178 | * 179 | * As of v1.1, Hyde includes optional themes to color the sidebar and links 180 | * within blog posts. To use, add the class of your choosing to the `body`. 181 | */ 182 | 183 | /* Base16 (http://chriskempson.github.io/base16/#default) */ 184 | 185 | /* Red */ 186 | .theme-base-08 .sidebar { 187 | background-color: #ac4142; 188 | } 189 | .theme-base-08 .content a, 190 | .theme-base-08 .related-posts li a:hover { 191 | color: #ac4142; 192 | } 193 | 194 | /* Orange */ 195 | .theme-base-09 .sidebar { 196 | background-color: #d28445; 197 | } 198 | .theme-base-09 .content a, 199 | .theme-base-09 .related-posts li a:hover { 200 | color: #d28445; 201 | } 202 | 203 | /* Yellow */ 204 | .theme-base-0a .sidebar { 205 | background-color: #f4bf75; 206 | } 207 | .theme-base-0a .content a, 208 | .theme-base-0a .related-posts li a:hover { 209 | color: #f4bf75; 210 | } 211 | 212 | /* Green */ 213 | .theme-base-0b .sidebar { 214 | background-color: #90a959; 215 | } 216 | .theme-base-0b .content a, 217 | .theme-base-0b .related-posts li a:hover { 218 | color: #90a959; 219 | } 220 | 221 | /* Cyan */ 222 | .theme-base-0c .sidebar { 223 | background-color: #75b5aa; 224 | } 225 | .theme-base-0c .content a, 226 | .theme-base-0c .related-posts li a:hover { 227 | color: #75b5aa; 228 | } 229 | 230 | /* Blue */ 231 | .theme-base-0d .sidebar { 232 | background-color: #6a9fb5; 233 | } 234 | .theme-base-0d .content a, 235 | .theme-base-0d .related-posts li a:hover { 236 | color: #6a9fb5; 237 | } 238 | 239 | /* Magenta */ 240 | .theme-base-0e .sidebar { 241 | background-color: #aa759f; 242 | } 243 | .theme-base-0e .content a, 244 | .theme-base-0e .related-posts li a:hover { 245 | color: #aa759f; 246 | } 247 | 248 | /* Brown */ 249 | .theme-base-0f .sidebar { 250 | background-color: #8f5536; 251 | } 252 | .theme-base-0f .content a, 253 | .theme-base-0f .related-posts li a:hover { 254 | color: #8f5536; 255 | } 256 | -------------------------------------------------------------------------------- /docs/_site/public/css/poole.css: -------------------------------------------------------------------------------- 1 | /* 2 | * ___ 3 | * /\_ \ 4 | * _____ ___ ___\//\ \ __ 5 | * /\ '__`\ / __`\ / __`\\ \ \ /'__`\ 6 | * \ \ \_\ \/\ \_\ \/\ \_\ \\_\ \_/\ __/ 7 | * \ \ ,__/\ \____/\ \____//\____\ \____\ 8 | * \ \ \/ \/___/ \/___/ \/____/\/____/ 9 | * \ \_\ 10 | * \/_/ 11 | * 12 | * Designed, built, and released under MIT license by @mdo. Learn more at 13 | * https://github.com/poole/poole. 14 | */ 15 | 16 | 17 | /* 18 | * Contents 19 | * 20 | * Body resets 21 | * Custom type 22 | * Messages 23 | * Container 24 | * Masthead 25 | * Posts and pages 26 | * Pagination 27 | * Reverse layout 28 | * Themes 29 | */ 30 | 31 | 32 | /* 33 | * Body resets 34 | * 35 | * Update the foundational and global aspects of the page. 36 | */ 37 | 38 | * { 39 | -webkit-box-sizing: border-box; 40 | -moz-box-sizing: border-box; 41 | box-sizing: border-box; 42 | } 43 | 44 | html, 45 | body { 46 | margin: 0; 47 | padding: 0; 48 | } 49 | 50 | html { 51 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 52 | font-size: 16px; 53 | line-height: 1.5; 54 | } 55 | @media (min-width: 38em) { 56 | html { 57 | font-size: 20px; 58 | } 59 | } 60 | 61 | body { 62 | color: #515151; 63 | background-color: #fff; 64 | -webkit-text-size-adjust: 100%; 65 | -ms-text-size-adjust: 100%; 66 | } 67 | 68 | /* No `:visited` state is required by default (browsers will use `a`) */ 69 | a { 70 | color: #268bd2; 71 | text-decoration: none; 72 | } 73 | a strong { 74 | color: inherit; 75 | } 76 | /* `:focus` is linked to `:hover` for basic accessibility */ 77 | a:hover, 78 | a:focus { 79 | text-decoration: underline; 80 | } 81 | 82 | /* Headings */ 83 | h1, h2, h3, h4, h5, h6 { 84 | margin-bottom: .5rem; 85 | font-weight: bold; 86 | line-height: 1.25; 87 | color: #313131; 88 | text-rendering: optimizeLegibility; 89 | } 90 | h1 { 91 | font-size: 2rem; 92 | } 93 | h2 { 94 | margin-top: 1rem; 95 | font-size: 1.5rem; 96 | } 97 | h3 { 98 | margin-top: 1.5rem; 99 | font-size: 1.25rem; 100 | } 101 | h4, h5, h6 { 102 | margin-top: 1rem; 103 | font-size: 1rem; 104 | } 105 | 106 | /* Body text */ 107 | p { 108 | margin-top: 0; 109 | margin-bottom: 1rem; 110 | } 111 | 112 | strong { 113 | color: #303030; 114 | } 115 | 116 | 117 | /* Lists */ 118 | ul, ol, dl { 119 | margin-top: 0; 120 | margin-bottom: 1rem; 121 | } 122 | 123 | dt { 124 | font-weight: bold; 125 | } 126 | dd { 127 | margin-bottom: .5rem; 128 | } 129 | 130 | /* Misc */ 131 | hr { 132 | position: relative; 133 | margin: 1.5rem 0; 134 | border: 17; 135 | border-top: 2px solid #eee; 136 | border-bottom: 1px solid #fff; 137 | border-style: dashed; 138 | } 139 | 140 | abbr { 141 | font-size: 85%; 142 | font-weight: bold; 143 | color: #555; 144 | text-transform: uppercase; 145 | } 146 | abbr[title] { 147 | cursor: help; 148 | border-bottom: 1px dotted #e5e5e5; 149 | } 150 | 151 | /* Code */ 152 | code, 153 | pre { 154 | font-family: Menlo, Monaco, "Courier New", monospace; 155 | } 156 | code { 157 | padding: .25em .5em; 158 | font-size: 85%; 159 | color: #fff; 160 | background-color: #000; 161 | border-radius: 3px; 162 | } 163 | pre { 164 | display: block; 165 | margin-top: 0; 166 | margin-bottom: 1rem; 167 | padding: 1rem; 168 | font-size: .8rem; 169 | line-height: 1.4; 170 | white-space: pre; 171 | white-space: pre-wrap; 172 | word-break: break-all; 173 | word-wrap: break-word; 174 | background-color: #000; 175 | } 176 | pre code { 177 | padding: 0; 178 | font-size: 100%; 179 | color: fff; 180 | background-color: transparent; 181 | } 182 | 183 | /* Pygments via Jekyll */ 184 | .highlight { 185 | margin-bottom: 1rem; 186 | border-radius: 4px; 187 | } 188 | .highlight pre { 189 | margin-bottom: 0; 190 | } 191 | 192 | /* Gist via GitHub Pages */ 193 | .gist .gist-file { 194 | font-family: Menlo, Monaco, "Courier New", monospace !important; 195 | } 196 | .gist .markdown-body { 197 | padding: 15px; 198 | } 199 | .gist pre { 200 | padding: 0; 201 | background-color: transparent; 202 | } 203 | .gist .gist-file .gist-data { 204 | font-size: .8rem !important; 205 | line-height: 1.4; 206 | } 207 | .gist code { 208 | padding: 0; 209 | color: inherit; 210 | background-color: transparent; 211 | border-radius: 0; 212 | } 213 | 214 | /* Quotes */ 215 | blockquote { 216 | padding: .5rem 1rem; 217 | margin: .8rem 0; 218 | color: #7a7a7a; 219 | border-left: .25rem solid #e5e5e5; 220 | } 221 | blockquote p:last-child { 222 | margin-bottom: 0; 223 | } 224 | @media (min-width: 30em) { 225 | blockquote { 226 | padding-right: 5rem; 227 | padding-left: 1.25rem; 228 | } 229 | } 230 | 231 | img { 232 | display: block; 233 | max-width: 100%; 234 | margin: 0 0 1rem; 235 | border-radius: 5px; 236 | } 237 | 238 | /* Tables */ 239 | table { 240 | margin-bottom: 1rem; 241 | width: 100%; 242 | border: 1px solid #e5e5e5; 243 | border-collapse: collapse; 244 | } 245 | td, 246 | th { 247 | padding: .25rem .5rem; 248 | border: 1px solid #e5e5e5; 249 | } 250 | tbody tr:nth-child(odd) td, 251 | tbody tr:nth-child(odd) th { 252 | background-color: #f9f9f9; 253 | } 254 | 255 | 256 | /* 257 | * Custom type 258 | * 259 | * Extend paragraphs with `.lead` for larger introductory text. 260 | */ 261 | 262 | .lead { 263 | font-size: 1.25rem; 264 | font-weight: 300; 265 | } 266 | 267 | 268 | /* 269 | * Messages 270 | * 271 | * Show alert messages to users. You may add it to single elements like a `

`, 272 | * or to a parent if there are multiple elements to show. 273 | */ 274 | 275 | .message { 276 | margin-bottom: 1rem; 277 | padding: 1rem; 278 | color: #717171; 279 | background-color: #f9f9f9; 280 | } 281 | 282 | 283 | /* 284 | * Container 285 | * 286 | * Center the page content. 287 | */ 288 | 289 | .container { 290 | max-width: 38rem; 291 | padding-left: 1rem; 292 | padding-right: 1rem; 293 | margin-left: auto; 294 | margin-right: auto; 295 | } 296 | 297 | 298 | /* 299 | * Masthead 300 | * 301 | * Super small header above the content for site name and short description. 302 | */ 303 | 304 | .masthead { 305 | padding-top: 1rem; 306 | padding-bottom: 1rem; 307 | margin-bottom: 3rem; 308 | } 309 | .masthead-title { 310 | margin-top: 0; 311 | margin-bottom: 0; 312 | color: #505050; 313 | } 314 | .masthead-title a { 315 | color: #505050; 316 | } 317 | .masthead-title small { 318 | font-size: 75%; 319 | font-weight: 400; 320 | color: #c0c0c0; 321 | letter-spacing: 0; 322 | } 323 | 324 | 325 | /* 326 | * Posts and pages 327 | * 328 | * Each post is wrapped in `.post` and is used on default and post layouts. Each 329 | * page is wrapped in `.page` and is only used on the page layout. 330 | */ 331 | 332 | .page, 333 | .post { 334 | margin-bottom: 4em; 335 | } 336 | 337 | /* Blog post or page title */ 338 | .page-title, 339 | .post-title, 340 | .post-title a { 341 | color: #303030; 342 | } 343 | .page-title, 344 | .post-title { 345 | margin-top: 0; 346 | } 347 | 348 | /* Meta data line below post title */ 349 | .post-date { 350 | display: block; 351 | margin-top: -.5rem; 352 | margin-bottom: 1rem; 353 | color: #9a9a9a; 354 | } 355 | 356 | /* Related posts */ 357 | .related { 358 | padding-top: 2rem; 359 | padding-bottom: 2rem; 360 | border-top: 1px solid #eee; 361 | } 362 | .related-posts { 363 | padding-left: 0; 364 | list-style: none; 365 | } 366 | .related-posts h3 { 367 | margin-top: 0; 368 | } 369 | .related-posts li small { 370 | font-size: 75%; 371 | color: #999; 372 | } 373 | .related-posts li a:hover { 374 | color: #268bd2; 375 | text-decoration: none; 376 | } 377 | .related-posts li a:hover small { 378 | color: inherit; 379 | } 380 | 381 | 382 | /* 383 | * Pagination 384 | * 385 | * Super lightweight (HTML-wise) blog pagination. `span`s are provide for when 386 | * there are no more previous or next posts to show. 387 | */ 388 | 389 | .pagination { 390 | overflow: hidden; /* clearfix */ 391 | margin-left: -1rem; 392 | margin-right: -1rem; 393 | font-family: "PT Sans", Helvetica, Arial, sans-serif; 394 | color: #ccc; 395 | text-align: center; 396 | } 397 | 398 | /* Pagination items can be `span`s or `a`s */ 399 | .pagination-item { 400 | display: block; 401 | padding: 1rem; 402 | border: 1px solid #eee; 403 | } 404 | .pagination-item:first-child { 405 | margin-bottom: -1px; 406 | } 407 | 408 | /* Only provide a hover state for linked pagination items */ 409 | a.pagination-item:hover { 410 | background-color: #f5f5f5; 411 | } 412 | 413 | @media (min-width: 30em) { 414 | .pagination { 415 | margin: 3rem 0; 416 | } 417 | .pagination-item { 418 | float: left; 419 | width: 50%; 420 | } 421 | .pagination-item:first-child { 422 | margin-bottom: 0; 423 | border-top-left-radius: 4px; 424 | border-bottom-left-radius: 4px; 425 | } 426 | .pagination-item:last-child { 427 | margin-left: -1px; 428 | border-top-right-radius: 4px; 429 | border-bottom-right-radius: 4px; 430 | } 431 | } 432 | -------------------------------------------------------------------------------- /docs/_site/public/css/style.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Demo color boxes. 3 | */ 4 | code.color-box-black { 5 | color: black; 6 | background-color: white; 7 | 8 | padding: 2px; 9 | border: 2px solid black; 10 | } 11 | 12 | code.color-box-red { color: #cc0000; } 13 | code.color-box-green { color: #4e9a06; } 14 | code.color-box-yellow { color: #c4a000; } 15 | code.color-box-blue { color: #3465a4; } 16 | code.color-box-magenta { color: #75507b; } 17 | code.color-box-cyan { color: #0b939b; } 18 | code.color-box-gray { color: #555753; } 19 | code.color-box-white { color: #EEEEEC; } 20 | code.color-box-darkgray { color: #555753; } 21 | code.color-box-lightgreen { color: #8ae234; } 22 | code.color-box-lightyellow { color: #fce94f; } 23 | code.color-box-lightblue { color: #729fcf; } 24 | code.color-box-lightmagenta { color: #ad7fa8; } 25 | code.color-box-lightcyan { color: #00f5e9; } 26 | 27 | code.bg-color-box-white { 28 | color: black; 29 | background-color: white; 30 | 31 | padding: 2px; 32 | border: 2px solid black; 33 | } 34 | 35 | code.bg-color-box-red { background-color: #cc0000; } 36 | code.bg-color-box-green { background-color: #4e9a06; } 37 | code.bg-color-box-yellow { background-color: #c4a000; } 38 | code.bg-color-box-blue { background-color: #3465a4; } 39 | code.bg-color-box-magenta { background-color: #75507b; } 40 | code.bg-color-box-cyan { background-color: #0b939b; } 41 | code.bg-color-box-gray { background-color: #555753; } 42 | code.bg-color-box-white { background-color: #EEEEEC; } 43 | code.bg-color-box-darkgray { background-color: #555753; } 44 | code.bg-color-box-lightgreen { background-color: #8ae234; } 45 | code.bg-color-box-lightyellow { background-color: #fce94f; } 46 | code.bg-color-box-lightblue { background-color: #729fcf; } 47 | code.bg-color-box-lightmagenta { background-color: #ad7fa8; } 48 | code.bg-color-box-lightcyan { background-color: #00f5e9; } 49 | -------------------------------------------------------------------------------- /docs/_site/public/css/syntax-new.css: -------------------------------------------------------------------------------- 1 | .highlight pre { background-color: #272822; } 2 | .highlight .hll { background-color: #272822; } 3 | .highlight .c { color: #75715e } /* Comment */ 4 | .highlight .err { color: #960050; background-color: #1e0010 } /* Error */ 5 | .highlight .k { color: #66d9ef } /* Keyword */ 6 | .highlight .l { color: #ae81ff } /* Literal */ 7 | .highlight .n { color: #f8f8f2 } /* Name */ 8 | .highlight .o { color: #f92672 } /* Operator */ 9 | .highlight .p { color: #f8f8f2 } /* Punctuation */ 10 | .highlight .cm { color: #75715e } /* Comment.Multiline */ 11 | .highlight .cp { color: #75715e } /* Comment.Preproc */ 12 | .highlight .c1 { color: #75715e } /* Comment.Single */ 13 | .highlight .cs { color: #75715e } /* Comment.Special */ 14 | .highlight .ge { font-style: italic } /* Generic.Emph */ 15 | .highlight .gs { font-weight: bold } /* Generic.Strong */ 16 | .highlight .kc { color: #66d9ef } /* Keyword.Constant */ 17 | .highlight .kd { color: #66d9ef } /* Keyword.Declaration */ 18 | .highlight .kn { color: #f92672 } /* Keyword.Namespace */ 19 | .highlight .kp { color: #66d9ef } /* Keyword.Pseudo */ 20 | .highlight .kr { color: #66d9ef } /* Keyword.Reserved */ 21 | .highlight .kt { color: #66d9ef } /* Keyword.Type */ 22 | .highlight .ld { color: #e6db74 } /* Literal.Date */ 23 | .highlight .m { color: #ae81ff } /* Literal.Number */ 24 | .highlight .s { color: #e6db74 } /* Literal.String */ 25 | .highlight .na { color: #a6e22e } /* Name.Attribute */ 26 | .highlight .nb { color: #f8f8f2 } /* Name.Builtin */ 27 | .highlight .nc { color: #a6e22e } /* Name.Class */ 28 | .highlight .no { color: #66d9ef } /* Name.Constant */ 29 | .highlight .nd { color: #a6e22e } /* Name.Decorator */ 30 | .highlight .ni { color: #f8f8f2 } /* Name.Entity */ 31 | .highlight .ne { color: #a6e22e } /* Name.Exception */ 32 | .highlight .nf { color: #a6e22e } /* Name.Function */ 33 | .highlight .nl { color: #f8f8f2 } /* Name.Label */ 34 | .highlight .nn { color: #f8f8f2 } /* Name.Namespace */ 35 | .highlight .nx { color: #a6e22e } /* Name.Other */ 36 | .highlight .py { color: #f8f8f2 } /* Name.Property */ 37 | .highlight .nt { color: #f92672 } /* Name.Tag */ 38 | .highlight .nv { color: #f8f8f2 } /* Name.Variable */ 39 | .highlight .ow { color: #f92672 } /* Operator.Word */ 40 | .highlight .w { color: #f8f8f2 } /* Text.Whitespace */ 41 | .highlight .mf { color: #ae81ff } /* Literal.Number.Float */ 42 | .highlight .mh { color: #ae81ff } /* Literal.Number.Hex */ 43 | .highlight .mi { color: #ae81ff } /* Literal.Number.Integer */ 44 | .highlight .mo { color: #ae81ff } /* Literal.Number.Oct */ 45 | .highlight .sb { color: #e6db74 } /* Literal.String.Backtick */ 46 | .highlight .sc { color: #e6db74 } /* Literal.String.Char */ 47 | .highlight .sd { color: #e6db74 } /* Literal.String.Doc */ 48 | .highlight .s2 { color: #e6db74 } /* Literal.String.Double */ 49 | .highlight .se { color: #ae81ff } /* Literal.String.Escape */ 50 | .highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */ 51 | .highlight .si { color: #e6db74 } /* Literal.String.Interpol */ 52 | .highlight .sx { color: #e6db74 } /* Literal.String.Other */ 53 | .highlight .sr { color: #e6db74 } /* Literal.String.Regex */ 54 | .highlight .s1 { color: #e6db74 } /* Literal.String.Single */ 55 | .highlight .ss { color: #e6db74 } /* Literal.String.Symbol */ 56 | .highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ 57 | .highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */ 58 | .highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ 59 | .highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ 60 | .highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ 61 | 62 | .highlight .gh { } /* Generic Heading & Diff Header */ 63 | .highlight .gu { color: #75715e; } /* Generic.Subheading & Diff Unified/Comment? */ 64 | .highlight .gd { color: #f92672; } /* Generic.Deleted & Diff Deleted */ 65 | .highlight .gi { color: #a6e22e; } /* Generic.Inserted & Diff Inserted */ 66 | -------------------------------------------------------------------------------- /docs/_site/public/css/syntax.css: -------------------------------------------------------------------------------- 1 | .highlight { background: #ffffff; } 2 | .highlight .c { color: #999988; font-style: italic } /* Comment */ 3 | .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ 4 | .highlight .k { font-weight: bold } /* Keyword */ 5 | .highlight .o { font-weight: bold } /* Operator */ 6 | .highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ 7 | .highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ 8 | .highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ 9 | .highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ 10 | .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ 11 | .highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ 12 | .highlight .ge { font-style: italic } /* Generic.Emph */ 13 | .highlight .gr { color: #aa0000 } /* Generic.Error */ 14 | .highlight .gh { color: #999999 } /* Generic.Heading */ 15 | .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ 16 | .highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ 17 | .highlight .go { color: #888888 } /* Generic.Output */ 18 | .highlight .gp { color: #555555 } /* Generic.Prompt */ 19 | .highlight .gs { font-weight: bold } /* Generic.Strong */ 20 | .highlight .gu { color: #aaaaaa } /* Generic.Subheading */ 21 | .highlight .gt { color: #aa0000 } /* Generic.Traceback */ 22 | .highlight .kc { font-weight: bold } /* Keyword.Constant */ 23 | .highlight .kd { font-weight: bold } /* Keyword.Declaration */ 24 | .highlight .kp { font-weight: bold } /* Keyword.Pseudo */ 25 | .highlight .kr { font-weight: bold } /* Keyword.Reserved */ 26 | .highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ 27 | .highlight .m { color: #009999 } /* Literal.Number */ 28 | .highlight .s { color: #d14 } /* Literal.String */ 29 | .highlight .na { color: #008080 } /* Name.Attribute */ 30 | .highlight .nb { color: #FF66FF } /* Name.Builtin */ 31 | .highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ 32 | .highlight .no { color: #008080 } /* Name.Constant */ 33 | .highlight .ni { color: #800080 } /* Name.Entity */ 34 | .highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ 35 | .highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ 36 | .highlight .nn { color: #555555 } /* Name.Namespace */ 37 | .highlight .nt { color: #000080 } /* Name.Tag */ 38 | .highlight .nv { color: #999999 } /* Name.Variable */ 39 | .highlight .ow { font-weight: bold } /* Operator.Word */ 40 | .highlight .w { color: #bbbbbb } /* Text.Whitespace */ 41 | .highlight .mf { color: #009999 } /* Literal.Number.Float */ 42 | .highlight .mh { color: #009999 } /* Literal.Number.Hex */ 43 | .highlight .mi { color: #009999 } /* Literal.Number.Integer */ 44 | .highlight .mo { color: #009999 } /* Literal.Number.Oct */ 45 | .highlight .sb { color: #d14 } /* Literal.String.Backtick */ 46 | .highlight .sc { color: #d14 } /* Literal.String.Char */ 47 | .highlight .sd { color: #d14 } /* Literal.String.Doc */ 48 | .highlight .s2 { color: #ffff33 } /* Literal.String.Double */ 49 | .highlight .se { color: #d14 } /* Literal.String.Escape */ 50 | .highlight .sh { color: #d14 } /* Literal.String.Heredoc */ 51 | .highlight .si { color: #d14 } /* Literal.String.Interpol */ 52 | .highlight .sx { color: #d14 } /* Literal.String.Other */ 53 | .highlight .sr { color: #66ffff } /* Literal.String.Regex */ 54 | .highlight .s1 { color: #DDDDDD;} /* Literal.String.Single */ 55 | .highlight .ss { color: #990073 } /* Literal.String.Symbol */ 56 | .highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ 57 | .highlight .vc { color: #008080 } /* Name.Variable.Class */ 58 | .highlight .vg { color: #008080 } /* Name.Variable.Global */ 59 | .highlight .vi { color: #008080 } /* Name.Variable.Instance */ 60 | .highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ 61 | .post > .highlight .lineno { color: #ccc; display:inline-block; padding: 0 5px; border-right:1px solid #ccc; } 62 | .post > .highlight pre code { display: block; white-space: pre; overflow-x: auto; word-wrap: normal; } 63 | -------------------------------------------------------------------------------- /docs/_site/public/css/syntax.css.old: -------------------------------------------------------------------------------- 1 | .highlight .hll { background-color: #ffc; } 2 | .highlight .c { color: #999; } /* Comment */ 3 | .highlight .err { color: #a00; background-color: #faa } /* Error */ 4 | .highlight .k { color: #069; } /* Keyword */ 5 | .highlight .o { color: #555 } /* Operator */ 6 | .highlight .cm { color: #09f; font-style: italic } /* Comment.Multiline */ 7 | .highlight .cp { color: #099 } /* Comment.Preproc */ 8 | .highlight .c1 { color: #999; } /* Comment.Single */ 9 | .highlight .cs { color: #999; } /* Comment.Special */ 10 | .highlight .gd { background-color: #fcc; border: 1px solid #c00 } /* Generic.Deleted */ 11 | .highlight .ge { font-style: italic } /* Generic.Emph */ 12 | .highlight .gr { color: #f00 } /* Generic.Error */ 13 | .highlight .gh { color: #030; } /* Generic.Heading */ 14 | .highlight .gi { background-color: #cfc; border: 1px solid #0c0 } /* Generic.Inserted */ 15 | .highlight .go { color: #aaa } /* Generic.Output */ 16 | .highlight .gp { color: #009; } /* Generic.Prompt */ 17 | .highlight .gs { } /* Generic.Strong */ 18 | .highlight .gu { color: #030; } /* Generic.Subheading */ 19 | .highlight .gt { color: #9c6 } /* Generic.Traceback */ 20 | .highlight .kc { color: #069; } /* Keyword.Constant */ 21 | .highlight .kd { color: #069; } /* Keyword.Declaration */ 22 | .highlight .kn { color: #069; } /* Keyword.Namespace */ 23 | .highlight .kp { color: #069 } /* Keyword.Pseudo */ 24 | .highlight .kr { color: #069; } /* Keyword.Reserved */ 25 | .highlight .kt { color: #078; } /* Keyword.Type */ 26 | .highlight .m { color: #f60 } /* Literal.Number */ 27 | .highlight .s { color: #d44950 } /* Literal.String */ 28 | .highlight .na { color: #4f9fcf } /* Name.Attribute */ 29 | .highlight .nb { color: #366 } /* Name.Builtin */ 30 | .highlight .nc { color: #0a8; } /* Name.Class */ 31 | .highlight .no { color: #360 } /* Name.Constant */ 32 | .highlight .nd { color: #99f } /* Name.Decorator */ 33 | .highlight .ni { color: #999; } /* Name.Entity */ 34 | .highlight .ne { color: #c00; } /* Name.Exception */ 35 | .highlight .nf { color: #c0f } /* Name.Function */ 36 | .highlight .nl { color: #99f } /* Name.Label */ 37 | .highlight .nn { color: #0cf; } /* Name.Namespace */ 38 | .highlight .nt { color: #2f6f9f; } /* Name.Tag */ 39 | .highlight .nv { color: #033 } /* Name.Variable */ 40 | .highlight .ow { color: #000; } /* Operator.Word */ 41 | .highlight .w { color: #bbb } /* Text.Whitespace */ 42 | .highlight .mf { color: #f60 } /* Literal.Number.Float */ 43 | .highlight .mh { color: #f60 } /* Literal.Number.Hex */ 44 | .highlight .mi { color: #f60 } /* Literal.Number.Integer */ 45 | .highlight .mo { color: #f60 } /* Literal.Number.Oct */ 46 | .highlight .sb { color: #c30 } /* Literal.String.Backtick */ 47 | .highlight .sc { color: #c30 } /* Literal.String.Char */ 48 | .highlight .sd { color: #c30; font-style: italic } /* Literal.String.Doc */ 49 | .highlight .s2 { color: #c30 } /* Literal.String.Double */ 50 | .highlight .se { color: #c30; } /* Literal.String.Escape */ 51 | .highlight .sh { color: #c30 } /* Literal.String.Heredoc */ 52 | .highlight .si { color: #a00 } /* Literal.String.Interpol */ 53 | .highlight .sx { color: #c30 } /* Literal.String.Other */ 54 | .highlight .sr { color: #3aa } /* Literal.String.Regex */ 55 | .highlight .s1 { color: #c30 } /* Literal.String.Single */ 56 | .highlight .ss { color: #fc3 } /* Literal.String.Symbol */ 57 | .highlight .bp { color: #366 } /* Name.Builtin.Pseudo */ 58 | .highlight .vc { color: #033 } /* Name.Variable.Class */ 59 | .highlight .vg { color: #033 } /* Name.Variable.Global */ 60 | .highlight .vi { color: #033 } /* Name.Variable.Instance */ 61 | .highlight .il { color: #f60 } /* Literal.Number.Integer.Long */ 62 | 63 | .css .o, 64 | .css .o + .nt, 65 | .css .nt + .nt { color: #999; } 66 | -------------------------------------------------------------------------------- /docs/_site/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/favicon.ico -------------------------------------------------------------------------------- /docs/_site/public/images/attributes-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/attributes-demo.png -------------------------------------------------------------------------------- /docs/_site/public/images/attributes-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/attributes-slide.png -------------------------------------------------------------------------------- /docs/_site/public/images/background-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/background-demo.png -------------------------------------------------------------------------------- /docs/_site/public/images/background-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/background-slide.png -------------------------------------------------------------------------------- /docs/_site/public/images/color-bar-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/color-bar-demo.png -------------------------------------------------------------------------------- /docs/_site/public/images/confirm-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/confirm-demo.png -------------------------------------------------------------------------------- /docs/_site/public/images/cowsay-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/cowsay-slide.png -------------------------------------------------------------------------------- /docs/_site/public/images/cowsay-source-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/cowsay-source-slide.png -------------------------------------------------------------------------------- /docs/_site/public/images/demo-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/demo-home.png -------------------------------------------------------------------------------- /docs/_site/public/images/demo-on-runnable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/demo-on-runnable.png -------------------------------------------------------------------------------- /docs/_site/public/images/elements-hr-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/elements-hr-demo.png -------------------------------------------------------------------------------- /docs/_site/public/images/elements-other-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/elements-other-demo.png -------------------------------------------------------------------------------- /docs/_site/public/images/emojis-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/emojis-demo.png -------------------------------------------------------------------------------- /docs/_site/public/images/emojis-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/emojis-slide.png -------------------------------------------------------------------------------- /docs/_site/public/images/foreground-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/foreground-demo.png -------------------------------------------------------------------------------- /docs/_site/public/images/foreground-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/foreground-slide.png -------------------------------------------------------------------------------- /docs/_site/public/images/icons-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/icons-demo.png -------------------------------------------------------------------------------- /docs/_site/public/images/icons-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/icons-slide.png -------------------------------------------------------------------------------- /docs/_site/public/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/logo.png -------------------------------------------------------------------------------- /docs/_site/public/images/terminal-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/_site/public/images/terminal-home.png -------------------------------------------------------------------------------- /docs/_site/slideshow.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | SHML Slideshow 8 | 9 | 13 | 14 | 15 |

74 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /docs/getting-started.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | title: 'Getting Started' 4 | --- 5 | 6 |

7 | An overview of SHML, how to download, install and use, syntax overview with examples. 8 |

9 | 10 | To use SHML you must have unix-like (Darwin/macOS, Linux, etc.) POSIX-compliant operating system that supports ANSI/VT100 Control Sequences. If you are using an up to date version of macOS or any Linux distribution you should be good to go. If you run into issues please [report it here](https://github.com/odb/shml/issues). 11 | 12 | {% include install.md %} 13 | {% include sourcing.md %} 14 | {% include foreground.md %} 15 | {% include background.md %} 16 | {% include attributes.md %} 17 | {% include elements.md %} 18 | {% include icons.md %} 19 | {% include emojis.md %} 20 | {% include color-bar.md %} 21 | {% include confirm.md %} 22 | 23 |
24 | 25 | {% include footer.html %} 26 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: home 3 | title: Home 4 | --- 5 | 6 | ### Why 7 | HTML has CSS, Unix-like shells have ANSI/VT100 Control Sequences. SHML makes is easy to apply style to your shell scripts without trying to remember that **yellow** is `\033[33m` instead it's `$(color yellow)`. 8 | 9 | ### 1-liner Install 10 | ```bash 11 | # Unix-like 12 | $ sudo bash -c 'curl -L https://raw.githubusercontent.com/odb/shml/1.1.0/shml.sh -o /usr/local/bin/shml && chmod +x /usr/local/bin/shml' 13 | 14 | # Homebrew 15 | $ brew install shml 16 | 17 | # npm 18 | $ npm install -g shml 19 | ``` 20 | 21 |
22 | Currently v{{site.version}} 23 |
Please be responsible & RTFM 24 |
25 |

26 | 27 |
28 |
29 | 30 | {% include footer.html %} 31 | -------------------------------------------------------------------------------- /docs/public/apple-touch-icon-144-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/apple-touch-icon-144-precomposed.png -------------------------------------------------------------------------------- /docs/public/code/attributes.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | echo '' 6 | echo "$(attribute underline "So Underlined") $(attribute end)" 7 | echo '' 8 | echo "$(attribute bold " such BOLD") $(attribute end)" 9 | echo '' 10 | echo "$(attribute invert "Why this inverted?") $(attribute end)" 11 | echo '' 12 | echo "$(a bold " such BOLD shorter") $(a end)" 13 | echo '' 14 | echo '' 15 | -------------------------------------------------------------------------------- /docs/public/code/background.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | echo "" 6 | echo "$(bgcolor green "THE RZA THE GZA") $(color end)" 7 | echo " 8 | $(bgcolor blue) 9 | Ol' Dirty Bastard, Inspectah Deck 10 | Raekwon the Chef, U-God, Ghostface Killah and$(bgcolor end) 11 | " 12 | echo "$(bgc red "M-E-T, H-O-D, Man") $(c end)" 13 | echo "" 14 | -------------------------------------------------------------------------------- /docs/public/code/color-bar.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | echo "$(color-bar)" 6 | echo " 7 | $(color-bar red green yellow blue magenta \ 8 | cyan lightgray darkgray lightred \ 9 | lightmagenta lightcyan)" 10 | echo "" 11 | echo "Yeah ahuh, you know what it is $(color-bar black yellow black yellow)" 12 | echo "I put it down from the whip to my diamonds, I'm in $(bar black yellow black yellow)" 13 | -------------------------------------------------------------------------------- /docs/public/code/elements.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | 6 | echo "$(hr)" 7 | echo "$(hr 40)" 8 | echo "$(hr '~' 30)" 9 | echo "$(hr '#' 20)" 10 | echo "$(hr '*' 10)" 11 | echo "$(hr '+' 5)" 12 | 13 | echo "Wu$(br)Wu Tang$(br)Wu Tang$(br)Killah Beez$(br)We on a swarm" 14 | echo "W$(indent)U$(indent)T$(indent)A$(indent)N$(indent)G" 15 | echo "F$(i)O$(i)R$(i)E$(i)V$(i)A" 16 | echo "W$(tab)U$(tab)T$(tab)A$(tab)N$(tab)G" 17 | -------------------------------------------------------------------------------- /docs/public/code/emojis.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | echo "" 6 | echo " Couldn't peep it with a pair of $(emoji bifocals)" 7 | echo "" 8 | echo " I'm no $(emoji joker) play me as a $(emoji joker)" 9 | echo "" 10 | echo " $(emoji bee) on you like a $(emoji house) on $(emoji fire), $(emoji smoke) ya" 11 | echo "" 12 | echo "$(hr)" 13 | echo "" 14 | echo "$(a bold 'Faces:') $(emoji '=)') $(emoji halo) $(emoji tongue) $(emoji blush) $(emoji worried) $(emoji cry) $(emoji rage)" 15 | echo "" 16 | echo "$(a bold 'Hands:') $(emoji hello) $(emoji nice) $(emoji like) $(emoji dislike)" 17 | echo "" 18 | echo "$(a bold 'Animals:') $(emoji happycat) $(emoji cat) $(emoji dog) $(emoji 'bee') $(emoji pig) $(emoji monkey) $(emoji cow) $(emoji panda)" 19 | echo "" 20 | echo "$(a bold 'Misc:') $(emoji sushi) $(emoji hankey) $(emoji brew) $(emoji lock) $(emoji star) $(emoji check) $(emoji xmark) $(emoji ring)" 21 | echo "" 22 | echo "$(ascii a) $(ascii b) $(ascii c)" 23 | -------------------------------------------------------------------------------- /docs/public/code/foreground.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | echo "$(color green "RZA GZA") $(color end)" 6 | echo " 7 | $(color yellow) 8 | Inspectah Deck 9 | Ghostface Killah 10 | $(color end) 11 | " 12 | echo "$(c red "Killa Beez on a swarm") $(c end)" 13 | -------------------------------------------------------------------------------- /docs/public/code/icons.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source "$(which shml)" 4 | 5 | echo "" 6 | echo "$(icon xmark) TPS Reports $(icon xmark) Lumbergh $(icon xmark) Working" 7 | echo "" 8 | echo "$(icon check) Kung Fu $(icon check) Fishing $(icon check) Sleep" 9 | echo "" 10 | echo "$(color red)$(icon xmark)$(color end)TPS Reports $(color green)$(icon check)$(color end)Fishing" 11 | echo "$(color red)$(icon xmark)$(color end)Working $(color green)$(icon check)$(color end)Kung Fu" 12 | echo "$(color red)$(icon xmark)$(color end)Lumbergh $(color green)$(icon check)$(color end)Sleeping" 13 | -------------------------------------------------------------------------------- /docs/public/css/hyde.css: -------------------------------------------------------------------------------- 1 | /* 2 | * __ __ 3 | * /\ \ /\ \ 4 | * \ \ \___ __ __ \_\ \ __ 5 | * \ \ _ `\/\ \/\ \ /'_` \ /'__`\ 6 | * \ \ \ \ \ \ \_\ \/\ \_\ \/\ __/ 7 | * \ \_\ \_\/`____ \ \___,_\ \____\ 8 | * \/_/\/_/`/___/> \/__,_ /\/____/ 9 | * /\___/ 10 | * \/__/ 11 | * 12 | * Designed, built, and released under MIT license by @mdo. Learn more at 13 | * https://github.com/poole/hyde. 14 | */ 15 | 16 | 17 | /* 18 | * Contents 19 | * 20 | * Global resets 21 | * Sidebar 22 | * Container 23 | * Reverse layout 24 | * Themes 25 | */ 26 | 27 | 28 | /* 29 | * Global resets 30 | * 31 | * Update the foundational and global aspects of the page. 32 | */ 33 | 34 | html { 35 | font-family: "PT Sans", Helvetica, Arial, sans-serif; 36 | } 37 | @media (min-width: 48em) { 38 | html { 39 | font-size: 16px; 40 | } 41 | } 42 | @media (min-width: 58em) { 43 | html { 44 | font-size: 20px; 45 | } 46 | } 47 | 48 | 49 | /* 50 | * Sidebar 51 | * 52 | * Flexible banner for housing site name, intro, and "footer" content. Starts 53 | * out above content in mobile and later moves to the side with wider viewports. 54 | */ 55 | 56 | .sidebar { 57 | text-align: center; 58 | padding: 2rem 1rem; 59 | color: rgba(255,255,255,.5); 60 | background-color: #000000; 61 | } 62 | @media (min-width: 48em) { 63 | .sidebar { 64 | position: fixed; 65 | top: 0; 66 | left: 0; 67 | bottom: 0; 68 | width: 18rem; 69 | text-align: left; 70 | } 71 | } 72 | 73 | /* Sidebar links */ 74 | .sidebar a { 75 | color: #fff; 76 | } 77 | 78 | /* About section */ 79 | .sidebar-about h1 { 80 | color: #fff; 81 | margin-top: 0; 82 | font-family: "Impact", serif; 83 | font-size: 3.25rem; 84 | } 85 | 86 | /* Sidebar nav */ 87 | .sidebar-nav { 88 | margin-bottom: 1rem; 89 | font-family: monospace, courier; 90 | font-size: .7rem; 91 | } 92 | .sidebar-nav-item { 93 | display: block; 94 | line-height: 1.75; 95 | } 96 | .sidebar-nav-indent { 97 | text-indent: 3mm; 98 | } 99 | a.sidebar-nav-item:hover, 100 | a.sidebar-nav-item:focus { 101 | text-decoration: underline; 102 | } 103 | .sidebar-nav-item.active { 104 | font-weight: bold; 105 | } 106 | 107 | /* Sticky sidebar 108 | * 109 | * Add the `sidebar-sticky` class to the sidebar's container to affix it the 110 | * contents to the bottom of the sidebar in tablets and up. 111 | */ 112 | 113 | @media (min-width: 48em) { 114 | .sidebar-sticky { 115 | position: absolute; 116 | right: 1rem; 117 | bottom: 1rem; 118 | left: 1rem; 119 | } 120 | } 121 | 122 | 123 | /* Container 124 | * 125 | * Align the contents of the site above the proper threshold with some margin-fu 126 | * with a 25%-wide `.sidebar`. 127 | */ 128 | 129 | .content { 130 | padding-top: 4rem; 131 | padding-bottom: 4rem; 132 | } 133 | 134 | @media (min-width: 48em) { 135 | .content { 136 | max-width: 38rem; 137 | margin-left: 20rem; 138 | margin-right: 2rem; 139 | } 140 | } 141 | 142 | @media (min-width: 64em) { 143 | .content { 144 | margin-left: 22rem; 145 | margin-right: 4rem; 146 | } 147 | } 148 | 149 | 150 | /* 151 | * Reverse layout 152 | * 153 | * Flip the orientation of the page by placing the `.sidebar` on the right. 154 | */ 155 | 156 | @media (min-width: 48em) { 157 | .layout-reverse .sidebar { 158 | left: auto; 159 | right: 0; 160 | } 161 | .layout-reverse .content { 162 | margin-left: 2rem; 163 | margin-right: 20rem; 164 | } 165 | } 166 | 167 | @media (min-width: 64em) { 168 | .layout-reverse .content { 169 | margin-left: 4rem; 170 | margin-right: 22rem; 171 | } 172 | } 173 | 174 | 175 | 176 | /* 177 | * Themes 178 | * 179 | * As of v1.1, Hyde includes optional themes to color the sidebar and links 180 | * within blog posts. To use, add the class of your choosing to the `body`. 181 | */ 182 | 183 | /* Base16 (http://chriskempson.github.io/base16/#default) */ 184 | 185 | /* Red */ 186 | .theme-base-08 .sidebar { 187 | background-color: #ac4142; 188 | } 189 | .theme-base-08 .content a, 190 | .theme-base-08 .related-posts li a:hover { 191 | color: #ac4142; 192 | } 193 | 194 | /* Orange */ 195 | .theme-base-09 .sidebar { 196 | background-color: #d28445; 197 | } 198 | .theme-base-09 .content a, 199 | .theme-base-09 .related-posts li a:hover { 200 | color: #d28445; 201 | } 202 | 203 | /* Yellow */ 204 | .theme-base-0a .sidebar { 205 | background-color: #f4bf75; 206 | } 207 | .theme-base-0a .content a, 208 | .theme-base-0a .related-posts li a:hover { 209 | color: #f4bf75; 210 | } 211 | 212 | /* Green */ 213 | .theme-base-0b .sidebar { 214 | background-color: #90a959; 215 | } 216 | .theme-base-0b .content a, 217 | .theme-base-0b .related-posts li a:hover { 218 | color: #90a959; 219 | } 220 | 221 | /* Cyan */ 222 | .theme-base-0c .sidebar { 223 | background-color: #75b5aa; 224 | } 225 | .theme-base-0c .content a, 226 | .theme-base-0c .related-posts li a:hover { 227 | color: #75b5aa; 228 | } 229 | 230 | /* Blue */ 231 | .theme-base-0d .sidebar { 232 | background-color: #6a9fb5; 233 | } 234 | .theme-base-0d .content a, 235 | .theme-base-0d .related-posts li a:hover { 236 | color: #6a9fb5; 237 | } 238 | 239 | /* Magenta */ 240 | .theme-base-0e .sidebar { 241 | background-color: #aa759f; 242 | } 243 | .theme-base-0e .content a, 244 | .theme-base-0e .related-posts li a:hover { 245 | color: #aa759f; 246 | } 247 | 248 | /* Brown */ 249 | .theme-base-0f .sidebar { 250 | background-color: #8f5536; 251 | } 252 | .theme-base-0f .content a, 253 | .theme-base-0f .related-posts li a:hover { 254 | color: #8f5536; 255 | } 256 | -------------------------------------------------------------------------------- /docs/public/css/poole.css: -------------------------------------------------------------------------------- 1 | /* 2 | * ___ 3 | * /\_ \ 4 | * _____ ___ ___\//\ \ __ 5 | * /\ '__`\ / __`\ / __`\\ \ \ /'__`\ 6 | * \ \ \_\ \/\ \_\ \/\ \_\ \\_\ \_/\ __/ 7 | * \ \ ,__/\ \____/\ \____//\____\ \____\ 8 | * \ \ \/ \/___/ \/___/ \/____/\/____/ 9 | * \ \_\ 10 | * \/_/ 11 | * 12 | * Designed, built, and released under MIT license by @mdo. Learn more at 13 | * https://github.com/poole/poole. 14 | */ 15 | 16 | 17 | /* 18 | * Contents 19 | * 20 | * Body resets 21 | * Custom type 22 | * Messages 23 | * Container 24 | * Masthead 25 | * Posts and pages 26 | * Pagination 27 | * Reverse layout 28 | * Themes 29 | */ 30 | 31 | 32 | /* 33 | * Body resets 34 | * 35 | * Update the foundational and global aspects of the page. 36 | */ 37 | 38 | * { 39 | -webkit-box-sizing: border-box; 40 | -moz-box-sizing: border-box; 41 | box-sizing: border-box; 42 | } 43 | 44 | html, 45 | body { 46 | margin: 0; 47 | padding: 0; 48 | } 49 | 50 | html { 51 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 52 | font-size: 16px; 53 | line-height: 1.5; 54 | } 55 | @media (min-width: 38em) { 56 | html { 57 | font-size: 20px; 58 | } 59 | } 60 | 61 | body { 62 | color: #515151; 63 | background-color: #fff; 64 | -webkit-text-size-adjust: 100%; 65 | -ms-text-size-adjust: 100%; 66 | } 67 | 68 | /* No `:visited` state is required by default (browsers will use `a`) */ 69 | a { 70 | color: #268bd2; 71 | text-decoration: none; 72 | } 73 | a strong { 74 | color: inherit; 75 | } 76 | /* `:focus` is linked to `:hover` for basic accessibility */ 77 | a:hover, 78 | a:focus { 79 | text-decoration: underline; 80 | } 81 | 82 | /* Headings */ 83 | h1, h2, h3, h4, h5, h6 { 84 | margin-bottom: .5rem; 85 | font-weight: bold; 86 | line-height: 1.25; 87 | color: #313131; 88 | text-rendering: optimizeLegibility; 89 | } 90 | h1 { 91 | font-size: 2rem; 92 | } 93 | h2 { 94 | margin-top: 1rem; 95 | font-size: 1.5rem; 96 | } 97 | h3 { 98 | margin-top: 1.5rem; 99 | font-size: 1.25rem; 100 | } 101 | h4, h5, h6 { 102 | margin-top: 1rem; 103 | font-size: 1rem; 104 | } 105 | 106 | /* Body text */ 107 | p { 108 | margin-top: 0; 109 | margin-bottom: 1rem; 110 | } 111 | 112 | strong { 113 | color: #303030; 114 | } 115 | 116 | 117 | /* Lists */ 118 | ul, ol, dl { 119 | margin-top: 0; 120 | margin-bottom: 1rem; 121 | } 122 | 123 | dt { 124 | font-weight: bold; 125 | } 126 | dd { 127 | margin-bottom: .5rem; 128 | } 129 | 130 | /* Misc */ 131 | hr { 132 | position: relative; 133 | margin: 1.5rem 0; 134 | border: 17; 135 | border-top: 2px solid #eee; 136 | border-bottom: 1px solid #fff; 137 | border-style: dashed; 138 | } 139 | 140 | abbr { 141 | font-size: 85%; 142 | font-weight: bold; 143 | color: #555; 144 | text-transform: uppercase; 145 | } 146 | abbr[title] { 147 | cursor: help; 148 | border-bottom: 1px dotted #e5e5e5; 149 | } 150 | 151 | /* Code */ 152 | code, 153 | pre { 154 | font-family: Menlo, Monaco, "Courier New", monospace; 155 | } 156 | code { 157 | padding: .25em .5em; 158 | font-size: 85%; 159 | color: #fff; 160 | background-color: #000; 161 | border-radius: 3px; 162 | } 163 | pre { 164 | display: block; 165 | margin-top: 0; 166 | margin-bottom: 1rem; 167 | padding: 1rem; 168 | font-size: .8rem; 169 | line-height: 1.4; 170 | white-space: pre; 171 | white-space: pre-wrap; 172 | word-break: break-all; 173 | word-wrap: break-word; 174 | background-color: #000; 175 | } 176 | pre code { 177 | padding: 0; 178 | font-size: 100%; 179 | color: fff; 180 | background-color: transparent; 181 | } 182 | 183 | /* Pygments via Jekyll */ 184 | .highlight { 185 | margin-bottom: 1rem; 186 | border-radius: 4px; 187 | } 188 | .highlight pre { 189 | margin-bottom: 0; 190 | } 191 | 192 | /* Gist via GitHub Pages */ 193 | .gist .gist-file { 194 | font-family: Menlo, Monaco, "Courier New", monospace !important; 195 | } 196 | .gist .markdown-body { 197 | padding: 15px; 198 | } 199 | .gist pre { 200 | padding: 0; 201 | background-color: transparent; 202 | } 203 | .gist .gist-file .gist-data { 204 | font-size: .8rem !important; 205 | line-height: 1.4; 206 | } 207 | .gist code { 208 | padding: 0; 209 | color: inherit; 210 | background-color: transparent; 211 | border-radius: 0; 212 | } 213 | 214 | /* Quotes */ 215 | blockquote { 216 | padding: .5rem 1rem; 217 | margin: .8rem 0; 218 | color: #7a7a7a; 219 | border-left: .25rem solid #e5e5e5; 220 | } 221 | blockquote p:last-child { 222 | margin-bottom: 0; 223 | } 224 | @media (min-width: 30em) { 225 | blockquote { 226 | padding-right: 5rem; 227 | padding-left: 1.25rem; 228 | } 229 | } 230 | 231 | img { 232 | display: block; 233 | max-width: 100%; 234 | margin: 0 0 1rem; 235 | border-radius: 5px; 236 | } 237 | 238 | /* Tables */ 239 | table { 240 | margin-bottom: 1rem; 241 | width: 100%; 242 | border: 1px solid #e5e5e5; 243 | border-collapse: collapse; 244 | } 245 | td, 246 | th { 247 | padding: .25rem .5rem; 248 | border: 1px solid #e5e5e5; 249 | } 250 | tbody tr:nth-child(odd) td, 251 | tbody tr:nth-child(odd) th { 252 | background-color: #f9f9f9; 253 | } 254 | 255 | 256 | /* 257 | * Custom type 258 | * 259 | * Extend paragraphs with `.lead` for larger introductory text. 260 | */ 261 | 262 | .lead { 263 | font-size: 1.25rem; 264 | font-weight: 300; 265 | } 266 | 267 | 268 | /* 269 | * Messages 270 | * 271 | * Show alert messages to users. You may add it to single elements like a `

`, 272 | * or to a parent if there are multiple elements to show. 273 | */ 274 | 275 | .message { 276 | margin-bottom: 1rem; 277 | padding: 1rem; 278 | color: #717171; 279 | background-color: #f9f9f9; 280 | } 281 | 282 | 283 | /* 284 | * Container 285 | * 286 | * Center the page content. 287 | */ 288 | 289 | .container { 290 | max-width: 38rem; 291 | padding-left: 1rem; 292 | padding-right: 1rem; 293 | margin-left: auto; 294 | margin-right: auto; 295 | } 296 | 297 | 298 | /* 299 | * Masthead 300 | * 301 | * Super small header above the content for site name and short description. 302 | */ 303 | 304 | .masthead { 305 | padding-top: 1rem; 306 | padding-bottom: 1rem; 307 | margin-bottom: 3rem; 308 | } 309 | .masthead-title { 310 | margin-top: 0; 311 | margin-bottom: 0; 312 | color: #505050; 313 | } 314 | .masthead-title a { 315 | color: #505050; 316 | } 317 | .masthead-title small { 318 | font-size: 75%; 319 | font-weight: 400; 320 | color: #c0c0c0; 321 | letter-spacing: 0; 322 | } 323 | 324 | 325 | /* 326 | * Posts and pages 327 | * 328 | * Each post is wrapped in `.post` and is used on default and post layouts. Each 329 | * page is wrapped in `.page` and is only used on the page layout. 330 | */ 331 | 332 | .page, 333 | .post { 334 | margin-bottom: 4em; 335 | } 336 | 337 | /* Blog post or page title */ 338 | .page-title, 339 | .post-title, 340 | .post-title a { 341 | color: #303030; 342 | } 343 | .page-title, 344 | .post-title { 345 | margin-top: 0; 346 | } 347 | 348 | /* Meta data line below post title */ 349 | .post-date { 350 | display: block; 351 | margin-top: -.5rem; 352 | margin-bottom: 1rem; 353 | color: #9a9a9a; 354 | } 355 | 356 | /* Related posts */ 357 | .related { 358 | padding-top: 2rem; 359 | padding-bottom: 2rem; 360 | border-top: 1px solid #eee; 361 | } 362 | .related-posts { 363 | padding-left: 0; 364 | list-style: none; 365 | } 366 | .related-posts h3 { 367 | margin-top: 0; 368 | } 369 | .related-posts li small { 370 | font-size: 75%; 371 | color: #999; 372 | } 373 | .related-posts li a:hover { 374 | color: #268bd2; 375 | text-decoration: none; 376 | } 377 | .related-posts li a:hover small { 378 | color: inherit; 379 | } 380 | 381 | 382 | /* 383 | * Pagination 384 | * 385 | * Super lightweight (HTML-wise) blog pagination. `span`s are provide for when 386 | * there are no more previous or next posts to show. 387 | */ 388 | 389 | .pagination { 390 | overflow: hidden; /* clearfix */ 391 | margin-left: -1rem; 392 | margin-right: -1rem; 393 | font-family: "PT Sans", Helvetica, Arial, sans-serif; 394 | color: #ccc; 395 | text-align: center; 396 | } 397 | 398 | /* Pagination items can be `span`s or `a`s */ 399 | .pagination-item { 400 | display: block; 401 | padding: 1rem; 402 | border: 1px solid #eee; 403 | } 404 | .pagination-item:first-child { 405 | margin-bottom: -1px; 406 | } 407 | 408 | /* Only provide a hover state for linked pagination items */ 409 | a.pagination-item:hover { 410 | background-color: #f5f5f5; 411 | } 412 | 413 | @media (min-width: 30em) { 414 | .pagination { 415 | margin: 3rem 0; 416 | } 417 | .pagination-item { 418 | float: left; 419 | width: 50%; 420 | } 421 | .pagination-item:first-child { 422 | margin-bottom: 0; 423 | border-top-left-radius: 4px; 424 | border-bottom-left-radius: 4px; 425 | } 426 | .pagination-item:last-child { 427 | margin-left: -1px; 428 | border-top-right-radius: 4px; 429 | border-bottom-right-radius: 4px; 430 | } 431 | } 432 | -------------------------------------------------------------------------------- /docs/public/css/style.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Demo color boxes. 3 | */ 4 | code.color-box-black { 5 | color: black; 6 | background-color: white; 7 | 8 | padding: 2px; 9 | border: 2px solid black; 10 | } 11 | 12 | code.color-box-red { color: #cc0000; } 13 | code.color-box-green { color: #4e9a06; } 14 | code.color-box-yellow { color: #c4a000; } 15 | code.color-box-blue { color: #3465a4; } 16 | code.color-box-magenta { color: #75507b; } 17 | code.color-box-cyan { color: #0b939b; } 18 | code.color-box-gray { color: #555753; } 19 | code.color-box-white { color: #EEEEEC; } 20 | code.color-box-darkgray { color: #555753; } 21 | code.color-box-lightgreen { color: #8ae234; } 22 | code.color-box-lightyellow { color: #fce94f; } 23 | code.color-box-lightblue { color: #729fcf; } 24 | code.color-box-lightmagenta { color: #ad7fa8; } 25 | code.color-box-lightcyan { color: #00f5e9; } 26 | 27 | code.bg-color-box-white { 28 | color: black; 29 | background-color: white; 30 | 31 | padding: 2px; 32 | border: 2px solid black; 33 | } 34 | 35 | code.bg-color-box-red { background-color: #cc0000; } 36 | code.bg-color-box-green { background-color: #4e9a06; } 37 | code.bg-color-box-yellow { background-color: #c4a000; } 38 | code.bg-color-box-blue { background-color: #3465a4; } 39 | code.bg-color-box-magenta { background-color: #75507b; } 40 | code.bg-color-box-cyan { background-color: #0b939b; } 41 | code.bg-color-box-gray { background-color: #555753; } 42 | code.bg-color-box-white { background-color: #EEEEEC; } 43 | code.bg-color-box-darkgray { background-color: #555753; } 44 | code.bg-color-box-lightgreen { background-color: #8ae234; } 45 | code.bg-color-box-lightyellow { background-color: #fce94f; } 46 | code.bg-color-box-lightblue { background-color: #729fcf; } 47 | code.bg-color-box-lightmagenta { background-color: #ad7fa8; } 48 | code.bg-color-box-lightcyan { background-color: #00f5e9; } 49 | -------------------------------------------------------------------------------- /docs/public/css/syntax-new.css: -------------------------------------------------------------------------------- 1 | .highlight pre { background-color: #272822; } 2 | .highlight .hll { background-color: #272822; } 3 | .highlight .c { color: #75715e } /* Comment */ 4 | .highlight .err { color: #960050; background-color: #1e0010 } /* Error */ 5 | .highlight .k { color: #66d9ef } /* Keyword */ 6 | .highlight .l { color: #ae81ff } /* Literal */ 7 | .highlight .n { color: #f8f8f2 } /* Name */ 8 | .highlight .o { color: #f92672 } /* Operator */ 9 | .highlight .p { color: #f8f8f2 } /* Punctuation */ 10 | .highlight .cm { color: #75715e } /* Comment.Multiline */ 11 | .highlight .cp { color: #75715e } /* Comment.Preproc */ 12 | .highlight .c1 { color: #75715e } /* Comment.Single */ 13 | .highlight .cs { color: #75715e } /* Comment.Special */ 14 | .highlight .ge { font-style: italic } /* Generic.Emph */ 15 | .highlight .gs { font-weight: bold } /* Generic.Strong */ 16 | .highlight .kc { color: #66d9ef } /* Keyword.Constant */ 17 | .highlight .kd { color: #66d9ef } /* Keyword.Declaration */ 18 | .highlight .kn { color: #f92672 } /* Keyword.Namespace */ 19 | .highlight .kp { color: #66d9ef } /* Keyword.Pseudo */ 20 | .highlight .kr { color: #66d9ef } /* Keyword.Reserved */ 21 | .highlight .kt { color: #66d9ef } /* Keyword.Type */ 22 | .highlight .ld { color: #e6db74 } /* Literal.Date */ 23 | .highlight .m { color: #ae81ff } /* Literal.Number */ 24 | .highlight .s { color: #e6db74 } /* Literal.String */ 25 | .highlight .na { color: #a6e22e } /* Name.Attribute */ 26 | .highlight .nb { color: #f8f8f2 } /* Name.Builtin */ 27 | .highlight .nc { color: #a6e22e } /* Name.Class */ 28 | .highlight .no { color: #66d9ef } /* Name.Constant */ 29 | .highlight .nd { color: #a6e22e } /* Name.Decorator */ 30 | .highlight .ni { color: #f8f8f2 } /* Name.Entity */ 31 | .highlight .ne { color: #a6e22e } /* Name.Exception */ 32 | .highlight .nf { color: #a6e22e } /* Name.Function */ 33 | .highlight .nl { color: #f8f8f2 } /* Name.Label */ 34 | .highlight .nn { color: #f8f8f2 } /* Name.Namespace */ 35 | .highlight .nx { color: #a6e22e } /* Name.Other */ 36 | .highlight .py { color: #f8f8f2 } /* Name.Property */ 37 | .highlight .nt { color: #f92672 } /* Name.Tag */ 38 | .highlight .nv { color: #f8f8f2 } /* Name.Variable */ 39 | .highlight .ow { color: #f92672 } /* Operator.Word */ 40 | .highlight .w { color: #f8f8f2 } /* Text.Whitespace */ 41 | .highlight .mf { color: #ae81ff } /* Literal.Number.Float */ 42 | .highlight .mh { color: #ae81ff } /* Literal.Number.Hex */ 43 | .highlight .mi { color: #ae81ff } /* Literal.Number.Integer */ 44 | .highlight .mo { color: #ae81ff } /* Literal.Number.Oct */ 45 | .highlight .sb { color: #e6db74 } /* Literal.String.Backtick */ 46 | .highlight .sc { color: #e6db74 } /* Literal.String.Char */ 47 | .highlight .sd { color: #e6db74 } /* Literal.String.Doc */ 48 | .highlight .s2 { color: #e6db74 } /* Literal.String.Double */ 49 | .highlight .se { color: #ae81ff } /* Literal.String.Escape */ 50 | .highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */ 51 | .highlight .si { color: #e6db74 } /* Literal.String.Interpol */ 52 | .highlight .sx { color: #e6db74 } /* Literal.String.Other */ 53 | .highlight .sr { color: #e6db74 } /* Literal.String.Regex */ 54 | .highlight .s1 { color: #e6db74 } /* Literal.String.Single */ 55 | .highlight .ss { color: #e6db74 } /* Literal.String.Symbol */ 56 | .highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ 57 | .highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */ 58 | .highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ 59 | .highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ 60 | .highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ 61 | 62 | .highlight .gh { } /* Generic Heading & Diff Header */ 63 | .highlight .gu { color: #75715e; } /* Generic.Subheading & Diff Unified/Comment? */ 64 | .highlight .gd { color: #f92672; } /* Generic.Deleted & Diff Deleted */ 65 | .highlight .gi { color: #a6e22e; } /* Generic.Inserted & Diff Inserted */ 66 | -------------------------------------------------------------------------------- /docs/public/css/syntax.css: -------------------------------------------------------------------------------- 1 | .highlight { background: #ffffff; } 2 | .highlight .c { color: #999988; font-style: italic } /* Comment */ 3 | .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ 4 | .highlight .k { font-weight: bold } /* Keyword */ 5 | .highlight .o { font-weight: bold } /* Operator */ 6 | .highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ 7 | .highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ 8 | .highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ 9 | .highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ 10 | .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ 11 | .highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ 12 | .highlight .ge { font-style: italic } /* Generic.Emph */ 13 | .highlight .gr { color: #aa0000 } /* Generic.Error */ 14 | .highlight .gh { color: #999999 } /* Generic.Heading */ 15 | .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ 16 | .highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ 17 | .highlight .go { color: #888888 } /* Generic.Output */ 18 | .highlight .gp { color: #555555 } /* Generic.Prompt */ 19 | .highlight .gs { font-weight: bold } /* Generic.Strong */ 20 | .highlight .gu { color: #aaaaaa } /* Generic.Subheading */ 21 | .highlight .gt { color: #aa0000 } /* Generic.Traceback */ 22 | .highlight .kc { font-weight: bold } /* Keyword.Constant */ 23 | .highlight .kd { font-weight: bold } /* Keyword.Declaration */ 24 | .highlight .kp { font-weight: bold } /* Keyword.Pseudo */ 25 | .highlight .kr { font-weight: bold } /* Keyword.Reserved */ 26 | .highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ 27 | .highlight .m { color: #009999 } /* Literal.Number */ 28 | .highlight .s { color: #d14 } /* Literal.String */ 29 | .highlight .na { color: #008080 } /* Name.Attribute */ 30 | .highlight .nb { color: #FF66FF } /* Name.Builtin */ 31 | .highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ 32 | .highlight .no { color: #008080 } /* Name.Constant */ 33 | .highlight .ni { color: #800080 } /* Name.Entity */ 34 | .highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ 35 | .highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ 36 | .highlight .nn { color: #555555 } /* Name.Namespace */ 37 | .highlight .nt { color: #000080 } /* Name.Tag */ 38 | .highlight .nv { color: #999999 } /* Name.Variable */ 39 | .highlight .ow { font-weight: bold } /* Operator.Word */ 40 | .highlight .w { color: #bbbbbb } /* Text.Whitespace */ 41 | .highlight .mf { color: #009999 } /* Literal.Number.Float */ 42 | .highlight .mh { color: #009999 } /* Literal.Number.Hex */ 43 | .highlight .mi { color: #009999 } /* Literal.Number.Integer */ 44 | .highlight .mo { color: #009999 } /* Literal.Number.Oct */ 45 | .highlight .sb { color: #d14 } /* Literal.String.Backtick */ 46 | .highlight .sc { color: #d14 } /* Literal.String.Char */ 47 | .highlight .sd { color: #d14 } /* Literal.String.Doc */ 48 | .highlight .s2 { color: #ffff33 } /* Literal.String.Double */ 49 | .highlight .se { color: #d14 } /* Literal.String.Escape */ 50 | .highlight .sh { color: #d14 } /* Literal.String.Heredoc */ 51 | .highlight .si { color: #d14 } /* Literal.String.Interpol */ 52 | .highlight .sx { color: #d14 } /* Literal.String.Other */ 53 | .highlight .sr { color: #66ffff } /* Literal.String.Regex */ 54 | .highlight .s1 { color: #DDDDDD;} /* Literal.String.Single */ 55 | .highlight .ss { color: #990073 } /* Literal.String.Symbol */ 56 | .highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ 57 | .highlight .vc { color: #008080 } /* Name.Variable.Class */ 58 | .highlight .vg { color: #008080 } /* Name.Variable.Global */ 59 | .highlight .vi { color: #008080 } /* Name.Variable.Instance */ 60 | .highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ 61 | .post > .highlight .lineno { color: #ccc; display:inline-block; padding: 0 5px; border-right:1px solid #ccc; } 62 | .post > .highlight pre code { display: block; white-space: pre; overflow-x: auto; word-wrap: normal; } 63 | -------------------------------------------------------------------------------- /docs/public/css/syntax.css.old: -------------------------------------------------------------------------------- 1 | .highlight .hll { background-color: #ffc; } 2 | .highlight .c { color: #999; } /* Comment */ 3 | .highlight .err { color: #a00; background-color: #faa } /* Error */ 4 | .highlight .k { color: #069; } /* Keyword */ 5 | .highlight .o { color: #555 } /* Operator */ 6 | .highlight .cm { color: #09f; font-style: italic } /* Comment.Multiline */ 7 | .highlight .cp { color: #099 } /* Comment.Preproc */ 8 | .highlight .c1 { color: #999; } /* Comment.Single */ 9 | .highlight .cs { color: #999; } /* Comment.Special */ 10 | .highlight .gd { background-color: #fcc; border: 1px solid #c00 } /* Generic.Deleted */ 11 | .highlight .ge { font-style: italic } /* Generic.Emph */ 12 | .highlight .gr { color: #f00 } /* Generic.Error */ 13 | .highlight .gh { color: #030; } /* Generic.Heading */ 14 | .highlight .gi { background-color: #cfc; border: 1px solid #0c0 } /* Generic.Inserted */ 15 | .highlight .go { color: #aaa } /* Generic.Output */ 16 | .highlight .gp { color: #009; } /* Generic.Prompt */ 17 | .highlight .gs { } /* Generic.Strong */ 18 | .highlight .gu { color: #030; } /* Generic.Subheading */ 19 | .highlight .gt { color: #9c6 } /* Generic.Traceback */ 20 | .highlight .kc { color: #069; } /* Keyword.Constant */ 21 | .highlight .kd { color: #069; } /* Keyword.Declaration */ 22 | .highlight .kn { color: #069; } /* Keyword.Namespace */ 23 | .highlight .kp { color: #069 } /* Keyword.Pseudo */ 24 | .highlight .kr { color: #069; } /* Keyword.Reserved */ 25 | .highlight .kt { color: #078; } /* Keyword.Type */ 26 | .highlight .m { color: #f60 } /* Literal.Number */ 27 | .highlight .s { color: #d44950 } /* Literal.String */ 28 | .highlight .na { color: #4f9fcf } /* Name.Attribute */ 29 | .highlight .nb { color: #366 } /* Name.Builtin */ 30 | .highlight .nc { color: #0a8; } /* Name.Class */ 31 | .highlight .no { color: #360 } /* Name.Constant */ 32 | .highlight .nd { color: #99f } /* Name.Decorator */ 33 | .highlight .ni { color: #999; } /* Name.Entity */ 34 | .highlight .ne { color: #c00; } /* Name.Exception */ 35 | .highlight .nf { color: #c0f } /* Name.Function */ 36 | .highlight .nl { color: #99f } /* Name.Label */ 37 | .highlight .nn { color: #0cf; } /* Name.Namespace */ 38 | .highlight .nt { color: #2f6f9f; } /* Name.Tag */ 39 | .highlight .nv { color: #033 } /* Name.Variable */ 40 | .highlight .ow { color: #000; } /* Operator.Word */ 41 | .highlight .w { color: #bbb } /* Text.Whitespace */ 42 | .highlight .mf { color: #f60 } /* Literal.Number.Float */ 43 | .highlight .mh { color: #f60 } /* Literal.Number.Hex */ 44 | .highlight .mi { color: #f60 } /* Literal.Number.Integer */ 45 | .highlight .mo { color: #f60 } /* Literal.Number.Oct */ 46 | .highlight .sb { color: #c30 } /* Literal.String.Backtick */ 47 | .highlight .sc { color: #c30 } /* Literal.String.Char */ 48 | .highlight .sd { color: #c30; font-style: italic } /* Literal.String.Doc */ 49 | .highlight .s2 { color: #c30 } /* Literal.String.Double */ 50 | .highlight .se { color: #c30; } /* Literal.String.Escape */ 51 | .highlight .sh { color: #c30 } /* Literal.String.Heredoc */ 52 | .highlight .si { color: #a00 } /* Literal.String.Interpol */ 53 | .highlight .sx { color: #c30 } /* Literal.String.Other */ 54 | .highlight .sr { color: #3aa } /* Literal.String.Regex */ 55 | .highlight .s1 { color: #c30 } /* Literal.String.Single */ 56 | .highlight .ss { color: #fc3 } /* Literal.String.Symbol */ 57 | .highlight .bp { color: #366 } /* Name.Builtin.Pseudo */ 58 | .highlight .vc { color: #033 } /* Name.Variable.Class */ 59 | .highlight .vg { color: #033 } /* Name.Variable.Global */ 60 | .highlight .vi { color: #033 } /* Name.Variable.Instance */ 61 | .highlight .il { color: #f60 } /* Literal.Number.Integer.Long */ 62 | 63 | .css .o, 64 | .css .o + .nt, 65 | .css .nt + .nt { color: #999; } 66 | -------------------------------------------------------------------------------- /docs/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/favicon.ico -------------------------------------------------------------------------------- /docs/public/images/_site/attributes-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/attributes-demo.png -------------------------------------------------------------------------------- /docs/public/images/_site/attributes-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/attributes-slide.png -------------------------------------------------------------------------------- /docs/public/images/_site/background-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/background-demo.png -------------------------------------------------------------------------------- /docs/public/images/_site/background-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/background-slide.png -------------------------------------------------------------------------------- /docs/public/images/_site/color-bar-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/color-bar-demo.png -------------------------------------------------------------------------------- /docs/public/images/_site/confirm-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/confirm-demo.png -------------------------------------------------------------------------------- /docs/public/images/_site/cowsay-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/cowsay-slide.png -------------------------------------------------------------------------------- /docs/public/images/_site/cowsay-source-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/cowsay-source-slide.png -------------------------------------------------------------------------------- /docs/public/images/_site/demo-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/demo-home.png -------------------------------------------------------------------------------- /docs/public/images/_site/demo-on-runnable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/demo-on-runnable.png -------------------------------------------------------------------------------- /docs/public/images/_site/elements-hr-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/elements-hr-demo.png -------------------------------------------------------------------------------- /docs/public/images/_site/elements-other-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/elements-other-demo.png -------------------------------------------------------------------------------- /docs/public/images/_site/emojis-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/emojis-demo.png -------------------------------------------------------------------------------- /docs/public/images/_site/emojis-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/emojis-slide.png -------------------------------------------------------------------------------- /docs/public/images/_site/foreground-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/foreground-demo.png -------------------------------------------------------------------------------- /docs/public/images/_site/foreground-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/foreground-slide.png -------------------------------------------------------------------------------- /docs/public/images/_site/icons-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/icons-demo.png -------------------------------------------------------------------------------- /docs/public/images/_site/icons-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/icons-slide.png -------------------------------------------------------------------------------- /docs/public/images/_site/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/logo.png -------------------------------------------------------------------------------- /docs/public/images/_site/terminal-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/_site/terminal-home.png -------------------------------------------------------------------------------- /docs/public/images/attributes-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/attributes-demo.png -------------------------------------------------------------------------------- /docs/public/images/attributes-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/attributes-slide.png -------------------------------------------------------------------------------- /docs/public/images/background-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/background-demo.png -------------------------------------------------------------------------------- /docs/public/images/background-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/background-slide.png -------------------------------------------------------------------------------- /docs/public/images/color-bar-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/color-bar-demo.png -------------------------------------------------------------------------------- /docs/public/images/confirm-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/confirm-demo.png -------------------------------------------------------------------------------- /docs/public/images/cowsay-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/cowsay-slide.png -------------------------------------------------------------------------------- /docs/public/images/cowsay-source-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/cowsay-source-slide.png -------------------------------------------------------------------------------- /docs/public/images/demo-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/demo-home.png -------------------------------------------------------------------------------- /docs/public/images/demo-on-runnable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/demo-on-runnable.png -------------------------------------------------------------------------------- /docs/public/images/elements-hr-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/elements-hr-demo.png -------------------------------------------------------------------------------- /docs/public/images/elements-other-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/elements-other-demo.png -------------------------------------------------------------------------------- /docs/public/images/emojis-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/emojis-demo.png -------------------------------------------------------------------------------- /docs/public/images/emojis-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/emojis-slide.png -------------------------------------------------------------------------------- /docs/public/images/foreground-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/foreground-demo.png -------------------------------------------------------------------------------- /docs/public/images/foreground-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/foreground-slide.png -------------------------------------------------------------------------------- /docs/public/images/icons-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/icons-demo.png -------------------------------------------------------------------------------- /docs/public/images/icons-slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/icons-slide.png -------------------------------------------------------------------------------- /docs/public/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/logo.png -------------------------------------------------------------------------------- /docs/public/images/terminal-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odb/shml/e0a6b80fc5ac1444d1cbaeeb05a5d704c85a22d9/docs/public/images/terminal-home.png -------------------------------------------------------------------------------- /docs/slideshow.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | SHML Slideshow 8 | 9 | 13 | 14 | 15 |

74 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /examples/confirm_dialog.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source shml.sh 4 | on_human() { 5 | dialog "What is your name?" "on_dialog" 6 | } 7 | 8 | on_dialog() { 9 | echo "$(color green "Hello, $1! $(emoji beer)")" 10 | } 11 | 12 | on_not_human() { 13 | confirm "$(color red "Do you come in peace?")" "on_friend" "on_enemy" 14 | } 15 | 16 | on_friend() { 17 | echo "$(emoji '=)') $(emoji beer)" 18 | } 19 | 20 | on_enemy() { 21 | echo "$(emoji rage) $(emoji poop)" 22 | } 23 | 24 | confirm "$(color blue "Are you human?")" "on_human" "on_not_human" 25 | exit 0 26 | -------------------------------------------------------------------------------- /examples/progress_bar.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | function preform() { 4 | local steps=$1 5 | test -z $steps && steps=10 6 | 7 | for s in $(seq 1 $steps); do 8 | # step 9 | # do something 10 | sleep 0.1 11 | echo $s 12 | done 13 | } 14 | 15 | source shml.sh 16 | 17 | echo -ne "$(color blue)" 18 | preform 5 | progress "Example 1:" 5 19 | echo -ne "$(color end)" 20 | 21 | preform 10 | progress "Example 2:" 10 "$(color red "=")" 22 | preform 25 | progress "Example 3:" 25 "$(color green "$(icon smile)")" 23 | 24 | # Bause there are two characters in the bar character, it will double the length. 25 | # As such, we're going to override the default width like so... 26 | SHML_PROGRESS_WIDTH=30 # 1/2 default 27 | preform 100 | progress "$(a bold "Example 4:")" 100 "$(emoji thinking) " 28 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "shml", 3 | "version": "1.1.0", 4 | "description": "SHML is a shell framework for faster and easier script development.", 5 | "bin": { 6 | "shml": "shml.sh", 7 | "shml.sh": "shml.sh" 8 | }, 9 | "directories": { 10 | "doc": "docs", 11 | "test": "test" 12 | }, 13 | "scripts": { 14 | "test": "make test" 15 | }, 16 | "repository": { 17 | "type": "git", 18 | "url": "git+https://github.com/odb/shml.git" 19 | }, 20 | "keywords": [ 21 | "sh", 22 | "color", 23 | "bash", 24 | "zsh", 25 | "linux", 26 | "darwin" 27 | ], 28 | "license": "MIT", 29 | "bugs": { 30 | "url": "https://github.com/odb/shml/issues" 31 | }, 32 | "homepage": "http://shml.xyz/" 33 | } 34 | -------------------------------------------------------------------------------- /test/attributes_tests.sh: -------------------------------------------------------------------------------- 1 | source ./shml.sh 2 | 3 | function run_tests { 4 | # Attribute 5 | ## 6 | assert_equal "$(attribute bold)foo$(attribute end)" \ 7 | "$(echo -e '\033[1mfoo\033[0m')" \ 8 | 'bold text and end' 9 | 10 | assert_equal "$(attribute dim)foo$(attribute)" \ 11 | "$(echo -e '\033[2mfoo\033[0m')" \ 12 | 'dim text and end' 13 | 14 | assert_equal "$(attribute underline)foo$(attribute)" \ 15 | "$(echo -e '\033[4mfoo\033[0m')" \ 16 | 'underlined text and end' 17 | 18 | assert_equal "$(attribute blink)foo$(attribute)" \ 19 | "$(echo -e '\033[5mfoo\033[0m')" \ 20 | 'blinking text and end' 21 | 22 | assert_equal "$(attribute invert)foo$(attribute)" \ 23 | "$(echo -e '\033[7mfoo\033[0m')" \ 24 | 'inverted text and end' 25 | 26 | assert_equal "$(attribute hidden)foo$(attribute)" \ 27 | "$(echo -e '\033[8mfoo\033[0m')" \ 28 | 'hidden text and end' 29 | 30 | assert_equal "$(attribute bold)foo$(attribute end)" \ 31 | "$(echo -e '\033[1mfoo\033[0m')" \ 32 | 'modified text and end' 33 | 34 | assert_equal "$(attribute bold)foo$(attribute off)" \ 35 | "$(echo -e '\033[1mfoo\033[0m')" \ 36 | 'modified text and end' 37 | 38 | assert_equal "$(attribute bold)foo$(attribute reset)" \ 39 | "$(echo -e '\033[1mfoo\033[0m')" \ 40 | 'modified text and end' 41 | 42 | # Attribute - a alias 43 | ## 44 | assert_equal "$(a bold)foo$(a)" \ 45 | "$(echo -e '\033[1mfoo\033[0m')" \ 46 | 'bold text and end' 47 | } 48 | -------------------------------------------------------------------------------- /test/background_color_tests.sh: -------------------------------------------------------------------------------- 1 | source ./shml.sh 2 | 3 | function run_tests { 4 | # Background 5 | ## 6 | assert_equal "$(bgcolor black 'foo')" \ 7 | "$(echo -e '\033[40mfoo\033[49m')" \ 8 | "black background color" 9 | 10 | assert_equal "$(bgcolor red 'foo')" \ 11 | "$(echo -e '\033[41mfoo\033[49m')" \ 12 | "red background color" 13 | 14 | assert_equal "$(bgcolor green 'foo')" \ 15 | "$(echo -e '\033[42mfoo\033[49m')" \ 16 | "green background color" 17 | 18 | assert_equal "$(bgcolor yellow 'foo')" \ 19 | "$(echo -e '\033[43mfoo\033[49m')" \ 20 | "yellow background color" 21 | 22 | assert_equal "$(bgcolor blue 'foo')" \ 23 | "$(echo -e '\033[44mfoo\033[49m')" \ 24 | "blue background color" 25 | 26 | assert_equal "$(bgcolor magenta 'foo')" \ 27 | "$(echo -e '\033[45mfoo\033[49m')" \ 28 | "magenta background color" 29 | 30 | assert_equal "$(bgcolor cyan 'foo')" \ 31 | "$(echo -e '\033[46mfoo\033[49m')" \ 32 | "cyan background color" 33 | 34 | assert_equal "$(bgcolor gray 'foo')" \ 35 | "$(echo -e '\033[47mfoo\033[49m')" \ 36 | "gray background color" 37 | 38 | assert_equal "$(bgcolor gray 'foo')" \ 39 | "$(echo -e '\033[47mfoo\033[49m')" \ 40 | "gray background color" 41 | 42 | assert_equal "$(bgcolor darkgray 'foo')" \ 43 | "$(echo -e '\033[100mfoo\033[49m')" \ 44 | "darkgray background color" 45 | 46 | assert_equal "$(bgcolor lightred 'foo')" \ 47 | "$(echo -e '\033[101mfoo\033[49m')" \ 48 | "lightred background color" 49 | 50 | assert_equal "$(bgcolor lightgreen 'foo')" \ 51 | "$(echo -e '\033[102mfoo\033[49m')" \ 52 | "lightgreen background color" 53 | 54 | assert_equal "$(bgcolor lightyellow 'foo')" \ 55 | "$(echo -e '\033[103mfoo\033[49m')" \ 56 | "lightyellow background color" 57 | 58 | assert_equal "$(bgcolor lightblue 'foo')" \ 59 | "$(echo -e '\033[104mfoo\033[49m')" \ 60 | "lightblue background color" 61 | 62 | assert_equal "$(bgcolor lightmagenta 'foo')" \ 63 | "$(echo -e '\033[105mfoo\033[49m')" \ 64 | "lightmagenta background color" 65 | 66 | assert_equal "$(bgcolor lightcyan 'foo')" \ 67 | "$(echo -e '\033[106mfoo\033[49m')" \ 68 | "lightcyan background color" 69 | 70 | assert_equal "$(bgcolor white 'foo')" \ 71 | "$(echo -e '\033[107mfoo\033[49m')" \ 72 | "white background color" 73 | 74 | # Terminators 75 | assert_equal "$(bgcolor white)foo$(bgcolor)" \ 76 | "$(echo -e '\033[107mfoo\033[49m')" \ 77 | 'color background and end color' 78 | 79 | assert_equal "$(bgcolor red)foo$(bgcolor end)" \ 80 | "$(echo -e '\033[41mfoo\033[49m')" \ 81 | 'color background and end color' 82 | 83 | assert_equal "$(bgcolor red)foo$(bgcolor off)" \ 84 | "$(echo -e '\033[41mfoo\033[49m')" \ 85 | 'color background and end color' 86 | 87 | assert_equal "$(bgcolor red)foo$(bgcolor reset)" \ 88 | "$(echo -e '\033[41mfoo\033[49m')" \ 89 | 'color background and end color' 90 | 91 | # Aliases 92 | assert_equal "$(bg white 'foo')" \ 93 | "$(echo -e '\033[107mfoo\033[49m')" \ 94 | "'bg' alias works" 95 | 96 | assert_equal "$(bgc white 'foo')" \ 97 | "$(echo -e '\033[107mfoo\033[49m')" \ 98 | "'bgc' alias works" 99 | 100 | assert_equal "$(background white 'foo')" \ 101 | "$(echo -e '\033[107mfoo\033[49m')" \ 102 | "'background' alias works" 103 | 104 | # Mixed aliases 105 | assert_equal "$(bgcolor white)foo$(background)" \ 106 | "$(echo -e '\033[107mfoo\033[49m')" \ 107 | 'mixed aliases work' 108 | 109 | # Misc 110 | assert_equal "$(background 'white' 'foo bar')" \ 111 | "$(echo -e '\033[107mfoo bar\033[49m')" \ 112 | "single quotes and spaces work" 113 | 114 | assert_equal "$(background "white" "foo bar")" \ 115 | "$(echo -e '\033[107mfoo bar\033[49m')" \ 116 | "double quotes and spaces work" 117 | } 118 | -------------------------------------------------------------------------------- /test/confirm_tests.sh: -------------------------------------------------------------------------------- 1 | source ./shml.sh 2 | 3 | test_callback() { 4 | echo -ne '' # noop 5 | } 6 | function run_tests { 7 | # Confirm 8 | ## 9 | for __good in $(echo $__default_confirm_success_input); do 10 | echo "$__good" | confirm "question" > /dev/null 11 | result=$? 12 | assert_equal "0" "$result" "$__good should confirm" 13 | done 14 | 15 | for __bad in $(echo "bad no N No"); do 16 | echo "$__bad" | confirm "question" > /dev/null 17 | result=$? 18 | assert_equal "1" "$result" "$__bad should not confirm" 19 | done 20 | 21 | # test success callback 22 | output=$(echo "y" | confirm "question:" "__on_success__") 23 | assert_equal "question: success" "$output" "should print question and success" 24 | 25 | # test failure callback 26 | output=$(echo "n" | confirm "question:" "__on_success__" "__on_failure__") 27 | assert_equal "question: failure" "$output" "should print question and failure" 28 | 29 | unset result 30 | unset output 31 | } 32 | 33 | # callbacks 34 | __on_success__() { 35 | echo -n "success" 36 | } 37 | 38 | __on_failure__() { 39 | echo -n "failure" 40 | } 41 | -------------------------------------------------------------------------------- /test/dialog_tests.sh: -------------------------------------------------------------------------------- 1 | source ./shml.sh 2 | 3 | __test_callback__() { 4 | #noop 5 | echo "$1" 6 | } 7 | 8 | function run_tests { 9 | # Dialog 10 | ## 11 | output=$(echo "foo" | dialog "question" "__test_callback__") 12 | assert_equal "question foo" "$output" "should print input" 13 | 14 | unset output 15 | } 16 | -------------------------------------------------------------------------------- /test/elements_tests.sh: -------------------------------------------------------------------------------- 1 | source ./shml.sh 2 | 3 | function run_tests { 4 | # Elements 5 | ## 6 | assert_equal "$(br)" "$(echo -ne "\n\r")" "line break" 7 | 8 | assert_equal "$(tab)" "$(echo -e '\t')" "tab" 9 | 10 | assert_equal "$(indent)" " " "indent 4 spaces" 11 | assert_equal "$(indent 2)" " " "indent 2 spaces" 12 | assert_equal "$(i 2)" " " "'i' alias work" 13 | 14 | assert_equal "$(hr)" "------------------------------------------------------------" \ 15 | "draw default hr" 16 | 17 | assert_equal "$(hr 4)" "----" \ 18 | "draw hr 4 wide" 19 | 20 | assert_equal "$(hr '.' 4)" "...." \ 21 | "draw hr 4 wide with char" 22 | } 23 | -------------------------------------------------------------------------------- /test/emojis_tests.sh: -------------------------------------------------------------------------------- 1 | function run_tests { 2 | # Emojis 3 | ## 4 | assert_equal "$(emoji smiley)" '😃' \ 5 | "draw smiley" 6 | 7 | assert_equal "$(emoji halo)" '😇' \ 8 | "draw halo" 9 | 10 | assert_equal "$(emoji lol)" '😂' \ 11 | "draw lol" 12 | 13 | assert_equal "$(emoji tongue)" '😛' \ 14 | "draw tongue" 15 | 16 | assert_equal "$(emoji blush)" '😊' \ 17 | "draw blush" 18 | 19 | assert_equal "$(emoji sad)" '😟' \ 20 | "draw sad" 21 | 22 | assert_equal "$(emoji cry)" '😢' \ 23 | "draw cry" 24 | 25 | assert_equal "$(emoji rage)" '😡' \ 26 | "draw rage" 27 | 28 | assert_equal "$(emoji wave)" '👋' \ 29 | "draw wave" 30 | 31 | assert_equal "$(emoji ok)" '👌' \ 32 | "draw ok" 33 | 34 | assert_equal "$(emoji +1)" '👍' \ 35 | "draw +1" 36 | 37 | assert_equal "$(emoji thumbsdown)" '👎' \ 38 | "draw thumbsdown" 39 | 40 | assert_equal "$(emoji happycat)" '😺' \ 41 | "draw happycat" 42 | 43 | assert_equal "$(emoji cat)" '🐱' \ 44 | "draw cat" 45 | 46 | assert_equal "$(emoji dog)" '🐶' \ 47 | "draw dog" 48 | 49 | assert_equal "$(emoji bee)" '🐝' \ 50 | "draw bee" 51 | 52 | assert_equal "$(emoji pig)" '🐷' \ 53 | "draw pig" 54 | 55 | assert_equal "$(emoji monkey)" '🐵' \ 56 | "draw monkey" 57 | 58 | assert_equal "$(emoji cow)" '🐮' \ 59 | "draw cow" 60 | 61 | assert_equal "$(emoji panda)" '🐼' \ 62 | "draw panda" 63 | 64 | assert_equal "$(emoji raw)" '🍣' \ 65 | "draw raw" 66 | 67 | assert_equal "$(emoji house)" '🏠' \ 68 | "draw house" 69 | 70 | assert_equal "$(emoji eyeglasses)" '👓' \ 71 | "draw eyeglasses" 72 | 73 | assert_equal "$(emoji smoke)" '🚬' \ 74 | "draw smoke" 75 | 76 | assert_equal "$(emoji fire)" '🔥' \ 77 | "draw fire" 78 | 79 | assert_equal "$(emoji poop)" '💩' \ 80 | "draw poop" 81 | 82 | assert_equal "$(emoji beer)" '🍺' \ 83 | "draw beer" 84 | 85 | assert_equal "$(emoji cookie)" '🍪' \ 86 | "draw cookie" 87 | 88 | assert_equal "$(emoji lock)" '🔒' \ 89 | "draw lock" 90 | 91 | assert_equal "$(emoji unlock)" '🔓' \ 92 | "draw unlock" 93 | 94 | assert_equal "$(emoji star)" '⭐' \ 95 | "draw star" 96 | 97 | assert_equal "$(emoji joker)" '🃏' \ 98 | "draw joker" 99 | 100 | assert_equal "$(emoji check)" '✅' \ 101 | "draw check" 102 | 103 | assert_equal "$(emoji xmark)" '❌' \ 104 | "draw xmark" 105 | 106 | assert_equal "$(emoji loo)" '🚽' \ 107 | "draw loo" 108 | 109 | assert_equal "$(emoji bell)" '🔔' \ 110 | "draw bell" 111 | 112 | assert_equal "$(emoji search)" '🔎' \ 113 | "draw search" 114 | 115 | assert_equal "$(emoji dart)" '🎯' \ 116 | "draw dart" 117 | 118 | assert_equal "$(emoji cream)" '💵' \ 119 | "draw cream" 120 | 121 | assert_equal "$(emoji thinking)" '💭' \ 122 | "draw thinking" 123 | 124 | assert_equal "$(emoji luck)" '🍀' \ 125 | "draw luck" 126 | 127 | # Aliases 128 | assert_equal "$(e luck)" '🍀' \ 129 | "'e' alias work" 130 | 131 | # Misc 132 | assert_equal "$(emoji 'luck')" '🍀' \ 133 | "draw with single quotes" 134 | 135 | assert_equal "$(emoji "luck")" '🍀' \ 136 | "draw with double quotes" 137 | 138 | assert_equal "$(emoji somethingIdontKnowAbout)" '' \ 139 | "fail gracefully" 140 | } 141 | -------------------------------------------------------------------------------- /test/foreground_color_tests.sh: -------------------------------------------------------------------------------- 1 | source ./shml.sh 2 | 3 | function run_tests { 4 | # Foreground - color 5 | ## 6 | assert_equal "$(fgcolor black 'foo')" \ 7 | "$(echo -e '\033[30mfoo\033[39m')" \ 8 | "black foreground color" 9 | 10 | assert_equal "$(fgcolor red 'foo')" \ 11 | "$(echo -e '\033[31mfoo\033[39m')" \ 12 | "red foreground color" 13 | 14 | assert_equal "$(fgcolor green 'foo')" \ 15 | "$(echo -e '\033[32mfoo\033[39m')" \ 16 | "green foreground color" 17 | 18 | assert_equal "$(fgcolor yellow 'foo')" \ 19 | "$(echo -e '\033[33mfoo\033[39m')" \ 20 | "yellow foreground color" 21 | 22 | assert_equal "$(fgcolor blue 'foo')" \ 23 | "$(echo -e '\033[34mfoo\033[39m')" \ 24 | "blue foreground color" 25 | 26 | assert_equal "$(fgcolor magenta 'foo')" \ 27 | "$(echo -e '\033[35mfoo\033[39m')" \ 28 | "magenta foreground color" 29 | 30 | assert_equal "$(fgcolor cyan 'foo')" \ 31 | "$(echo -e '\033[36mfoo\033[39m')" \ 32 | "cyan foreground color" 33 | 34 | assert_equal "$(fgcolor gray 'foo')" \ 35 | "$(echo -e '\033[90mfoo\033[39m')" \ 36 | "gray foreground color" 37 | 38 | assert_equal "$(fgcolor darkgray 'foo')" \ 39 | "$(echo -e '\033[91mfoo\033[39m')" \ 40 | "darkgray foreground color" 41 | 42 | assert_equal "$(fgcolor lightgreen 'foo')" \ 43 | "$(echo -e '\033[92mfoo\033[39m')" \ 44 | "lightgreen foreground color" 45 | 46 | assert_equal "$(fgcolor lightyellow 'foo')" \ 47 | "$(echo -e '\033[93mfoo\033[39m')" \ 48 | "lightyellow foreground color" 49 | 50 | assert_equal "$(fgcolor lightblue 'foo')" \ 51 | "$(echo -e '\033[94mfoo\033[39m')" \ 52 | "lightblue foreground color" 53 | 54 | assert_equal "$(fgcolor lightmagenta 'foo')" \ 55 | "$(echo -e '\033[95mfoo\033[39m')" \ 56 | "lightmagenta foreground color" 57 | 58 | assert_equal "$(fgcolor lightcyan 'foo')" \ 59 | "$(echo -e '\033[96mfoo\033[39m')" \ 60 | "lightcyan foreground color" 61 | 62 | assert_equal "$(fgcolor white 'foo')" \ 63 | "$(echo -e '\033[97mfoo\033[39m')" \ 64 | "white foreground color" 65 | 66 | # Terminators 67 | assert_equal "$(fgcolor white)foo$(fgcolor)" \ 68 | "$(echo -e '\033[97mfoo\033[39m')" \ 69 | 'color foreground and end color' 70 | 71 | assert_equal "$(fgcolor white)foo$(fgcolor end)" \ 72 | "$(echo -e '\033[97mfoo\033[39m')" \ 73 | 'color foreground and end color' 74 | 75 | assert_equal "$(fgcolor white)foo$(fgcolor off)" \ 76 | "$(echo -e '\033[97mfoo\033[39m')" \ 77 | 'color foreground and end color' 78 | 79 | assert_equal "$(fgcolor white)foo$(fgcolor reset)" \ 80 | "$(echo -e '\033[97mfoo\033[39m')" \ 81 | 'color foreground and end color' 82 | 83 | # Aliases 84 | assert_equal "$(c white 'foo')" \ 85 | "$(echo -e '\033[97mfoo\033[39m')" \ 86 | "'c' alias works work" 87 | 88 | assert_equal "$(color white 'foo')" \ 89 | "$(echo -e '\033[97mfoo\033[39m')" \ 90 | "'color' alias works'" 91 | 92 | assert_equal "$(fgc white 'foo')" \ 93 | "$(echo -e '\033[97mfoo\033[39m')" \ 94 | "'fgc' alias works'" 95 | 96 | # Midex aliases 97 | assert_equal "$(fgcolor white)foo$(color)" \ 98 | "$(echo -e '\033[97mfoo\033[39m')" \ 99 | 'color foreground and end color' 100 | 101 | # Misc 102 | assert_equal "$(fgcolor 'white' 'foo bar')" \ 103 | "$(echo -e '\033[97mfoo bar\033[39m')" \ 104 | "single quotes and spaces work" 105 | 106 | assert_equal "$(fgcolor "white" 'foo bar')" \ 107 | "$(echo -e '\033[97mfoo bar\033[39m')" \ 108 | "double quotes and spaces work" 109 | } 110 | -------------------------------------------------------------------------------- /test/icons_tests.sh: -------------------------------------------------------------------------------- 1 | source ./shml.sh 2 | 3 | function run_tests { 4 | # Icons 5 | ## 6 | assert_equal "$(icon check)" "✓" \ 7 | "draw check" 8 | 9 | assert_equal "$(icon xmark)" "✘" \ 10 | "draw xmark" 11 | 12 | assert_equal "$(icon heart)" "❤" \ 13 | "draw heart" 14 | 15 | assert_equal "$(icon sun)" "☀" \ 16 | "draw sun" 17 | 18 | assert_equal "$(icon star)" "★" \ 19 | "draw star" 20 | 21 | assert_equal "$(icon darkstar)" "☆" \ 22 | "draw darkstar" 23 | 24 | assert_equal "$(icon umbrella)" "☂" \ 25 | "draw umbrella" 26 | 27 | assert_equal "$(icon flag)" "⚑" \ 28 | "draw flag" 29 | 30 | assert_equal "$(icon snow)" "❄" \ 31 | "draw snow" 32 | 33 | assert_equal "$(icon music)" "♫" \ 34 | "draw music" 35 | 36 | assert_equal "$(icon scissors)" "✂" \ 37 | "draw scissors" 38 | 39 | assert_equal "$(icon tm)" "™" \ 40 | "draw tm" 41 | 42 | assert_equal "$(icon copyright)" "©" \ 43 | "draw copyright" 44 | 45 | assert_equal "$(icon apple)" "" \ 46 | "draw apple" 47 | 48 | assert_equal "$(icon skull)" "☠" \ 49 | "draw skull" 50 | 51 | assert_equal "$(icon face)" "☺" \ 52 | "draw face" 53 | 54 | # Misc 55 | assert_equal "$(icon 'face')" "☺" \ 56 | "works with single quotes" 57 | 58 | assert_equal "$(icon "face")" "☺" \ 59 | "works with double quotes" 60 | 61 | assert_equal "$(icon "somethingThatWillNeverExist")" "" \ 62 | "fails gracefully" 63 | } 64 | -------------------------------------------------------------------------------- /test/mixed_tests.sh: -------------------------------------------------------------------------------- 1 | source ./shml.sh 2 | 3 | function run_tests { 4 | # Mixed 5 | ## 6 | assert_equal "$(bg white)$(c black foo)$(bg)" \ 7 | "$(echo -e '\033[107m\033[30mfoo\033[39m\033[49m')" \ 8 | 'works with nested stuffs' 9 | 10 | assert_equal "$(bg "white")$(c 'black' "foo")$(bg "end")" \ 11 | "$(echo -e '\033[107m\033[30mfoo\033[39m\033[49m')" \ 12 | 'works with mixed quoting' 13 | 14 | local example_string="foo bar\nbah\tbin" 15 | assert_equal "$(bg white)$(c black "$example_string")$(bg)" \ 16 | "$(echo -e "\033[107m\033[30mfoo bar\nbah\tbin\033[39m\033[49m")" \ 17 | "works with variables" 18 | 19 | unset example_string 20 | } 21 | --------------------------------------------------------------------------------