cheatset 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/.gitignore +18 -0
 - data/Gemfile +2 -0
 - data/LICENSE.txt +22 -0
 - data/README.md +75 -0
 - data/Rakefile +1 -0
 - data/bin/cheatset +6 -0
 - data/cheatset.gemspec +31 -0
 - data/lib/cheatset/cli.rb +11 -0
 - data/lib/cheatset/creator.rb +74 -0
 - data/lib/cheatset/dsl/base.rb +64 -0
 - data/lib/cheatset/dsl/category.rb +16 -0
 - data/lib/cheatset/dsl/cheatsheet.rb +18 -0
 - data/lib/cheatset/dsl/context.rb +17 -0
 - data/lib/cheatset/dsl/entry.rb +8 -0
 - data/lib/cheatset/templates/.sass-cache/c0630dfea9543a0a71b68aca4887e98819b89684/style.scssc +0 -0
 - data/lib/cheatset/templates/res/Open_Sans.woff +0 -0
 - data/lib/cheatset/templates/style.css +317 -0
 - data/lib/cheatset/templates/style.scss +198 -0
 - data/lib/cheatset/templates/template.haml +36 -0
 - data/lib/cheatset/version.rb +3 -0
 - data/lib/cheatset.rb +6 -0
 - metadata +206 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 69eee59e5e28ab0bd010959193bdbf88ae015d51
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 697696929f19a13ca2c2581614de79f6f4288abb
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 92128a90b0b06bfc0bfc879efcb8079367c42ee7c577227a120ac81ab298f9a22d3b352b66a3865e15b1348c46700a009de9c1f75e75d58af0acaec4817cc5e4
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 810d205ba2a6a4d09a5c23b8ce2a1c31a36df90e132b5db1343b8fb89fd6e5e7092e5a7a39ac36377f6f776f3c3a5798336889ba274e2fc1fcffe0922b94f34d
         
     | 
    
        data/.gitignore
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/LICENSE.txt
    ADDED
    
    | 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Copyright (c) 2013 Florian Dütsch
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            MIT License
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
      
 6 
     | 
    
         
            +
            a copy of this software and associated documentation files (the
         
     | 
| 
      
 7 
     | 
    
         
            +
            "Software"), to deal in the Software without restriction, including
         
     | 
| 
      
 8 
     | 
    
         
            +
            without limitation the rights to use, copy, modify, merge, publish,
         
     | 
| 
      
 9 
     | 
    
         
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         
     | 
| 
      
 10 
     | 
    
         
            +
            permit persons to whom the Software is furnished to do so, subject to
         
     | 
| 
      
 11 
     | 
    
         
            +
            the following conditions:
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be
         
     | 
| 
      
 14 
     | 
    
         
            +
            included in all copies or substantial portions of the Software.
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         
     | 
| 
      
 17 
     | 
    
         
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         
     | 
| 
      
 18 
     | 
    
         
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         
     | 
| 
      
 19 
     | 
    
         
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         
     | 
| 
      
 20 
     | 
    
         
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         
     | 
| 
      
 21 
     | 
    
         
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         
     | 
| 
      
 22 
     | 
    
         
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
    
        data/README.md
    ADDED
    
    | 
         @@ -0,0 +1,75 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # cheatset
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            [](http://badge.fury.io/rb/cheatset)
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Generate your own cheatsheets as docsets for [Dash](http://kapeli.com/dash)!
         
     | 
| 
      
 6 
     | 
    
         
            +
            Use this simple command line tool and write your cheatsheets in an easy
         
     | 
| 
      
 7 
     | 
    
         
            +
            language (Ruby DSL).
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            ## Installation
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                $ gem install cheatset
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            ## Usage
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            Write a file (here `sample.cheatsheet`) containing your cheatsheet data, e.g.:
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 18 
     | 
    
         
            +
            cheatsheet do
         
     | 
| 
      
 19 
     | 
    
         
            +
              title 'Sample Cheatsheet'  # Will be displayed by Dash in the docset list
         
     | 
| 
      
 20 
     | 
    
         
            +
              short_name 'sample'  # Used for the filename of the docset
         
     | 
| 
      
 21 
     | 
    
         
            +
              introduction 'My *awesome* cheatsheet'  # Can contain markdown and multiple lines
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              # A cheatsheet must consist of categories
         
     | 
| 
      
 24 
     | 
    
         
            +
              category do
         
     | 
| 
      
 25 
     | 
    
         
            +
                id 'Windows'  # Must be unique and is used as title of the category
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                entry do
         
     | 
| 
      
 28 
     | 
    
         
            +
                  command 'CMD-n'        # Optional
         
     | 
| 
      
 29 
     | 
    
         
            +
                  command 'CMD-N'        # Can have more than one command
         
     | 
| 
      
 30 
     | 
    
         
            +
                  name 'Create window'   # A short name, can contain markdown
         
     | 
| 
      
 31 
     | 
    
         
            +
                  notes 'Some notes'     # Optional longer explanation, can contain markdown
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
                entry do
         
     | 
| 
      
 34 
     | 
    
         
            +
                  command 'CMD-w'
         
     | 
| 
      
 35 
     | 
    
         
            +
                  name 'Close window'
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
              category do
         
     | 
| 
      
 40 
     | 
    
         
            +
                id 'Code'
         
     | 
| 
      
 41 
     | 
    
         
            +
                entry do
         
     | 
| 
      
 42 
     | 
    
         
            +
                  name 'Code sample'
         
     | 
| 
      
 43 
     | 
    
         
            +
                  notes <<-'END'
         
     | 
| 
      
 44 
     | 
    
         
            +
                    ```ruby
         
     | 
| 
      
 45 
     | 
    
         
            +
                    sample = "You can include code snippets as well"
         
     | 
| 
      
 46 
     | 
    
         
            +
                    ```
         
     | 
| 
      
 47 
     | 
    
         
            +
                    Or anything else **markdown**.
         
     | 
| 
      
 48 
     | 
    
         
            +
                  END
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
              end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
              notes 'Some notes at the end of the cheatsheet'
         
     | 
| 
      
 53 
     | 
    
         
            +
            end
         
     | 
| 
      
 54 
     | 
    
         
            +
            ```
         
     | 
| 
      
 55 
     | 
    
         
            +
            The following values may contain markdown formatted text:
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            * The `introduction` and the `notes` of the cheatsheet
         
     | 
| 
      
 58 
     | 
    
         
            +
            * The `name` and the `notes` of the entries
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
            For more complete examples look at some of
         
     | 
| 
      
 61 
     | 
    
         
            +
            [the actual cheatsheets](https://github.com/Kapeli/cheatsheets).
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
            To convert this file to a docset, call
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                $ cheatset generate sample.cheatsheet
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
            ## Contributing
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            Yes, please! Open issues and pull requests on the
         
     | 
| 
      
 71 
     | 
    
         
            +
            [GitHub page](https://github.com/Kapeli/cheatset).
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
            ## Thanks
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            [Nix-wie-weg](https://github.com/Nix-wie-weg/dasheets) for the initial code.
         
     | 
    
        data/Rakefile
    ADDED
    
    | 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "bundler/gem_tasks"
         
     | 
    
        data/bin/cheatset
    ADDED
    
    
    
        data/cheatset.gemspec
    ADDED
    
    | 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # coding: utf-8
         
     | 
| 
      
 2 
     | 
    
         
            +
            lib = File.expand_path('../lib', __FILE__)
         
     | 
| 
      
 3 
     | 
    
         
            +
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'cheatset/version'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            Gem::Specification.new do |spec|
         
     | 
| 
      
 7 
     | 
    
         
            +
              spec.name          = 'cheatset'
         
     | 
| 
      
 8 
     | 
    
         
            +
              spec.version       = Cheatset::VERSION
         
     | 
| 
      
 9 
     | 
    
         
            +
              spec.authors       = ['Bogdan Popescu']
         
     | 
| 
      
 10 
     | 
    
         
            +
              spec.description   = 'Generate cheatsheets for Dash'
         
     | 
| 
      
 11 
     | 
    
         
            +
              spec.summary       = spec.description
         
     | 
| 
      
 12 
     | 
    
         
            +
              spec.homepage      = 'https://github.com/Kapeli/cheatset'
         
     | 
| 
      
 13 
     | 
    
         
            +
              spec.license       = 'MIT'
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              spec.files         = `git ls-files`.split($/)
         
     | 
| 
      
 16 
     | 
    
         
            +
              spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
         
     | 
| 
      
 17 
     | 
    
         
            +
              spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
         
     | 
| 
      
 18 
     | 
    
         
            +
              spec.require_paths = ['lib']
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              spec.add_development_dependency 'bundler', '~> 1.3'
         
     | 
| 
      
 21 
     | 
    
         
            +
              spec.add_development_dependency 'rake'
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              spec.add_dependency 'thor'
         
     | 
| 
      
 24 
     | 
    
         
            +
              spec.add_dependency 'haml', '~> 4.0.3'
         
     | 
| 
      
 25 
     | 
    
         
            +
              spec.add_dependency 'sqlite3', '~> 1.3.8'
         
     | 
| 
      
 26 
     | 
    
         
            +
              spec.add_dependency 'plist', '~> 3.1.0'
         
     | 
| 
      
 27 
     | 
    
         
            +
              spec.add_dependency 'redcarpet', '~> 3.1.1'
         
     | 
| 
      
 28 
     | 
    
         
            +
              spec.add_dependency 'rouge', '~> 1.3.2'
         
     | 
| 
      
 29 
     | 
    
         
            +
              spec.add_dependency 'sanitize', '~> 2.0.6'
         
     | 
| 
      
 30 
     | 
    
         
            +
              spec.add_dependency 'unindent', '~> 1.0'
         
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/cheatset/cli.rb
    ADDED
    
    
| 
         @@ -0,0 +1,74 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'plist'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'sqlite3'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'fileutils'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'haml'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'ostruct'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            class Cheatset::Creator
         
     | 
| 
      
 8 
     | 
    
         
            +
              def initialize(cheatsheet)
         
     | 
| 
      
 9 
     | 
    
         
            +
                @cheatsheet = cheatsheet
         
     | 
| 
      
 10 
     | 
    
         
            +
                @docset_path = "#{@cheatsheet.short_name}.docset"
         
     | 
| 
      
 11 
     | 
    
         
            +
                @path = "#{@docset_path}/Contents/"
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              def generate
         
     | 
| 
      
 15 
     | 
    
         
            +
                FileUtils.rm_rf(@path)
         
     | 
| 
      
 16 
     | 
    
         
            +
                FileUtils.mkdir_p(@path)
         
     | 
| 
      
 17 
     | 
    
         
            +
                generate_html_file
         
     | 
| 
      
 18 
     | 
    
         
            +
                generate_plist_file
         
     | 
| 
      
 19 
     | 
    
         
            +
                generate_database
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              private
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              def tpl_path
         
     | 
| 
      
 25 
     | 
    
         
            +
                File.expand_path('../templates', __FILE__)
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              def generate_html_file
         
     | 
| 
      
 29 
     | 
    
         
            +
                # HTML
         
     | 
| 
      
 30 
     | 
    
         
            +
                template = File.read("#{tpl_path}/template.haml")
         
     | 
| 
      
 31 
     | 
    
         
            +
                engine = Haml::Engine.new(template)
         
     | 
| 
      
 32 
     | 
    
         
            +
                out = engine.render(@cheatsheet)
         
     | 
| 
      
 33 
     | 
    
         
            +
                doc_path = "#{@path}Resources/Documents/"
         
     | 
| 
      
 34 
     | 
    
         
            +
                FileUtils.mkdir_p(doc_path)
         
     | 
| 
      
 35 
     | 
    
         
            +
                File.open("#{doc_path}index.html", 'w') { |file| file.write(out) }
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                # (static) CSS
         
     | 
| 
      
 38 
     | 
    
         
            +
                FileUtils.cp("#{tpl_path}/style.css", doc_path)
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                # resources
         
     | 
| 
      
 41 
     | 
    
         
            +
                FileUtils.cp_r("#{tpl_path}/res", doc_path)
         
     | 
| 
      
 42 
     | 
    
         
            +
              end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
              def generate_plist_file
         
     | 
| 
      
 45 
     | 
    
         
            +
                plist_data = {
         
     | 
| 
      
 46 
     | 
    
         
            +
                  'CFBundleIdentifier' => @cheatsheet.short_name,
         
     | 
| 
      
 47 
     | 
    
         
            +
                  'CFBundleName' => @cheatsheet.title,
         
     | 
| 
      
 48 
     | 
    
         
            +
                  'DocSetPlatformFamily' => "cheatsheet",
         
     | 
| 
      
 49 
     | 
    
         
            +
                  'DashDocSetFamily' => 'cheatsheet',
         
     | 
| 
      
 50 
     | 
    
         
            +
                  'isDashDocset' => true,
         
     | 
| 
      
 51 
     | 
    
         
            +
                  'dashIndexFilePath' => 'index.html'
         
     | 
| 
      
 52 
     | 
    
         
            +
                }
         
     | 
| 
      
 53 
     | 
    
         
            +
                File.open("#{@path}Info.plist", 'w') do |file|
         
     | 
| 
      
 54 
     | 
    
         
            +
                  file.write(Plist::Emit.dump(plist_data))
         
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
              end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
              def generate_database
         
     | 
| 
      
 59 
     | 
    
         
            +
                sqlite_file = "#{@path}Resources/docSet.dsidx"
         
     | 
| 
      
 60 
     | 
    
         
            +
                db = SQLite3::Database.new(sqlite_file)
         
     | 
| 
      
 61 
     | 
    
         
            +
                db.execute <<-SQL
         
     | 
| 
      
 62 
     | 
    
         
            +
                  CREATE TABLE searchIndex(id INTEGER PRIMARY KEY, name TEXT,
         
     | 
| 
      
 63 
     | 
    
         
            +
                                           type TEXT, path TEXT);
         
     | 
| 
      
 64 
     | 
    
         
            +
                  CREATE UNIQUE INDEX anchor ON searchIndex (name, type, path);
         
     | 
| 
      
 65 
     | 
    
         
            +
                SQL
         
     | 
| 
      
 66 
     | 
    
         
            +
                @cheatsheet.categories.each do |category|
         
     | 
| 
      
 67 
     | 
    
         
            +
                  category.entries.each_with_index do |entry, index|
         
     | 
| 
      
 68 
     | 
    
         
            +
                    sql = 'INSERT INTO searchIndex(name, type, path) VALUES (?, ?, ?)'
         
     | 
| 
      
 69 
     | 
    
         
            +
                    db.execute(sql, entry.tags_stripped_name, 'Guide',
         
     | 
| 
      
 70 
     | 
    
         
            +
                               "index.html\##{category.id}-#{index}")
         
     | 
| 
      
 71 
     | 
    
         
            +
                  end
         
     | 
| 
      
 72 
     | 
    
         
            +
                end
         
     | 
| 
      
 73 
     | 
    
         
            +
              end
         
     | 
| 
      
 74 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,64 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'redcarpet'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rouge'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'rouge/plugins/redcarpet'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'sanitize'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'unindent'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            class HTML < Redcarpet::Render::HTML
         
     | 
| 
      
 8 
     | 
    
         
            +
              include Rouge::Plugins::Redcarpet
         
     | 
| 
      
 9 
     | 
    
         
            +
            end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            module Cheatset
         
     | 
| 
      
 12 
     | 
    
         
            +
              module DSL
         
     | 
| 
      
 13 
     | 
    
         
            +
                class Base
         
     | 
| 
      
 14 
     | 
    
         
            +
                  def initialize(&block)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    instance_eval(&block)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  end
         
     | 
| 
      
 17 
     | 
    
         
            +
                  private
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                  def parse_markdown(str)
         
     | 
| 
      
 20 
     | 
    
         
            +
                    markdown = Redcarpet::Markdown.new(HTML, :autolink => true, :hard_wrap =>true, :disable_indented_code_blocks => true, :fenced_code_blocks => true)
         
     | 
| 
      
 21 
     | 
    
         
            +
                    markdown.render(str)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                  def self.define_attrs(*names)
         
     | 
| 
      
 25 
     | 
    
         
            +
                    names.each do |name|
         
     | 
| 
      
 26 
     | 
    
         
            +
                      define_method(name) do |val = nil|
         
     | 
| 
      
 27 
     | 
    
         
            +
                        instance_variable_set("@#{name}", val) if val
         
     | 
| 
      
 28 
     | 
    
         
            +
                        instance_variable_get("@#{name}")
         
     | 
| 
      
 29 
     | 
    
         
            +
                      end
         
     | 
| 
      
 30 
     | 
    
         
            +
                    end
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
      
 32 
     | 
    
         
            +
                  def self.define_list_attrs(*names)
         
     | 
| 
      
 33 
     | 
    
         
            +
                    names.each do |name|
         
     | 
| 
      
 34 
     | 
    
         
            +
                      define_method(name) do |val = nil|
         
     | 
| 
      
 35 
     | 
    
         
            +
                        if val
         
     | 
| 
      
 36 
     | 
    
         
            +
                          array = instance_variable_get("@#{name}")
         
     | 
| 
      
 37 
     | 
    
         
            +
                          if !array
         
     | 
| 
      
 38 
     | 
    
         
            +
                            instance_variable_set("@#{name}", [val])
         
     | 
| 
      
 39 
     | 
    
         
            +
                          else
         
     | 
| 
      
 40 
     | 
    
         
            +
                            instance_variable_set("@#{name}", array << val)
         
     | 
| 
      
 41 
     | 
    
         
            +
                          end
         
     | 
| 
      
 42 
     | 
    
         
            +
                        end
         
     | 
| 
      
 43 
     | 
    
         
            +
                        instance_variable_get("@#{name}")
         
     | 
| 
      
 44 
     | 
    
         
            +
                      end
         
     | 
| 
      
 45 
     | 
    
         
            +
                    end
         
     | 
| 
      
 46 
     | 
    
         
            +
                  end
         
     | 
| 
      
 47 
     | 
    
         
            +
                  def self.define_markdown_attrs(*names)
         
     | 
| 
      
 48 
     | 
    
         
            +
                    names.each do |name|
         
     | 
| 
      
 49 
     | 
    
         
            +
                      define_method(name) do |val = nil|
         
     | 
| 
      
 50 
     | 
    
         
            +
                        if val
         
     | 
| 
      
 51 
     | 
    
         
            +
                          val = val.unindent
         
     | 
| 
      
 52 
     | 
    
         
            +
                          val = parse_markdown(val)
         
     | 
| 
      
 53 
     | 
    
         
            +
                          instance_variable_set("@#{name}", val)
         
     | 
| 
      
 54 
     | 
    
         
            +
                        end
         
     | 
| 
      
 55 
     | 
    
         
            +
                        instance_variable_get("@#{name}")
         
     | 
| 
      
 56 
     | 
    
         
            +
                      end
         
     | 
| 
      
 57 
     | 
    
         
            +
                      define_method("tags_stripped_#{name}") do
         
     | 
| 
      
 58 
     | 
    
         
            +
                        Sanitize.clean(send(name))
         
     | 
| 
      
 59 
     | 
    
         
            +
                      end
         
     | 
| 
      
 60 
     | 
    
         
            +
                    end
         
     | 
| 
      
 61 
     | 
    
         
            +
                  end
         
     | 
| 
      
 62 
     | 
    
         
            +
                end
         
     | 
| 
      
 63 
     | 
    
         
            +
              end
         
     | 
| 
      
 64 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Cheatset
         
     | 
| 
      
 2 
     | 
    
         
            +
              module DSL
         
     | 
| 
      
 3 
     | 
    
         
            +
                class Category < Base
         
     | 
| 
      
 4 
     | 
    
         
            +
                  attr_reader :entries
         
     | 
| 
      
 5 
     | 
    
         
            +
                  define_attrs :id
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                  def initialize(&block)
         
     | 
| 
      
 8 
     | 
    
         
            +
                    @entries = []
         
     | 
| 
      
 9 
     | 
    
         
            +
                    super(&block)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  end
         
     | 
| 
      
 11 
     | 
    
         
            +
                  def entry(&block)
         
     | 
| 
      
 12 
     | 
    
         
            +
                    @entries << Cheatset::DSL::Entry.new(&block)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Cheatset
         
     | 
| 
      
 2 
     | 
    
         
            +
              module DSL
         
     | 
| 
      
 3 
     | 
    
         
            +
                class Cheatsheet < Base
         
     | 
| 
      
 4 
     | 
    
         
            +
                  attr_reader :categories
         
     | 
| 
      
 5 
     | 
    
         
            +
                  define_attrs :title, :short_name, :source_url
         
     | 
| 
      
 6 
     | 
    
         
            +
                  define_markdown_attrs :introduction, :notes
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  def initialize(&block)
         
     | 
| 
      
 9 
     | 
    
         
            +
                    @categories = []
         
     | 
| 
      
 10 
     | 
    
         
            +
                    super(&block)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                  def category(&block)
         
     | 
| 
      
 14 
     | 
    
         
            +
                    @categories << Cheatset::DSL::Category.new(&block)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Cheatset
         
     | 
| 
      
 2 
     | 
    
         
            +
              module DSL
         
     | 
| 
      
 3 
     | 
    
         
            +
                class Context
         
     | 
| 
      
 4 
     | 
    
         
            +
                  def initialize(filename)
         
     | 
| 
      
 5 
     | 
    
         
            +
                    instance_eval(File.read(filename))
         
     | 
| 
      
 6 
     | 
    
         
            +
                  end
         
     | 
| 
      
 7 
     | 
    
         
            +
                  def generate
         
     | 
| 
      
 8 
     | 
    
         
            +
                    Cheatset::Creator.new(@data).generate
         
     | 
| 
      
 9 
     | 
    
         
            +
                  end
         
     | 
| 
      
 10 
     | 
    
         
            +
                  private
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                  def cheatsheet(&block)
         
     | 
| 
      
 13 
     | 
    
         
            +
                    @data = Cheatset::DSL::Cheatsheet.new(&block)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         @@ -0,0 +1,317 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            h1, h2, h3, p, blockquote {
         
     | 
| 
      
 2 
     | 
    
         
            +
              margin: 0;
         
     | 
| 
      
 3 
     | 
    
         
            +
              padding: 0; }
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            @font-face {
         
     | 
| 
      
 6 
     | 
    
         
            +
              font-family: 'Open Sans';
         
     | 
| 
      
 7 
     | 
    
         
            +
              font-style: normal;
         
     | 
| 
      
 8 
     | 
    
         
            +
              font-weight: 400;
         
     | 
| 
      
 9 
     | 
    
         
            +
              src: local("Open Sans"), local("OpenSans"), url(res/Open_Sans.woff) format("woff"); }
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            body {
         
     | 
| 
      
 12 
     | 
    
         
            +
              font-family: 'Open Sans', sans-serif;
         
     | 
| 
      
 13 
     | 
    
         
            +
              font-size: 14px;
         
     | 
| 
      
 14 
     | 
    
         
            +
              color: black;
         
     | 
| 
      
 15 
     | 
    
         
            +
              background-color: white;
         
     | 
| 
      
 16 
     | 
    
         
            +
              margin: 0; }
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            code, pre {
         
     | 
| 
      
 19 
     | 
    
         
            +
              font-family: Menlo, Consolas, "Liberation Mono", Courier, monospace;
         
     | 
| 
      
 20 
     | 
    
         
            +
              font-size: 13px; }
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            code {
         
     | 
| 
      
 23 
     | 
    
         
            +
              margin: 0;
         
     | 
| 
      
 24 
     | 
    
         
            +
              border: 1px solid #ddd;
         
     | 
| 
      
 25 
     | 
    
         
            +
              background-color: #f8f8f8;
         
     | 
| 
      
 26 
     | 
    
         
            +
              border-radius: 3px; }
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            code:before, code:after {
         
     | 
| 
      
 29 
     | 
    
         
            +
              content: "\00a0"; }
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            header {
         
     | 
| 
      
 32 
     | 
    
         
            +
              color: #efefef;
         
     | 
| 
      
 33 
     | 
    
         
            +
              background-color: #666666;
         
     | 
| 
      
 34 
     | 
    
         
            +
              padding: 0px 10px 3px 10px; }
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            h1 {
         
     | 
| 
      
 37 
     | 
    
         
            +
              font-size: 35px; }
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            footer {
         
     | 
| 
      
 40 
     | 
    
         
            +
              margin: 1em;
         
     | 
| 
      
 41 
     | 
    
         
            +
              background-color: #666666;
         
     | 
| 
      
 42 
     | 
    
         
            +
              color: #efefef;
         
     | 
| 
      
 43 
     | 
    
         
            +
              border-radius: 10px;
         
     | 
| 
      
 44 
     | 
    
         
            +
              text-align: center; }
         
     | 
| 
      
 45 
     | 
    
         
            +
              footer a {
         
     | 
| 
      
 46 
     | 
    
         
            +
                color: #efefef; }
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            section.notes {
         
     | 
| 
      
 49 
     | 
    
         
            +
              margin-top: 1em; }
         
     | 
| 
      
 50 
     | 
    
         
            +
              section.notes h2 {
         
     | 
| 
      
 51 
     | 
    
         
            +
                color: #666666;
         
     | 
| 
      
 52 
     | 
    
         
            +
                font-size: 1.5em; }
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
            article {
         
     | 
| 
      
 55 
     | 
    
         
            +
              margin: 2em 1em; }
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            section.category {
         
     | 
| 
      
 58 
     | 
    
         
            +
              border: 2px solid #666666;
         
     | 
| 
      
 59 
     | 
    
         
            +
              border-radius: 10px;
         
     | 
| 
      
 60 
     | 
    
         
            +
              background-color: #666666;
         
     | 
| 
      
 61 
     | 
    
         
            +
              margin: 2em 0;
         
     | 
| 
      
 62 
     | 
    
         
            +
              overflow: hidden;
         
     | 
| 
      
 63 
     | 
    
         
            +
              padding-bottom: 5px; }
         
     | 
| 
      
 64 
     | 
    
         
            +
              section.category h2 {
         
     | 
| 
      
 65 
     | 
    
         
            +
                color: white;
         
     | 
| 
      
 66 
     | 
    
         
            +
                font-size: 1.5em;
         
     | 
| 
      
 67 
     | 
    
         
            +
                text-align: center;
         
     | 
| 
      
 68 
     | 
    
         
            +
                margin-top: -2px; }
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            table {
         
     | 
| 
      
 71 
     | 
    
         
            +
              background-color: white;
         
     | 
| 
      
 72 
     | 
    
         
            +
              border-collapse: collapse;
         
     | 
| 
      
 73 
     | 
    
         
            +
              width: 100%; }
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            td {
         
     | 
| 
      
 76 
     | 
    
         
            +
              padding: 6px 2px 2px 8px; }
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
            td.command {
         
     | 
| 
      
 79 
     | 
    
         
            +
              width: 1%;
         
     | 
| 
      
 80 
     | 
    
         
            +
              white-space: nowrap;
         
     | 
| 
      
 81 
     | 
    
         
            +
              vertical-align: top;
         
     | 
| 
      
 82 
     | 
    
         
            +
              padding: 8px 8px 0 7px; }
         
     | 
| 
      
 83 
     | 
    
         
            +
              td.command code {
         
     | 
| 
      
 84 
     | 
    
         
            +
                padding: .1em .6em;
         
     | 
| 
      
 85 
     | 
    
         
            +
                box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2), 0 0 0 2px white inset;
         
     | 
| 
      
 86 
     | 
    
         
            +
                border-radius: 3px;
         
     | 
| 
      
 87 
     | 
    
         
            +
                border: 1px solid #ccc;
         
     | 
| 
      
 88 
     | 
    
         
            +
                background-color: #efefef;
         
     | 
| 
      
 89 
     | 
    
         
            +
                color: #333; }
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
            td.description .name {
         
     | 
| 
      
 92 
     | 
    
         
            +
              font-size: 1.2em; }
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
            tr:nth-child(even) {
         
     | 
| 
      
 95 
     | 
    
         
            +
              background: #efefef; }
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
            a {
         
     | 
| 
      
 98 
     | 
    
         
            +
              color: #666666; }
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
            p {
         
     | 
| 
      
 101 
     | 
    
         
            +
              margin: 0 0 4px; }
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
            .highlight {
         
     | 
| 
      
 104 
     | 
    
         
            +
              background-color: #f8f8f8;
         
     | 
| 
      
 105 
     | 
    
         
            +
              border: 1px solid #ccc;
         
     | 
| 
      
 106 
     | 
    
         
            +
              padding: 6px 10px;
         
     | 
| 
      
 107 
     | 
    
         
            +
              border-radius: 3px;
         
     | 
| 
      
 108 
     | 
    
         
            +
              margin-right: 15px;
         
     | 
| 
      
 109 
     | 
    
         
            +
              white-space: pre-wrap;
         
     | 
| 
      
 110 
     | 
    
         
            +
              word-wrap: break-word; }
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
            .c {
         
     | 
| 
      
 113 
     | 
    
         
            +
              color: #999988;
         
     | 
| 
      
 114 
     | 
    
         
            +
              font-style: italic; }
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
            .err {
         
     | 
| 
      
 117 
     | 
    
         
            +
              color: #a61717;
         
     | 
| 
      
 118 
     | 
    
         
            +
              background-color: #e3d2d2; }
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
            .k {
         
     | 
| 
      
 121 
     | 
    
         
            +
              font-weight: bold; }
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
      
 123 
     | 
    
         
            +
            .o {
         
     | 
| 
      
 124 
     | 
    
         
            +
              font-weight: bold; }
         
     | 
| 
      
 125 
     | 
    
         
            +
             
     | 
| 
      
 126 
     | 
    
         
            +
            .cm {
         
     | 
| 
      
 127 
     | 
    
         
            +
              color: #999988;
         
     | 
| 
      
 128 
     | 
    
         
            +
              font-style: italic; }
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
            .cp {
         
     | 
| 
      
 131 
     | 
    
         
            +
              color: #999999;
         
     | 
| 
      
 132 
     | 
    
         
            +
              font-weight: bold; }
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
            .c1 {
         
     | 
| 
      
 135 
     | 
    
         
            +
              color: #999988;
         
     | 
| 
      
 136 
     | 
    
         
            +
              font-style: italic; }
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
            .cs {
         
     | 
| 
      
 139 
     | 
    
         
            +
              color: #999999;
         
     | 
| 
      
 140 
     | 
    
         
            +
              font-weight: bold;
         
     | 
| 
      
 141 
     | 
    
         
            +
              font-style: italic; }
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
            .gd {
         
     | 
| 
      
 144 
     | 
    
         
            +
              color: #000000;
         
     | 
| 
      
 145 
     | 
    
         
            +
              background-color: #ffdddd; }
         
     | 
| 
      
 146 
     | 
    
         
            +
             
     | 
| 
      
 147 
     | 
    
         
            +
            .gd .x {
         
     | 
| 
      
 148 
     | 
    
         
            +
              color: #000000;
         
     | 
| 
      
 149 
     | 
    
         
            +
              background-color: #ffaaaa; }
         
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
      
 151 
     | 
    
         
            +
            .ge {
         
     | 
| 
      
 152 
     | 
    
         
            +
              font-style: italic; }
         
     | 
| 
      
 153 
     | 
    
         
            +
             
     | 
| 
      
 154 
     | 
    
         
            +
            .gr {
         
     | 
| 
      
 155 
     | 
    
         
            +
              color: #aa0000; }
         
     | 
| 
      
 156 
     | 
    
         
            +
             
     | 
| 
      
 157 
     | 
    
         
            +
            .gh {
         
     | 
| 
      
 158 
     | 
    
         
            +
              color: #999999; }
         
     | 
| 
      
 159 
     | 
    
         
            +
             
     | 
| 
      
 160 
     | 
    
         
            +
            .gi {
         
     | 
| 
      
 161 
     | 
    
         
            +
              color: #000000;
         
     | 
| 
      
 162 
     | 
    
         
            +
              background-color: #ddffdd; }
         
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
      
 164 
     | 
    
         
            +
            .gi .x {
         
     | 
| 
      
 165 
     | 
    
         
            +
              color: #000000;
         
     | 
| 
      
 166 
     | 
    
         
            +
              background-color: #aaffaa; }
         
     | 
| 
      
 167 
     | 
    
         
            +
             
     | 
| 
      
 168 
     | 
    
         
            +
            .go {
         
     | 
| 
      
 169 
     | 
    
         
            +
              color: #888888; }
         
     | 
| 
      
 170 
     | 
    
         
            +
             
     | 
| 
      
 171 
     | 
    
         
            +
            .gp {
         
     | 
| 
      
 172 
     | 
    
         
            +
              color: #555555; }
         
     | 
| 
      
 173 
     | 
    
         
            +
             
     | 
| 
      
 174 
     | 
    
         
            +
            .gs {
         
     | 
| 
      
 175 
     | 
    
         
            +
              font-weight: bold; }
         
     | 
| 
      
 176 
     | 
    
         
            +
             
     | 
| 
      
 177 
     | 
    
         
            +
            .gu {
         
     | 
| 
      
 178 
     | 
    
         
            +
              color: #800080;
         
     | 
| 
      
 179 
     | 
    
         
            +
              font-weight: bold; }
         
     | 
| 
      
 180 
     | 
    
         
            +
             
     | 
| 
      
 181 
     | 
    
         
            +
            .gt {
         
     | 
| 
      
 182 
     | 
    
         
            +
              color: #aa0000; }
         
     | 
| 
      
 183 
     | 
    
         
            +
             
     | 
| 
      
 184 
     | 
    
         
            +
            .kc {
         
     | 
| 
      
 185 
     | 
    
         
            +
              font-weight: bold; }
         
     | 
| 
      
 186 
     | 
    
         
            +
             
     | 
| 
      
 187 
     | 
    
         
            +
            .kd {
         
     | 
| 
      
 188 
     | 
    
         
            +
              font-weight: bold; }
         
     | 
| 
      
 189 
     | 
    
         
            +
             
     | 
| 
      
 190 
     | 
    
         
            +
            .kn {
         
     | 
| 
      
 191 
     | 
    
         
            +
              font-weight: bold; }
         
     | 
| 
      
 192 
     | 
    
         
            +
             
     | 
| 
      
 193 
     | 
    
         
            +
            .kp {
         
     | 
| 
      
 194 
     | 
    
         
            +
              font-weight: bold; }
         
     | 
| 
      
 195 
     | 
    
         
            +
             
     | 
| 
      
 196 
     | 
    
         
            +
            .kr {
         
     | 
| 
      
 197 
     | 
    
         
            +
              font-weight: bold; }
         
     | 
| 
      
 198 
     | 
    
         
            +
             
     | 
| 
      
 199 
     | 
    
         
            +
            .kt {
         
     | 
| 
      
 200 
     | 
    
         
            +
              color: #445588;
         
     | 
| 
      
 201 
     | 
    
         
            +
              font-weight: bold; }
         
     | 
| 
      
 202 
     | 
    
         
            +
             
     | 
| 
      
 203 
     | 
    
         
            +
            .m {
         
     | 
| 
      
 204 
     | 
    
         
            +
              color: #009999; }
         
     | 
| 
      
 205 
     | 
    
         
            +
             
     | 
| 
      
 206 
     | 
    
         
            +
            .s {
         
     | 
| 
      
 207 
     | 
    
         
            +
              color: #dd1144; }
         
     | 
| 
      
 208 
     | 
    
         
            +
             
     | 
| 
      
 209 
     | 
    
         
            +
            .n {
         
     | 
| 
      
 210 
     | 
    
         
            +
              color: #333333; }
         
     | 
| 
      
 211 
     | 
    
         
            +
             
     | 
| 
      
 212 
     | 
    
         
            +
            .na {
         
     | 
| 
      
 213 
     | 
    
         
            +
              color: teal; }
         
     | 
| 
      
 214 
     | 
    
         
            +
             
     | 
| 
      
 215 
     | 
    
         
            +
            .nb {
         
     | 
| 
      
 216 
     | 
    
         
            +
              color: #0086b3; }
         
     | 
| 
      
 217 
     | 
    
         
            +
             
     | 
| 
      
 218 
     | 
    
         
            +
            .nc {
         
     | 
| 
      
 219 
     | 
    
         
            +
              color: #445588;
         
     | 
| 
      
 220 
     | 
    
         
            +
              font-weight: bold; }
         
     | 
| 
      
 221 
     | 
    
         
            +
             
     | 
| 
      
 222 
     | 
    
         
            +
            .no {
         
     | 
| 
      
 223 
     | 
    
         
            +
              color: teal; }
         
     | 
| 
      
 224 
     | 
    
         
            +
             
     | 
| 
      
 225 
     | 
    
         
            +
            .ni {
         
     | 
| 
      
 226 
     | 
    
         
            +
              color: purple; }
         
     | 
| 
      
 227 
     | 
    
         
            +
             
     | 
| 
      
 228 
     | 
    
         
            +
            .ne {
         
     | 
| 
      
 229 
     | 
    
         
            +
              color: #990000;
         
     | 
| 
      
 230 
     | 
    
         
            +
              font-weight: bold; }
         
     | 
| 
      
 231 
     | 
    
         
            +
             
     | 
| 
      
 232 
     | 
    
         
            +
            .nf {
         
     | 
| 
      
 233 
     | 
    
         
            +
              color: #990000;
         
     | 
| 
      
 234 
     | 
    
         
            +
              font-weight: bold; }
         
     | 
| 
      
 235 
     | 
    
         
            +
             
     | 
| 
      
 236 
     | 
    
         
            +
            .nn {
         
     | 
| 
      
 237 
     | 
    
         
            +
              color: #555555; }
         
     | 
| 
      
 238 
     | 
    
         
            +
             
     | 
| 
      
 239 
     | 
    
         
            +
            .nt {
         
     | 
| 
      
 240 
     | 
    
         
            +
              color: navy; }
         
     | 
| 
      
 241 
     | 
    
         
            +
             
     | 
| 
      
 242 
     | 
    
         
            +
            .nv {
         
     | 
| 
      
 243 
     | 
    
         
            +
              color: teal; }
         
     | 
| 
      
 244 
     | 
    
         
            +
             
     | 
| 
      
 245 
     | 
    
         
            +
            .ow {
         
     | 
| 
      
 246 
     | 
    
         
            +
              font-weight: bold; }
         
     | 
| 
      
 247 
     | 
    
         
            +
             
     | 
| 
      
 248 
     | 
    
         
            +
            .w {
         
     | 
| 
      
 249 
     | 
    
         
            +
              color: #bbbbbb; }
         
     | 
| 
      
 250 
     | 
    
         
            +
             
     | 
| 
      
 251 
     | 
    
         
            +
            .mf {
         
     | 
| 
      
 252 
     | 
    
         
            +
              color: #009999; }
         
     | 
| 
      
 253 
     | 
    
         
            +
             
     | 
| 
      
 254 
     | 
    
         
            +
            .mh {
         
     | 
| 
      
 255 
     | 
    
         
            +
              color: #009999; }
         
     | 
| 
      
 256 
     | 
    
         
            +
             
     | 
| 
      
 257 
     | 
    
         
            +
            .mi {
         
     | 
| 
      
 258 
     | 
    
         
            +
              color: #009999; }
         
     | 
| 
      
 259 
     | 
    
         
            +
             
     | 
| 
      
 260 
     | 
    
         
            +
            .mo {
         
     | 
| 
      
 261 
     | 
    
         
            +
              color: #009999; }
         
     | 
| 
      
 262 
     | 
    
         
            +
             
     | 
| 
      
 263 
     | 
    
         
            +
            .sb {
         
     | 
| 
      
 264 
     | 
    
         
            +
              color: #dd1144; }
         
     | 
| 
      
 265 
     | 
    
         
            +
             
     | 
| 
      
 266 
     | 
    
         
            +
            .sc {
         
     | 
| 
      
 267 
     | 
    
         
            +
              color: #dd1144; }
         
     | 
| 
      
 268 
     | 
    
         
            +
             
     | 
| 
      
 269 
     | 
    
         
            +
            .sd {
         
     | 
| 
      
 270 
     | 
    
         
            +
              color: #dd1144; }
         
     | 
| 
      
 271 
     | 
    
         
            +
             
     | 
| 
      
 272 
     | 
    
         
            +
            .s2 {
         
     | 
| 
      
 273 
     | 
    
         
            +
              color: #dd1144; }
         
     | 
| 
      
 274 
     | 
    
         
            +
             
     | 
| 
      
 275 
     | 
    
         
            +
            .se {
         
     | 
| 
      
 276 
     | 
    
         
            +
              color: #dd1144; }
         
     | 
| 
      
 277 
     | 
    
         
            +
             
     | 
| 
      
 278 
     | 
    
         
            +
            .sh {
         
     | 
| 
      
 279 
     | 
    
         
            +
              color: #dd1144; }
         
     | 
| 
      
 280 
     | 
    
         
            +
             
     | 
| 
      
 281 
     | 
    
         
            +
            .si {
         
     | 
| 
      
 282 
     | 
    
         
            +
              color: #dd1144; }
         
     | 
| 
      
 283 
     | 
    
         
            +
             
     | 
| 
      
 284 
     | 
    
         
            +
            .sx {
         
     | 
| 
      
 285 
     | 
    
         
            +
              color: #dd1144; }
         
     | 
| 
      
 286 
     | 
    
         
            +
             
     | 
| 
      
 287 
     | 
    
         
            +
            .sr {
         
     | 
| 
      
 288 
     | 
    
         
            +
              color: #009926; }
         
     | 
| 
      
 289 
     | 
    
         
            +
             
     | 
| 
      
 290 
     | 
    
         
            +
            .s1 {
         
     | 
| 
      
 291 
     | 
    
         
            +
              color: #dd1144; }
         
     | 
| 
      
 292 
     | 
    
         
            +
             
     | 
| 
      
 293 
     | 
    
         
            +
            .ss {
         
     | 
| 
      
 294 
     | 
    
         
            +
              color: #990073; }
         
     | 
| 
      
 295 
     | 
    
         
            +
             
     | 
| 
      
 296 
     | 
    
         
            +
            .bp {
         
     | 
| 
      
 297 
     | 
    
         
            +
              color: #999999; }
         
     | 
| 
      
 298 
     | 
    
         
            +
             
     | 
| 
      
 299 
     | 
    
         
            +
            .vc {
         
     | 
| 
      
 300 
     | 
    
         
            +
              color: teal; }
         
     | 
| 
      
 301 
     | 
    
         
            +
             
     | 
| 
      
 302 
     | 
    
         
            +
            .vg {
         
     | 
| 
      
 303 
     | 
    
         
            +
              color: teal; }
         
     | 
| 
      
 304 
     | 
    
         
            +
             
     | 
| 
      
 305 
     | 
    
         
            +
            .vi {
         
     | 
| 
      
 306 
     | 
    
         
            +
              color: teal; }
         
     | 
| 
      
 307 
     | 
    
         
            +
             
     | 
| 
      
 308 
     | 
    
         
            +
            .il {
         
     | 
| 
      
 309 
     | 
    
         
            +
              color: #009999; }
         
     | 
| 
      
 310 
     | 
    
         
            +
             
     | 
| 
      
 311 
     | 
    
         
            +
            .gc {
         
     | 
| 
      
 312 
     | 
    
         
            +
              color: #999;
         
     | 
| 
      
 313 
     | 
    
         
            +
              background-color: #EAF2F5; }
         
     | 
| 
      
 314 
     | 
    
         
            +
             
     | 
| 
      
 315 
     | 
    
         
            +
            pre {
         
     | 
| 
      
 316 
     | 
    
         
            +
              padding: 15px;
         
     | 
| 
      
 317 
     | 
    
         
            +
              line-height: 17px; }
         
     | 
| 
         @@ -0,0 +1,198 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            $white: #fff;
         
     | 
| 
      
 2 
     | 
    
         
            +
            $light_gray: #efefef;
         
     | 
| 
      
 3 
     | 
    
         
            +
            $dark_gray: #666;
         
     | 
| 
      
 4 
     | 
    
         
            +
            $black: #000;
         
     | 
| 
      
 5 
     | 
    
         
            +
            ////////////////////////////////////////////////////////////////////////////////
         
     | 
| 
      
 6 
     | 
    
         
            +
            h1, h2, h3, p, blockquote {
         
     | 
| 
      
 7 
     | 
    
         
            +
              margin: 0;
         
     | 
| 
      
 8 
     | 
    
         
            +
              padding: 0;
         
     | 
| 
      
 9 
     | 
    
         
            +
            }
         
     | 
| 
      
 10 
     | 
    
         
            +
            @font-face {
         
     | 
| 
      
 11 
     | 
    
         
            +
              font-family: 'Open Sans';
         
     | 
| 
      
 12 
     | 
    
         
            +
              font-style: normal;
         
     | 
| 
      
 13 
     | 
    
         
            +
              font-weight: 400;
         
     | 
| 
      
 14 
     | 
    
         
            +
              src: local('Open Sans'), local('OpenSans'), url(res/Open_Sans.woff) format('woff');
         
     | 
| 
      
 15 
     | 
    
         
            +
            }
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            body {
         
     | 
| 
      
 18 
     | 
    
         
            +
              font-family: 'Open Sans', sans-serif;
         
     | 
| 
      
 19 
     | 
    
         
            +
              font-size: 14px;
         
     | 
| 
      
 20 
     | 
    
         
            +
              color: $black;
         
     | 
| 
      
 21 
     | 
    
         
            +
              background-color: $white;
         
     | 
| 
      
 22 
     | 
    
         
            +
              margin: 0;
         
     | 
| 
      
 23 
     | 
    
         
            +
            }
         
     | 
| 
      
 24 
     | 
    
         
            +
            code, pre {
         
     | 
| 
      
 25 
     | 
    
         
            +
              font-family: Menlo, Consolas, "Liberation Mono", Courier, monospace;
         
     | 
| 
      
 26 
     | 
    
         
            +
              font-size:13px;
         
     | 
| 
      
 27 
     | 
    
         
            +
            }
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            code {  
         
     | 
| 
      
 30 
     | 
    
         
            +
              margin:0;
         
     | 
| 
      
 31 
     | 
    
         
            +
              border:1px solid #ddd;
         
     | 
| 
      
 32 
     | 
    
         
            +
              background-color:#f8f8f8;
         
     | 
| 
      
 33 
     | 
    
         
            +
              border-radius:3px;
         
     | 
| 
      
 34 
     | 
    
         
            +
            }
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            code:before, code:after {
         
     | 
| 
      
 37 
     | 
    
         
            +
              content: "\00a0";
         
     | 
| 
      
 38 
     | 
    
         
            +
            }
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            ////////////////////////////////////////////////////////////////////////////////
         
     | 
| 
      
 41 
     | 
    
         
            +
            header {
         
     | 
| 
      
 42 
     | 
    
         
            +
              color: $light_gray;
         
     | 
| 
      
 43 
     | 
    
         
            +
              background-color: $dark_gray;
         
     | 
| 
      
 44 
     | 
    
         
            +
              padding: 0px 10px 3px 10px;
         
     | 
| 
      
 45 
     | 
    
         
            +
            }
         
     | 
| 
      
 46 
     | 
    
         
            +
            h1 {
         
     | 
| 
      
 47 
     | 
    
         
            +
              font-size: 35px;
         
     | 
| 
      
 48 
     | 
    
         
            +
            }
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            ////////////////////////////////////////////////////////////////////////////////
         
     | 
| 
      
 51 
     | 
    
         
            +
            footer {
         
     | 
| 
      
 52 
     | 
    
         
            +
              margin: 1em;
         
     | 
| 
      
 53 
     | 
    
         
            +
              background-color: $dark_gray;
         
     | 
| 
      
 54 
     | 
    
         
            +
              color: $light_gray;
         
     | 
| 
      
 55 
     | 
    
         
            +
              border-radius: 10px;
         
     | 
| 
      
 56 
     | 
    
         
            +
              text-align: center;
         
     | 
| 
      
 57 
     | 
    
         
            +
              a {
         
     | 
| 
      
 58 
     | 
    
         
            +
                color: $light_gray;
         
     | 
| 
      
 59 
     | 
    
         
            +
              }
         
     | 
| 
      
 60 
     | 
    
         
            +
            }
         
     | 
| 
      
 61 
     | 
    
         
            +
            ////////////////////////////////////////////////////////////////////////////////
         
     | 
| 
      
 62 
     | 
    
         
            +
            // notes
         
     | 
| 
      
 63 
     | 
    
         
            +
            section.notes {
         
     | 
| 
      
 64 
     | 
    
         
            +
              margin-top: 1em;
         
     | 
| 
      
 65 
     | 
    
         
            +
              h2 {
         
     | 
| 
      
 66 
     | 
    
         
            +
                color: $dark_gray;
         
     | 
| 
      
 67 
     | 
    
         
            +
                font-size: 1.5em;
         
     | 
| 
      
 68 
     | 
    
         
            +
              }
         
     | 
| 
      
 69 
     | 
    
         
            +
            }
         
     | 
| 
      
 70 
     | 
    
         
            +
            ////////////////////////////////////////////////////////////////////////////////
         
     | 
| 
      
 71 
     | 
    
         
            +
            article {
         
     | 
| 
      
 72 
     | 
    
         
            +
              margin: 2em 1em;
         
     | 
| 
      
 73 
     | 
    
         
            +
            }
         
     | 
| 
      
 74 
     | 
    
         
            +
            section.category {
         
     | 
| 
      
 75 
     | 
    
         
            +
              border: 2px solid $dark_gray;
         
     | 
| 
      
 76 
     | 
    
         
            +
              border-radius: 10px;
         
     | 
| 
      
 77 
     | 
    
         
            +
              background-color: $dark_gray;
         
     | 
| 
      
 78 
     | 
    
         
            +
              margin: 2em 0;
         
     | 
| 
      
 79 
     | 
    
         
            +
              overflow: hidden;
         
     | 
| 
      
 80 
     | 
    
         
            +
              h2 {
         
     | 
| 
      
 81 
     | 
    
         
            +
                color: $white;
         
     | 
| 
      
 82 
     | 
    
         
            +
                font-size: 1.5em;
         
     | 
| 
      
 83 
     | 
    
         
            +
                text-align: center;
         
     | 
| 
      
 84 
     | 
    
         
            +
                margin-top: -2px;
         
     | 
| 
      
 85 
     | 
    
         
            +
              }
         
     | 
| 
      
 86 
     | 
    
         
            +
              padding-bottom: 5px;
         
     | 
| 
      
 87 
     | 
    
         
            +
            }
         
     | 
| 
      
 88 
     | 
    
         
            +
            table {
         
     | 
| 
      
 89 
     | 
    
         
            +
              background-color: $white;
         
     | 
| 
      
 90 
     | 
    
         
            +
              border-collapse: collapse;
         
     | 
| 
      
 91 
     | 
    
         
            +
              width: 100%;
         
     | 
| 
      
 92 
     | 
    
         
            +
            }
         
     | 
| 
      
 93 
     | 
    
         
            +
            td {
         
     | 
| 
      
 94 
     | 
    
         
            +
              padding: 6px 2px 2px 8px;
         
     | 
| 
      
 95 
     | 
    
         
            +
            }
         
     | 
| 
      
 96 
     | 
    
         
            +
            td.command {
         
     | 
| 
      
 97 
     | 
    
         
            +
              width: 1%;
         
     | 
| 
      
 98 
     | 
    
         
            +
              white-space: nowrap;
         
     | 
| 
      
 99 
     | 
    
         
            +
              vertical-align: top;
         
     | 
| 
      
 100 
     | 
    
         
            +
              padding: 8px 8px 0 7px;
         
     | 
| 
      
 101 
     | 
    
         
            +
              code {
         
     | 
| 
      
 102 
     | 
    
         
            +
                // Nice key styling:
         
     | 
| 
      
 103 
     | 
    
         
            +
                // https://developers.google.com/chrome-developer-tools/docs/shortcuts
         
     | 
| 
      
 104 
     | 
    
         
            +
                padding: .1em .6em;
         
     | 
| 
      
 105 
     | 
    
         
            +
                box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2), 0 0 0 2px #fff inset;
         
     | 
| 
      
 106 
     | 
    
         
            +
                border-radius: 3px;
         
     | 
| 
      
 107 
     | 
    
         
            +
                border: 1px solid #ccc;
         
     | 
| 
      
 108 
     | 
    
         
            +
                background-color: $light_gray;
         
     | 
| 
      
 109 
     | 
    
         
            +
                color: #333;
         
     | 
| 
      
 110 
     | 
    
         
            +
              }
         
     | 
| 
      
 111 
     | 
    
         
            +
            }
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
            td.description {
         
     | 
| 
      
 114 
     | 
    
         
            +
              .name {
         
     | 
| 
      
 115 
     | 
    
         
            +
                font-size: 1.2em;
         
     | 
| 
      
 116 
     | 
    
         
            +
              }
         
     | 
| 
      
 117 
     | 
    
         
            +
            }
         
     | 
| 
      
 118 
     | 
    
         
            +
            tr:nth-child(even) {
         
     | 
| 
      
 119 
     | 
    
         
            +
              background: $light_gray;
         
     | 
| 
      
 120 
     | 
    
         
            +
            }
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
            a {
         
     | 
| 
      
 123 
     | 
    
         
            +
              color: $dark_gray;
         
     | 
| 
      
 124 
     | 
    
         
            +
            }
         
     | 
| 
      
 125 
     | 
    
         
            +
             
     | 
| 
      
 126 
     | 
    
         
            +
            p {
         
     | 
| 
      
 127 
     | 
    
         
            +
              margin:0 0 4px;
         
     | 
| 
      
 128 
     | 
    
         
            +
            }
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
            .highlight { background-color: #f8f8f8; border: 1px solid #ccc; padding: 6px 10px; border-radius: 3px; margin-right:15px; white-space: pre-wrap; word-wrap:break-word;}
         
     | 
| 
      
 131 
     | 
    
         
            +
            .c { color: #999988; font-style: italic; }
         
     | 
| 
      
 132 
     | 
    
         
            +
            .err { color: #a61717; background-color: #e3d2d2; }
         
     | 
| 
      
 133 
     | 
    
         
            +
            .k { font-weight: bold; }
         
     | 
| 
      
 134 
     | 
    
         
            +
            .o { font-weight: bold; }
         
     | 
| 
      
 135 
     | 
    
         
            +
            .cm { color: #999988; font-style: italic; }
         
     | 
| 
      
 136 
     | 
    
         
            +
            .cp { color: #999999; font-weight: bold; }
         
     | 
| 
      
 137 
     | 
    
         
            +
            .c1 { color: #999988; font-style: italic; }
         
     | 
| 
      
 138 
     | 
    
         
            +
            .cs { color: #999999; font-weight: bold; font-style: italic; }
         
     | 
| 
      
 139 
     | 
    
         
            +
            .gd { color: #000000; background-color: #ffdddd; }
         
     | 
| 
      
 140 
     | 
    
         
            +
            .gd .x { color: #000000; background-color: #ffaaaa; }
         
     | 
| 
      
 141 
     | 
    
         
            +
            .ge { font-style: italic; }
         
     | 
| 
      
 142 
     | 
    
         
            +
            .gr { color: #aa0000; }
         
     | 
| 
      
 143 
     | 
    
         
            +
            .gh { color: #999999; }
         
     | 
| 
      
 144 
     | 
    
         
            +
            .gi { color: #000000; background-color: #ddffdd; }
         
     | 
| 
      
 145 
     | 
    
         
            +
            .gi .x { color: #000000; background-color: #aaffaa; }
         
     | 
| 
      
 146 
     | 
    
         
            +
            .go { color: #888888; }
         
     | 
| 
      
 147 
     | 
    
         
            +
            .gp { color: #555555; }
         
     | 
| 
      
 148 
     | 
    
         
            +
            .gs { font-weight: bold; }
         
     | 
| 
      
 149 
     | 
    
         
            +
            .gu { color: #800080; font-weight: bold; }
         
     | 
| 
      
 150 
     | 
    
         
            +
            .gt { color: #aa0000; }
         
     | 
| 
      
 151 
     | 
    
         
            +
            .kc { font-weight: bold; }
         
     | 
| 
      
 152 
     | 
    
         
            +
            .kd { font-weight: bold; }
         
     | 
| 
      
 153 
     | 
    
         
            +
            .kn { font-weight: bold; }
         
     | 
| 
      
 154 
     | 
    
         
            +
            .kp { font-weight: bold; }
         
     | 
| 
      
 155 
     | 
    
         
            +
            .kr { font-weight: bold; }
         
     | 
| 
      
 156 
     | 
    
         
            +
            .kt { color: #445588; font-weight: bold; }
         
     | 
| 
      
 157 
     | 
    
         
            +
            .m { color: #009999; }
         
     | 
| 
      
 158 
     | 
    
         
            +
            .s { color: #dd1144; }
         
     | 
| 
      
 159 
     | 
    
         
            +
            .n { color: #333333; }
         
     | 
| 
      
 160 
     | 
    
         
            +
            .na { color: teal; }
         
     | 
| 
      
 161 
     | 
    
         
            +
            .nb { color: #0086b3; }
         
     | 
| 
      
 162 
     | 
    
         
            +
            .nc { color: #445588; font-weight: bold; }
         
     | 
| 
      
 163 
     | 
    
         
            +
            .no { color: teal; }
         
     | 
| 
      
 164 
     | 
    
         
            +
            .ni { color: purple; }
         
     | 
| 
      
 165 
     | 
    
         
            +
            .ne { color: #990000; font-weight: bold; }
         
     | 
| 
      
 166 
     | 
    
         
            +
            .nf { color: #990000; font-weight: bold; }
         
     | 
| 
      
 167 
     | 
    
         
            +
            .nn { color: #555555; }
         
     | 
| 
      
 168 
     | 
    
         
            +
            .nt { color: navy; }
         
     | 
| 
      
 169 
     | 
    
         
            +
            .nv { color: teal; }
         
     | 
| 
      
 170 
     | 
    
         
            +
            .ow { font-weight: bold; }
         
     | 
| 
      
 171 
     | 
    
         
            +
            .w { color: #bbbbbb; }
         
     | 
| 
      
 172 
     | 
    
         
            +
            .mf { color: #009999; }
         
     | 
| 
      
 173 
     | 
    
         
            +
            .mh { color: #009999; }
         
     | 
| 
      
 174 
     | 
    
         
            +
            .mi { color: #009999; }
         
     | 
| 
      
 175 
     | 
    
         
            +
            .mo { color: #009999; }
         
     | 
| 
      
 176 
     | 
    
         
            +
            .sb { color: #dd1144; }
         
     | 
| 
      
 177 
     | 
    
         
            +
            .sc { color: #dd1144; }
         
     | 
| 
      
 178 
     | 
    
         
            +
            .sd { color: #dd1144; }
         
     | 
| 
      
 179 
     | 
    
         
            +
            .s2 { color: #dd1144; }
         
     | 
| 
      
 180 
     | 
    
         
            +
            .se { color: #dd1144; }
         
     | 
| 
      
 181 
     | 
    
         
            +
            .sh { color: #dd1144; }
         
     | 
| 
      
 182 
     | 
    
         
            +
            .si { color: #dd1144; }
         
     | 
| 
      
 183 
     | 
    
         
            +
            .sx { color: #dd1144; }
         
     | 
| 
      
 184 
     | 
    
         
            +
            .sr { color: #009926; }
         
     | 
| 
      
 185 
     | 
    
         
            +
            .s1 { color: #dd1144; }
         
     | 
| 
      
 186 
     | 
    
         
            +
            .ss { color: #990073; }
         
     | 
| 
      
 187 
     | 
    
         
            +
            .bp { color: #999999; }
         
     | 
| 
      
 188 
     | 
    
         
            +
            .vc { color: teal; }
         
     | 
| 
      
 189 
     | 
    
         
            +
            .vg { color: teal; }
         
     | 
| 
      
 190 
     | 
    
         
            +
            .vi { color: teal; }
         
     | 
| 
      
 191 
     | 
    
         
            +
            .il { color: #009999; }
         
     | 
| 
      
 192 
     | 
    
         
            +
            .gc { color: #999; background-color: #EAF2F5; }
         
     | 
| 
      
 193 
     | 
    
         
            +
             
     | 
| 
      
 194 
     | 
    
         
            +
            pre {
         
     | 
| 
      
 195 
     | 
    
         
            +
              padding: 15px;
         
     | 
| 
      
 196 
     | 
    
         
            +
              line-height: 17px;
         
     | 
| 
      
 197 
     | 
    
         
            +
            }
         
     | 
| 
      
 198 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,36 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            !!!
         
     | 
| 
      
 2 
     | 
    
         
            +
            %html
         
     | 
| 
      
 3 
     | 
    
         
            +
              %head
         
     | 
| 
      
 4 
     | 
    
         
            +
                %meta{charset: 'utf-8'}
         
     | 
| 
      
 5 
     | 
    
         
            +
                %title= title
         
     | 
| 
      
 6 
     | 
    
         
            +
                %link{rel: 'stylesheet', href: 'style.css'}
         
     | 
| 
      
 7 
     | 
    
         
            +
              %body
         
     | 
| 
      
 8 
     | 
    
         
            +
                %header
         
     | 
| 
      
 9 
     | 
    
         
            +
                  %h1= title
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                %article
         
     | 
| 
      
 12 
     | 
    
         
            +
                  %p~ introduction
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                  - categories.each do |category|
         
     | 
| 
      
 15 
     | 
    
         
            +
                    %section.category
         
     | 
| 
      
 16 
     | 
    
         
            +
                      %h2= category.id
         
     | 
| 
      
 17 
     | 
    
         
            +
                      %table
         
     | 
| 
      
 18 
     | 
    
         
            +
                        - category.entries.each_with_index do |entry, index|
         
     | 
| 
      
 19 
     | 
    
         
            +
                          %tr{id: "#{category.id}-#{index}"}
         
     | 
| 
      
 20 
     | 
    
         
            +
                            - if entry.command
         
     | 
| 
      
 21 
     | 
    
         
            +
                              %td.command
         
     | 
| 
      
 22 
     | 
    
         
            +
                                - entry.command.each do |command|
         
     | 
| 
      
 23 
     | 
    
         
            +
                                  %p
         
     | 
| 
      
 24 
     | 
    
         
            +
                                    %code= command
         
     | 
| 
      
 25 
     | 
    
         
            +
                            %td.description
         
     | 
| 
      
 26 
     | 
    
         
            +
                              .name~ entry.name
         
     | 
| 
      
 27 
     | 
    
         
            +
                              .notes~ entry.notes
         
     | 
| 
      
 28 
     | 
    
         
            +
                  - if notes
         
     | 
| 
      
 29 
     | 
    
         
            +
                    %section.notes
         
     | 
| 
      
 30 
     | 
    
         
            +
                      %h2 Notes
         
     | 
| 
      
 31 
     | 
    
         
            +
                      ~ notes
         
     | 
| 
      
 32 
     | 
    
         
            +
                %footer
         
     | 
| 
      
 33 
     | 
    
         
            +
                  - if source_url
         
     | 
| 
      
 34 
     | 
    
         
            +
                    You can modify and improve this cheatsheet <a href="#{source_url}">here</a>.
         
     | 
| 
      
 35 
     | 
    
         
            +
                  - else
         
     | 
| 
      
 36 
     | 
    
         
            +
                    Generated with <a href='https://github.com/Kapeli/cheatset#readme'>cheatset</a>.
         
     | 
    
        data/lib/cheatset.rb
    ADDED
    
    
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,206 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: cheatset
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.0.0
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Bogdan Popescu
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2014-02-19 00:00:00.000000000 Z
         
     | 
| 
      
 12 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 13 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 14 
     | 
    
         
            +
              name: bundler
         
     | 
| 
      
 15 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 16 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 17 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 18 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 19 
     | 
    
         
            +
                    version: '1.3'
         
     | 
| 
      
 20 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 21 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 22 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 23 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 24 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 25 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 26 
     | 
    
         
            +
                    version: '1.3'
         
     | 
| 
      
 27 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 28 
     | 
    
         
            +
              name: rake
         
     | 
| 
      
 29 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 30 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - '>='
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 34 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 35 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 37 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 38 
     | 
    
         
            +
                - - '>='
         
     | 
| 
      
 39 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 40 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 41 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 42 
     | 
    
         
            +
              name: thor
         
     | 
| 
      
 43 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 44 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 45 
     | 
    
         
            +
                - - '>='
         
     | 
| 
      
 46 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 47 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 48 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 49 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 50 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 51 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 52 
     | 
    
         
            +
                - - '>='
         
     | 
| 
      
 53 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 54 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 55 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 56 
     | 
    
         
            +
              name: haml
         
     | 
| 
      
 57 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 58 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 59 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 60 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 61 
     | 
    
         
            +
                    version: 4.0.3
         
     | 
| 
      
 62 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 63 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 64 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 65 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 66 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 67 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 68 
     | 
    
         
            +
                    version: 4.0.3
         
     | 
| 
      
 69 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 70 
     | 
    
         
            +
              name: sqlite3
         
     | 
| 
      
 71 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 72 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 73 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 74 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 75 
     | 
    
         
            +
                    version: 1.3.8
         
     | 
| 
      
 76 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 77 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 78 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 79 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 80 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 81 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 82 
     | 
    
         
            +
                    version: 1.3.8
         
     | 
| 
      
 83 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 84 
     | 
    
         
            +
              name: plist
         
     | 
| 
      
 85 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 86 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 87 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 88 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 89 
     | 
    
         
            +
                    version: 3.1.0
         
     | 
| 
      
 90 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 91 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 92 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 93 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 94 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 95 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 96 
     | 
    
         
            +
                    version: 3.1.0
         
     | 
| 
      
 97 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 98 
     | 
    
         
            +
              name: redcarpet
         
     | 
| 
      
 99 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 100 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 101 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 102 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 103 
     | 
    
         
            +
                    version: 3.1.1
         
     | 
| 
      
 104 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 105 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 106 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 107 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 108 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 109 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 110 
     | 
    
         
            +
                    version: 3.1.1
         
     | 
| 
      
 111 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 112 
     | 
    
         
            +
              name: rouge
         
     | 
| 
      
 113 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 114 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 115 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 116 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 117 
     | 
    
         
            +
                    version: 1.3.2
         
     | 
| 
      
 118 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 119 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 120 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 121 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 122 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 123 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 124 
     | 
    
         
            +
                    version: 1.3.2
         
     | 
| 
      
 125 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 126 
     | 
    
         
            +
              name: sanitize
         
     | 
| 
      
 127 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 128 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 129 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 130 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 131 
     | 
    
         
            +
                    version: 2.0.6
         
     | 
| 
      
 132 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 133 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 134 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 135 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 136 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 137 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 138 
     | 
    
         
            +
                    version: 2.0.6
         
     | 
| 
      
 139 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 140 
     | 
    
         
            +
              name: unindent
         
     | 
| 
      
 141 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 142 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 143 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 144 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 145 
     | 
    
         
            +
                    version: '1.0'
         
     | 
| 
      
 146 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 147 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 148 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 149 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 150 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 151 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 152 
     | 
    
         
            +
                    version: '1.0'
         
     | 
| 
      
 153 
     | 
    
         
            +
            description: Generate cheatsheets for Dash
         
     | 
| 
      
 154 
     | 
    
         
            +
            email: 
         
     | 
| 
      
 155 
     | 
    
         
            +
            executables:
         
     | 
| 
      
 156 
     | 
    
         
            +
            - cheatset
         
     | 
| 
      
 157 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 158 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 159 
     | 
    
         
            +
            files:
         
     | 
| 
      
 160 
     | 
    
         
            +
            - .gitignore
         
     | 
| 
      
 161 
     | 
    
         
            +
            - Gemfile
         
     | 
| 
      
 162 
     | 
    
         
            +
            - LICENSE.txt
         
     | 
| 
      
 163 
     | 
    
         
            +
            - README.md
         
     | 
| 
      
 164 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 165 
     | 
    
         
            +
            - bin/cheatset
         
     | 
| 
      
 166 
     | 
    
         
            +
            - cheatset.gemspec
         
     | 
| 
      
 167 
     | 
    
         
            +
            - lib/cheatset.rb
         
     | 
| 
      
 168 
     | 
    
         
            +
            - lib/cheatset/cli.rb
         
     | 
| 
      
 169 
     | 
    
         
            +
            - lib/cheatset/creator.rb
         
     | 
| 
      
 170 
     | 
    
         
            +
            - lib/cheatset/dsl/base.rb
         
     | 
| 
      
 171 
     | 
    
         
            +
            - lib/cheatset/dsl/category.rb
         
     | 
| 
      
 172 
     | 
    
         
            +
            - lib/cheatset/dsl/cheatsheet.rb
         
     | 
| 
      
 173 
     | 
    
         
            +
            - lib/cheatset/dsl/context.rb
         
     | 
| 
      
 174 
     | 
    
         
            +
            - lib/cheatset/dsl/entry.rb
         
     | 
| 
      
 175 
     | 
    
         
            +
            - lib/cheatset/templates/.sass-cache/c0630dfea9543a0a71b68aca4887e98819b89684/style.scssc
         
     | 
| 
      
 176 
     | 
    
         
            +
            - lib/cheatset/templates/res/Open_Sans.woff
         
     | 
| 
      
 177 
     | 
    
         
            +
            - lib/cheatset/templates/style.css
         
     | 
| 
      
 178 
     | 
    
         
            +
            - lib/cheatset/templates/style.scss
         
     | 
| 
      
 179 
     | 
    
         
            +
            - lib/cheatset/templates/template.haml
         
     | 
| 
      
 180 
     | 
    
         
            +
            - lib/cheatset/version.rb
         
     | 
| 
      
 181 
     | 
    
         
            +
            homepage: https://github.com/Kapeli/cheatset
         
     | 
| 
      
 182 
     | 
    
         
            +
            licenses:
         
     | 
| 
      
 183 
     | 
    
         
            +
            - MIT
         
     | 
| 
      
 184 
     | 
    
         
            +
            metadata: {}
         
     | 
| 
      
 185 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 186 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 187 
     | 
    
         
            +
            require_paths:
         
     | 
| 
      
 188 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 189 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 190 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 191 
     | 
    
         
            +
              - - '>='
         
     | 
| 
      
 192 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 193 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 194 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 195 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 196 
     | 
    
         
            +
              - - '>='
         
     | 
| 
      
 197 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 198 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 199 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 200 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 201 
     | 
    
         
            +
            rubygems_version: 2.2.2
         
     | 
| 
      
 202 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 203 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
      
 204 
     | 
    
         
            +
            summary: Generate cheatsheets for Dash
         
     | 
| 
      
 205 
     | 
    
         
            +
            test_files: []
         
     | 
| 
      
 206 
     | 
    
         
            +
            has_rdoc: 
         
     |