prototyper 1.1.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 +1 -0
 - data/Gemfile +3 -0
 - data/MIT-LICENSE +20 -0
 - data/Rakefile +9 -0
 - data/bin/prototyper +45 -0
 - data/lib/prototyper/version.rb +3 -0
 - data/lib/prototyper.rb +14 -0
 - data/lib/templates/html/.DS_Store +0 -0
 - data/lib/templates/html/assets/javascripts/application.js +1 -0
 - data/lib/templates/html/assets/stylesheets/application.css +48 -0
 - data/lib/templates/html/index.html +15 -0
 - data/lib/templates/sinatra/Gemfile +4 -0
 - data/lib/templates/sinatra/Procfile +1 -0
 - data/lib/templates/sinatra/app.rb +14 -0
 - data/lib/templates/sinatra/assets/javascripts/application.js +12 -0
 - data/lib/templates/sinatra/assets/javascripts/html5shiv.js +8 -0
 - data/lib/templates/sinatra/assets/stylesheets/application.css +4 -0
 - data/lib/templates/sinatra/config.ru +2 -0
 - data/lib/templates/sinatra/views/index.erb +15 -0
 - data/prototyper.gemspec +18 -0
 - data/readme.md +69 -0
 - data/test/unit/prototyper.rb +76 -0
 - metadata +67 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 5b1deb281f928797789b695db7512912ee670cc1
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 8799ca3906b6f338724f8bd3351ecf83cc83a418
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 17ef46d46e124245a8508305b004cde5571554afb8125d7fc553b2068694a2a6b3ebb98f3d7e16460b5c52c6e5e621de2fdfb90449a3fcbd9cd3ff7645cfa775
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: adc583180ef55e165130344255a5916193a14f1f333af0a6cf92d025856647668c2518b8c0ef5b1f7cbbe4ca6ec544995405c6c4b63537f2dcd2b7cc09e281ad
         
     | 
    
        data/.gitignore
    ADDED
    
    | 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            *.gem
         
     | 
    
        data/Gemfile
    ADDED
    
    
    
        data/MIT-LICENSE
    ADDED
    
    | 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Copyright 2013 Jonathan Vingiano
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
      
 4 
     | 
    
         
            +
            a copy of this software and associated documentation files (the
         
     | 
| 
      
 5 
     | 
    
         
            +
            "Software"), to deal in the Software without restriction, including
         
     | 
| 
      
 6 
     | 
    
         
            +
            without limitation the rights to use, copy, modify, merge, publish,
         
     | 
| 
      
 7 
     | 
    
         
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         
     | 
| 
      
 8 
     | 
    
         
            +
            permit persons to whom the Software is furnished to do so, subject to
         
     | 
| 
      
 9 
     | 
    
         
            +
            the following conditions:
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be
         
     | 
| 
      
 12 
     | 
    
         
            +
            included in all copies or substantial portions of the Software.
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         
     | 
| 
      
 15 
     | 
    
         
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         
     | 
| 
      
 16 
     | 
    
         
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         
     | 
| 
      
 17 
     | 
    
         
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         
     | 
| 
      
 18 
     | 
    
         
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         
     | 
| 
      
 19 
     | 
    
         
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         
     | 
| 
      
 20 
     | 
    
         
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
    
        data/Rakefile
    ADDED
    
    
    
        data/bin/prototyper
    ADDED
    
    | 
         @@ -0,0 +1,45 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'optparse'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'pp'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            bin_file = Pathname.new(__FILE__).realpath
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            $:.unshift File.expand_path("../../lib", bin_file)
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            require 'prototyper'
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            options = {}
         
     | 
| 
      
 14 
     | 
    
         
            +
            options[:type] = :html # set default
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            OptionParser.new do |opts|
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              opts.banner = "Usage: prototyper [project_title] [options]"
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              opts.on("--type [TYPE]", [:sinatra, :html],
         
     | 
| 
      
 21 
     | 
    
         
            +
                "Select scaffolding type (sinatra, html). Default is HTML.") do |t|
         
     | 
| 
      
 22 
     | 
    
         
            +
                options[:type] = t
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              opts.on("--html",
         
     | 
| 
      
 26 
     | 
    
         
            +
                "Generate HTML scaffolding. Shortcut for --type html") do |t|
         
     | 
| 
      
 27 
     | 
    
         
            +
                options[:type] = :html
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              opts.on("--sinatra",
         
     | 
| 
      
 31 
     | 
    
         
            +
                "Generate Sinatra scaffolding. Shortcut for --type sinatra.") do |t|
         
     | 
| 
      
 32 
     | 
    
         
            +
                options[:type] = :sinatra
         
     | 
| 
      
 33 
     | 
    
         
            +
              end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            end.parse!
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            if ARGV.empty?
         
     | 
| 
      
 38 
     | 
    
         
            +
              puts "Usage: prototyper [project_title] [options]"
         
     | 
| 
      
 39 
     | 
    
         
            +
              puts ""
         
     | 
| 
      
 40 
     | 
    
         
            +
              puts "Type prototyper --help for more instruction."
         
     | 
| 
      
 41 
     | 
    
         
            +
            elsif Dir.exists?(Dir.pwd + "/" + ARGV.first)
         
     | 
| 
      
 42 
     | 
    
         
            +
              puts "That directory already exists."
         
     | 
| 
      
 43 
     | 
    
         
            +
            else
         
     | 
| 
      
 44 
     | 
    
         
            +
              Prototyper.generate(ARGV.first, options)
         
     | 
| 
      
 45 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/prototyper.rb
    ADDED
    
    | 
         @@ -0,0 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'fileutils'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Prototyper
         
     | 
| 
      
 4 
     | 
    
         
            +
              class << self
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                def generate(name, opts={ :type => "html" })
         
     | 
| 
      
 7 
     | 
    
         
            +
                  dir = FileUtils.mkdir(name)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  new_dir = "#{Dir.pwd}/#{name}"
         
     | 
| 
      
 9 
     | 
    
         
            +
                  FileUtils.cp_r Dir["#{Dir.pwd}/lib/templates/#{opts[:type].to_s}/*"], new_dir, :preserve => true, :verbose => true
         
     | 
| 
      
 10 
     | 
    
         
            +
                  puts "done!"
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
            end
         
     | 
| 
         Binary file 
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            window.onload = {}
         
     | 
| 
         @@ -0,0 +1,48 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            @-webkit-viewport   { width: device-width; }
         
     | 
| 
      
 2 
     | 
    
         
            +
            @-moz-viewport      { width: device-width; }
         
     | 
| 
      
 3 
     | 
    
         
            +
            @-ms-viewport       { width: device-width; }
         
     | 
| 
      
 4 
     | 
    
         
            +
            @-o-viewport        { width: device-width; }
         
     | 
| 
      
 5 
     | 
    
         
            +
            @viewport           { width: device-width; }
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            /*! normalize.css v2.1.2 | MIT License | git.io/normalize */
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
         
     | 
| 
      
 10 
     | 
    
         
            +
            audio,canvas,video{display:inline-block}
         
     | 
| 
      
 11 
     | 
    
         
            +
            audio:not([controls]){display:none;height:0}
         
     | 
| 
      
 12 
     | 
    
         
            +
            [hidden],template{display:none}
         
     | 
| 
      
 13 
     | 
    
         
            +
            html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
         
     | 
| 
      
 14 
     | 
    
         
            +
            body{margin:0}
         
     | 
| 
      
 15 
     | 
    
         
            +
            a{background:transparent}
         
     | 
| 
      
 16 
     | 
    
         
            +
            a:focus{outline:thin dotted}
         
     | 
| 
      
 17 
     | 
    
         
            +
            a:active,a:hover{outline:0}
         
     | 
| 
      
 18 
     | 
    
         
            +
            h1{font-size:2em;margin:.67em 0}
         
     | 
| 
      
 19 
     | 
    
         
            +
            abbr[title]{border-bottom:1px dotted}
         
     | 
| 
      
 20 
     | 
    
         
            +
            b,strong{font-weight:bold}
         
     | 
| 
      
 21 
     | 
    
         
            +
            dfn{font-style:italic}
         
     | 
| 
      
 22 
     | 
    
         
            +
            hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
         
     | 
| 
      
 23 
     | 
    
         
            +
            mark{background:#ff0;color:#000}
         
     | 
| 
      
 24 
     | 
    
         
            +
            code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}
         
     | 
| 
      
 25 
     | 
    
         
            +
            pre{white-space:pre-wrap}
         
     | 
| 
      
 26 
     | 
    
         
            +
            q{quotes:"\201C" "\201D" "\2018" "\2019"}
         
     | 
| 
      
 27 
     | 
    
         
            +
            small{font-size:80%}
         
     | 
| 
      
 28 
     | 
    
         
            +
            sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
         
     | 
| 
      
 29 
     | 
    
         
            +
            sup{top:-0.5em}
         
     | 
| 
      
 30 
     | 
    
         
            +
            sub{bottom:-0.25em}
         
     | 
| 
      
 31 
     | 
    
         
            +
            img{border:0}
         
     | 
| 
      
 32 
     | 
    
         
            +
            svg:not(:root){overflow:hidden}
         
     | 
| 
      
 33 
     | 
    
         
            +
            figure{margin:0}
         
     | 
| 
      
 34 
     | 
    
         
            +
            fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
         
     | 
| 
      
 35 
     | 
    
         
            +
            legend{border:0;padding:0}
         
     | 
| 
      
 36 
     | 
    
         
            +
            button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
         
     | 
| 
      
 37 
     | 
    
         
            +
            button,input{line-height:normal}
         
     | 
| 
      
 38 
     | 
    
         
            +
            button,select{text-transform:none}
         
     | 
| 
      
 39 
     | 
    
         
            +
            button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
         
     | 
| 
      
 40 
     | 
    
         
            +
            button[disabled],html input[disabled]{cursor:default}
         
     | 
| 
      
 41 
     | 
    
         
            +
            input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
         
     | 
| 
      
 42 
     | 
    
         
            +
            input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}
         
     | 
| 
      
 43 
     | 
    
         
            +
            input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}
         
     | 
| 
      
 44 
     | 
    
         
            +
            button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
         
     | 
| 
      
 45 
     | 
    
         
            +
            textarea{overflow:auto;vertical-align:top}
         
     | 
| 
      
 46 
     | 
    
         
            +
            table{border-collapse:collapse;border-spacing:0}
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            /* Site Style */
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!doctype html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <html>
         
     | 
| 
      
 3 
     | 
    
         
            +
              <head>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <meta charset="utf-8">
         
     | 
| 
      
 5 
     | 
    
         
            +
                <meta http-equiv="X-UA-Compatible" content="IE=edge">
         
     | 
| 
      
 6 
     | 
    
         
            +
                <title>❤</title>
         
     | 
| 
      
 7 
     | 
    
         
            +
                <link href="/assets/stylesheets/applicaiton.css" media="all" rel="stylesheet" type="text/css" />
         
     | 
| 
      
 8 
     | 
    
         
            +
                <script src="/assets/javascripts/application.js"></script>
         
     | 
| 
      
 9 
     | 
    
         
            +
                <!--[if lt IE 9]>
         
     | 
| 
      
 10 
     | 
    
         
            +
                  <script src="//ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
         
     | 
| 
      
 11 
     | 
    
         
            +
                <![endif]-->
         
     | 
| 
      
 12 
     | 
    
         
            +
              </head>
         
     | 
| 
      
 13 
     | 
    
         
            +
              <body>
         
     | 
| 
      
 14 
     | 
    
         
            +
              </body>
         
     | 
| 
      
 15 
     | 
    
         
            +
            </html>
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            web: bundle exec rackup config.ru -p $PORT
         
     | 
| 
         @@ -0,0 +1,12 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            window.requestAnimationFrame = (function(){
         
     | 
| 
      
 2 
     | 
    
         
            +
              return  window.requestAnimationFrame       ||
         
     | 
| 
      
 3 
     | 
    
         
            +
                      window.webkitRequestAnimationFrame ||
         
     | 
| 
      
 4 
     | 
    
         
            +
                      window.mozRequestAnimationFrame    ||
         
     | 
| 
      
 5 
     | 
    
         
            +
                      function( callback ){
         
     | 
| 
      
 6 
     | 
    
         
            +
                        window.setTimeout(callback, 1000 / 60);
         
     | 
| 
      
 7 
     | 
    
         
            +
                      };
         
     | 
| 
      
 8 
     | 
    
         
            +
            })();
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            window.onload = function() {
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            };
         
     | 
| 
         @@ -0,0 +1,8 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            /*
         
     | 
| 
      
 2 
     | 
    
         
            +
             HTML5 Shiv v3.6.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
         
     | 
| 
      
 3 
     | 
    
         
            +
            */
         
     | 
| 
      
 4 
     | 
    
         
            +
            (function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
         
     | 
| 
      
 5 
     | 
    
         
            +
            a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}</style>";
         
     | 
| 
      
 6 
     | 
    
         
            +
            c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
         
     | 
| 
      
 7 
     | 
    
         
            +
            "undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",version:"3.6.2",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment();
         
     | 
| 
      
 8 
     | 
    
         
            +
            for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!doctype html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <html>
         
     | 
| 
      
 3 
     | 
    
         
            +
              <head>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <meta charset="utf-8">
         
     | 
| 
      
 5 
     | 
    
         
            +
                <title>❤</title>
         
     | 
| 
      
 6 
     | 
    
         
            +
                <link href="/stylesheets/application.css" media="all" rel="stylesheet" type="text/css" />
         
     | 
| 
      
 7 
     | 
    
         
            +
                <script src="/javascripts/html5shiv.js"></script>
         
     | 
| 
      
 8 
     | 
    
         
            +
                <script src="/javascripts/application.js"></script>
         
     | 
| 
      
 9 
     | 
    
         
            +
                <!--[if lt IE 9]>
         
     | 
| 
      
 10 
     | 
    
         
            +
                  <script src="//ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
         
     | 
| 
      
 11 
     | 
    
         
            +
                <![endif]-->
         
     | 
| 
      
 12 
     | 
    
         
            +
              </head>
         
     | 
| 
      
 13 
     | 
    
         
            +
              <body>
         
     | 
| 
      
 14 
     | 
    
         
            +
              </body>
         
     | 
| 
      
 15 
     | 
    
         
            +
            </html>
         
     | 
    
        data/prototyper.gemspec
    ADDED
    
    | 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.expand_path('../lib/prototyper/version', __FILE__)
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Gem::Specification.new do |s|
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              s.name = 'prototyper'
         
     | 
| 
      
 6 
     | 
    
         
            +
              s.version = Prototyper::VERSION
         
     | 
| 
      
 7 
     | 
    
         
            +
              s.author = 'Jonathan Vingiano'
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.email = 'jgv@jonathanvingiano.com'
         
     | 
| 
      
 9 
     | 
    
         
            +
              s.homepage = 'https://github.com/jgv/prototyper'
         
     | 
| 
      
 10 
     | 
    
         
            +
              s.rubyforge_project = 'prototyper'
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.summary = 'Set up some boilerplate'
         
     | 
| 
      
 12 
     | 
    
         
            +
              s.description = 'Scaffold simple projects from the command line.'
         
     | 
| 
      
 13 
     | 
    
         
            +
              s.files = `git ls-files`.split("\n")
         
     | 
| 
      
 14 
     | 
    
         
            +
              s.test_file = 'test/unit/prototyper.rb'
         
     | 
| 
      
 15 
     | 
    
         
            +
              s.require_paths = ['lib', 'bin']
         
     | 
| 
      
 16 
     | 
    
         
            +
              s.executables = ['prototyper']
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
    
        data/readme.md
    ADDED
    
    | 
         @@ -0,0 +1,69 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Prototyper
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Prototyper is a simple commandline tool that sets up a basic web application. This gem is designed to get scaffolding a project out of the way. Currently it provides two different project types: HTML and Sinatra. The Sintara installtion provided is good to go on Heroku.
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            ## Installation
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            ``` bash
         
     | 
| 
      
 8 
     | 
    
         
            +
            $ gem install prototyper
         
     | 
| 
      
 9 
     | 
    
         
            +
            ```
         
     | 
| 
      
 10 
     | 
    
         
            +
            or in your Gemfile: `gem 'prototyper'`
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            ## Usage
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            ``` bash
         
     | 
| 
      
 15 
     | 
    
         
            +
            $ prototyper coolproject
         
     | 
| 
      
 16 
     | 
    
         
            +
            ```
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            This will create a new HTML project relative to your working directory. It will look something like this:
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            ```
         
     | 
| 
      
 21 
     | 
    
         
            +
            .
         
     | 
| 
      
 22 
     | 
    
         
            +
            ├── assets
         
     | 
| 
      
 23 
     | 
    
         
            +
            │   ├── javascripts
         
     | 
| 
      
 24 
     | 
    
         
            +
            │   │   └── application.js
         
     | 
| 
      
 25 
     | 
    
         
            +
            │   └── stylesheets
         
     | 
| 
      
 26 
     | 
    
         
            +
            │       └── application.css
         
     | 
| 
      
 27 
     | 
    
         
            +
            └── index.html
         
     | 
| 
      
 28 
     | 
    
         
            +
            ```
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            Instead of HTML, you may choose to scaffold a Sinatra app by passing the option `--type sinatra`. This will generate an app that looks like so:
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            ```
         
     | 
| 
      
 34 
     | 
    
         
            +
            .
         
     | 
| 
      
 35 
     | 
    
         
            +
            ├── Gemfile
         
     | 
| 
      
 36 
     | 
    
         
            +
            ├── Procfile
         
     | 
| 
      
 37 
     | 
    
         
            +
            ├── app.rb
         
     | 
| 
      
 38 
     | 
    
         
            +
            ├── assets
         
     | 
| 
      
 39 
     | 
    
         
            +
            │   ├── javascripts
         
     | 
| 
      
 40 
     | 
    
         
            +
            │   │   ├── application.js
         
     | 
| 
      
 41 
     | 
    
         
            +
            │   │   └── html5shiv.js
         
     | 
| 
      
 42 
     | 
    
         
            +
            │   └── stylesheets
         
     | 
| 
      
 43 
     | 
    
         
            +
            │       └── application.css
         
     | 
| 
      
 44 
     | 
    
         
            +
            ├── config.ru
         
     | 
| 
      
 45 
     | 
    
         
            +
            ├── generator.rb
         
     | 
| 
      
 46 
     | 
    
         
            +
            └── views
         
     | 
| 
      
 47 
     | 
    
         
            +
                └── index.erb
         
     | 
| 
      
 48 
     | 
    
         
            +
            ```
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            ## Options
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
            ```
         
     | 
| 
      
 53 
     | 
    
         
            +
            $ protoyper --help
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            Usage: prototyper [projectname] [options]
         
     | 
| 
      
 56 
     | 
    
         
            +
                    --type [TYPE]                Select scaffolding type (sinatra, html)
         
     | 
| 
      
 57 
     | 
    
         
            +
                    --html                       Generate HTML scaffolding
         
     | 
| 
      
 58 
     | 
    
         
            +
                    --sinatra                    Generate Sinatra scaffolding
         
     | 
| 
      
 59 
     | 
    
         
            +
            ```
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
            ## Tests
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
            Run tests with minitest.
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
            ``` bash
         
     | 
| 
      
 66 
     | 
    
         
            +
            $ rake test
         
     | 
| 
      
 67 
     | 
    
         
            +
            ```
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
            **License: MIT**
         
     | 
| 
         @@ -0,0 +1,76 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'minitest/autorun'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'minitest/unit'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'minitest/pride'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            $:.unshift File.dirname(__FILE__) + '/../../lib'
         
     | 
| 
      
 7 
     | 
    
         
            +
            require 'prototyper'
         
     | 
| 
      
 8 
     | 
    
         
            +
            class TestSinatraApp < MiniTest::Test
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              def setup
         
     | 
| 
      
 11 
     | 
    
         
            +
                Prototyper.generate("test_sinatra", { :type => :sinatra })
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              def teardown
         
     | 
| 
      
 15 
     | 
    
         
            +
                FileUtils.rm_rf("test_sinatra")
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              def test_that_it_creates_a_project
         
     | 
| 
      
 19 
     | 
    
         
            +
                assert Dir.exists?("test_sinatra")
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              def test_that_it_creates_subdirs
         
     | 
| 
      
 23 
     | 
    
         
            +
                assert Dir.exists?("test_sinatra/assets")
         
     | 
| 
      
 24 
     | 
    
         
            +
                assert Dir.exists?("test_sinatra/views")
         
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              def test_that_it_creates_a_sinatra_app
         
     | 
| 
      
 28 
     | 
    
         
            +
                all_files = `find test_sinatra`.split("\n").map { |f| File.basename(f, ".*") }
         
     | 
| 
      
 29 
     | 
    
         
            +
                %w(app
         
     | 
| 
      
 30 
     | 
    
         
            +
                assets
         
     | 
| 
      
 31 
     | 
    
         
            +
                javascripts
         
     | 
| 
      
 32 
     | 
    
         
            +
                application
         
     | 
| 
      
 33 
     | 
    
         
            +
                html5shiv
         
     | 
| 
      
 34 
     | 
    
         
            +
                stylesheets
         
     | 
| 
      
 35 
     | 
    
         
            +
                application
         
     | 
| 
      
 36 
     | 
    
         
            +
                config
         
     | 
| 
      
 37 
     | 
    
         
            +
                Gemfile
         
     | 
| 
      
 38 
     | 
    
         
            +
                Procfile
         
     | 
| 
      
 39 
     | 
    
         
            +
                views
         
     | 
| 
      
 40 
     | 
    
         
            +
                index).each do |file|
         
     | 
| 
      
 41 
     | 
    
         
            +
                  assert all_files.include?(file)
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            class TestHTMLApp < MiniTest::Test
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
              def setup
         
     | 
| 
      
 50 
     | 
    
         
            +
                Prototyper.generate("test_html")
         
     | 
| 
      
 51 
     | 
    
         
            +
              end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
              def teardown
         
     | 
| 
      
 54 
     | 
    
         
            +
            #    FileUtils.rm_rf("test_html")
         
     | 
| 
      
 55 
     | 
    
         
            +
              end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
              def test_that_it_creates_a_project
         
     | 
| 
      
 58 
     | 
    
         
            +
                assert Dir.exists?("test_html")
         
     | 
| 
      
 59 
     | 
    
         
            +
              end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
              def test_that_it_creates_subdirs
         
     | 
| 
      
 62 
     | 
    
         
            +
                assert Dir.exists?("test_html/assets")
         
     | 
| 
      
 63 
     | 
    
         
            +
              end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
              def test_that_it_creates_necessary_files
         
     | 
| 
      
 66 
     | 
    
         
            +
                all_files = `find test_html`.split("\n").map { |f| File.basename(f, ".*") }
         
     | 
| 
      
 67 
     | 
    
         
            +
                %w(index
         
     | 
| 
      
 68 
     | 
    
         
            +
                assets
         
     | 
| 
      
 69 
     | 
    
         
            +
                javascripts
         
     | 
| 
      
 70 
     | 
    
         
            +
                stylesheets
         
     | 
| 
      
 71 
     | 
    
         
            +
                application).each do |file|
         
     | 
| 
      
 72 
     | 
    
         
            +
                  assert all_files.include?(file)
         
     | 
| 
      
 73 
     | 
    
         
            +
                end
         
     | 
| 
      
 74 
     | 
    
         
            +
              end
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,67 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: prototyper
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.1.0
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Jonathan Vingiano
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2013-10-23 00:00:00.000000000 Z
         
     | 
| 
      
 12 
     | 
    
         
            +
            dependencies: []
         
     | 
| 
      
 13 
     | 
    
         
            +
            description: Scaffold simple projects from the command line.
         
     | 
| 
      
 14 
     | 
    
         
            +
            email: jgv@jonathanvingiano.com
         
     | 
| 
      
 15 
     | 
    
         
            +
            executables:
         
     | 
| 
      
 16 
     | 
    
         
            +
            - prototyper
         
     | 
| 
      
 17 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 18 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 19 
     | 
    
         
            +
            files:
         
     | 
| 
      
 20 
     | 
    
         
            +
            - .gitignore
         
     | 
| 
      
 21 
     | 
    
         
            +
            - Gemfile
         
     | 
| 
      
 22 
     | 
    
         
            +
            - MIT-LICENSE
         
     | 
| 
      
 23 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 24 
     | 
    
         
            +
            - bin/prototyper
         
     | 
| 
      
 25 
     | 
    
         
            +
            - lib/prototyper.rb
         
     | 
| 
      
 26 
     | 
    
         
            +
            - lib/prototyper/version.rb
         
     | 
| 
      
 27 
     | 
    
         
            +
            - lib/templates/html/.DS_Store
         
     | 
| 
      
 28 
     | 
    
         
            +
            - lib/templates/html/assets/javascripts/application.js
         
     | 
| 
      
 29 
     | 
    
         
            +
            - lib/templates/html/assets/stylesheets/application.css
         
     | 
| 
      
 30 
     | 
    
         
            +
            - lib/templates/html/index.html
         
     | 
| 
      
 31 
     | 
    
         
            +
            - lib/templates/sinatra/Gemfile
         
     | 
| 
      
 32 
     | 
    
         
            +
            - lib/templates/sinatra/Procfile
         
     | 
| 
      
 33 
     | 
    
         
            +
            - lib/templates/sinatra/app.rb
         
     | 
| 
      
 34 
     | 
    
         
            +
            - lib/templates/sinatra/assets/javascripts/application.js
         
     | 
| 
      
 35 
     | 
    
         
            +
            - lib/templates/sinatra/assets/javascripts/html5shiv.js
         
     | 
| 
      
 36 
     | 
    
         
            +
            - lib/templates/sinatra/assets/stylesheets/application.css
         
     | 
| 
      
 37 
     | 
    
         
            +
            - lib/templates/sinatra/config.ru
         
     | 
| 
      
 38 
     | 
    
         
            +
            - lib/templates/sinatra/views/index.erb
         
     | 
| 
      
 39 
     | 
    
         
            +
            - prototyper.gemspec
         
     | 
| 
      
 40 
     | 
    
         
            +
            - readme.md
         
     | 
| 
      
 41 
     | 
    
         
            +
            - test/unit/prototyper.rb
         
     | 
| 
      
 42 
     | 
    
         
            +
            homepage: https://github.com/jgv/prototyper
         
     | 
| 
      
 43 
     | 
    
         
            +
            licenses: []
         
     | 
| 
      
 44 
     | 
    
         
            +
            metadata: {}
         
     | 
| 
      
 45 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 46 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 47 
     | 
    
         
            +
            require_paths:
         
     | 
| 
      
 48 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 49 
     | 
    
         
            +
            - bin
         
     | 
| 
      
 50 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 51 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 52 
     | 
    
         
            +
              - - '>='
         
     | 
| 
      
 53 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 54 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 55 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 56 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 57 
     | 
    
         
            +
              - - '>='
         
     | 
| 
      
 58 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 59 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 60 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 61 
     | 
    
         
            +
            rubyforge_project: prototyper
         
     | 
| 
      
 62 
     | 
    
         
            +
            rubygems_version: 2.0.0
         
     | 
| 
      
 63 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 64 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
      
 65 
     | 
    
         
            +
            summary: Set up some boilerplate
         
     | 
| 
      
 66 
     | 
    
         
            +
            test_files:
         
     | 
| 
      
 67 
     | 
    
         
            +
            - test/unit/prototyper.rb
         
     |