- Node
- NPM
- CoffeeScript
- Jade
- Stylus
- docco
- Pygments for docco
pip install Pygments
npm install coffee-script docco jade stylus -g
| [submodule "lib/normalize.css"] | |
| path = lib/normalize.css | |
| url = git://github.com/necolas/normalize.css.git |
| #! coffeescript | |
| # My Cakefile for CoffeeScript, Stylus, & Jade: | |
| # created by [Yu Inao](http://twitter.com/japboy) in 2012 | |
| # TODO: cleancss による minify | |
| fs = require('fs') | |
| {print} = require('util') | |
| {spawn} = require('child_process') | |
| coffee = (watch=false, callback) -> | |
| if watch | |
| coffee = spawn('coffee', ['--watch', '--compile', '--output', './js', './js']) | |
| else | |
| coffee = spawn('coffee', ['--compile', '--output', './js', './js']) | |
| coffee.stderr.on 'data', (data) -> | |
| process.stderr.write(data.toString()) | |
| coffee.stdout.on 'data', (data) -> | |
| print(data.toString()) | |
| coffee.on 'exit', (code) -> | |
| callback?() if code is 0 | |
| stylus = (watch=false, callback) -> | |
| if watch | |
| stylus = spawn('stylus', ['--watch', './css', './css']) | |
| else | |
| stylus = spawn('stylus', ['--out', './css', './css']) | |
| stylus.stderr.on 'data', (data) -> | |
| process.stderr.write(data.toString()) | |
| stylus.stdout.on 'data', (data) -> | |
| print(data.toString()) | |
| stylus.on 'exit', (code) -> | |
| callback?() if code is 0 | |
| jade = (callback) -> | |
| jade = spawn('jade', ['--pretty', '--out', './', './']) | |
| jade.stderr.on 'data', (data) -> | |
| process.stderr.write(data.toString()) | |
| jade.stdout.on 'data', (data) -> | |
| print(data.toString()) | |
| jade.on 'exit', (code) -> | |
| callback?() if code is 0 | |
| optipng = (callback) -> | |
| optipng = spawn('optipng', ['-clobber', '-preserve', '-dir', './img', './img.orig/*.png']) | |
| optipng.stderr.on 'data', (data) -> | |
| process.stderr.write(data.toString()) | |
| optipng.stdout.on 'data', (data) -> | |
| print(data.toString()) | |
| optipng.on 'exit', (code) -> | |
| callback?() if code is 0 | |
| task 'build', 'Build meta language files', -> | |
| coffee() | |
| stylus() | |
| jade() | |
| optipng() | |
| task 'watch', 'Watch file changes and build them automatically', -> | |
| coffee(true) | |
| stylus(true) | |
| task 'open', 'Open index page with default UA', -> | |
| spawn('open', ['./index.html']) | |
| invoke('watch') | |
| /*--------------------- Layout and Typography ----------------------------*/ | |
| body { | |
| font-family: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif; | |
| font-size: 15px; | |
| line-height: 22px; | |
| color: #252519; | |
| margin: 0; padding: 0; | |
| } | |
| a { | |
| color: #261a3b; | |
| } | |
| a:visited { | |
| color: #261a3b; | |
| } | |
| p { | |
| margin: 0 0 15px 0; | |
| } | |
| h1, h2, h3, h4, h5, h6 { | |
| margin: 0px 0 15px 0; | |
| } | |
| h1 { | |
| margin-top: 40px; | |
| } | |
| #container { | |
| position: relative; | |
| } | |
| #background { | |
| position: fixed; | |
| top: 0; left: 525px; right: 0; bottom: 0; | |
| background: #f5f5ff; | |
| border-left: 1px solid #e5e5ee; | |
| z-index: -1; | |
| } | |
| #jump_to, #jump_page { | |
| background: white; | |
| -webkit-box-shadow: 0 0 25px #777; -moz-box-shadow: 0 0 25px #777; | |
| -webkit-border-bottom-left-radius: 5px; -moz-border-radius-bottomleft: 5px; | |
| font: 10px Arial; | |
| text-transform: uppercase; | |
| cursor: pointer; | |
| text-align: right; | |
| } | |
| #jump_to, #jump_wrapper { | |
| position: fixed; | |
| right: 0; top: 0; | |
| padding: 5px 10px; | |
| } | |
| #jump_wrapper { | |
| padding: 0; | |
| display: none; | |
| } | |
| #jump_to:hover #jump_wrapper { | |
| display: block; | |
| } | |
| #jump_page { | |
| padding: 5px 0 3px; | |
| margin: 0 0 25px 25px; | |
| } | |
| #jump_page .source { | |
| display: block; | |
| padding: 5px 10px; | |
| text-decoration: none; | |
| border-top: 1px solid #eee; | |
| } | |
| #jump_page .source:hover { | |
| background: #f5f5ff; | |
| } | |
| #jump_page .source:first-child { | |
| } | |
| table td { | |
| border: 0; | |
| outline: 0; | |
| } | |
| td.docs, th.docs { | |
| max-width: 450px; | |
| min-width: 450px; | |
| min-height: 5px; | |
| padding: 10px 25px 1px 50px; | |
| overflow-x: hidden; | |
| vertical-align: top; | |
| text-align: left; | |
| } | |
| .docs pre { | |
| margin: 15px 0 15px; | |
| padding-left: 15px; | |
| } | |
| .docs p tt, .docs p code { | |
| background: #f8f8ff; | |
| border: 1px solid #dedede; | |
| font-size: 12px; | |
| padding: 0 0.2em; | |
| } | |
| .pilwrap { | |
| position: relative; | |
| } | |
| .pilcrow { | |
| font: 12px Arial; | |
| text-decoration: none; | |
| color: #454545; | |
| position: absolute; | |
| top: 3px; left: -20px; | |
| padding: 1px 2px; | |
| opacity: 0; | |
| -webkit-transition: opacity 0.2s linear; | |
| } | |
| td.docs:hover .pilcrow { | |
| opacity: 1; | |
| } | |
| td.code, th.code { | |
| padding: 14px 15px 16px 25px; | |
| width: 100%; | |
| vertical-align: top; | |
| background: #f5f5ff; | |
| border-left: 1px solid #e5e5ee; | |
| } | |
| pre, tt, code { | |
| font-size: 12px; line-height: 18px; | |
| font-family: Monaco, Consolas, "Lucida Console", monospace; | |
| margin: 0; padding: 0; | |
| } | |
| /*---------------------- Syntax Highlighting -----------------------------*/ | |
| td.linenos { background-color: #f0f0f0; padding-right: 10px; } | |
| span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; } | |
| body .hll { background-color: #ffffcc } | |
| body .c { color: #408080; font-style: italic } /* Comment */ | |
| body .err { border: 1px solid #FF0000 } /* Error */ | |
| body .k { color: #954121 } /* Keyword */ | |
| body .o { color: #666666 } /* Operator */ | |
| body .cm { color: #408080; font-style: italic } /* Comment.Multiline */ | |
| body .cp { color: #BC7A00 } /* Comment.Preproc */ | |
| body .c1 { color: #408080; font-style: italic } /* Comment.Single */ | |
| body .cs { color: #408080; font-style: italic } /* Comment.Special */ | |
| body .gd { color: #A00000 } /* Generic.Deleted */ | |
| body .ge { font-style: italic } /* Generic.Emph */ | |
| body .gr { color: #FF0000 } /* Generic.Error */ | |
| body .gh { color: #000080; font-weight: bold } /* Generic.Heading */ | |
| body .gi { color: #00A000 } /* Generic.Inserted */ | |
| body .go { color: #808080 } /* Generic.Output */ | |
| body .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ | |
| body .gs { font-weight: bold } /* Generic.Strong */ | |
| body .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ | |
| body .gt { color: #0040D0 } /* Generic.Traceback */ | |
| body .kc { color: #954121 } /* Keyword.Constant */ | |
| body .kd { color: #954121; font-weight: bold } /* Keyword.Declaration */ | |
| body .kn { color: #954121; font-weight: bold } /* Keyword.Namespace */ | |
| body .kp { color: #954121 } /* Keyword.Pseudo */ | |
| body .kr { color: #954121; font-weight: bold } /* Keyword.Reserved */ | |
| body .kt { color: #B00040 } /* Keyword.Type */ | |
| body .m { color: #666666 } /* Literal.Number */ | |
| body .s { color: #219161 } /* Literal.String */ | |
| body .na { color: #7D9029 } /* Name.Attribute */ | |
| body .nb { color: #954121 } /* Name.Builtin */ | |
| body .nc { color: #0000FF; font-weight: bold } /* Name.Class */ | |
| body .no { color: #880000 } /* Name.Constant */ | |
| body .nd { color: #AA22FF } /* Name.Decorator */ | |
| body .ni { color: #999999; font-weight: bold } /* Name.Entity */ | |
| body .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ | |
| body .nf { color: #0000FF } /* Name.Function */ | |
| body .nl { color: #A0A000 } /* Name.Label */ | |
| body .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ | |
| body .nt { color: #954121; font-weight: bold } /* Name.Tag */ | |
| body .nv { color: #19469D } /* Name.Variable */ | |
| body .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ | |
| body .w { color: #bbbbbb } /* Text.Whitespace */ | |
| body .mf { color: #666666 } /* Literal.Number.Float */ | |
| body .mh { color: #666666 } /* Literal.Number.Hex */ | |
| body .mi { color: #666666 } /* Literal.Number.Integer */ | |
| body .mo { color: #666666 } /* Literal.Number.Oct */ | |
| body .sb { color: #219161 } /* Literal.String.Backtick */ | |
| body .sc { color: #219161 } /* Literal.String.Char */ | |
| body .sd { color: #219161; font-style: italic } /* Literal.String.Doc */ | |
| body .s2 { color: #219161 } /* Literal.String.Double */ | |
| body .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ | |
| body .sh { color: #219161 } /* Literal.String.Heredoc */ | |
| body .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ | |
| body .sx { color: #954121 } /* Literal.String.Other */ | |
| body .sr { color: #BB6688 } /* Literal.String.Regex */ | |
| body .s1 { color: #219161 } /* Literal.String.Single */ | |
| body .ss { color: #19469D } /* Literal.String.Symbol */ | |
| body .bp { color: #954121 } /* Name.Builtin.Pseudo */ | |
| body .vc { color: #19469D } /* Name.Variable.Class */ | |
| body .vg { color: #19469D } /* Name.Variable.Global */ | |
| body .vi { color: #19469D } /* Name.Variable.Instance */ | |
| body .il { color: #666666 } /* Literal.Number.Integer.Long */ |
| <!DOCTYPE html> <html> <head> <title>hello.coffee</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link rel="stylesheet" media="all" href="docco.css" /> </head> <body> <div id="container"> <div id="background"></div> <table cellpadding="0" cellspacing="0"> <thead> <tr> <th class="docs"> <h1> hello.coffee </h1> </th> <th class="code"> </th> </tr> </thead> <tbody> <tr id="section-1"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-1">¶</a> </div> <p>! coffeescript</p> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-2"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-2">¶</a> </div> <p>My skelton app <br /> | |
| created by <a href="http://twitter.com/japboy">Yu Inao</a> in 2012</p> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-3"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-3">¶</a> </div> <p><strong>Hello function</strong> <br /> | |
| This will attach an event for <code>#hello</code> element and the event will be | |
| triggered when <code>#hello</code> is clicked.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">hello = </span><span class="o">-></span> | |
| <span class="nv">el = </span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s">'hello'</span><span class="p">)</span> | |
| <span class="nx">el</span><span class="p">.</span><span class="nx">addEventListener</span> <span class="s">'click'</span><span class="p">,</span> <span class="nf">(event) -></span> | |
| <span class="vi">@innerText = </span><span class="s">'こんにちは、ぼくのアプリ!'</span></pre></div> </td> </tr> <tr id="section-4"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-4">¶</a> </div> <p>Run the function.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">hello</span><span class="p">()</span> | |
| </pre></div> </td> </tr> </tbody> </table> </div> </body> </html> |
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <title>skel</title> | |
| <meta name="author" content="Yu Inao"> | |
| <meta name="rights-standard" content="pd"> | |
| <link rel="shortcut icon" type="image/x-icon" href="./img/favicon.ico"> | |
| <link rel="stylesheet" href="./css/normalize.min.css"> | |
| <link rel="stylesheet" href="./css/style.min.css"><!--[if IE]> | |
| <link rel="stylesheet" href="./css/ie-hotfixies.css"><![endif]--><!--[if lt IE 9]> | |
| <script src="./js/html5shiv.js" charset="UTF-8"></script><![endif]--> | |
| </head> | |
| <body> | |
| <h1>skel</h1> | |
| <p id="hello">Hello, my app!</p> | |
| <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" charset="UTF-8"></script> | |
| <script src="./js/script.min.js"></script> | |
| </body> | |
| </html> |
| !!! 5 | |
| html | |
| head | |
| meta(charset='UTF-8') | |
| title skel | |
| meta(name='author', content='Yu Inao') | |
| meta(name='rights-standard', content='pd') | |
| link(rel='shortcut icon', type='image/x-icon', href='./img/favicon.ico') | |
| link(rel='stylesheet', href='./css/normalize.min.css') | |
| link(rel='stylesheet', href='./css/style.min.css') | |
| // | |
| [if IE]> | |
| link(rel='stylesheet', href='./css/ie-hotfixies.css') | |
| <![endif] | |
| // | |
| [if lt IE 9]> | |
| script(src='./js/html5shiv.js', charset='UTF-8') | |
| <![endif] | |
| body | |
| h1 skel | |
| p#hello Hello, my app! | |
| script(src='//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js', charset='UTF-8') | |
| script(src='./js/script.min.js') |
| { | |
| "name": "skel", | |
| "version": "0.0.1", | |
| "description": "My skelton app working with CoffeeScript & NPM.", | |
| "main": "js/hello.js", | |
| "scripts": { | |
| "test": "echo \"Error: no test specified\" && exit 1" | |
| }, | |
| "repository": { | |
| "type": "git", | |
| "url": "[email protected]:3080792.git" | |
| }, | |
| "author": "Yu Inao", | |
| "license": "Public Domain", | |
| "dependencies": { | |
| "coffee-script": ">=1.3.3", | |
| "docco": ">=0.3.0", | |
| "jade": ">=0.26.3", | |
| "stylus": ">=0.27.2" | |
| } | |
| } |
| #! coffeescript | |
| # My skelton app | |
| # created by [Yu Inao](http://twitter.com/japboy) in 2012 | |
| # **Hello function** | |
| # This will attach an event for `#hello` element and the event will be | |
| # triggered when `#hello` is clicked. | |
| hello = -> | |
| el = document.getElementById('hello') | |
| el.addEventListener 'click', (event) -> | |
| @innerText = 'こんにちは、ぼくのアプリ!' | |
| # Run the function. | |
| hello() |
| // Generated by CoffeeScript 1.3.3 | |
| (function() { | |
| var hello; | |
| hello = function() { | |
| var el; | |
| el = document.getElementById('hello'); | |
| return el.addEventListener('click', function(event) { | |
| return this.innerText = 'こんにちは、ぼくのアプリ!'; | |
| }); | |
| }; | |
| hello(); | |
| }).call(this); |
| body { | |
| background-color: #000; | |
| color: #fff; | |
| } |
| body | |
| background-color: rgb(0,0,0) | |
| color: rgb(255,255,255) |