\ No newline at end of file
diff --git a/middleman-cli/lib/middleman-templates/default/source/javascripts/all.js b/middleman-cli/lib/middleman-templates/default/source/javascripts/all.js
deleted file mode 100644
index 2becd765..00000000
--- a/middleman-cli/lib/middleman-templates/default/source/javascripts/all.js
+++ /dev/null
@@ -1 +0,0 @@
-//= require_tree .
\ No newline at end of file
diff --git a/middleman-cli/lib/middleman-templates/default/source/layouts/layout.erb b/middleman-cli/lib/middleman-templates/default/source/layouts/layout.erb
deleted file mode 100644
index fffa9ad9..00000000
--- a/middleman-cli/lib/middleman-templates/default/source/layouts/layout.erb
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
- <%= current_page.data.title || "The Middleman" %>
-
- <%= stylesheet_link_tag "normalize", "all" %>
- <%= javascript_include_tag "all" %>
-
-
-
- <%= yield %>
-
-
diff --git a/middleman-cli/lib/middleman-templates/default/source/stylesheets/all.css b/middleman-cli/lib/middleman-templates/default/source/stylesheets/all.css
deleted file mode 100644
index 6ff94cf9..00000000
--- a/middleman-cli/lib/middleman-templates/default/source/stylesheets/all.css
+++ /dev/null
@@ -1,55 +0,0 @@
-@charset "utf-8";
-
-body {
- background: #d4d4d4 url("../images/background.png");
- text-align: center;
- font-family: sans-serif; }
-
-h1 {
- color: rgba(0, 0, 0, .3);
- font-weight: bold;
- font-size: 32px;
- letter-spacing: -1px;
- text-transform: uppercase;
- text-shadow: 0 1px 0 rgba(255, 255, 255, .5);
- background: url("../images/middleman.png") no-repeat center 100px;
- padding: 350px 0 10px;
- margin: 0; }
-
-.doc {
- font-size: 14px;
- margin: 0; }
- .doc:before,
- .doc:after {
- opacity: .2;
- padding: 6px;
- font-style: normal;
- position: relative;
- content: "•"; }
- .doc a {
- color: rgba(0, 0, 0, 0.3); }
- .doc a:hover {
- color: #666; }
-
-.welcome {
- -webkit-animation-name: welcome;
- -webkit-animation-duration: .9s; }
-
-@-webkit-keyframes welcome {
- from {
- -webkit-transform: scale(0);
- opacity: 0;
- }
- 50% {
- -webkit-transform: scale(0);
- opacity: 0;
- }
- 82.5% {
- -webkit-transform: scale(1.03);
- -webkit-animation-timing-function: ease-out;
- opacity: 1;
- }
- to {
- -webkit-transform: scale(1);
- }
-}
\ No newline at end of file
diff --git a/middleman-cli/lib/middleman-templates/default/source/stylesheets/normalize.css b/middleman-cli/lib/middleman-templates/default/source/stylesheets/normalize.css
deleted file mode 100644
index 73abb76f..00000000
--- a/middleman-cli/lib/middleman-templates/default/source/stylesheets/normalize.css
+++ /dev/null
@@ -1,375 +0,0 @@
-/*! normalize.css v2.0.1 | MIT License | git.io/normalize */
-
-/* ==========================================================================
- HTML5 display definitions
- ========================================================================== */
-
-/*
- * Corrects `block` display not defined in IE 8/9.
- */
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section,
-summary {
- display: block;
-}
-
-/*
- * Corrects `inline-block` display not defined in IE 8/9.
- */
-
-audio,
-canvas,
-video {
- display: inline-block;
-}
-
-/*
- * Prevents modern browsers from displaying `audio` without controls.
- * Remove excess height in iOS 5 devices.
- */
-
-audio:not([controls]) {
- display: none;
- height: 0;
-}
-
-/*
- * Addresses styling for `hidden` attribute not present in IE 8/9.
- */
-
-[hidden] {
- display: none;
-}
-
-/* ==========================================================================
- Base
- ========================================================================== */
-
-/*
- * 1. Sets default font family to sans-serif.
- * 2. Prevents iOS text size adjust after orientation change, without disabling
- * user zoom.
- */
-
-html {
- font-family: sans-serif; /* 1 */
- -webkit-text-size-adjust: 100%; /* 2 */
- -ms-text-size-adjust: 100%; /* 2 */
-}
-
-/*
- * Removes default margin.
- */
-
-body {
- margin: 0;
-}
-
-/* ==========================================================================
- Links
- ========================================================================== */
-
-/*
- * Addresses `outline` inconsistency between Chrome and other browsers.
- */
-
-a:focus {
- outline: thin dotted;
-}
-
-/*
- * Improves readability when focused and also mouse hovered in all browsers.
- */
-
-a:active,
-a:hover {
- outline: 0;
-}
-
-/* ==========================================================================
- Typography
- ========================================================================== */
-
-/*
- * Addresses `h1` font sizes within `section` and `article` in Firefox 4+,
- * Safari 5, and Chrome.
- */
-
-h1 {
- font-size: 2em;
-}
-
-/*
- * Addresses styling not present in IE 8/9, Safari 5, and Chrome.
- */
-
-abbr[title] {
- border-bottom: 1px dotted;
-}
-
-/*
- * Addresses style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
- */
-
-b,
-strong {
- font-weight: bold;
-}
-
-/*
- * Addresses styling not present in Safari 5 and Chrome.
- */
-
-dfn {
- font-style: italic;
-}
-
-/*
- * Addresses styling not present in IE 8/9.
- */
-
-mark {
- background: #ff0;
- color: #000;
-}
-
-
-/*
- * Corrects font family set oddly in Safari 5 and Chrome.
- */
-
-code,
-kbd,
-pre,
-samp {
- font-family: monospace, serif;
- font-size: 1em;
-}
-
-/*
- * Improves readability of pre-formatted text in all browsers.
- */
-
-pre {
- white-space: pre;
- white-space: pre-wrap;
- word-wrap: break-word;
-}
-
-/*
- * Sets consistent quote types.
- */
-
-q {
- quotes: "\201C" "\201D" "\2018" "\2019";
-}
-
-/*
- * Addresses inconsistent and variable font size in all browsers.
- */
-
-small {
- font-size: 80%;
-}
-
-/*
- * Prevents `sub` and `sup` affecting `line-height` in all browsers.
- */
-
-sub,
-sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
-}
-
-sup {
- top: -0.5em;
-}
-
-sub {
- bottom: -0.25em;
-}
-
-/* ==========================================================================
- Embedded content
- ========================================================================== */
-
-/*
- * Removes border when inside `a` element in IE 8/9.
- */
-
-img {
- border: 0;
-}
-
-/*
- * Corrects overflow displayed oddly in IE 9.
- */
-
-svg:not(:root) {
- overflow: hidden;
-}
-
-/* ==========================================================================
- Figures
- ========================================================================== */
-
-/*
- * Addresses margin not present in IE 8/9 and Safari 5.
- */
-
-figure {
- margin: 0;
-}
-
-/* ==========================================================================
- Forms
- ========================================================================== */
-
-/*
- * Define consistent border, margin, and padding.
- */
-
-fieldset {
- border: 1px solid #c0c0c0;
- margin: 0 2px;
- padding: 0.35em 0.625em 0.75em;
-}
-
-/*
- * 1. Corrects color not being inherited in IE 8/9.
- * 2. Remove padding so people aren't caught out if they zero out fieldsets.
- */
-
-legend {
- border: 0; /* 1 */
- padding: 0; /* 2 */
-}
-
-/*
- * 1. Corrects font family not being inherited in all browsers.
- * 2. Corrects font size not being inherited in all browsers.
- * 3. Addresses margins set differently in Firefox 4+, Safari 5, and Chrome
- */
-
-button,
-input,
-select,
-textarea {
- font-family: inherit; /* 1 */
- font-size: 100%; /* 2 */
- margin: 0; /* 3 */
-}
-
-/*
- * Addresses Firefox 4+ setting `line-height` on `input` using `!important` in
- * the UA stylesheet.
- */
-
-button,
-input {
- line-height: normal;
-}
-
-/*
- * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
- * and `video` controls.
- * 2. Corrects inability to style clickable `input` types in iOS.
- * 3. Improves usability and consistency of cursor style between image-type
- * `input` and others.
- */
-
-button,
-html input[type="button"], /* 1 */
-input[type="reset"],
-input[type="submit"] {
- -webkit-appearance: button; /* 2 */
- cursor: pointer; /* 3 */
-}
-
-/*
- * Re-set default cursor for disabled elements.
- */
-
-button[disabled],
-input[disabled] {
- cursor: default;
-}
-
-/*
- * 1. Addresses box sizing set to `content-box` in IE 8/9.
- * 2. Removes excess padding in IE 8/9.
- */
-
-input[type="checkbox"],
-input[type="radio"] {
- box-sizing: border-box; /* 1 */
- padding: 0; /* 2 */
-}
-
-/*
- * 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome.
- * 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome
- * (include `-moz` to future-proof).
- */
-
-input[type="search"] {
- -webkit-appearance: textfield; /* 1 */
- -moz-box-sizing: content-box;
- -webkit-box-sizing: content-box; /* 2 */
- box-sizing: content-box;
-}
-
-/*
- * Removes inner padding and search cancel button in Safari 5 and Chrome
- * on OS X.
- */
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-
-/*
- * Removes inner padding and border in Firefox 4+.
- */
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
- border: 0;
- padding: 0;
-}
-
-/*
- * 1. Removes default vertical scrollbar in IE 8/9.
- * 2. Improves readability and alignment in all browsers.
- */
-
-textarea {
- overflow: auto; /* 1 */
- vertical-align: top; /* 2 */
-}
-
-/* ==========================================================================
- Tables
- ========================================================================== */
-
-/*
- * Remove most spacing between table cells.
- */
-
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
\ No newline at end of file
diff --git a/middleman-cli/lib/middleman-templates/empty.rb b/middleman-cli/lib/middleman-templates/empty.rb
deleted file mode 100644
index 18ac3106..00000000
--- a/middleman-cli/lib/middleman-templates/empty.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-# A barebones template with nothing much in it
-class Middleman::Templates::Empty < Middleman::Templates::Base
- # Template files are relative to this file
- # @return [String]
- def self.source_root
- File.dirname(__FILE__)
- end
-
- # Output the files
- # @return [void]
- def build_scaffold!
- template 'shared/config.tt', File.join(location, 'config.rb')
- empty_directory File.join(location, 'source')
- create_file File.join(location, 'source', '.gitkeep') unless options[:'skip-git']
- end
-end
-
-# Register this template
-Middleman::Templates.register(:empty, Middleman::Templates::Empty)
diff --git a/middleman-cli/lib/middleman-templates/html5.rb b/middleman-cli/lib/middleman-templates/html5.rb
deleted file mode 100644
index de0bf25d..00000000
--- a/middleman-cli/lib/middleman-templates/html5.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# HTML5 Boilerplate template
-class Middleman::Templates::Html5 < Middleman::Templates::Base
- # Slightly different paths
- class_option :css_dir, default: 'css', desc: 'The path to the css files'
- class_option :js_dir, default: 'js', desc: 'The path to the javascript files'
- class_option :images_dir, default: 'img', desc: 'The path to the image files'
-
- # Template files are relative to this file
- # @return [String]
- def self.source_root
- File.dirname(__FILE__)
- end
-
- # Output the files
- # @return [void]
- def build_scaffold!
- template 'shared/config.tt', File.join(location, 'config.rb')
- directory 'html5/source', File.join(location, 'source')
- end
-end
-
-# Register this template
-Middleman::Templates.register(:html5, Middleman::Templates::Html5)
diff --git a/middleman-cli/lib/middleman-templates/html5/source/.htaccess b/middleman-cli/lib/middleman-templates/html5/source/.htaccess
deleted file mode 100644
index 63c0aaca..00000000
--- a/middleman-cli/lib/middleman-templates/html5/source/.htaccess
+++ /dev/null
@@ -1,679 +0,0 @@
-# Apache Server Configs v2.3.0 | MIT License
-# https://github.com/h5bp/server-configs-apache
-
-# (!) Using `.htaccess` files slows down Apache, therefore, if you have access
-# to the main server config file (usually called `httpd.conf`), you should add
-# this logic there: http://httpd.apache.org/docs/current/howto/htaccess.html.
-
-# ##############################################################################
-# # CROSS-ORIGIN RESOURCE SHARING (CORS) #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Cross-domain AJAX requests |
-# ------------------------------------------------------------------------------
-
-# Allow cross-origin AJAX requests.
-# http://code.google.com/p/html5security/wiki/CrossOriginRequestSecurity
-# http://enable-cors.org/
-
-#
-# Header set Access-Control-Allow-Origin "*"
-#
-
-# ------------------------------------------------------------------------------
-# | CORS-enabled images |
-# ------------------------------------------------------------------------------
-
-# Send the CORS header for images when browsers request it.
-# https://developer.mozilla.org/en-US/docs/HTML/CORS_Enabled_Image
-# http://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html
-# http://hacks.mozilla.org/2011/11/using-cors-to-load-webgl-textures-from-cross-domain-images/
-
-
-
-
- SetEnvIf Origin ":" IS_CORS
- Header set Access-Control-Allow-Origin "*" env=IS_CORS
-
-
-
-
-# ------------------------------------------------------------------------------
-# | Web fonts access |
-# ------------------------------------------------------------------------------
-
-# Allow access to web fonts from all domains.
-
-
-
- Header set Access-Control-Allow-Origin "*"
-
-
-
-
-# ##############################################################################
-# # ERRORS #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | 404 error prevention for non-existing redirected folders |
-# ------------------------------------------------------------------------------
-
-# Prevent Apache from returning a 404 error as the result of a rewrite
-# when the directory with the same name does not exist.
-# http://httpd.apache.org/docs/current/content-negotiation.html#multiviews
-# http://www.webmasterworld.com/apache/3808792.htm
-
-Options -MultiViews
-
-# ------------------------------------------------------------------------------
-# | Custom error messages / pages |
-# ------------------------------------------------------------------------------
-
-# Customize what Apache returns to the client in case of an error.
-# http://httpd.apache.org/docs/current/mod/core.html#errordocument
-
-ErrorDocument 404 /404.html
-
-
-# ##############################################################################
-# # INTERNET EXPLORER #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Better website experience |
-# ------------------------------------------------------------------------------
-
-# Force Internet Explorer to render pages in the highest available mode
-# in the various cases when it may not.
-# http://hsivonen.iki.fi/doctype/ie-mode.pdf
-
-
- Header set X-UA-Compatible "IE=edge"
- # `mod_headers` cannot match based on the content-type, however, this
- # header should be send only for HTML pages and not for the other resources
-
- Header unset X-UA-Compatible
-
-
-
-# ------------------------------------------------------------------------------
-# | Cookie setting from iframes |
-# ------------------------------------------------------------------------------
-
-# Allow cookies to be set from iframes in Internet Explorer.
-# http://msdn.microsoft.com/en-us/library/ms537343.aspx
-# http://www.w3.org/TR/2000/CR-P3P-20001215/
-
-#
-# Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
-#
-
-# ------------------------------------------------------------------------------
-# | Screen flicker |
-# ------------------------------------------------------------------------------
-
-# Stop screen flicker in Internet Explorer on CSS rollovers.
-
-# IMPORTANT: This will only work in combination with the image related
-# `ExpiresByType` directives from below.
-
-# BrowserMatch "MSIE" brokenvary=1
-# BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1
-# BrowserMatch "Opera" !brokenvary
-# SetEnvIf brokenvary 1 force-no-vary
-
-
-# ##############################################################################
-# # MIME TYPES AND ENCODING #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Proper MIME types for all files |
-# ------------------------------------------------------------------------------
-
-
-
- # Audio
- AddType audio/mp4 m4a f4a f4b
- AddType audio/ogg oga ogg opus
-
- # Data interchange
- AddType application/json json map
- AddType application/ld+json jsonld
-
- # JavaScript
- # Normalize to standard type.
- # http://tools.ietf.org/html/rfc4329#section-7.2
- AddType application/javascript js
-
- # Video
- AddType video/mp4 f4v f4p m4v mp4
- AddType video/ogg ogv
- AddType video/webm webm
- AddType video/x-flv flv
-
- # Web fonts
- AddType application/font-woff woff
- AddType application/vnd.ms-fontobject eot
-
- # Browsers usually ignore the font MIME types and simply sniff the bytes
- # to figure out the font type.
- # http://mimesniff.spec.whatwg.org/#matching-a-font-type-pattern
-
- # Chrome however, shows a warning if any other MIME types are used for
- # the following fonts.
-
- AddType application/x-font-ttf ttc ttf
- AddType font/opentype otf
-
- # Make SVGZ fonts work on the iPad.
- # https://twitter.com/FontSquirrel/status/14855840545
- AddType image/svg+xml svgz
- AddEncoding gzip svgz
-
- # Other
- AddType application/octet-stream safariextz
- AddType application/x-chrome-extension crx
- AddType application/x-opera-extension oex
- AddType application/x-web-app-manifest+json webapp
- AddType application/x-xpinstall xpi
- AddType application/xml atom rdf rss xml
- AddType image/webp webp
- AddType image/x-icon cur
- AddType text/cache-manifest appcache manifest
- AddType text/vtt vtt
- AddType text/x-component htc
- AddType text/x-vcard vcf
-
-
-
-# ------------------------------------------------------------------------------
-# | UTF-8 encoding |
-# ------------------------------------------------------------------------------
-
-# Use UTF-8 encoding for anything served as `text/html` or `text/plain`.
-AddDefaultCharset utf-8
-
-# Force UTF-8 for certain file formats.
-
- AddCharset utf-8 .atom .css .js .json .jsonld .rss .vtt .webapp .xml
-
-
-
-# ##############################################################################
-# # URL REWRITES #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Rewrite engine |
-# ------------------------------------------------------------------------------
-
-# Turn on the rewrite engine and enable the `FollowSymLinks` option (this is
-# necessary in order for the following directives to work).
-
-# If your web host doesn't allow the `FollowSymlinks` option, you may need to
-# comment it out and use `Options +SymLinksIfOwnerMatch`, but be aware of the
-# performance impact.
-# http://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks
-
-# Also, some cloud hosting services require `RewriteBase` to be set.
-# http://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-mod-rewrite-not-working-on-my-site
-
-
- Options +FollowSymlinks
- # Options +SymLinksIfOwnerMatch
- RewriteEngine On
- # RewriteBase /
-
-
-# ------------------------------------------------------------------------------
-# | Suppressing / Forcing the `www.` at the beginning of URLs |
-# ------------------------------------------------------------------------------
-
-# The same content should never be available under two different URLs,
-# especially not with and without `www.` at the beginning. This can cause
-# SEO problems (duplicate content), and therefore, you should choose one
-# of the alternatives and redirect the other one.
-
-# By default `Option 1` (no `www.`) is activated.
-# http://no-www.org/faq.php?q=class_b
-
-# If you would prefer to use `Option 2`, just comment out all the lines
-# from `Option 1` and uncomment the ones from `Option 2`.
-
-# IMPORTANT: NEVER USE BOTH RULES AT THE SAME TIME!
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Option 1: rewrite www.example.com → example.com
-
-
- RewriteCond %{HTTPS} !=on
- RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
- RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
-
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Option 2: rewrite example.com → www.example.com
-
-# Be aware that the following might not be a good idea if you use "real"
-# subdomains for certain parts of your website.
-
-#
-# RewriteCond %{HTTPS} !=on
-# RewriteCond %{HTTP_HOST} !^www\. [NC]
-# RewriteCond %{SERVER_ADDR} !=127.0.0.1
-# RewriteCond %{SERVER_ADDR} !=::1
-# RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
-#
-
-
-# ##############################################################################
-# # SECURITY #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Clickjacking |
-# ------------------------------------------------------------------------------
-
-# Protect website against clickjacking.
-
-# The example below sends the `X-Frame-Options` response header with the value
-# `DENY`, informing browsers not to display the web page content in any frame.
-
-# This might not be the best setting for everyone. You should read about the
-# other two possible values for `X-Frame-Options`: `SAMEORIGIN` & `ALLOW-FROM`.
-# http://tools.ietf.org/html/rfc7034#section-2.1
-
-# Keep in mind that while you could send the `X-Frame-Options` header for all
-# of your site’s pages, this has the potential downside that it forbids even
-# non-malicious framing of your content (e.g.: when users visit your site using
-# a Google Image Search results page).
-
-# Nonetheless, you should ensure that you send the `X-Frame-Options` header for
-# all pages that allow a user to make a state changing operation (e.g: pages
-# that contain one-click purchase links, checkout or bank-transfer confirmation
-# pages, pages that make permanent configuration changes, etc.).
-
-# Sending the `X-Frame-Options` header can also protect your website against
-# more than just clickjacking attacks: https://cure53.de/xfo-clickjacking.pdf.
-
-# http://tools.ietf.org/html/rfc7034
-# http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx
-# https://www.owasp.org/index.php/Clickjacking
-
-#
-# Header set X-Frame-Options "DENY"
-#
-# Header unset X-Frame-Options
-#
-#
-
-# ------------------------------------------------------------------------------
-# | Content Security Policy (CSP) |
-# ------------------------------------------------------------------------------
-
-# Mitigate the risk of cross-site scripting and other content-injection attacks.
-
-# This can be done by setting a `Content Security Policy` which whitelists
-# trusted sources of content for your website.
-
-# The example header below allows ONLY scripts that are loaded from the current
-# site's origin (no inline scripts, no CDN, etc). This almost certainly won't
-# work as-is for your site!
-
-# For more details on how to craft a reasonable policy for your site, read:
-# http://html5rocks.com/en/tutorials/security/content-security-policy (or the
-# specification: http://w3.org/TR/CSP). Also, to make things easier, you can
-# use an online CSP header generator such as: http://cspisawesome.com/.
-
-#
-# Header set Content-Security-Policy "script-src 'self'; object-src 'self'"
-#
-# Header unset Content-Security-Policy
-#
-#
-
-# ------------------------------------------------------------------------------
-# | File access |
-# ------------------------------------------------------------------------------
-
-# Block access to directories without a default document.
-# You should leave the following uncommented, as you shouldn't allow anyone to
-# surf through every directory on your server (which may includes rather private
-# places such as the CMS's directories).
-
-
- Options -Indexes
-
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Block access to hidden files and directories.
-# This includes directories used by version control systems such as Git and SVN.
-
-
- RewriteCond %{SCRIPT_FILENAME} -d [OR]
- RewriteCond %{SCRIPT_FILENAME} -f
- RewriteRule "(^|/)\." - [F]
-
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Block access to files that can expose sensitive information.
-
-# By default, block access to backup and source files that may be left by some
-# text editors and can pose a security risk when anyone has access to them.
-# http://feross.org/cmsploit/
-
-# IMPORTANT: Update the `` regular expression from below to include
-# any files that might end up on your production server and can expose sensitive
-# information about your website. These files may include: configuration files,
-# files that contain metadata about the project (e.g.: project dependencies),
-# build scripts, etc..
-
-
-
- # Apache < 2.3
-
- Order allow,deny
- Deny from all
- Satisfy All
-
-
- # Apache ≥ 2.3
-
- Require all denied
-
-
-
-
-# ------------------------------------------------------------------------------
-# | Reducing MIME type security risks |
-# ------------------------------------------------------------------------------
-
-# Prevent some browsers from MIME-sniffing the response.
-
-# This reduces exposure to drive-by download attacks and cross-origin data
-# leaks, and should be left uncommented, especially if the web server is
-# serving user-uploaded content or content that could potentially be treated
-# as executable by the browser.
-
-# http://www.slideshare.net/hasegawayosuke/owasp-hasegawa
-# http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx
-# http://msdn.microsoft.com/en-us/library/ie/gg622941.aspx
-# http://mimesniff.spec.whatwg.org/
-
-
- Header set X-Content-Type-Options "nosniff"
-
-
-# ------------------------------------------------------------------------------
-# | Reflected Cross-Site Scripting (XSS) attacks |
-# ------------------------------------------------------------------------------
-
-# (1) Try to re-enable the Cross-Site Scripting (XSS) filter built into the
-# most recent web browsers.
-#
-# The filter is usually enabled by default, but in some cases it may be
-# disabled by the user. However, in Internet Explorer for example, it can
-# be re-enabled just by sending the `X-XSS-Protection` header with the
-# value of `1`.
-#
-# (2) Prevent web browsers from rendering the web page if a potential reflected
-# (a.k.a non-persistent) XSS attack is detected by the filter.
-#
-# By default, if the filter is enabled and browsers detect a reflected
-# XSS attack, they will attempt to block the attack by making the smallest
-# possible modifications to the returned web page.
-#
-# Unfortunately, in some browsers (e.g.: Internet Explorer), this default
-# behavior may allow the XSS filter to be exploited, thereby, it's better
-# to tell browsers to prevent the rendering of the page altogether, instead
-# of attempting to modify it.
-#
-# http://hackademix.net/2009/11/21/ies-xss-filter-creates-xss-vulnerabilities
-#
-# IMPORTANT: Do not rely on the XSS filter to prevent XSS attacks! Ensure that
-# you are taking all possible measures to prevent XSS attacks, the most obvious
-# being: validating and sanitizing your site's inputs.
-#
-# http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx
-# http://blogs.msdn.com/b/ieinternals/archive/2011/01/31/controlling-the-internet-explorer-xss-filter-with-the-x-xss-protection-http-header.aspx
-# https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29
-
-#
-# # (1) (2)
-# Header set X-XSS-Protection "1; mode=block"
-#
-# Header unset X-XSS-Protection
-#
-#
-
-# ------------------------------------------------------------------------------
-# | Secure Sockets Layer (SSL) |
-# ------------------------------------------------------------------------------
-
-# Rewrite secure requests properly in order to prevent SSL certificate warnings.
-# E.g.: prevent `https://www.example.com` when your certificate only allows
-# `https://secure.example.com`.
-
-#
-# RewriteCond %{SERVER_PORT} !^443
-# RewriteRule ^ https://example-domain-please-change-me.com%{REQUEST_URI} [R=301,L]
-#
-
-# ------------------------------------------------------------------------------
-# | HTTP Strict Transport Security (HSTS) |
-# ------------------------------------------------------------------------------
-
-# Force client-side SSL redirection.
-
-# If a user types `example.com` in his browser, the above rule will redirect
-# him to the secure version of the site. That still leaves a window of
-# opportunity (the initial HTTP connection) for an attacker to downgrade or
-# redirect the request.
-
-# The following header ensures that browser will ONLY connect to your server
-# via HTTPS, regardless of what the users type in the address bar.
-
-# http://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14#section-6.1
-# http://www.html5rocks.com/en/tutorials/security/transport-layer-security/
-
-# IMPORTANT: Remove the `includeSubDomains` optional directive if the subdomains
-# are not using HTTPS.
-
-#
-# Header set Strict-Transport-Security "max-age=16070400; includeSubDomains"
-#
-
-# ------------------------------------------------------------------------------
-# | Server software information |
-# ------------------------------------------------------------------------------
-
-# Avoid displaying the exact Apache version number, the description of the
-# generic OS-type and the information about Apache's compiled-in modules.
-
-# ADD THIS DIRECTIVE IN THE `httpd.conf` AS IT WILL NOT WORK IN THE `.htaccess`!
-
-# ServerTokens Prod
-
-
-# ##############################################################################
-# # WEB PERFORMANCE #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Compression |
-# ------------------------------------------------------------------------------
-
-
-
- # Force compression for mangled headers.
- # http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping
-
-
- SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
- RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
-
-
-
- # Compress all output labeled with one of the following MIME-types
- # (for Apache versions below 2.3.7, you don't need to enable `mod_filter`
- # and can remove the `` and `` lines
- # as `AddOutputFilterByType` is still in the core directives).
-
- AddOutputFilterByType DEFLATE application/atom+xml \
- application/javascript \
- application/json \
- application/ld+json \
- application/rss+xml \
- application/vnd.ms-fontobject \
- application/x-font-ttf \
- application/x-web-app-manifest+json \
- application/xhtml+xml \
- application/xml \
- font/opentype \
- image/svg+xml \
- image/x-icon \
- text/css \
- text/html \
- text/plain \
- text/x-component \
- text/xml
-
-
-
-
-# ------------------------------------------------------------------------------
-# | Content transformations |
-# ------------------------------------------------------------------------------
-
-# Prevent mobile network providers from modifying the website's content.
-# http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.5.
-
-#
-# Header set Cache-Control "no-transform"
-#
-
-# ------------------------------------------------------------------------------
-# | ETags |
-# ------------------------------------------------------------------------------
-
-# Remove `ETags` as resources are sent with far-future expires headers.
-# http://developer.yahoo.com/performance/rules.html#etags.
-
-# `FileETag None` doesn't work in all cases.
-
- Header unset ETag
-
-
-FileETag None
-
-# ------------------------------------------------------------------------------
-# | Expires headers |
-# ------------------------------------------------------------------------------
-
-# The following expires headers are set pretty far in the future. If you
-# don't control versioning with filename-based cache busting, consider
-# lowering the cache time for resources such as style sheets and JavaScript
-# files to something like one week.
-
-
-
- ExpiresActive on
- ExpiresDefault "access plus 1 month"
-
- # CSS
- ExpiresByType text/css "access plus 1 year"
-
- # Data interchange
- ExpiresByType application/json "access plus 0 seconds"
- ExpiresByType application/ld+json "access plus 0 seconds"
- ExpiresByType application/xml "access plus 0 seconds"
- ExpiresByType text/xml "access plus 0 seconds"
-
- # Favicon (cannot be renamed!) and cursor images
- ExpiresByType image/x-icon "access plus 1 week"
-
- # HTML components (HTCs)
- ExpiresByType text/x-component "access plus 1 month"
-
- # HTML
- ExpiresByType text/html "access plus 0 seconds"
-
- # JavaScript
- ExpiresByType application/javascript "access plus 1 year"
-
- # Manifest files
- ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
- ExpiresByType text/cache-manifest "access plus 0 seconds"
-
- # Media
- ExpiresByType audio/ogg "access plus 1 month"
- ExpiresByType image/gif "access plus 1 month"
- ExpiresByType image/jpeg "access plus 1 month"
- ExpiresByType image/png "access plus 1 month"
- ExpiresByType video/mp4 "access plus 1 month"
- ExpiresByType video/ogg "access plus 1 month"
- ExpiresByType video/webm "access plus 1 month"
-
- # Web feeds
- ExpiresByType application/atom+xml "access plus 1 hour"
- ExpiresByType application/rss+xml "access plus 1 hour"
-
- # Web fonts
- ExpiresByType application/font-woff "access plus 1 month"
- ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
- ExpiresByType application/x-font-ttf "access plus 1 month"
- ExpiresByType font/opentype "access plus 1 month"
- ExpiresByType image/svg+xml "access plus 1 month"
-
-
-
-# ------------------------------------------------------------------------------
-# | Filename-based cache busting |
-# ------------------------------------------------------------------------------
-
-# If you're not using a build process to manage your filename version revving,
-# you might want to consider enabling the following directives to route all
-# requests such as `/css/style.12345.css` to `/css/style.css`.
-
-# To understand why this is important and a better idea than `*.css?v231`, read:
-# http://stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring
-
-#
-# RewriteCond %{REQUEST_FILENAME} !-f
-# RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpe?g|gif)$ $1.$3 [L]
-#
-
-# ------------------------------------------------------------------------------
-# | File concatenation |
-# ------------------------------------------------------------------------------
-
-# Allow concatenation from within specific style sheets and JavaScript files.
-
-# e.g.:
-#
-# If you have the following content in a file
-#
-#
-#
-#
-# Apache will replace it with the content from the specified files.
-
-#
-#
-# Options +Includes
-# AddOutputFilterByType INCLUDES application/javascript application/json
-# SetOutputFilter INCLUDES
-#
-#
-# Options +Includes
-# AddOutputFilterByType INCLUDES text/css
-# SetOutputFilter INCLUDES
-#
-#
diff --git a/middleman-cli/lib/middleman-templates/html5/source/404.html b/middleman-cli/lib/middleman-templates/html5/source/404.html
deleted file mode 100644
index 190accc5..00000000
--- a/middleman-cli/lib/middleman-templates/html5/source/404.html
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
- Page Not Found
-
-
-
-
-
Page Not Found
-
Sorry, but the page you were trying to view does not exist.
-
-
-
diff --git a/middleman-cli/lib/middleman-templates/html5/source/CHANGELOG.md b/middleman-cli/lib/middleman-templates/html5/source/CHANGELOG.md
deleted file mode 100644
index 609abef6..00000000
--- a/middleman-cli/lib/middleman-templates/html5/source/CHANGELOG.md
+++ /dev/null
@@ -1,197 +0,0 @@
-### HEAD
-
-* Update to Apache Server Configs 2.3.0.
-* Use `` instead of ``
- ([#1522](https://github.com/h5bp/html5-boilerplate/issues/1522)).
-* Update to jQuery 1.11.0.
-* Add `Disallow:` to `robots.txt`
- ([#1487](https://github.com/h5bp/html5-boilerplate/issues/1487)).
-* Remove default foreground color from form elements
- ([#1390](https://github.com/h5bp/html5-boilerplate/issues/1390)).
-* Remove default margin from print styles
- ([#1477](https://github.com/h5bp/html5-boilerplate/issues/1477)).
-* Update to Modernizr 2.7.1.
-* Add vertical centering for `svg`
- ([#1453](https://github.com/h5bp/html5-boilerplate/issues/1453)).
-* Redesign 404 page
- ([#1443](https://github.com/h5bp/html5-boilerplate/pull/1443)).
-
-### 4.3.0 (September 10, 2013)
-
-* Use one apple-touch-icon instead of six
- ([#1367](https://github.com/h5bp/html5-boilerplate/issues/1367)).
-* Move font-related declarations from `body` to `html`
- ([#1411](https://github.com/h5bp/html5-boilerplate/issues/1411)).
-* Update to Apache Server Configs 1.1.0.
-* Add `initial-scale=1` to the viewport `meta`
- ([#1398](https://github.com/h5bp/html5-boilerplate/pull/1398)).
-* Vertical centering for audio-, canvas- and video-tags
- ([#1326](https://github.com/h5bp/html5-boilerplate/issues/1326)).
-* Remove Google Chrome Frame related code
- ([#1379](https://github.com/h5bp/html5-boilerplate/pull/1379),
- [#1396](https://github.com/h5bp/html5-boilerplate/pull/1396)).
-* Update to Google Universal Analytics
- ([#1347](https://github.com/h5bp/html5-boilerplate/issues/1347)).
-* Update to jQuery 1.10.2.
-* Update to Normalize.css 1.1.3.
-
-### 4.2.0 (April 8, 2013)
-
-* Remove Google Analytics protocol check
- ([#1319](https://github.com/h5bp/html5-boilerplate/pull/1319)).
-* Update to Normalize.css 1.1.1.
-* Update Apache configurations to include the latest changes in the
- canonical [`.htaccess`](https://github.com/h5bp/server-configs-apache)
- file.
-* Use a protocol relative URL for the 404 template script.
-* Update to jQuery 1.9.1.
-
-### 4.1.0 (January 21, 2013)
-
-* Update to Normalize.css 1.1.0.
-* Update to jQuery 1.9.0.
-
-### 4.0.3 (January 12, 2013)
-
-* Use 32x32 favicon.ico
- ([#1286](https://github.com/h5bp/html5-boilerplate/pull/1286)).
-* Remove named function expression in plugins.js
- ([#1280](https://github.com/h5bp/html5-boilerplate/pull/1280)).
-* Adjust CSS image-replacement code
- ([#1239](https://github.com/h5bp/html5-boilerplate/issues/1239)).
-* Update HiDPI example media query
- ([#1127](https://github.com/h5bp/html5-boilerplate/issues/1127)).
-
-### 4.0.2 (December 9, 2012)
-
-* Update placeholder icons.
-* Update to Normalize.css 1.0.2.
-* Update to jQuery 1.8.3.
-
-### 4.0.1 (October 20, 2012)
-
-* Further improvements to `console` method stubbing
- ([#1206](https://github.com/h5bp/html5-boilerplate/issues/1206),
- [#1229](https://github.com/h5bp/html5-boilerplate/pull/1229)).
-* Update to jQuery 1.8.2.
-* Update to Modernizr 2.6.2.
-* Minor additions to the documentation.
-
-### 4.0.0 (August 28, 2012)
-
-* Improve the Apache compression configuration
- ([#1012](https://github.com/h5bp/html5-boilerplate/issues/1012),
- [#1173](https://github.com/h5bp/html5-boilerplate/issues/1173)).
-* Add a HiDPI example media query
- ([#1127](https://github.com/h5bp/html5-boilerplate/issues/1127)).
-* Add bundled docs
- ([#1154](https://github.com/h5bp/html5-boilerplate/issues/1154)).
-* Add MIT license
- ([#1139](https://github.com/h5bp/html5-boilerplate/issues/1139)).
-* Update to Normalize.css 1.0.1.
-* Separate Normalize.css from the rest of the CSS
- ([#1160](https://github.com/h5bp/html5-boilerplate/issues/1160)).
-* Improve `console.log` protection
- ([#1107](https://github.com/h5bp/html5-boilerplate/issues/1107)).
-* Replace hot pink text selection color with a neutral color.
-* Change image replacement technique
- ([#1149](https://github.com/h5bp/html5-boilerplate/issues/1149)).
-* Code format and consistency changes
- ([#1112](https://github.com/h5bp/html5-boilerplate/issues/1112)).
-* Rename CSS file and rename JS files and subdirectories.
-* Update to jQuery 1.8
- ([#1161](https://github.com/h5bp/html5-boilerplate/issues/1161)).
-* Update to Modernizr 2.6.1
- ([#1086](https://github.com/h5bp/html5-boilerplate/issues/1086)).
-* Remove uncompressed jQuery
- ([#1153](https://github.com/h5bp/html5-boilerplate/issues/1153)).
-* Remove superfluous inline comments
- ([#1150](https://github.com/h5bp/html5-boilerplate/issues/1150)).
-
-### 3.0.2 (February 19, 2012)
-
-* Update to Modernizr 2.5.3.
-
-### 3.0.1 (February 08, 2012).
-
-* Update to Modernizr 2.5.2 (includes html5shiv 3.3).
-
-### 3.0.0 (February 06, 2012)
-
-* Improvements to `.htaccess`.
-* Improve 404 design.
-* Simplify JS folder structure.
-* Change `html` IE class names changed to target ranges rather than
- specific versions of IE.
-* Update CSS to include latest normalize.css changes and better
- typographic defaults
- ([#825](https://github.com/h5bp/html5-boilerplate/issues/825)).
-* Update to Modernizr 2.5 (includes yepnope 1.5 and html5shiv 3.2).
-* Update to jQuery 1.7.1.
-* Revert to async snippet for the Google Analytics script.
-* Remove the ant build script
- ([#826](https://github.com/h5bp/html5-boilerplate/issues/826)).
-* Remove Respond.js
- ([#816](https://github.com/h5bp/html5-boilerplate/issues/816)).
-* Remove the `demo/` directory
- ([#808](https://github.com/h5bp/html5-boilerplate/issues/808)).
-* Remove the `test/` directory
- ([#808](https://github.com/h5bp/html5-boilerplate/issues/808)).
-* Remove Google Chrome Frame script for IE6 users; replace with links
- to Chrome Frame and options for alternative browsers.
-* Remove `initial-scale=1` from the viewport `meta`
- ([#824](https://github.com/h5bp/html5-boilerplate/issues/824)).
-* Remove `defer` from all scripts to avoid legacy IE bugs.
-* Remove explicit Site Speed tracking for Google Analytics. It's now
- enabled by default.
-
-### 2.0.0 (August 10, 2011)
-
-* Change starting CSS to be based on normalize.css instead of reset.css
- ([#500](https://github.com/h5bp/html5-boilerplate/issues/500)).
-* Add Respond.js media query polyfill.
-* Add Google Chrome Frame script prompt for IE6 users.
-* Simplify the `html` conditional comments for modern browsers and add
- an `oldie` class.
-* Update clearfix to use "micro clearfix".
-* Add placeholder CSS MQs for mobile-first approach.
-* Add `textarea { resize: vertical; }` to only allow vertical resizing.
-* Add `img { max-width: 100%; }` to the print styles; prevents images
- being truncated.
-* Add Site Speed tracking for Google Analytics.
-* Update to jQuery 1.6.2 (and use minified by default).
-* Update to Modernizr 2.0 Complete, Production minified (includes
- yepnope, html5shiv, and Respond.js).
-* Use `Modernizr.load()` to load the Google Analytics script.
-* Much faster build process.
-* Add build script options for CSSLint, JSLint, JSHint tools.
-* Build script now compresses all images in subfolders.
-* Build script now versions files by SHA hash.
-* Many `.htaccess` improvements including: disable directory browsing,
- improved support for all versions of Apache, more robust and extensive
- HTTP compression rules.
-* Remove `handheld.css` as it has very poor device support.
-* Remove touch-icon `link` elements from the HTML and include improved
- touch-icon support.
-* Remove the cache-busting query paramaters from files references in
- the HTML.
-* Remove IE6 PNGFix.
-
-### 1.0.0 (March 21, 2011)
-
-* Rewrite build script to make it more customizable and flexible.
-* Add a humans.txt.
-* Numerous `.htaccess` improvements (including inline documentation).
-* Move the alternative server configurations to the H5BP server configs
- repo.
-* Use a protocol-relative url to reference jQuery and prevent mixed
- content warnings.
-* Optimize the Google Analytics snippet.
-* Use Eric Meyer's recent CSS reset update and the HTML5 Doctor reset.
-* More robust `sub`/`sup` CSS styles.
-* Add keyboard `.focusable` helper class that extends `.visuallyhidden`.
-* Print styles no longer print hash or JavaScript links.
-* Add a print reset for IE's proprietary filters.
-* Remove IE9-specific conditional class on the `html` element.
-* Remove margins from lists within `nav` elements.
-* Remove YUI profiling.
diff --git a/middleman-cli/lib/middleman-templates/html5/source/CONTRIBUTING.md b/middleman-cli/lib/middleman-templates/html5/source/CONTRIBUTING.md
deleted file mode 100644
index 89c63e1d..00000000
--- a/middleman-cli/lib/middleman-templates/html5/source/CONTRIBUTING.md
+++ /dev/null
@@ -1,154 +0,0 @@
-# Contributing to HTML5 Boilerplate
-
-♥ [HTML5 Boilerplate](http://html5boilerplate.com) and want to get involved?
-Thanks! There are plenty of ways you can help!
-
-Please take a moment to review this document in order to make the contribution
-process easy and effective for everyone involved.
-
-Following these guidelines helps to communicate that you respect the time of
-the developers managing and developing this open source project. In return,
-they should reciprocate that respect in addressing your issue or assessing
-patches and features.
-
-
-## Using the issue tracker
-
-The [issue tracker](https://github.com/h5bp/html5-boilerplate/issues) is
-the preferred channel for [bug reports](#bugs), [features requests](#features)
-and [submitting pull requests](#pull-requests), but please respect the following
-restrictions:
-
-* Please **do not** use the issue tracker for personal support requests (use
- [Stack Overflow](http://stackoverflow.com/questions/tagged/html5boilerplate)
- or IRC).
-
-* Please **do not** derail or troll issues. Keep the discussion on topic and
- respect the opinions of others.
-
-* Please **do not** open issues or pull requests regarding the code in
- [`.htaccess`](https://github.com/h5bp/server-configs-apache),
- [`jQuery`](https://github.com/jquery/jquery/),
- [`Modernizr`](https://github.com/Modernizr/Modernizr) or
- [`Normalize.css`](https://github.com/necolas/normalize.css) (open them in
- their respective repositories).
-
-
-
-## Bug reports
-
-A bug is a _demonstrable problem_ that is caused by the code in the repository.
-Good bug reports are extremely helpful - thank you!
-
-Guidelines for bug reports:
-
-1. **Use the GitHub issue search** — check if the issue has already been
- reported.
-
-2. **Check if the issue has been fixed** — try to reproduce it using the
- latest `master` or development branch in the repository.
-
-3. **Isolate the problem** — ideally create a [reduced test
- case](http://css-tricks.com/6263-reduced-test-cases/) and a live example.
-
-A good bug report shouldn't leave others needing to chase you up for more
-information. Please try to be as detailed as possible in your report. What is
-your environment? What steps will reproduce the issue? What browser(s) and OS
-experience the problem? What would you expect to be the outcome? All these
-details will help people to fix any potential bugs.
-
-Example:
-
-> Short and descriptive example bug report title
->
-> A summary of the issue and the browser/OS environment in which it occurs. If
-> suitable, include the steps required to reproduce the bug.
->
-> 1. This is the first step
-> 2. This is the second step
-> 3. Further steps, etc.
->
-> `` - a link to the reduced test case
->
-> Any other information you want to share that is relevant to the issue being
-> reported. This might include the lines of code that you have identified as
-> causing the bug, and potential solutions (and your opinions on their
-> merits).
-
-
-
-## Feature requests
-
-Feature requests are welcome. But take a moment to find out whether your idea
-fits with the scope and aims of the project. It's up to *you* to make a strong
-case to convince the project's developers of the merits of this feature. Please
-provide as much detail and context as possible.
-
-
-
-## Pull requests
-
-Good pull requests - patches, improvements, new features - are a fantastic
-help. They should remain focused in scope and avoid containing unrelated
-commits.
-
-**Please ask first** before embarking on any significant pull request (e.g.
-implementing features, refactoring code, porting to a different language),
-otherwise you risk spending a lot of time working on something that the
-project's developers might not want to merge into the project.
-
-Please adhere to the coding conventions used throughout a project (indentation,
-accurate comments, etc.) and any other requirements (such as test coverage).
-
-Adhering to the following this process is the best way to get your work
-included in the project:
-
-1. [Fork](http://help.github.com/fork-a-repo/) the project, clone your fork,
- and configure the remotes:
-
- ```bash
- # Clone your fork of the repo into the current directory
- git clone https://github.com//html5-boilerplate.git
- # Navigate to the newly cloned directory
- cd html5-boilerplate
- # Assign the original repo to a remote called "upstream"
- git remote add upstream https://github.com/h5bp/html5-boilerplate.git
- ```
-
-2. If you cloned a while ago, get the latest changes from upstream:
-
- ```bash
- git checkout master
- git pull upstream master
- ```
-
-3. Create a new topic branch (off the main project development branch) to
- contain your feature, change, or fix:
-
- ```bash
- git checkout -b
- ```
-
-4. Commit your changes in logical chunks. Please adhere to these [git commit
- message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
- or your code is unlikely be merged into the main project. Use Git's
- [interactive rebase](https://help.github.com/articles/interactive-rebase)
- feature to tidy up your commits before making them public.
-
-5. Locally merge (or rebase) the upstream development branch into your topic branch:
-
- ```bash
- git pull [--rebase] upstream master
- ```
-
-6. Push your topic branch up to your fork:
-
- ```bash
- git push origin
- ```
-
-7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/)
- with a clear title and description.
-
-**IMPORTANT**: By submitting a patch, you agree to allow the project owners to
-license your work under the the terms of the [MIT License](LICENSE.md).
diff --git a/middleman-cli/lib/middleman-templates/html5/source/LICENSE.md b/middleman-cli/lib/middleman-templates/html5/source/LICENSE.md
deleted file mode 100644
index 294e91d8..00000000
--- a/middleman-cli/lib/middleman-templates/html5/source/LICENSE.md
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) HTML5 Boilerplate
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/middleman-cli/lib/middleman-templates/html5/source/README.md b/middleman-cli/lib/middleman-templates/html5/source/README.md
deleted file mode 100644
index 864900b1..00000000
--- a/middleman-cli/lib/middleman-templates/html5/source/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-# [HTML5 Boilerplate](http://html5boilerplate.com)
-
-HTML5 Boilerplate is a professional front-end template for building fast,
-robust, and adaptable web apps or sites.
-
-This project is the product of many years of iterative development and combined
-community knowledge. It does not impose a specific development philosophy or
-framework, so you're free to architect your code in the way that you want.
-
-* Source: [https://github.com/h5bp/html5-boilerplate](https://github.com/h5bp/html5-boilerplate)
-* Homepage: [http://html5boilerplate.com](http://html5boilerplate.com)
-* Twitter: [@h5bp](http://twitter.com/h5bp)
-
-
-## Quick start
-
-Choose one of the following options:
-
-1. Download the latest stable release from
- [html5boilerplate.com](http://html5boilerplate.com/) or a custom build from
- [Initializr](http://www.initializr.com).
-2. Clone the git repo — `git clone
- https://github.com/h5bp/html5-boilerplate.git` - and checkout the [tagged
- release](https://github.com/h5bp/html5-boilerplate/releases) you'd like to
- use.
-
-
-## Features
-
-* HTML5 ready. Use the new elements with confidence.
-* Cross-browser compatible (Chrome, Opera, Safari, Firefox 3.6+, IE6+).
-* Designed with progressive enhancement in mind.
-* Includes [Normalize.css](http://necolas.github.com/normalize.css/) for CSS
- normalizations and common bug fixes.
-* The latest [jQuery](http://jquery.com/) via CDN, with a local fallback.
-* The latest [Modernizr](http://modernizr.com/) build for feature detection.
-* IE-specific classes for easier cross-browser control.
-* Placeholder CSS Media Queries.
-* Useful CSS helpers.
-* Default print CSS, performance optimized.
-* Protection against any stray `console.log` causing JavaScript errors in
- IE6/7.
-* An optimized Google Analytics snippet.
-* Apache server caching, compression, and other configuration defaults for
- Grade-A performance.
-* Cross-domain Ajax and Flash.
-* "Delete-key friendly." Easy to strip out parts you don't need.
-* Extensive inline and accompanying documentation.
-
-
-## Documentation
-
-Take a look at the [documentation table of contents](doc/TOC.md). This
-documentation is bundled with the project, which makes it readily available for
-offline reading and provides a useful starting point for any documentation you
-want to write about your project.
-
-
-## Contributing
-
-Anyone and everyone is welcome to [contribute](CONTRIBUTING.md). Hundreds of
-developers have helped make the HTML5 Boilerplate what it is today.
diff --git a/middleman-cli/lib/middleman-templates/html5/source/apple-touch-icon-precomposed.png b/middleman-cli/lib/middleman-templates/html5/source/apple-touch-icon-precomposed.png
deleted file mode 100644
index bee3e369..00000000
Binary files a/middleman-cli/lib/middleman-templates/html5/source/apple-touch-icon-precomposed.png and /dev/null differ
diff --git a/middleman-cli/lib/middleman-templates/html5/source/crossdomain.xml b/middleman-cli/lib/middleman-templates/html5/source/crossdomain.xml
deleted file mode 100644
index 29a035d7..00000000
--- a/middleman-cli/lib/middleman-templates/html5/source/crossdomain.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/middleman-cli/lib/middleman-templates/html5/source/css/main.css b/middleman-cli/lib/middleman-templates/html5/source/css/main.css
deleted file mode 100644
index 6ac6721c..00000000
--- a/middleman-cli/lib/middleman-templates/html5/source/css/main.css
+++ /dev/null
@@ -1,294 +0,0 @@
-/*! HTML5 Boilerplate v4.3.0 | MIT License | http://h5bp.com/ */
-
-/*
- * What follows is the result of much research on cross-browser styling.
- * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
- * Kroc Camen, and the H5BP dev community and team.
- */
-
-/* ==========================================================================
- Base styles: opinionated defaults
- ========================================================================== */
-
-html {
- color: #222;
- font-size: 1em;
- line-height: 1.4;
-}
-
-/*
- * Remove text-shadow in selection highlight: h5bp.com/i
- * These selection rule sets have to be separate.
- * Customize the background color to match your design.
- */
-
-::-moz-selection {
- background: #b3d4fc;
- text-shadow: none;
-}
-
-::selection {
- background: #b3d4fc;
- text-shadow: none;
-}
-
-/*
- * A better looking default horizontal rule
- */
-
-hr {
- display: block;
- height: 1px;
- border: 0;
- border-top: 1px solid #ccc;
- margin: 1em 0;
- padding: 0;
-}
-
-/*
- * Remove the gap between images, videos, audio and canvas and the bottom of
- * their containers: h5bp.com/i/440
- */
-
-audio,
-canvas,
-img,
-svg,
-video {
- vertical-align: middle;
-}
-
-/*
- * Remove default fieldset styles.
- */
-
-fieldset {
- border: 0;
- margin: 0;
- padding: 0;
-}
-
-/*
- * Allow only vertical resizing of textareas.
- */
-
-textarea {
- resize: vertical;
-}
-
-/* ==========================================================================
- Browse Happy prompt
- ========================================================================== */
-
-.browsehappy {
- margin: 0.2em 0;
- background: #ccc;
- color: #000;
- padding: 0.2em 0;
-}
-
-/* ==========================================================================
- Author's custom styles
- ========================================================================== */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* ==========================================================================
- Helper classes
- ========================================================================== */
-
-/*
- * Image replacement
- */
-
-.ir {
- background-color: transparent;
- border: 0;
- overflow: hidden;
- /* IE 6/7 fallback */
- *text-indent: -9999px;
-}
-
-.ir:before {
- content: "";
- display: block;
- width: 0;
- height: 150%;
-}
-
-/*
- * Hide from both screenreaders and browsers: h5bp.com/u
- */
-
-.hidden {
- display: none !important;
- visibility: hidden;
-}
-
-/*
- * Hide only visually, but have it available for screenreaders: h5bp.com/v
- */
-
-.visuallyhidden {
- border: 0;
- clip: rect(0 0 0 0);
- height: 1px;
- margin: -1px;
- overflow: hidden;
- padding: 0;
- position: absolute;
- width: 1px;
-}
-
-/*
- * Extends the .visuallyhidden class to allow the element to be focusable
- * when navigated to via the keyboard: h5bp.com/p
- */
-
-.visuallyhidden.focusable:active,
-.visuallyhidden.focusable:focus {
- clip: auto;
- height: auto;
- margin: 0;
- overflow: visible;
- position: static;
- width: auto;
-}
-
-/*
- * Hide visually and from screenreaders, but maintain layout
- */
-
-.invisible {
- visibility: hidden;
-}
-
-/*
- * Clearfix: contain floats
- *
- * For modern browsers
- * 1. The space content is one way to avoid an Opera bug when the
- * `contenteditable` attribute is included anywhere else in the document.
- * Otherwise it causes space to appear at the top and bottom of elements
- * that receive the `clearfix` class.
- * 2. The use of `table` rather than `block` is only necessary if using
- * `:before` to contain the top-margins of child elements.
- */
-
-.clearfix:before,
-.clearfix:after {
- content: " "; /* 1 */
- display: table; /* 2 */
-}
-
-.clearfix:after {
- clear: both;
-}
-
-/*
- * For IE 6/7 only
- * Include this rule to trigger hasLayout and contain floats.
- */
-
-.clearfix {
- *zoom: 1;
-}
-
-/* ==========================================================================
- EXAMPLE Media Queries for Responsive Design.
- These examples override the primary ('mobile first') styles.
- Modify as content requires.
- ========================================================================== */
-
-@media only screen and (min-width: 35em) {
- /* Style adjustments for viewports that meet the condition */
-}
-
-@media print,
- (-o-min-device-pixel-ratio: 5/4),
- (-webkit-min-device-pixel-ratio: 1.25),
- (min-resolution: 120dpi) {
- /* Style adjustments for high resolution devices */
-}
-
-/* ==========================================================================
- Print styles.
- Inlined to avoid required HTTP connection: h5bp.com/r
- ========================================================================== */
-
-@media print {
- * {
- background: transparent !important;
- color: #000 !important; /* Black prints faster: h5bp.com/s */
- box-shadow: none !important;
- text-shadow: none !important;
- }
-
- a,
- a:visited {
- text-decoration: underline;
- }
-
- a[href]:after {
- content: " (" attr(href) ")";
- }
-
- abbr[title]:after {
- content: " (" attr(title) ")";
- }
-
- /*
- * Don't show links for images, or javascript/internal links
- */
-
- .ir a:after,
- a[href^="javascript:"]:after,
- a[href^="#"]:after {
- content: "";
- }
-
- pre,
- blockquote {
- border: 1px solid #999;
- page-break-inside: avoid;
- }
-
- thead {
- display: table-header-group; /* h5bp.com/t */
- }
-
- tr,
- img {
- page-break-inside: avoid;
- }
-
- img {
- max-width: 100% !important;
- }
-
- p,
- h2,
- h3 {
- orphans: 3;
- widows: 3;
- }
-
- h2,
- h3 {
- page-break-after: avoid;
- }
-}
diff --git a/middleman-cli/lib/middleman-templates/html5/source/css/normalize.css b/middleman-cli/lib/middleman-templates/html5/source/css/normalize.css
deleted file mode 100644
index 42e24d68..00000000
--- a/middleman-cli/lib/middleman-templates/html5/source/css/normalize.css
+++ /dev/null
@@ -1,527 +0,0 @@
-/*! normalize.css v1.1.3 | MIT License | git.io/normalize */
-
-/* ==========================================================================
- HTML5 display definitions
- ========================================================================== */
-
-/**
- * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
- */
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-nav,
-section,
-summary {
- display: block;
-}
-
-/**
- * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
- */
-
-audio,
-canvas,
-video {
- display: inline-block;
- *display: inline;
- *zoom: 1;
-}
-
-/**
- * Prevent modern browsers from displaying `audio` without controls.
- * Remove excess height in iOS 5 devices.
- */
-
-audio:not([controls]) {
- display: none;
- height: 0;
-}
-
-/**
- * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
- * Known issue: no IE 6 support.
- */
-
-[hidden] {
- display: none;
-}
-
-/* ==========================================================================
- Base
- ========================================================================== */
-
-/**
- * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
- * `em` units.
- * 2. Prevent iOS text size adjust after orientation change, without disabling
- * user zoom.
- */
-
-html {
- font-size: 100%; /* 1 */
- -ms-text-size-adjust: 100%; /* 2 */
- -webkit-text-size-adjust: 100%; /* 2 */
-}
-
-/**
- * Address `font-family` inconsistency between `textarea` and other form
- * elements.
- */
-
-html,
-button,
-input,
-select,
-textarea {
- font-family: sans-serif;
-}
-
-/**
- * Address margins handled incorrectly in IE 6/7.
- */
-
-body {
- margin: 0;
-}
-
-/* ==========================================================================
- Links
- ========================================================================== */
-
-/**
- * Address `outline` inconsistency between Chrome and other browsers.
- */
-
-a:focus {
- outline: thin dotted;
-}
-
-/**
- * Improve readability when focused and also mouse hovered in all browsers.
- */
-
-a:active,
-a:hover {
- outline: 0;
-}
-
-/* ==========================================================================
- Typography
- ========================================================================== */
-
-/**
- * Address font sizes and margins set differently in IE 6/7.
- * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
- * and Chrome.
- */
-
-h1 {
- font-size: 2em;
- margin: 0.67em 0;
-}
-
-h2 {
- font-size: 1.5em;
- margin: 0.83em 0;
-}
-
-h3 {
- font-size: 1.17em;
- margin: 1em 0;
-}
-
-h4 {
- font-size: 1em;
- margin: 1.33em 0;
-}
-
-h5 {
- font-size: 0.83em;
- margin: 1.67em 0;
-}
-
-h6 {
- font-size: 0.67em;
- margin: 2.33em 0;
-}
-
-/**
- * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
- */
-
-abbr[title] {
- border-bottom: 1px dotted;
-}
-
-/**
- * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
- */
-
-b,
-strong {
- font-weight: bold;
-}
-
-blockquote {
- margin: 1em 40px;
-}
-
-/**
- * Address styling not present in Safari 5 and Chrome.
- */
-
-dfn {
- font-style: italic;
-}
-
-/**
- * Address differences between Firefox and other browsers.
- * Known issue: no IE 6/7 normalization.
- */
-
-hr {
- -moz-box-sizing: content-box;
- box-sizing: content-box;
- height: 0;
-}
-
-/**
- * Address styling not present in IE 6/7/8/9.
- */
-
-mark {
- background: #ff0;
- color: #000;
-}
-
-/**
- * Address margins set differently in IE 6/7.
- */
-
-p,
-pre {
- margin: 1em 0;
-}
-
-/**
- * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
- */
-
-code,
-kbd,
-pre,
-samp {
- font-family: monospace, serif;
- _font-family: 'courier new', monospace;
- font-size: 1em;
-}
-
-/**
- * Improve readability of pre-formatted text in all browsers.
- */
-
-pre {
- white-space: pre;
- white-space: pre-wrap;
- word-wrap: break-word;
-}
-
-/**
- * Address CSS quotes not supported in IE 6/7.
- */
-
-q {
- quotes: none;
-}
-
-/**
- * Address `quotes` property not supported in Safari 4.
- */
-
-q:before,
-q:after {
- content: '';
- content: none;
-}
-
-/**
- * Address inconsistent and variable font size in all browsers.
- */
-
-small {
- font-size: 80%;
-}
-
-/**
- * Prevent `sub` and `sup` affecting `line-height` in all browsers.
- */
-
-sub,
-sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
-}
-
-sup {
- top: -0.5em;
-}
-
-sub {
- bottom: -0.25em;
-}
-
-/* ==========================================================================
- Lists
- ========================================================================== */
-
-/**
- * Address margins set differently in IE 6/7.
- */
-
-dl,
-menu,
-ol,
-ul {
- margin: 1em 0;
-}
-
-dd {
- margin: 0 0 0 40px;
-}
-
-/**
- * Address paddings set differently in IE 6/7.
- */
-
-menu,
-ol,
-ul {
- padding: 0 0 0 40px;
-}
-
-/**
- * Correct list images handled incorrectly in IE 7.
- */
-
-nav ul,
-nav ol {
- list-style: none;
- list-style-image: none;
-}
-
-/* ==========================================================================
- Embedded content
- ========================================================================== */
-
-/**
- * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
- * 2. Improve image quality when scaled in IE 7.
- */
-
-img {
- border: 0; /* 1 */
- -ms-interpolation-mode: bicubic; /* 2 */
-}
-
-/**
- * Correct overflow displayed oddly in IE 9.
- */
-
-svg:not(:root) {
- overflow: hidden;
-}
-
-/* ==========================================================================
- Figures
- ========================================================================== */
-
-/**
- * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
- */
-
-figure {
- margin: 0;
-}
-
-/* ==========================================================================
- Forms
- ========================================================================== */
-
-/**
- * Correct margin displayed oddly in IE 6/7.
- */
-
-form {
- margin: 0;
-}
-
-/**
- * Define consistent border, margin, and padding.
- */
-
-fieldset {
- border: 1px solid #c0c0c0;
- margin: 0 2px;
- padding: 0.35em 0.625em 0.75em;
-}
-
-/**
- * 1. Correct color not being inherited in IE 6/7/8/9.
- * 2. Correct text not wrapping in Firefox 3.
- * 3. Correct alignment displayed oddly in IE 6/7.
- */
-
-legend {
- border: 0; /* 1 */
- padding: 0;
- white-space: normal; /* 2 */
- *margin-left: -7px; /* 3 */
-}
-
-/**
- * 1. Correct font size not being inherited in all browsers.
- * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
- * and Chrome.
- * 3. Improve appearance and consistency in all browsers.
- */
-
-button,
-input,
-select,
-textarea {
- font-size: 100%; /* 1 */
- margin: 0; /* 2 */
- vertical-align: baseline; /* 3 */
- *vertical-align: middle; /* 3 */
-}
-
-/**
- * Address Firefox 3+ setting `line-height` on `input` using `!important` in
- * the UA stylesheet.
- */
-
-button,
-input {
- line-height: normal;
-}
-
-/**
- * Address inconsistent `text-transform` inheritance for `button` and `select`.
- * All other form control elements do not inherit `text-transform` values.
- * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
- * Correct `select` style inheritance in Firefox 4+ and Opera.
- */
-
-button,
-select {
- text-transform: none;
-}
-
-/**
- * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
- * and `video` controls.
- * 2. Correct inability to style clickable `input` types in iOS.
- * 3. Improve usability and consistency of cursor style between image-type
- * `input` and others.
- * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
- * Known issue: inner spacing remains in IE 6.
- */
-
-button,
-html input[type="button"], /* 1 */
-input[type="reset"],
-input[type="submit"] {
- -webkit-appearance: button; /* 2 */
- cursor: pointer; /* 3 */
- *overflow: visible; /* 4 */
-}
-
-/**
- * Re-set default cursor for disabled elements.
- */
-
-button[disabled],
-html input[disabled] {
- cursor: default;
-}
-
-/**
- * 1. Address box sizing set to content-box in IE 8/9.
- * 2. Remove excess padding in IE 8/9.
- * 3. Remove excess padding in IE 7.
- * Known issue: excess padding remains in IE 6.
- */
-
-input[type="checkbox"],
-input[type="radio"] {
- box-sizing: border-box; /* 1 */
- padding: 0; /* 2 */
- *height: 13px; /* 3 */
- *width: 13px; /* 3 */
-}
-
-/**
- * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
- * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
- * (include `-moz` to future-proof).
- */
-
-input[type="search"] {
- -webkit-appearance: textfield; /* 1 */
- -moz-box-sizing: content-box;
- -webkit-box-sizing: content-box; /* 2 */
- box-sizing: content-box;
-}
-
-/**
- * Remove inner padding and search cancel button in Safari 5 and Chrome
- * on OS X.
- */
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-
-/**
- * Remove inner padding and border in Firefox 3+.
- */
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
- border: 0;
- padding: 0;
-}
-
-/**
- * 1. Remove default vertical scrollbar in IE 6/7/8/9.
- * 2. Improve readability and alignment in all browsers.
- */
-
-textarea {
- overflow: auto; /* 1 */
- vertical-align: top; /* 2 */
-}
-
-/* ==========================================================================
- Tables
- ========================================================================== */
-
-/**
- * Remove most spacing between table cells.
- */
-
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
diff --git a/middleman-cli/lib/middleman-templates/html5/source/favicon.ico b/middleman-cli/lib/middleman-templates/html5/source/favicon.ico
deleted file mode 100644
index be74abd6..00000000
Binary files a/middleman-cli/lib/middleman-templates/html5/source/favicon.ico and /dev/null differ
diff --git a/middleman-cli/lib/middleman-templates/html5/source/humans.txt b/middleman-cli/lib/middleman-templates/html5/source/humans.txt
deleted file mode 100644
index d9e1bb98..00000000
--- a/middleman-cli/lib/middleman-templates/html5/source/humans.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-# humanstxt.org/
-# The humans responsible & technology colophon
-
-# TEAM
-
- -- --
-
-# THANKS
-
-
-
-# TECHNOLOGY COLOPHON
-
- HTML5, CSS3
- Normalize.css, jQuery, Modernizr
diff --git a/middleman-cli/lib/middleman-templates/html5/source/img/.gitignore b/middleman-cli/lib/middleman-templates/html5/source/img/.gitignore
deleted file mode 100644
index e69de29b..00000000
diff --git a/middleman-cli/lib/middleman-templates/html5/source/index.html.erb b/middleman-cli/lib/middleman-templates/html5/source/index.html.erb
deleted file mode 100644
index 9af2d2d5..00000000
--- a/middleman-cli/lib/middleman-templates/html5/source/index.html.erb
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: HTML5 Boilerplate Middleman
----
-
-
-
-
-
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/test/qunit/qunit.css b/middleman-cli/lib/middleman-templates/mobile/source/test/qunit/qunit.css
deleted file mode 100755
index 214b9b04..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/test/qunit/qunit.css
+++ /dev/null
@@ -1,148 +0,0 @@
-/** Font Family and Sizes */
-
-#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
- font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
-}
-
-#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
-#qunit-tests { font-size: smaller; }
-
-
-/** Resets */
-
-#qunit-tests, #qunit-tests li ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
- margin: 0;
- padding: 0;
-}
-
-
-/** Header */
-
-#qunit-header {
- padding: 0.5em 0 0.5em 1em;
-
- color: #fff;
- text-shadow: rgba(0, 0, 0, 0.5) 4px 4px 1px;
- background-color: #0d3349;
-
- border-radius: 15px 15px 0 0;
- -moz-border-radius: 15px 15px 0 0;
- -webkit-border-top-right-radius: 15px;
- -webkit-border-top-left-radius: 15px;
-}
-
-#qunit-banner {
- height: 5px;
-}
-
-#qunit-testrunner-toolbar {
- padding: 0em 0 0.5em 2em;
-}
-
-#qunit-userAgent {
- padding: 0.5em 0 0.5em 2.5em;
- background-color: #2b81af;
- color: #fff;
- text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
-}
-
-
-/** Tests: Pass/Fail */
-
-#qunit-tests {
- list-style-position: inside;
-}
-
-#qunit-tests li {
- padding: 0.4em 0.5em 0.4em 2.5em;
- border-bottom: 1px solid #fff;
- list-style-position: inside;
-}
-
-#qunit-tests li strong {
- cursor: pointer;
-}
-
-#qunit-tests li ol {
- margin-top: 0.5em;
- padding: 0.5em;
-
- background-color: #fff;
-
- border-radius: 15px;
- -moz-border-radius: 15px;
- -webkit-border-radius: 15px;
-
- box-shadow: inset 0px 2px 13px #999;
- -moz-box-shadow: inset 0px 2px 13px #999;
- -webkit-box-shadow: inset 0px 2px 13px #999;
-}
-
-#qunit-tests li li {
- margin: 0.5em;
- padding: 0.4em 0.5em 0.4em 0.5em;
- background-color: #fff;
- border-bottom: none;
- list-style-position: inside;
-}
-
-/*** Passing Styles */
-
-#qunit-tests li li.pass {
- color: #5E740B;
- background-color: #fff;
- border-left: 26px solid #C6E746;
-}
-
-#qunit-tests li.pass { color: #528CE0; background-color: #D2E0E6; }
-#qunit-tests li.pass span.test-name { color: #366097; }
-
-#qunit-tests li li.pass span.test-actual,
-#qunit-tests li li.pass span.test-expected { color: #999999; }
-
-strong b.pass { color: #5E740B; }
-
-#qunit-banner.qunit-pass { background-color: #C6E746; }
-
-/*** Failing Styles */
-
-#qunit-tests li li.fail {
- color: #710909;
- background-color: #fff;
- border-left: 26px solid #EE5757;
-}
-
-#qunit-tests li.fail { color: #000000; background-color: #EE5757; }
-#qunit-tests li.fail span.test-name,
-#qunit-tests li.fail span.module-name { color: #000000; }
-
-#qunit-tests li li.fail span.test-actual { color: #EE5757; }
-#qunit-tests li li.fail span.test-expected { color: green; }
-
-strong b.fail { color: #710909; }
-
-#qunit-banner.qunit-fail,
-#qunit-testrunner-toolbar { background-color: #EE5757; }
-
-
-/** Footer */
-
-#qunit-testresult {
- padding: 0.5em 0.5em 0.5em 2.5em;
-
- color: #2b81af;
- background-color: #D2E0E6;
-
- border-radius: 0 0 15px 15px;
- -moz-border-radius: 0 0 15px 15px;
- -webkit-border-bottom-right-radius: 15px;
- -webkit-border-bottom-left-radius: 15px;
-}
-
-/** Fixture */
-
-#qunit-fixture {
- position: absolute;
- top: -10000px;
- left: -10000px;
-}
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/test/qunit/qunit.js b/middleman-cli/lib/middleman-templates/mobile/source/test/qunit/qunit.js
deleted file mode 100755
index 9399a608..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/test/qunit/qunit.js
+++ /dev/null
@@ -1,1265 +0,0 @@
-/*
- * QUnit - A JavaScript Unit Testing Framework
- *
- * http://docs.jquery.com/QUnit
- *
- * Copyright (c) 2009 John Resig, Jörn Zaefferer
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- */
-
-(function(window) {
-
-var QUnit = {
-
- // call on start of module test to prepend name to all tests
- module: function(name, testEnvironment) {
- config.currentModule = name;
-
- synchronize(function() {
- if ( config.currentModule ) {
- QUnit.moduleDone( config.currentModule, config.moduleStats.bad, config.moduleStats.all );
- }
-
- config.currentModule = name;
- config.moduleTestEnvironment = testEnvironment;
- config.moduleStats = { all: 0, bad: 0 };
-
- QUnit.moduleStart( name, testEnvironment );
- });
- },
-
- asyncTest: function(testName, expected, callback) {
- if ( arguments.length === 2 ) {
- callback = expected;
- expected = 0;
- }
-
- QUnit.test(testName, expected, callback, true);
- },
-
- test: function(testName, expected, callback, async) {
- var name = '' + testName + '', testEnvironment, testEnvironmentArg;
-
- if ( arguments.length === 2 ) {
- callback = expected;
- expected = null;
- }
- // is 2nd argument a testEnvironment?
- if ( expected && typeof expected === 'object') {
- testEnvironmentArg = expected;
- expected = null;
- }
-
- if ( config.currentModule ) {
- name = '' + config.currentModule + ": " + name;
- }
-
- if ( !validTest(config.currentModule + ": " + testName) ) {
- return;
- }
-
- synchronize(function() {
-
- testEnvironment = extend({
- setup: function() {},
- teardown: function() {}
- }, config.moduleTestEnvironment);
- if (testEnvironmentArg) {
- extend(testEnvironment,testEnvironmentArg);
- }
-
- QUnit.testStart( testName, testEnvironment );
-
- // allow utility functions to access the current test environment
- QUnit.current_testEnvironment = testEnvironment;
-
- config.assertions = [];
- config.expected = expected;
-
- var tests = id("qunit-tests");
- if (tests) {
- var b = document.createElement("strong");
- b.innerHTML = "Running " + name;
- var li = document.createElement("li");
- li.appendChild( b );
- li.id = "current-test-output";
- tests.appendChild( li )
- }
-
- try {
- if ( !config.pollution ) {
- saveGlobal();
- }
-
- testEnvironment.setup.call(testEnvironment);
- } catch(e) {
- QUnit.ok( false, "Setup failed on " + name + ": " + e.message );
- }
- });
-
- synchronize(function() {
- if ( async ) {
- QUnit.stop();
- }
-
- try {
- callback.call(testEnvironment);
- } catch(e) {
- fail("Test " + name + " died, exception and test follows", e, callback);
- QUnit.ok( false, "Died on test #" + (config.assertions.length + 1) + ": " + e.message );
- // else next test will carry the responsibility
- saveGlobal();
-
- // Restart the tests if they're blocking
- if ( config.blocking ) {
- start();
- }
- }
- });
-
- synchronize(function() {
- try {
- checkPollution();
- testEnvironment.teardown.call(testEnvironment);
- } catch(e) {
- QUnit.ok( false, "Teardown failed on " + name + ": " + e.message );
- }
- });
-
- synchronize(function() {
- try {
- QUnit.reset();
- } catch(e) {
- fail("reset() failed, following Test " + name + ", exception and reset fn follows", e, reset);
- }
-
- if ( config.expected && config.expected != config.assertions.length ) {
- QUnit.ok( false, "Expected " + config.expected + " assertions, but " + config.assertions.length + " were run" );
- }
-
- var good = 0, bad = 0,
- tests = id("qunit-tests");
-
- config.stats.all += config.assertions.length;
- config.moduleStats.all += config.assertions.length;
-
- if ( tests ) {
- var ol = document.createElement("ol");
-
- for ( var i = 0; i < config.assertions.length; i++ ) {
- var assertion = config.assertions[i];
-
- var li = document.createElement("li");
- li.className = assertion.result ? "pass" : "fail";
- li.innerHTML = assertion.message || "(no message)";
- ol.appendChild( li );
-
- if ( assertion.result ) {
- good++;
- } else {
- bad++;
- config.stats.bad++;
- config.moduleStats.bad++;
- }
- }
- if (bad == 0) {
- ol.style.display = "none";
- }
-
- var b = document.createElement("strong");
- b.innerHTML = name + " (" + bad + ", " + good + ", " + config.assertions.length + ")";
-
- addEvent(b, "click", function() {
- var next = b.nextSibling, display = next.style.display;
- next.style.display = display === "none" ? "block" : "none";
- });
-
- addEvent(b, "dblclick", function(e) {
- var target = e && e.target ? e.target : window.event.srcElement;
- if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) {
- target = target.parentNode;
- }
- if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
- window.location.search = "?" + encodeURIComponent(getText([target]).replace(/\(.+\)$/, "").replace(/(^\s*|\s*$)/g, ""));
- }
- });
-
- var li = id("current-test-output");
- li.id = "";
- li.className = bad ? "fail" : "pass";
- li.removeChild( li.firstChild );
- li.appendChild( b );
- li.appendChild( ol );
-
- if ( bad ) {
- var toolbar = id("qunit-testrunner-toolbar");
- if ( toolbar ) {
- toolbar.style.display = "block";
- id("qunit-filter-pass").disabled = null;
- id("qunit-filter-missing").disabled = null;
- }
- }
-
- } else {
- for ( var i = 0; i < config.assertions.length; i++ ) {
- if ( !config.assertions[i].result ) {
- bad++;
- config.stats.bad++;
- config.moduleStats.bad++;
- }
- }
- }
-
- QUnit.testDone( testName, bad, config.assertions.length );
-
- if ( !window.setTimeout && !config.queue.length ) {
- done();
- }
- });
-
- if ( window.setTimeout && !config.doneTimer ) {
- config.doneTimer = window.setTimeout(function(){
- if ( !config.queue.length ) {
- done();
- } else {
- synchronize( done );
- }
- }, 13);
- }
- },
-
- /**
- * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
- */
- expect: function(asserts) {
- config.expected = asserts;
- },
-
- /**
- * Asserts true.
- * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
- */
- ok: function(a, msg) {
- msg = escapeHtml(msg);
- QUnit.log(a, msg);
-
- config.assertions.push({
- result: !!a,
- message: msg
- });
- },
-
- /**
- * Checks that the first two arguments are equal, with an optional message.
- * Prints out both actual and expected values.
- *
- * Prefered to ok( actual == expected, message )
- *
- * @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." );
- *
- * @param Object actual
- * @param Object expected
- * @param String message (optional)
- */
- equal: function(actual, expected, message) {
- push(expected == actual, actual, expected, message);
- },
-
- notEqual: function(actual, expected, message) {
- push(expected != actual, actual, expected, message);
- },
-
- deepEqual: function(actual, expected, message) {
- push(QUnit.equiv(actual, expected), actual, expected, message);
- },
-
- notDeepEqual: function(actual, expected, message) {
- push(!QUnit.equiv(actual, expected), actual, expected, message);
- },
-
- strictEqual: function(actual, expected, message) {
- push(expected === actual, actual, expected, message);
- },
-
- notStrictEqual: function(actual, expected, message) {
- push(expected !== actual, actual, expected, message);
- },
-
- raises: function(fn, message) {
- try {
- fn();
- ok( false, message );
- }
- catch (e) {
- ok( true, message );
- }
- },
-
- start: function() {
- // A slight delay, to avoid any current callbacks
- if ( window.setTimeout ) {
- window.setTimeout(function() {
- if ( config.timeout ) {
- clearTimeout(config.timeout);
- }
-
- config.blocking = false;
- process();
- }, 13);
- } else {
- config.blocking = false;
- process();
- }
- },
-
- stop: function(timeout) {
- config.blocking = true;
-
- if ( timeout && window.setTimeout ) {
- config.timeout = window.setTimeout(function() {
- QUnit.ok( false, "Test timed out" );
- QUnit.start();
- }, timeout);
- }
- }
-
-};
-
-// Backwards compatibility, deprecated
-QUnit.equals = QUnit.equal;
-QUnit.same = QUnit.deepEqual;
-
-// Maintain internal state
-var config = {
- // The queue of tests to run
- queue: [],
-
- // block until document ready
- blocking: true
-};
-
-// Load paramaters
-(function() {
- var location = window.location || { search: "", protocol: "file:" },
- GETParams = location.search.slice(1).split('&');
-
- for ( var i = 0; i < GETParams.length; i++ ) {
- GETParams[i] = decodeURIComponent( GETParams[i] );
- if ( GETParams[i] === "noglobals" ) {
- GETParams.splice( i, 1 );
- i--;
- config.noglobals = true;
- } else if ( GETParams[i].search('=') > -1 ) {
- GETParams.splice( i, 1 );
- i--;
- }
- }
-
- // restrict modules/tests by get parameters
- config.filters = GETParams;
-
- // Figure out if we're running the tests from a server or not
- QUnit.isLocal = !!(location.protocol === 'file:');
-})();
-
-// Expose the API as global variables, unless an 'exports'
-// object exists, in that case we assume we're in CommonJS
-if ( typeof exports === "undefined" || typeof require === "undefined" ) {
- extend(window, QUnit);
- window.QUnit = QUnit;
-} else {
- extend(exports, QUnit);
- exports.QUnit = QUnit;
-}
-
-// define these after exposing globals to keep them in these QUnit namespace only
-extend(QUnit, {
- config: config,
-
- // Initialize the configuration options
- init: function() {
- extend(config, {
- stats: { all: 0, bad: 0 },
- moduleStats: { all: 0, bad: 0 },
- started: +new Date,
- updateRate: 1000,
- blocking: false,
- autostart: true,
- autorun: false,
- assertions: [],
- filters: [],
- queue: []
- });
-
- var tests = id("qunit-tests"),
- banner = id("qunit-banner"),
- result = id("qunit-testresult");
-
- if ( tests ) {
- tests.innerHTML = "";
- }
-
- if ( banner ) {
- banner.className = "";
- }
-
- if ( result ) {
- result.parentNode.removeChild( result );
- }
- },
-
- /**
- * Resets the test setup. Useful for tests that modify the DOM.
- */
- reset: function() {
- if ( window.jQuery ) {
- jQuery("#main, #qunit-fixture").html( config.fixture );
- }
- },
-
- /**
- * Trigger an event on an element.
- *
- * @example triggerEvent( document.body, "click" );
- *
- * @param DOMElement elem
- * @param String type
- */
- triggerEvent: function( elem, type, event ) {
- if ( document.createEvent ) {
- event = document.createEvent("MouseEvents");
- event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
- 0, 0, 0, 0, 0, false, false, false, false, 0, null);
- elem.dispatchEvent( event );
-
- } else if ( elem.fireEvent ) {
- elem.fireEvent("on"+type);
- }
- },
-
- // Safe object type checking
- is: function( type, obj ) {
- return QUnit.objectType( obj ) == type;
- },
-
- objectType: function( obj ) {
- if (typeof obj === "undefined") {
- return "undefined";
-
- // consider: typeof null === object
- }
- if (obj === null) {
- return "null";
- }
-
- var type = Object.prototype.toString.call( obj )
- .match(/^\[object\s(.*)\]$/)[1] || '';
-
- switch (type) {
- case 'Number':
- if (isNaN(obj)) {
- return "nan";
- } else {
- return "number";
- }
- case 'String':
- case 'Boolean':
- case 'Array':
- case 'Date':
- case 'RegExp':
- case 'Function':
- return type.toLowerCase();
- }
- if (typeof obj === "object") {
- return "object";
- }
- return undefined;
- },
-
- // Logging callbacks
- begin: function() {},
- done: function(failures, total) {},
- log: function(result, message) {},
- testStart: function(name, testEnvironment) {},
- testDone: function(name, failures, total) {},
- moduleStart: function(name, testEnvironment) {},
- moduleDone: function(name, failures, total) {}
-});
-
-if ( typeof document === "undefined" || document.readyState === "complete" ) {
- config.autorun = true;
-}
-
-addEvent(window, "load", function() {
- QUnit.begin();
-
- // Initialize the config, saving the execution queue
- var oldconfig = extend({}, config);
- QUnit.init();
- extend(config, oldconfig);
-
- config.blocking = false;
-
- var userAgent = id("qunit-userAgent");
- if ( userAgent ) {
- userAgent.innerHTML = navigator.userAgent;
- }
-
- var toolbar = id("qunit-testrunner-toolbar");
- if ( toolbar ) {
- toolbar.style.display = "none";
-
- var filter = document.createElement("input");
- filter.type = "checkbox";
- filter.id = "qunit-filter-pass";
- filter.disabled = true;
- addEvent( filter, "click", function() {
- var li = document.getElementsByTagName("li");
- for ( var i = 0; i < li.length; i++ ) {
- if ( li[i].className.indexOf("pass") > -1 ) {
- li[i].style.display = filter.checked ? "none" : "";
- }
- }
- });
- toolbar.appendChild( filter );
-
- var label = document.createElement("label");
- label.setAttribute("for", "qunit-filter-pass");
- label.innerHTML = "Hide passed tests";
- toolbar.appendChild( label );
-
- var missing = document.createElement("input");
- missing.type = "checkbox";
- missing.id = "qunit-filter-missing";
- missing.disabled = true;
- addEvent( missing, "click", function() {
- var li = document.getElementsByTagName("li");
- for ( var i = 0; i < li.length; i++ ) {
- if ( li[i].className.indexOf("fail") > -1 && li[i].innerHTML.indexOf('missing test - untested code is broken code') > - 1 ) {
- li[i].parentNode.parentNode.style.display = missing.checked ? "none" : "block";
- }
- }
- });
- toolbar.appendChild( missing );
-
- label = document.createElement("label");
- label.setAttribute("for", "qunit-filter-missing");
- label.innerHTML = "Hide missing tests (untested code is broken code)";
- toolbar.appendChild( label );
- }
-
- var main = id('main') || id('qunit-fixture');
- if ( main ) {
- config.fixture = main.innerHTML;
- }
-
- if (config.autostart) {
- QUnit.start();
- }
-});
-
-function done() {
- if ( config.doneTimer && window.clearTimeout ) {
- window.clearTimeout( config.doneTimer );
- config.doneTimer = null;
- }
-
- if ( config.queue.length ) {
- config.doneTimer = window.setTimeout(function(){
- if ( !config.queue.length ) {
- done();
- } else {
- synchronize( done );
- }
- }, 13);
-
- return;
- }
-
- config.autorun = true;
-
- // Log the last module results
- if ( config.currentModule ) {
- QUnit.moduleDone( config.currentModule, config.moduleStats.bad, config.moduleStats.all );
- }
-
- var banner = id("qunit-banner"),
- tests = id("qunit-tests"),
- html = ['Tests completed in ',
- +new Date - config.started, ' milliseconds. ',
- '', config.stats.all - config.stats.bad, ' tests of ', config.stats.all, ' passed, ', config.stats.bad,' failed.'].join('');
-
- if ( banner ) {
- banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass");
- }
-
- if ( tests ) {
- var result = id("qunit-testresult");
-
- if ( !result ) {
- result = document.createElement("p");
- result.id = "qunit-testresult";
- result.className = "result";
- tests.parentNode.insertBefore( result, tests.nextSibling );
- }
-
- result.innerHTML = html;
- }
-
- QUnit.done( config.stats.bad, config.stats.all );
-}
-
-function validTest( name ) {
- var i = config.filters.length,
- run = false;
-
- if ( !i ) {
- return true;
- }
-
- while ( i-- ) {
- var filter = config.filters[i],
- not = filter.charAt(0) == '!';
-
- if ( not ) {
- filter = filter.slice(1);
- }
-
- if ( name.indexOf(filter) !== -1 ) {
- return !not;
- }
-
- if ( not ) {
- run = true;
- }
- }
-
- return run;
-}
-
-function escapeHtml(s) {
- s = s === null ? "" : s + "";
- return s.replace(/[\&"<>\\]/g, function(s) {
- switch(s) {
- case "&": return "&";
- case "\\": return "\\\\";
- case '"': return '\"';
- case "<": return "<";
- case ">": return ">";
- default: return s;
- }
- });
-}
-
-function push(result, actual, expected, message) {
- message = escapeHtml(message) || (result ? "okay" : "failed");
- message = '' + message + "";
- expected = escapeHtml(QUnit.jsDump.parse(expected));
- actual = escapeHtml(QUnit.jsDump.parse(actual));
- var output = message + ', expected: ' + expected + '';
- if (actual != expected) {
- output += ' result: ' + actual + ', diff: ' + QUnit.diff(expected, actual);
- }
-
- // can't use ok, as that would double-escape messages
- QUnit.log(result, output);
- config.assertions.push({
- result: !!result,
- message: output
- });
-}
-
-function synchronize( callback ) {
- config.queue.push( callback );
-
- if ( config.autorun && !config.blocking ) {
- process();
- }
-}
-
-function process() {
- var start = (new Date()).getTime();
-
- while ( config.queue.length && !config.blocking ) {
- if ( config.updateRate <= 0 || (((new Date()).getTime() - start) < config.updateRate) ) {
- config.queue.shift()();
-
- } else {
- setTimeout( process, 13 );
- break;
- }
- }
-}
-
-function saveGlobal() {
- config.pollution = [];
-
- if ( config.noglobals ) {
- for ( var key in window ) {
- config.pollution.push( key );
- }
- }
-}
-
-function checkPollution( name ) {
- var old = config.pollution;
- saveGlobal();
-
- var newGlobals = diff( old, config.pollution );
- if ( newGlobals.length > 0 ) {
- ok( false, "Introduced global variable(s): " + newGlobals.join(", ") );
- config.expected++;
- }
-
- var deletedGlobals = diff( config.pollution, old );
- if ( deletedGlobals.length > 0 ) {
- ok( false, "Deleted global variable(s): " + deletedGlobals.join(", ") );
- config.expected++;
- }
-}
-
-// returns a new Array with the elements that are in a but not in b
-function diff( a, b ) {
- var result = a.slice();
- for ( var i = 0; i < result.length; i++ ) {
- for ( var j = 0; j < b.length; j++ ) {
- if ( result[i] === b[j] ) {
- result.splice(i, 1);
- i--;
- break;
- }
- }
- }
- return result;
-}
-
-function fail(message, exception, callback) {
- if ( typeof console !== "undefined" && console.error && console.warn ) {
- console.error(message);
- console.error(exception);
- console.warn(callback.toString());
-
- } else if ( window.opera && opera.postError ) {
- opera.postError(message, exception, callback.toString);
- }
-}
-
-function extend(a, b) {
- for ( var prop in b ) {
- a[prop] = b[prop];
- }
-
- return a;
-}
-
-function addEvent(elem, type, fn) {
- if ( elem.addEventListener ) {
- elem.addEventListener( type, fn, false );
- } else if ( elem.attachEvent ) {
- elem.attachEvent( "on" + type, fn );
- } else {
- fn();
- }
-}
-
-function id(name) {
- return !!(typeof document !== "undefined" && document && document.getElementById) &&
- document.getElementById( name );
-}
-
-// Test for equality any JavaScript type.
-// Discussions and reference: http://philrathe.com/articles/equiv
-// Test suites: http://philrathe.com/tests/equiv
-// Author: Philippe Rathé
-QUnit.equiv = function () {
-
- var innerEquiv; // the real equiv function
- var callers = []; // stack to decide between skip/abort functions
- var parents = []; // stack to avoiding loops from circular referencing
-
- // Call the o related callback with the given arguments.
- function bindCallbacks(o, callbacks, args) {
- var prop = QUnit.objectType(o);
- if (prop) {
- if (QUnit.objectType(callbacks[prop]) === "function") {
- return callbacks[prop].apply(callbacks, args);
- } else {
- return callbacks[prop]; // or undefined
- }
- }
- }
-
- var callbacks = function () {
-
- // for string, boolean, number and null
- function useStrictEquality(b, a) {
- if (b instanceof a.constructor || a instanceof b.constructor) {
- // to catch short annotaion VS 'new' annotation of a declaration
- // e.g. var i = 1;
- // var j = new Number(1);
- return a == b;
- } else {
- return a === b;
- }
- }
-
- return {
- "string": useStrictEquality,
- "boolean": useStrictEquality,
- "number": useStrictEquality,
- "null": useStrictEquality,
- "undefined": useStrictEquality,
-
- "nan": function (b) {
- return isNaN(b);
- },
-
- "date": function (b, a) {
- return QUnit.objectType(b) === "date" && a.valueOf() === b.valueOf();
- },
-
- "regexp": function (b, a) {
- return QUnit.objectType(b) === "regexp" &&
- a.source === b.source && // the regex itself
- a.global === b.global && // and its modifers (gmi) ...
- a.ignoreCase === b.ignoreCase &&
- a.multiline === b.multiline;
- },
-
- // - skip when the property is a method of an instance (OOP)
- // - abort otherwise,
- // initial === would have catch identical references anyway
- "function": function () {
- var caller = callers[callers.length - 1];
- return caller !== Object &&
- typeof caller !== "undefined";
- },
-
- "array": function (b, a) {
- var i, j, loop;
- var len;
-
- // b could be an object literal here
- if ( ! (QUnit.objectType(b) === "array")) {
- return false;
- }
-
- len = a.length;
- if (len !== b.length) { // safe and faster
- return false;
- }
-
- //track reference to avoid circular references
- parents.push(a);
- for (i = 0; i < len; i++) {
- loop = false;
- for(j=0;j= 0) {
- type = "array";
- } else {
- type = typeof obj;
- }
- return type;
- },
- separator:function() {
- return this.multiline ? this.HTML ? ' ' : '\n' : this.HTML ? ' ' : ' ';
- },
- indent:function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
- if ( !this.multiline )
- return '';
- var chr = this.indentChar;
- if ( this.HTML )
- chr = chr.replace(/\t/g,' ').replace(/ /g,' ');
- return Array( this._depth_ + (extra||0) ).join(chr);
- },
- up:function( a ) {
- this._depth_ += a || 1;
- },
- down:function( a ) {
- this._depth_ -= a || 1;
- },
- setParser:function( name, parser ) {
- this.parsers[name] = parser;
- },
- // The next 3 are exposed so you can use them
- quote:quote,
- literal:literal,
- join:join,
- //
- _depth_: 1,
- // This is the list of parsers, to modify them, use jsDump.setParser
- parsers:{
- window: '[Window]',
- document: '[Document]',
- error:'[ERROR]', //when no parser is found, shouldn't happen
- unknown: '[Unknown]',
- 'null':'null',
- undefined:'undefined',
- 'function':function( fn ) {
- var ret = 'function',
- name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE
- if ( name )
- ret += ' ' + name;
- ret += '(';
-
- ret = [ ret, this.parse( fn, 'functionArgs' ), '){'].join('');
- return join( ret, this.parse(fn,'functionCode'), '}' );
- },
- array: array,
- nodelist: array,
- arguments: array,
- object:function( map ) {
- var ret = [ ];
- this.up();
- for ( var key in map )
- ret.push( this.parse(key,'key') + ': ' + this.parse(map[key]) );
- this.down();
- return join( '{', ret, '}' );
- },
- node:function( node ) {
- var open = this.HTML ? '<' : '<',
- close = this.HTML ? '>' : '>';
-
- var tag = node.nodeName.toLowerCase(),
- ret = open + tag;
-
- for ( var a in this.DOMAttrs ) {
- var val = node[this.DOMAttrs[a]];
- if ( val )
- ret += ' ' + a + '=' + this.parse( val, 'attribute' );
- }
- return ret + close + open + '/' + tag + close;
- },
- functionArgs:function( fn ) {//function calls it internally, it's the arguments part of the function
- var l = fn.length;
- if ( !l ) return '';
-
- var args = Array(l);
- while ( l-- )
- args[l] = String.fromCharCode(97+l);//97 is 'a'
- return ' ' + args.join(', ') + ' ';
- },
- key:quote, //object calls it internally, the key part of an item in a map
- functionCode:'[code]', //function calls it internally, it's the content of the function
- attribute:quote, //node calls it internally, it's an html attribute value
- string:quote,
- date:quote,
- regexp:literal, //regex
- number:literal,
- 'boolean':literal
- },
- DOMAttrs:{//attributes to dump from nodes, name=>realName
- id:'id',
- name:'name',
- 'class':'className'
- },
- HTML:false,//if true, entities are escaped ( <, >, \t, space and \n )
- indentChar:' ',//indentation unit
- multiline:false //if true, items in a collection, are separated by a \n, else just a space.
- };
-
- return jsDump;
-})();
-
-// from Sizzle.js
-function getText( elems ) {
- var ret = "", elem;
-
- for ( var i = 0; elems[i]; i++ ) {
- elem = elems[i];
-
- // Get the text from text nodes and CDATA nodes
- if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
- ret += elem.nodeValue;
-
- // Traverse everything else, except comment nodes
- } else if ( elem.nodeType !== 8 ) {
- ret += getText( elem.childNodes );
- }
- }
-
- return ret;
-};
-
-/*
- * Javascript Diff Algorithm
- * By John Resig (http://ejohn.org/)
- * Modified by Chu Alan "sprite"
- *
- * Released under the MIT license.
- *
- * More Info:
- * http://ejohn.org/projects/javascript-diff-algorithm/
- *
- * Usage: QUnit.diff(expected, actual)
- *
- * QUnit.diff("the quick brown fox jumped over", "the quick fox jumps over") == "the quick brown fox jumped jumps over"
- */
-QUnit.diff = (function() {
- function diff(o, n){
- var ns = new Object();
- var os = new Object();
-
- for (var i = 0; i < n.length; i++) {
- if (ns[n[i]] == null)
- ns[n[i]] = {
- rows: new Array(),
- o: null
- };
- ns[n[i]].rows.push(i);
- }
-
- for (var i = 0; i < o.length; i++) {
- if (os[o[i]] == null)
- os[o[i]] = {
- rows: new Array(),
- n: null
- };
- os[o[i]].rows.push(i);
- }
-
- for (var i in ns) {
- if (ns[i].rows.length == 1 && typeof(os[i]) != "undefined" && os[i].rows.length == 1) {
- n[ns[i].rows[0]] = {
- text: n[ns[i].rows[0]],
- row: os[i].rows[0]
- };
- o[os[i].rows[0]] = {
- text: o[os[i].rows[0]],
- row: ns[i].rows[0]
- };
- }
- }
-
- for (var i = 0; i < n.length - 1; i++) {
- if (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null &&
- n[i + 1] == o[n[i].row + 1]) {
- n[i + 1] = {
- text: n[i + 1],
- row: n[i].row + 1
- };
- o[n[i].row + 1] = {
- text: o[n[i].row + 1],
- row: i + 1
- };
- }
- }
-
- for (var i = n.length - 1; i > 0; i--) {
- if (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null &&
- n[i - 1] == o[n[i].row - 1]) {
- n[i - 1] = {
- text: n[i - 1],
- row: n[i].row - 1
- };
- o[n[i].row - 1] = {
- text: o[n[i].row - 1],
- row: i - 1
- };
- }
- }
-
- return {
- o: o,
- n: n
- };
- }
-
- return function(o, n){
- o = o.replace(/\s+$/, '');
- n = n.replace(/\s+$/, '');
- var out = diff(o == "" ? [] : o.split(/\s+/), n == "" ? [] : n.split(/\s+/));
-
- var str = "";
-
- var oSpace = o.match(/\s+/g);
- if (oSpace == null) {
- oSpace = [" "];
- }
- else {
- oSpace.push(" ");
- }
- var nSpace = n.match(/\s+/g);
- if (nSpace == null) {
- nSpace = [" "];
- }
- else {
- nSpace.push(" ");
- }
-
- if (out.n.length == 0) {
- for (var i = 0; i < out.o.length; i++) {
- str += '' + out.o[i] + oSpace[i] + "";
- }
- }
- else {
- if (out.n[0].text == null) {
- for (n = 0; n < out.o.length && out.o[n].text == null; n++) {
- str += '' + out.o[n] + oSpace[n] + "";
- }
- }
-
- for (var i = 0; i < out.n.length; i++) {
- if (out.n[i].text == null) {
- str += '' + out.n[i] + nSpace[i] + "";
- }
- else {
- var pre = "";
-
- for (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) {
- pre += '' + out.o[n] + oSpace[n] + "";
- }
- str += " " + out.n[i].text + nSpace[i] + pre;
- }
- }
- }
-
- return str;
- }
-})();
-
-})(this);
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/test/tests.js b/middleman-cli/lib/middleman-templates/mobile/source/test/tests.js
deleted file mode 100755
index 8cc99b2c..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/test/tests.js
+++ /dev/null
@@ -1,21 +0,0 @@
-// documentation on writing tests here: http://docs.jquery.com/QUnit
-// example tests: https://github.com/jquery/qunit/blob/master/test/same.js
-
-// below are some general tests but feel free to delete them.
-
-module("example tests");
-test('HTML5 Boilerplate is sweet',function(){
- expect(1);
- equals('boilerplate'.replace('boilerplate','sweet'),'sweet','Yes. HTML5 Boilerplate is, in fact, sweet');
-
-});
-
-// these test things from helper.js
-test('Environment is good',function(){
- expect(2);
- ok( !!window.MBP, 'Mobile Boilder Plate helper is present');
- notEqual( window.MBP.ua, null, "we have a user agent. winning, duh.");
-});
-
-
-
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/Readme.PDF b/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/Readme.PDF
deleted file mode 100755
index 05db31c1..00000000
Binary files a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/Readme.PDF and /dev/null differ
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/aspx/aspx1.snippet b/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/aspx/aspx1.snippet
deleted file mode 100755
index 60e29605..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/aspx/aspx1.snippet
+++ /dev/null
@@ -1,31 +0,0 @@
-<%@ Page Language="C#" %>
-
-
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/aspx/aspx2.snippet b/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/aspx/aspx2.snippet
deleted file mode 100755
index 9057f5ce..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/aspx/aspx2.snippet
+++ /dev/null
@@ -1,2 +0,0 @@
-<% string googleAnalyticsImageUrl = GoogleAnalyticsGetImageUrl(); %>
-
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/aspx/ga.aspx b/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/aspx/ga.aspx
deleted file mode 100755
index 5231dafd..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/aspx/ga.aspx
+++ /dev/null
@@ -1,195 +0,0 @@
-<% @Page Language="C#" ContentType="image/gif"%><%
- @Import Namespace="System.Net" %><%
- @Import Namespace="System.Security.Cryptography" %><%
- @Import Namespace="System.Text" %><% TrackPageView(); %>
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/aspx/sample.aspx b/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/aspx/sample.aspx
deleted file mode 100755
index e32c0092..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/aspx/sample.aspx
+++ /dev/null
@@ -1,44 +0,0 @@
-<%@ Page Language="C#" %>
-
-
-
-
-Sample Mobile Analytics Page
-
-
-
-Publisher's content here.
-<%
- string googleAnalyticsImageUrl = GoogleAnalyticsGetImageUrl();
-%>
-
-Testing: <%= googleAnalyticsImageUrl %>
-
-
\ No newline at end of file
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/jsp/ga.jsp b/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/jsp/ga.jsp
deleted file mode 100755
index a61432ff..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/jsp/ga.jsp
+++ /dev/null
@@ -1,225 +0,0 @@
-<%@ page language="java"
- contentType="image/gif"
- import="java.io.ByteArrayOutputStream,
- java.io.IOException,
- java.io.OutputStream,
- java.io.UnsupportedEncodingException,
- java.math.BigInteger,
- java.net.HttpURLConnection,
- java.net.URLConnection,
- java.net.URL,
- java.net.URLEncoder,
- java.net.URLDecoder,
- java.security.MessageDigest,
- java.security.NoSuchAlgorithmException,
- javax.servlet.http.Cookie,
- java.util.regex.Pattern,
- java.util.regex.Matcher,
- java.util.UUID" %><%!
-
-/**
- Copyright 2009 Google Inc. All Rights Reserved.
-**/
-
- // Tracker version.
- private static final String version = "4.4sj";
-
- private static final String COOKIE_NAME = "__utmmobile";
-
- // The path the cookie will be available to, edit this to use a different
- // cookie path.
- private static final String COOKIE_PATH = "/";
-
- // Two years in seconds.
- private static final int COOKIE_USER_PERSISTENCE = 63072000;
-
- // 1x1 transparent GIF
- private static final byte[] GIF_DATA = new byte[] {
- (byte)0x47, (byte)0x49, (byte)0x46, (byte)0x38, (byte)0x39, (byte)0x61,
- (byte)0x01, (byte)0x00, (byte)0x01, (byte)0x00, (byte)0x80, (byte)0xff,
- (byte)0x00, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0x00, (byte)0x00,
- (byte)0x00, (byte)0x2c, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
- (byte)0x01, (byte)0x00, (byte)0x01, (byte)0x00, (byte)0x00, (byte)0x02,
- (byte)0x02, (byte)0x44, (byte)0x01, (byte)0x00, (byte)0x3b
- };
-
- // A string is empty in our terms, if it is null, empty or a dash.
- private static boolean isEmpty(String in) {
- return in == null || "-".equals(in) || "".equals(in);
- }
-
- // The last octect of the IP address is removed to anonymize the user.
- private static String getIP(String remoteAddress) {
- if (isEmpty(remoteAddress)) {
- return "";
- }
- // Capture the first three octects of the IP address and replace the forth
- // with 0, e.g. 124.455.3.123 becomes 124.455.3.0
- String regex = "^([^.]+\\.[^.]+\\.[^.]+\\.).*";
- Pattern getFirstBitOfIPAddress = Pattern.compile(regex);
- Matcher m = getFirstBitOfIPAddress.matcher(remoteAddress);
- if (m.matches()) {
- return m.group(1) + "0";
- } else {
- return "";
- }
- }
-
- // Generate a visitor id for this hit.
- // If there is a visitor id in the cookie, use that, otherwise
- // use the guid if we have one, otherwise use a random number.
- private static String getVisitorId(
- String guid, String account, String userAgent, Cookie cookie)
- throws NoSuchAlgorithmException, UnsupportedEncodingException {
-
- // If there is a value in the cookie, don't change it.
- if (cookie != null && cookie.getValue() != null) {
- return cookie.getValue();
- }
-
- String message;
- if (!isEmpty(guid)) {
- // Create the visitor id using the guid.
- message = guid + account;
- } else {
- // otherwise this is a new user, create a new random id.
- message = userAgent + getRandomNumber() + UUID.randomUUID().toString();
- }
-
- MessageDigest m = MessageDigest.getInstance("MD5");
- m.update(message.getBytes("UTF-8"), 0, message.length());
- byte[] sum = m.digest();
- BigInteger messageAsNumber = new BigInteger(1, sum);
- String md5String = messageAsNumber.toString(16);
-
- // Pad to make sure id is 32 characters long.
- while (md5String.length() < 32) {
- md5String = "0" + md5String;
- }
-
- return "0x" + md5String.substring(0, 16);
- }
-
- // Get a random number string.
- private static String getRandomNumber() {
- return Integer.toString((int) (Math.random() * 0x7fffffff));
- }
-
- // Writes the bytes of a 1x1 transparent gif into the response.
- private void writeGifData(HttpServletResponse response) throws IOException {
- response.addHeader(
- "Cache-Control",
- "private, no-cache, no-cache=Set-Cookie, proxy-revalidate");
- response.addHeader("Pragma", "no-cache");
- response.addHeader("Expires", "Wed, 17 Sep 1975 21:32:10 GMT");
- ServletOutputStream output = response.getOutputStream();
- output.write(GIF_DATA);
- output.flush();
- }
-
- // Make a tracking request to Google Analytics from this server.
- // Copies the headers from the original request to the new one.
- // If request containg utmdebug parameter, exceptions encountered
- // communicating with Google Analytics are thown.
- private void sendRequestToGoogleAnalytics(
- String utmUrl, HttpServletRequest request) throws Exception {
- try {
- URL url = new URL(utmUrl);
- URLConnection connection = url.openConnection();
- connection.setUseCaches(false);
-
- connection.addRequestProperty("User-Agent",
- request.getHeader("User-Agent"));
- connection.addRequestProperty("Accepts-Language",
- request.getHeader("Accepts-Language"));
-
- connection.getContent();
- } catch (Exception e) {
- if (request.getParameter("utmdebug") != null) {
- throw new Exception(e);
- }
- }
- }
-
- // Track a page view, updates all the cookies and campaign tracker,
- // makes a server side request to Google Analytics and writes the transparent
- // gif byte data to the response.
- private void trackPageView(
- HttpServletRequest request, HttpServletResponse response)
- throws Exception {
- String timeStamp = Long.toString(System.currentTimeMillis() / 1000);
- String domainName = request.getServerName();
- if (isEmpty(domainName)) {
- domainName = "";
- }
-
- // Get the referrer from the utmr parameter, this is the referrer to the
- // page that contains the tracking pixel, not the referrer for tracking
- // pixel.
- String documentReferer = request.getParameter("utmr");
- if (isEmpty(documentReferer)) {
- documentReferer = "-";
- } else {
- documentReferer = URLDecoder.decode(documentReferer, "UTF-8");
- }
- String documentPath = request.getParameter("utmp");
- if (isEmpty(documentPath)) {
- documentPath = "";
- } else {
- documentPath = URLDecoder.decode(documentPath, "UTF-8");
- }
-
- String account = request.getParameter("utmac");
- String userAgent = request.getHeader("User-Agent");
- if (isEmpty(userAgent)) {
- userAgent = "";
- }
-
- // Try and get visitor cookie from the request.
- Cookie[] cookies = request.getCookies();
- Cookie cookie = null;
- if (cookies != null) {
- for(int i = 0; i < cookies.length; i++) {
- if (cookies[i].getName().equals(COOKIE_NAME)) {
- cookie = cookies[i];
- }
- }
- }
-
- String visitorId = getVisitorId(
- request.getHeader("X-DCMGUID"), account, userAgent, cookie);
-
- // Always try and add the cookie to the response.
- Cookie newCookie = new Cookie(COOKIE_NAME, visitorId);
- newCookie.setMaxAge(COOKIE_USER_PERSISTENCE);
- newCookie.setPath(COOKIE_PATH);
- response.addCookie(newCookie);
-
- String utmGifLocation = "http://www.google-analytics.com/__utm.gif";
-
- // Construct the gif hit url.
- String utmUrl = utmGifLocation + "?" +
- "utmwv=" + version +
- "&utmn=" + getRandomNumber() +
- "&utmhn=" + URLEncoder.encode(domainName, "UTF-8") +
- "&utmr=" + URLEncoder.encode(documentReferer, "UTF-8") +
- "&utmp=" + URLEncoder.encode(documentPath, "UTF-8") +
- "&utmac=" + account +
- "&utmcc=__utma%3D999.999.999.999.999.1%3B" +
- "&utmvid=" + visitorId +
- "&utmip=" + getIP(request.getRemoteAddr());
-
- sendRequestToGoogleAnalytics(utmUrl, request);
-
- // If the debug parameter is on, add a header to the response that contains
- // the url that was used to contact Google Analytics.
- if (request.getParameter("utmdebug") != null) {
- response.setHeader("X-GA-MOBILE-URL", utmUrl);
- }
- // Finally write the gif data to the response.
- writeGifData(response);
- }
-%><%
- // Let exceptions bubble up to container, for better debugging.
- trackPageView(request, response);
-%>
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/jsp/jsp1.snippet b/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/jsp/jsp1.snippet
deleted file mode 100755
index feb1e1af..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/jsp/jsp1.snippet
+++ /dev/null
@@ -1,35 +0,0 @@
-<%@ page import="java.io.UnsupportedEncodingException,
- java.net.URLEncoder" %>
-<%!
- // Copyright 2009 Google Inc. All Rights Reserved.
- private static final String GA_ACCOUNT = "ACCOUNT ID GOES HERE";
- private static final String GA_PIXEL = "ga.jsp";
-
- private String googleAnalyticsGetImageUrl(
- HttpServletRequest request) throws UnsupportedEncodingException {
- StringBuilder url = new StringBuilder();
- url.append(GA_PIXEL + "?");
- url.append("utmac=").append(GA_ACCOUNT);
- url.append("&utmn=").append(Integer.toString((int) (Math.random() * 0x7fffffff)));
-
- String referer = request.getHeader("referer");
- String query = request.getQueryString();
- String path = request.getRequestURI();
-
- if (referer == null || "".equals(referer)) {
- referer = "-";
- }
- url.append("&utmr=").append(URLEncoder.encode(referer, "UTF-8"));
-
- if (path != null) {
- if (query != null) {
- path += "?" + query;
- }
- url.append("&utmp=").append(URLEncoder.encode(path, "UTF-8"));
- }
-
- url.append("&guid=ON");
-
- return url.toString();
- }
-%>
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/jsp/jsp2.snippet b/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/jsp/jsp2.snippet
deleted file mode 100755
index 4bf8717d..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/jsp/jsp2.snippet
+++ /dev/null
@@ -1,2 +0,0 @@
-<% String googleAnalyticsImageUrl = googleAnalyticsGetImageUrl(request); %>
-
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/jsp/sample.jsp b/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/jsp/sample.jsp
deleted file mode 100755
index 60cd00bb..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/jsp/sample.jsp
+++ /dev/null
@@ -1,51 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
- pageEncoding="ISO-8859-1"%>
-<%@ page import="java.io.UnsupportedEncodingException,
- java.net.URLEncoder" %>
-<%!
- private static final String GA_ACCOUNT = "MO-3845491-5";
- private static final String GA_PIXEL = "ga.jsp";
-
- private String googleAnalyticsGetImageUrl(
- HttpServletRequest request) throws UnsupportedEncodingException {
- StringBuilder url = new StringBuilder();
- url.append(GA_PIXEL + "?");
- url.append("utmac=").append(GA_ACCOUNT);
- url.append("&utmn=").append(Integer.toString((int) (Math.random() * 0x7fffffff)));
-
- String referer = request.getHeader("referer");
- String query = request.getQueryString();
- String path = request.getRequestURI();
-
- if (referer == null || "".equals(referer)) {
- referer = "-";
- }
- url.append("&utmr=").append(URLEncoder.encode(referer, "UTF-8"));
-
- if (path != null) {
- if (query != null) {
- path += "?" + query;
- }
- url.append("&utmp=").append(URLEncoder.encode(path, "UTF-8"));
- }
-
- url.append("&guid=ON");
-
- return url.toString();
- }
-%>
-
-
-
-Sample Mobile Analytics Page
-
-
-
-Publishers content here.
-<%
- String googleAnalyticsImageUrl = googleAnalyticsGetImageUrl(request);
-%>
-
-Testing: <%= googleAnalyticsImageUrl %>
-
-
\ No newline at end of file
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/php/ga.php b/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/php/ga.php
deleted file mode 100755
index aefe8227..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/php/ga.php
+++ /dev/null
@@ -1,176 +0,0 @@
- array(
- "method" => "GET",
- "user_agent" => $_SERVER["HTTP_USER_AGENT"],
- "header" => ("Accepts-Language: " . $_SERVER["HTTP_ACCEPT_LANGUAGE"]))
- );
- if (!empty($_GET["utmdebug"])) {
- $data = file_get_contents(
- $utmUrl, false, stream_context_create($options));
- } else {
- $data = @file_get_contents(
- $utmUrl, false, stream_context_create($options));
- }
- }
-
- // Track a page view, updates all the cookies and campaign tracker,
- // makes a server side request to Google Analytics and writes the transparent
- // gif byte data to the response.
- function trackPageView() {
- $timeStamp = time();
- $domainName = $_SERVER["SERVER_NAME"];
- if (empty($domainName)) {
- $domainName = "";
- }
-
- // Get the referrer from the utmr parameter, this is the referrer to the
- // page that contains the tracking pixel, not the referrer for tracking
- // pixel.
- $documentReferer = $_GET["utmr"];
- if (empty($documentReferer) && $documentReferer !== "0") {
- $documentReferer = "-";
- } else {
- $documentReferer = urldecode($documentReferer);
- }
- $documentPath = $_GET["utmp"];
- if (empty($documentPath)) {
- $documentPath = "";
- } else {
- $documentPath = urldecode($documentPath);
- }
-
- $account = $_GET["utmac"];
- $userAgent = $_SERVER["HTTP_USER_AGENT"];
- if (empty($userAgent)) {
- $userAgent = "";
- }
-
- // Try and get visitor cookie from the request.
- $cookie = $_COOKIE[COOKIE_NAME];
-
- $visitorId = getVisitorId(
- $_SERVER["HTTP_X_DCMGUID"], $account, $userAgent, $cookie);
-
- // Always try and add the cookie to the response.
- setrawcookie(
- COOKIE_NAME,
- $visitorId,
- $timeStamp + COOKIE_USER_PERSISTENCE,
- COOKIE_PATH);
-
- $utmGifLocation = "http://www.google-analytics.com/__utm.gif";
-
- // Construct the gif hit url.
- $utmUrl = $utmGifLocation . "?" .
- "utmwv=" . VERSION .
- "&utmn=" . getRandomNumber() .
- "&utmhn=" . urlencode($domainName) .
- "&utmr=" . urlencode($documentReferer) .
- "&utmp=" . urlencode($documentPath) .
- "&utmac=" . $account .
- "&utmcc=__utma%3D999.999.999.999.999.1%3B" .
- "&utmvid=" . $visitorId .
- "&utmip=" . getIP($_SERVER["REMOTE_ADDR"]);
-
- sendRequestToGoogleAnalytics($utmUrl);
-
- // If the debug parameter is on, add a header to the response that contains
- // the url that was used to contact Google Analytics.
- if (!empty($_GET["utmdebug"])) {
- header("X-GA-MOBILE-URL:" . $utmUrl);
- }
- // Finally write the gif data to the response.
- writeGifData();
- }
-?>
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/php/php1.snippet b/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/php/php1.snippet
deleted file mode 100755
index b0d918e1..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/php/php1.snippet
+++ /dev/null
@@ -1,30 +0,0 @@
-
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/php/php2.snippet b/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/php/php2.snippet
deleted file mode 100755
index 70a37987..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/php/php2.snippet
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/php/sample.php b/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/php/sample.php
deleted file mode 100755
index 4a1a916c..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/php/sample.php
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-Sample Mobile Analytics Page
-
-
-
-Publishers content here.
-
-
-Testing: = $googleAnalyticsImageUrl ?>
-
-
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/pl/ga.pl b/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/pl/ga.pl
deleted file mode 100755
index 6592962d..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/pl/ga.pl
+++ /dev/null
@@ -1,195 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright 2009 Google Inc. All Rights Reserved.
-
-use CGI;
-use Digest::MD5 qw(md5_hex);
-use LWP::UserAgent;
-use URI::Escape;
-use strict;
-
-# Tracker version.
-use constant VERSION => '4.4sp';
-
-use constant COOKIE_NAME => '__utmmobile';
-
-# The path the cookie will be available to, edit this to use a different
-# cookie path.
-use constant COOKIE_PATH => '/';
-
-# Two years.
-use constant COOKIE_USER_PERSISTENCE => '+2y';
-
-# 1x1 transparent GIF
-my @GIF_DATA = (
- 0x47, 0x49, 0x46, 0x38, 0x39, 0x61,
- 0x01, 0x00, 0x01, 0x00, 0x80, 0xff,
- 0x00, 0xff, 0xff, 0xff, 0x00, 0x00,
- 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x00, 0x01, 0x00, 0x00, 0x02,
- 0x02, 0x44, 0x01, 0x00, 0x3b);
-
-my $query = new CGI;
-
-# The last octect of the IP address is removed to anonymize the user.
-sub get_ip {
- my ($remote_address) = @_;
- if ($remote_address eq "") {
- return "";
- }
-
- # Capture the first three octects of the IP address and replace the forth
- # with 0, e.g. 124.455.3.123 becomes 124.455.3.0
- if ($remote_address =~ /^((\d{1,3}\.){3})\d{1,3}$/) {
- return $1 . "0";
- } else {
- return "";
- }
-}
-
-# Generate a visitor id for this hit.
-# If there is a visitor id in the cookie, use that, otherwise
-# use the guid if we have one, otherwise use a random number.
-sub get_visitor_id {
- my ($guid, $account, $user_agent, $cookie) = @_;
-
- # If there is a value in the cookie, don't change it.
- if ($cookie ne "") {
- return $cookie;
- }
-
- my $message = "";
- if ($guid ne "") {
- # Create the visitor id using the guid.
- $message = $guid . $account;
- } else {
- # otherwise this is a new user, create a new random id.
- $message = $user_agent . get_random_number();
- }
-
- my $md5_string = md5_hex($message);
-
- return "0x" . substr($md5_string, 0, 16);
-}
-
-# Get a random number string.
-sub get_random_number {
- return int(rand(0x7fffffff));
-}
-
-# Writes the bytes of a 1x1 transparent gif into the response.
-sub write_gif_data {
- my ($cookie, $utm_url) = @_;
-
- my @header_args = (
- -type => 'image/gif',
- -Cache_Control =>
- 'private, no-cache, no-cache=Set-Cookie, proxy-revalidate',
- -Pragma => 'no-cache',
- -cookie => $cookie,
- -expires => '-1d');
-
- # If the debug parameter is on, add a header to the response that contains
- # the url that was used to contact Google Analytics.
- if (defined($query->param('utmdebug'))) {
- push(@header_args, -X_GA_MOBILE_URL => $utm_url);
- }
- print $query->header(@header_args);
- print pack("C35", @GIF_DATA);
-}
-
-# Make a tracking request to Google Analytics from this server.
-# Copies the headers from the original request to the new one.
-# If request containg utmdebug parameter, exceptions encountered
-# communicating with Google Analytics are thown.
-sub send_request_to_google_analytics {
- my ($utm_url) = @_;
- my $ua = LWP::UserAgent->new;
-
- if (exists($ENV{'HTTP_ACCEPT_LANGUAGE'})) {
- $ua->default_header('Accepts-Language' => $ENV{'HTTP_ACCEPT_LANGUAGE'});
- }
- if (exists($ENV{'HTTP_USER_AGENT'})) {
- $ua->agent($ENV{'HTTP_USER_AGENT'});
- }
-
- my $ga_output = $ua->get($utm_url);
-
- if (defined($query->param('utmdebug')) && !$ga_output->is_success) {
- print $ga_output->status_line;
- }
-}
-
-# Track a page view, updates all the cookies and campaign tracker,
-# makes a server side request to Google Analytics and writes the transparent
-# gif byte data to the response.
-sub track_page_view {
- my $domain_name = "";
- if (exists($ENV{'SERVER_NAME'})) {
- $domain_name = $ENV{'SERVER_NAME'};
- }
-
- # Get the referrer from the utmr parameter, this is the referrer to the
- # page that contains the tracking pixel, not the referrer for tracking
- # pixel.
- my $document_referer = "-";
- if (defined($query->param('utmr'))) {
- $document_referer = uri_unescape($query->param('utmr'));
- }
- my $document_path = "";
- if (defined($query->param('utmp'))) {
- $document_path = uri_unescape($query->param('utmp'));
- }
-
- my $account = $query->param('utmac');
- my $user_agent = "";
- if (exists($ENV{'HTTP_USER_AGENT'})) {
- $user_agent = $ENV{'HTTP_USER_AGENT'};
- }
-
- # Try and get visitor cookie from the request.
- my $cookie = "";
- if (defined($query->cookie(COOKIE_NAME))) {
- $cookie = $query->cookie(COOKIE_NAME);
- }
-
- my $guid = "";
- if (exists($ENV{'HTTP_X_DCMGUID'})) {
- $guid = $ENV{'HTTP_X_DCMGUID'};
- }
-
- my $visitor_id = get_visitor_id($guid, $account, $user_agent, $cookie);
-
- # Always try and add the cookie to the response.
- my $new_cookie = $query->cookie(
- -name => COOKIE_NAME,
- -value => $visitor_id,
- -path => COOKIE_PATH,
- -expires => COOKIE_USER_PERSISTENCE);
-
- my $utm_gif_location = "http://www.google-analytics.com/__utm.gif";
-
- my $remote_address = "";
- if (exists($ENV{'REMOTE_ADDR'})) {
- $remote_address = $ENV{'REMOTE_ADDR'};
- }
-
- # Construct the gif hit url.
- my $utm_url = $utm_gif_location . '?' .
- 'utmwv=' . VERSION .
- '&utmn=' . get_random_number() .
- '&utmhn=' . uri_escape($domain_name) .
- '&utmr=' . uri_escape($document_referer) .
- '&utmp=' . uri_escape($document_path) .
- '&utmac=' . $account .
- '&utmcc=__utma%3D999.999.999.999.999.1%3B' .
- '&utmvid=' . $visitor_id .
- '&utmip=' . get_ip($remote_address);
-
- send_request_to_google_analytics($utm_url);
-
- # Finally write the gif data to the response.
- write_gif_data($new_cookie, $utm_url);
-}
-
-track_page_view();
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/pl/perl1.snippet b/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/pl/perl1.snippet
deleted file mode 100755
index 342c4b48..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/pl/perl1.snippet
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2009 Google Inc. All Rights Reserved.
-
-use URI::Escape;
-
-use constant GA_ACCOUNT => 'ACCOUNT ID GOES HERE';
-use constant GA_PIXEL => 'ga.pl';
-
-sub google_analytics_get_image_url {
- my $url = '';
- $url .= GA_PIXEL . '?';
- $url .= 'utmac=' . GA_ACCOUNT;
- $url .= '&utmn=' . int(rand(0x7fffffff));
-
- my $referer = $ENV{'HTTP_REFERER'};
- my $query = $ENV{'QUERY_STRING'};
- my $path = $ENV{'REQUEST_URI'};
-
- if ($referer eq "") {
- $referer = '-';
- }
-
- $url .= '&utmr=' . uri_escape($referer);
- $url .= '&utmp=' . uri_escape($path);
- $url .= '&guid=ON';
-
- $url;
-}
\ No newline at end of file
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/pl/perl2.snippet b/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/pl/perl2.snippet
deleted file mode 100755
index e7e661c5..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/pl/perl2.snippet
+++ /dev/null
@@ -1 +0,0 @@
-print '';
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/pl/sample.pl b/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/pl/sample.pl
deleted file mode 100755
index c7fdc93c..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/googleanalyticsformobile/pl/sample.pl
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright 2009 Google Inc. All Rights Reserved.
-
-use strict;
-use URI::Escape;
-
-use constant GA_ACCOUNT => 'MO-3845491-5';
-use constant GA_PIXEL => 'ga.pl';
-
-sub google_analytics_get_image_url {
- my $url = '';
- $url .= GA_PIXEL . '?';
- $url .= 'utmac=' . GA_ACCOUNT;
- $url .= '&utmn=' . int(rand(0x7fffffff));
-
- my $referer = $ENV{'HTTP_REFERER'};
- my $query = $ENV{'QUERY_STRING'};
- my $path = $ENV{'REQUEST_URI'};
-
- if ($referer eq "") {
- $referer = '-';
- }
-
- $url .= '&utmr=' . uri_escape($referer);
- $url .= '&utmp=' . uri_escape($path);
- $url .= '&guid=ON';
-
- $url;
-}
-
-print "Content-Type: text/html; charset=ISO-8859-1\n\n";
-print '';
-print '';
-print google_analytics_get_image_url();
-print '';
-
-exit (0);
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/COPYING b/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/COPYING
deleted file mode 100755
index d6456956..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/COPYING
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/bookmark_bubble.js b/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/bookmark_bubble.js
deleted file mode 100755
index 90c839ec..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/bookmark_bubble.js
+++ /dev/null
@@ -1,559 +0,0 @@
-/*
- Copyright 2010 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-/**
- * @fileoverview Bookmark bubble library. This is meant to be included in the
- * main JavaScript binary of a mobile web application.
- *
- * Supported browsers: iPhone / iPod / iPad Safari 3.0+
- */
-
-var google = google || {};
-google.bookmarkbubble = google.bookmarkbubble || {};
-
-
-/**
- * Binds a context object to the function.
- * @param {Function} fn The function to bind to.
- * @param {Object} context The "this" object to use when the function is run.
- * @return {Function} A partially-applied form of fn.
- */
-google.bind = function(fn, context) {
- return function() {
- return fn.apply(context, arguments);
- };
-};
-
-
-/**
- * Function used to define an abstract method in a base class. If a subclass
- * fails to override the abstract method, then an error will be thrown whenever
- * that method is invoked.
- */
-google.abstractMethod = function() {
- throw Error('Unimplemented abstract method.');
-};
-
-
-
-/**
- * The bubble constructor. Instantiating an object does not cause anything to
- * be rendered yet, so if necessary you can set instance properties before
- * showing the bubble.
- * @constructor
- */
-google.bookmarkbubble.Bubble = function() {
- /**
- * Handler for the scroll event. Keep a reference to it here, so it can be
- * unregistered when the bubble is destroyed.
- * @type {function()}
- * @private
- */
- this.boundScrollHandler_ = google.bind(this.setPosition, this);
-
- /**
- * The bubble element.
- * @type {Element}
- * @private
- */
- this.element_ = null;
-
- /**
- * Whether the bubble has been destroyed.
- * @type {boolean}
- * @private
- */
- this.hasBeenDestroyed_ = false;
-};
-
-
-/**
- * Shows the bubble if allowed. It is not allowed if:
- * - The browser is not Mobile Safari, or
- * - The user has dismissed it too often already, or
- * - The hash parameter is present in the location hash, or
- * - The application is in fullscreen mode, which means it was already loaded
- * from a homescreen bookmark.
- * @return {boolean} True if the bubble is being shown, false if it is not
- * allowed to show for one of the aforementioned reasons.
- */
-google.bookmarkbubble.Bubble.prototype.showIfAllowed = function() {
- if (!this.isAllowedToShow_()) {
- return false;
- }
-
- this.show_();
- return true;
-};
-
-
-/**
- * Shows the bubble if allowed after loading the icon image. This method creates
- * an image element to load the image into the browser's cache before showing
- * the bubble to ensure that the image isn't blank. Use this instead of
- * showIfAllowed if the image url is http and cacheable.
- * This hack is necessary because Mobile Safari does not properly render
- * image elements with border-radius CSS.
- * @param {function()} opt_callback Closure to be called if and when the bubble
- * actually shows.
- * @return {boolean} True if the bubble is allowed to show.
- */
-google.bookmarkbubble.Bubble.prototype.showIfAllowedWhenLoaded =
- function(opt_callback) {
- if (!this.isAllowedToShow_()) {
- return false;
- }
-
- var self = this;
- // Attach to self to avoid garbage collection.
- var img = self.loadImg_ = document.createElement('img');
- img.src = self.getIconUrl_();
- img.onload = function() {
- if (img.complete) {
- delete self.loadImg_;
- img.onload = null; // Break the circular reference.
-
- self.show_();
- opt_callback && opt_callback();
- }
- };
- img.onload();
-
- return true;
-};
-
-
-/**
- * Sets the parameter in the location hash. As it is
- * unpredictable what hash scheme is to be used, this method must be
- * implemented by the host application.
- *
- * This gets called automatically when the bubble is shown. The idea is that if
- * the user then creates a bookmark, we can later recognize on application
- * startup whether it was from a bookmark suggested with this bubble.
- */
-google.bookmarkbubble.Bubble.prototype.setHashParameter = google.abstractMethod;
-
-
-/**
- * Whether the parameter is present in the location hash. As it is
- * unpredictable what hash scheme is to be used, this method must be
- * implemented by the host application.
- *
- * Call this method during application startup if you want to log whether the
- * application was loaded from a bookmark with the bookmark bubble promotion
- * parameter in it.
- *
- * @return {boolean} Whether the bookmark bubble parameter is present in the
- * location hash.
- */
-google.bookmarkbubble.Bubble.prototype.hasHashParameter = google.abstractMethod;
-
-
-/**
- * The number of times the user must dismiss the bubble before we stop showing
- * it. This is a public property and can be changed by the host application if
- * necessary.
- * @type {number}
- */
-google.bookmarkbubble.Bubble.prototype.NUMBER_OF_TIMES_TO_DISMISS = 2;
-
-
-/**
- * Time in milliseconds. If the user does not dismiss the bubble, it will auto
- * destruct after this amount of time.
- * @type {number}
- */
-google.bookmarkbubble.Bubble.prototype.TIME_UNTIL_AUTO_DESTRUCT = 15000;
-
-
-/**
- * The prefix for keys in local storage. This is a public property and can be
- * changed by the host application if necessary.
- * @type {string}
- */
-google.bookmarkbubble.Bubble.prototype.LOCAL_STORAGE_PREFIX = 'BOOKMARK_';
-
-
-/**
- * The key name for the dismissed state.
- * @type {string}
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.DISMISSED_ = 'DISMISSED_COUNT';
-
-
-/**
- * The arrow image in base64 data url format.
- * @type {string}
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.IMAGE_ARROW_DATA_URL_ = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAATCAMAAABSrFY3AAABKVBMVEUAAAD///8AAAAAAAAAAAAAAAAAAADf398AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD09PQAAAAAAAAAAAC9vb0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD19fUAAAAAAAAAAAAAAADq6uoAAAAAAAAAAAC8vLzU1NTT09MAAADg4OAAAADs7OwAAAAAAAAAAAD///+cueenwerA0vC1y+3a5fb5+/3t8vr4+v3w9PuwyOy3zO3h6vfh6vjq8Pqkv+mat+fE1fHB0/Cduuifu+iuxuuivemrxOvC1PDz9vzJ2fKpwuqmwOrb5vapw+q/0vDf6ffK2vLN3PPprJISAAAAQHRSTlMAAAEGExES7FM+JhUoQSxIRwMbNfkJUgXXBE4kDQIMHSA0Tw4xIToeTSc4Chz4OyIjPfI3QD/X5OZR6zzwLSUPrm1y3gAAAQZJREFUeF5lzsVyw0AURNE3IMsgmZmZgszQZoeZOf//EYlG5Yrhbs+im4Dj7slM5wBJ4OJ+undAUr68gK/Hyb6Bcp5yBR/w8jreNeAr5Eg2XE7g6e2/0z6cGw1JQhpmHP3u5aiPPnTTkIK48Hj9Op7bD3btAXTfgUdwYjwSDCVXMbizO0O4uDY/x4kYC5SWFnfC6N1a9RCO7i2XEmQJj2mHK1Hgp9Vq3QBRl9shuBLGhcNtHexcdQCnDUoUGetxDD+H2DQNG2xh6uAWgG2/17o1EmLqYH0Xej0UjHAaFxZIV6rJ/WK1kg7QZH8HU02zmdJinKZJaDV3TVMjM5Q9yiqYpUwiMwa/1apDXTNESjsAAAAASUVORK5CYII=';
-
-
-/**
- * The close image in base64 data url format.
- * @type {string}
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.IMAGE_CLOSE_DATA_URL_ = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAALVBMVEXM3fm+1Pfb5/rF2fjw9f23z/aavPOhwfTp8PyTt/L3+v7T4vqMs/K7zP////+qRWzhAAAAXElEQVQIW2O4CwUM996BwVskxtOqd++2rwMyPI+ve31GD8h4Madqz2mwms5jZ/aBGS/mHIDoen3m+DowY8/hOVUgxusz+zqPg7SvPA1UxQfSvu/du0YUK2AMmDMA5H1qhVX33T8AAAAASUVORK5CYII=';
-
-
-/**
- * The link used to locate the application's home screen icon to display inside
- * the bubble. The default link used here is for an iPhone home screen icon
- * without gloss. If your application uses a glossy icon, change this to
- * 'apple-touch-icon'.
- * @type {string}
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.REL_ICON_ =
- 'apple-touch-icon-precomposed';
-
-
-/**
- * Regular expression for detecting an iPhone or iPod or iPad.
- * @type {!RegExp}
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.MOBILE_SAFARI_USERAGENT_REGEX_ =
- /iPhone|iPod|iPad/;
-
-
-/**
- * Regular expression for detecting an iPad.
- * @type {!RegExp}
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.IPAD_USERAGENT_REGEX_ = /iPad/;
-
-
-/**
- * Determines whether the bubble should be shown or not.
- * @return {boolean} Whether the bubble should be shown or not.
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.isAllowedToShow_ = function() {
- return this.isMobileSafari_() &&
- !this.hasBeenDismissedTooManyTimes_() &&
- !this.isFullscreen_() &&
- !this.hasHashParameter();
-};
-
-
-/**
- * Builds and shows the bubble.
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.show_ = function() {
- this.element_ = this.build_();
-
- document.body.appendChild(this.element_);
- this.element_.style.WebkitTransform =
- 'translateY(' + this.getHiddenYPosition_() + 'px)';
-
- this.setHashParameter();
-
- window.setTimeout(this.boundScrollHandler_, 1);
- window.addEventListener('scroll', this.boundScrollHandler_, false);
-
- // If the user does not dismiss the bubble, slide out and destroy it after
- // some time.
- window.setTimeout(google.bind(this.autoDestruct_, this),
- this.TIME_UNTIL_AUTO_DESTRUCT);
-};
-
-
-/**
- * Destroys the bubble by removing its DOM nodes from the document.
- */
-google.bookmarkbubble.Bubble.prototype.destroy = function() {
- if (this.hasBeenDestroyed_) {
- return;
- }
- window.removeEventListener('scroll', this.boundScrollHandler_, false);
- if (this.element_ && this.element_.parentNode == document.body) {
- document.body.removeChild(this.element_);
- this.element_ = null;
- }
- this.hasBeenDestroyed_ = true;
-};
-
-
-/**
- * Remember that the user has dismissed the bubble once more.
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.rememberDismissal_ = function() {
- if (window.localStorage) {
- try {
- var key = this.LOCAL_STORAGE_PREFIX + this.DISMISSED_;
- var value = Number(window.localStorage[key]) || 0;
- window.localStorage[key] = String(value + 1);
- } catch (ex) {
- // Looks like we've hit the storage size limit. Currently we have no
- // fallback for this scenario, but we could use cookie storage instead.
- // This would increase the code bloat though.
- }
- }
-};
-
-
-/**
- * Whether the user has dismissed the bubble often enough that we will not
- * show it again.
- * @return {boolean} Whether the user has dismissed the bubble often enough
- * that we will not show it again.
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.hasBeenDismissedTooManyTimes_ =
- function() {
- if (!window.localStorage) {
- // If we can not use localStorage to remember how many times the user has
- // dismissed the bubble, assume he has dismissed it. Otherwise we might end
- // up showing it every time the host application loads, into eternity.
- return true;
- }
- try {
- var key = this.LOCAL_STORAGE_PREFIX + this.DISMISSED_;
-
- // If the key has never been set, localStorage yields undefined, which
- // Number() turns into NaN. In that case we'll fall back to zero for
- // clarity's sake.
- var value = Number(window.localStorage[key]) || 0;
-
- return value >= this.NUMBER_OF_TIMES_TO_DISMISS;
- } catch (ex) {
- // If we got here, something is wrong with the localStorage. Make the same
- // assumption as when it does not exist at all. Exceptions should only
- // occur when setting a value (due to storage limitations) but let's be
- // extra careful.
- return true;
- }
-};
-
-
-/**
- * Whether the application is running in fullscreen mode.
- * @return {boolean} Whether the application is running in fullscreen mode.
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.isFullscreen_ = function() {
- return !!window.navigator.standalone;
-};
-
-
-/**
- * Whether the application is running inside Mobile Safari.
- * @return {boolean} True if the current user agent looks like Mobile Safari.
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.isMobileSafari_ = function() {
- return this.MOBILE_SAFARI_USERAGENT_REGEX_.test(window.navigator.userAgent);
-};
-
-
-/**
- * Whether the application is running on an iPad.
- * @return {boolean} True if the current user agent looks like an iPad.
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.isIpad_ = function() {
- return this.IPAD_USERAGENT_REGEX_.test(window.navigator.userAgent);
-};
-
-
-
-/**
- * Positions the bubble at the bottom of the viewport using an animated
- * transition.
- */
-google.bookmarkbubble.Bubble.prototype.setPosition = function() {
- this.element_.style.WebkitTransition = '-webkit-transform 0.7s ease-out';
- this.element_.style.WebkitTransform =
- 'translateY(' + this.getVisibleYPosition_() + 'px)';
-};
-
-
-/**
- * Destroys the bubble by removing its DOM nodes from the document, and
- * remembers that it was dismissed.
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.closeClickHandler_ = function() {
- this.destroy();
- this.rememberDismissal_();
-};
-
-
-/**
- * Gets called after a while if the user ignores the bubble.
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.autoDestruct_ = function() {
- if (this.hasBeenDestroyed_) {
- return;
- }
- this.element_.style.WebkitTransition = '-webkit-transform 0.7s ease-in';
- this.element_.style.WebkitTransform =
- 'translateY(' + this.getHiddenYPosition_() + 'px)';
- window.setTimeout(google.bind(this.destroy, this), 700);
-};
-
-
-/**
- * Gets the y offset used to show the bubble (i.e., position it on-screen).
- * @return {number} The y offset.
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.getVisibleYPosition_ = function() {
- return this.isIpad_() ? window.pageYOffset + 17 :
- window.pageYOffset - this.element_.offsetHeight + window.innerHeight - 17;
-};
-
-
-/**
- * Gets the y offset used to hide the bubble (i.e., position it off-screen).
- * @return {number} The y offset.
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.getHiddenYPosition_ = function() {
- return this.isIpad_() ? window.pageYOffset - this.element_.offsetHeight :
- window.pageYOffset + window.innerHeight;
-};
-
-
-/**
- * The url of the app's bookmark icon.
- * @type {string|undefined}
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.iconUrl_;
-
-
-/**
- * Scrapes the document for a link element that specifies an Apple favicon and
- * returns the icon url. Returns an empty data url if nothing can be found.
- * @return {string} A url string.
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.getIconUrl_ = function() {
- if (!this.iconUrl_) {
- var link = this.getLink(this.REL_ICON_);
- if (!link || !(this.iconUrl_ = link.href)) {
- this.iconUrl_ = 'data:image/png;base64,';
- }
- }
- return this.iconUrl_;
-};
-
-
-/**
- * Gets the requested link tag if it exists.
- * @param {string} rel The rel attribute of the link tag to get.
- * @return {Element} The requested link tag or null.
- */
-google.bookmarkbubble.Bubble.prototype.getLink = function(rel) {
- rel = rel.toLowerCase();
- var links = document.getElementsByTagName('link');
- for (var i = 0; i < links.length; ++i) {
- var currLink = /** @type {Element} */ (links[i]);
- if (currLink.getAttribute('rel').toLowerCase() == rel) {
- return currLink;
- }
- }
- return null;
-};
-
-
-/**
- * Creates the bubble and appends it to the document.
- * @return {Element} The bubble element.
- * @private
- */
-google.bookmarkbubble.Bubble.prototype.build_ = function() {
- var bubble = document.createElement('div');
- var isIpad = this.isIpad_();
-
- bubble.style.position = 'absolute';
- bubble.style.zIndex = 1000;
- bubble.style.width = '100%';
- bubble.style.left = '0';
- bubble.style.top = '0';
-
- var bubbleInner = document.createElement('div');
- bubbleInner.style.position = 'relative';
- bubbleInner.style.width = '214px';
- bubbleInner.style.margin = isIpad ? '0 0 0 82px' : '0 auto';
- bubbleInner.style.border = '2px solid #fff';
- bubbleInner.style.padding = '20px 20px 20px 10px';
- bubbleInner.style.WebkitBorderRadius = '8px';
- bubbleInner.style.WebkitBoxShadow = '0 0 8px rgba(0, 0, 0, 0.7)';
- bubbleInner.style.WebkitBackgroundSize = '100% 8px';
- bubbleInner.style.backgroundColor = '#b0c8ec';
- bubbleInner.style.background = '#cddcf3 -webkit-gradient(linear, ' +
- 'left bottom, left top, ' + isIpad ?
- 'from(#cddcf3), to(#b3caed)) no-repeat top' :
- 'from(#b3caed), to(#cddcf3)) no-repeat bottom';
- bubbleInner.style.font = '13px/17px sans-serif';
- bubble.appendChild(bubbleInner);
-
- // The "Add to Home Screen" text is intended to be the exact same size text
- // that is displayed in the menu of Mobile Safari on iPhone.
- bubbleInner.innerHTML = 'Install this web app on your phone: tap ' +
- '+ and then \'Add to Home Screen\'';
-
- var icon = document.createElement('div');
- icon.style['float'] = 'left';
- icon.style.width = '55px';
- icon.style.height = '55px';
- icon.style.margin = '-2px 7px 3px 5px';
- icon.style.background =
- '#fff url(' + this.getIconUrl_() + ') no-repeat -1px -1px';
- icon.style.WebkitBackgroundSize = '57px';
- icon.style.WebkitBorderRadius = '10px';
- icon.style.WebkitBoxShadow = '0 2px 5px rgba(0, 0, 0, 0.4)';
- bubbleInner.insertBefore(icon, bubbleInner.firstChild);
-
- var arrow = document.createElement('div');
- arrow.style.backgroundImage = 'url(' + this.IMAGE_ARROW_DATA_URL_ + ')';
- arrow.style.width = '25px';
- arrow.style.height = '19px';
- arrow.style.position = 'absolute';
- arrow.style.left = '111px';
- if (isIpad) {
- arrow.style.WebkitTransform = 'rotate(180deg)';
- arrow.style.top = '-19px';
- } else {
- arrow.style.bottom = '-19px';
- }
- bubbleInner.appendChild(arrow);
-
- var close = document.createElement('a');
- close.onclick = google.bind(this.closeClickHandler_, this);
- close.style.position = 'absolute';
- close.style.display = 'block';
- close.style.top = '-3px';
- close.style.right = '-3px';
- close.style.width = '16px';
- close.style.height = '16px';
- close.style.border = '10px solid transparent';
- close.style.background =
- 'url(' + this.IMAGE_CLOSE_DATA_URL_ + ') no-repeat';
- bubbleInner.appendChild(close);
-
- return bubble;
-};
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/example/example.html b/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/example/example.html
deleted file mode 100755
index 70158b24..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/example/example.html
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
-
- Sample
-
-
-
-
-
-
-
-
The bookmark bubble will show after a second, if:
-
-
It has not been previously dismissed too often
-
The application is not running in full screen mode
-
The bookmark bubble hash token is not present
-
-
Supported browsers:
-
-
iPhone / iPod / iPad Mobile Safari 3.0+
-
-
-
-
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/example/example.js b/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/example/example.js
deleted file mode 100755
index 243eed33..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/example/example.js
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- Copyright 2010 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-/** @fileoverview Example of how to use the bookmark bubble. */
-
-window.addEventListener('load', function() {
- window.setTimeout(function() {
- var bubble = new google.bookmarkbubble.Bubble();
-
- var parameter = 'bmb=1';
-
- bubble.hasHashParameter = function() {
- return window.location.hash.indexOf(parameter) != -1;
- };
-
- bubble.setHashParameter = function() {
- if (!this.hasHashParameter()) {
- window.location.hash += parameter;
- }
- };
-
- bubble.getViewportHeight = function() {
- window.console.log('Example of how to override getViewportHeight.');
- return window.innerHeight;
- };
-
- bubble.getViewportScrollY = function() {
- window.console.log('Example of how to override getViewportScrollY.');
- return window.pageYOffset;
- };
-
- bubble.registerScrollHandler = function(handler) {
- window.console.log('Example of how to override registerScrollHandler.');
- window.addEventListener('scroll', handler, false);
- };
-
- bubble.deregisterScrollHandler = function(handler) {
- window.console.log('Example of how to override deregisterScrollHandler.');
- window.removeEventListener('scroll', handler, false);
- };
-
- bubble.showIfAllowed();
- }, 1000);
-}, false);
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/images/arrow.png b/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/images/arrow.png
deleted file mode 100755
index de37e98c..00000000
Binary files a/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/images/arrow.png and /dev/null differ
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/images/close.png b/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/images/close.png
deleted file mode 100755
index 032786b4..00000000
Binary files a/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/images/close.png and /dev/null differ
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/images/generate_base64_images b/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/images/generate_base64_images
deleted file mode 100755
index 2f0bd40b..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/images/generate_base64_images
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash
-
-# Copyright 2010 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Generates base64 versions of images so they can be inlined using the 'data:'
-# URI scheme.
-
-declare -ra IMAGE_FILES=( close.png arrow.png )
-
-for image in ${IMAGE_FILES[@]}; do
- OUT="$image.base64"
- cat "$image" \
- | uuencode -m ignore-this \
- | grep -v begin-base64 \
- | grep -v "====" \
- | xargs echo \
- | sed -e 's/ //g' \
- | xargs echo -n \
- > $OUT
- ls -l $OUT
-done
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/images/icon_calendar.png b/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/images/icon_calendar.png
deleted file mode 100755
index 8cd76bf9..00000000
Binary files a/middleman-cli/lib/middleman-templates/mobile/source/tools/mobile-bookmark-bubble/images/icon_calendar.png and /dev/null differ
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/wspl/README b/middleman-cli/lib/middleman-templates/mobile/source/tools/wspl/README
deleted file mode 100755
index 985a1b20..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/wspl/README
+++ /dev/null
@@ -1,27 +0,0 @@
-How to run the tests:
-
-* The tests themselves assume that jsunit is in a sibling directory
-to the one containing the distrbution. If this is not so, it is sufficient
-to edit the paths in the test files. (On UNIX, symlinks may be your
-friend if this is not convenient.)
-
-* jsmock.js (available from http://jsmock.sourceforge.net/) should
-be placed in the distribution directory.
-
-* Specify the test files via a URL parameter. (This might be an issue
-with jsunit: http://digitalmihailo.blogspot.com/2008/06/make-jsunit-work-in-firefox-30.html)
-
-For example, if the root of your downloaded of the distribution is /mypath:
-
-file:///mypath/jsunit/testRunner.html?testpage=mypath/webstorageportabilitylayer/dbwrapper_gears_test.html
-file:///mypath/jsunit/testRunner.html?testpage=mypath/webstorageportabilitylayer/dbwrapper_html5_test.html
-file:///mypath/jsunit/testRunner.html?testpage=mypath/webstorageportabilitylayer/dbwrapperapi_test.html
-
-NB: the leading / in a UNIX path is not included in mypath so setting
-it via pwd will not deliver the desired effect.
-
-
-
-
-
-
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/wspl/databasefactory.js b/middleman-cli/lib/middleman-templates/mobile/source/tools/wspl/databasefactory.js
deleted file mode 100755
index 917614fb..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/wspl/databasefactory.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-// Namespace.
-google.wspl.DatabaseFactory = google.wspl.DatabaseFactory || {};
-
-/**
- * Factory function to build databases in a cross-API manner.
- * @param {string} dbName of the database
- * @param {string} dbworkerUrl the URL for Gears worker.
- * @return {google.wspl.Database} The database object.
- */
-google.wspl.DatabaseFactory.createDatabase = function(dbName, dbworkerUrl) {
- var dbms;
- if (window.openDatabase) {
- // We have HTML5 functionality.
- dbms = new google.wspl.html5.Database(dbName);
- } else {
- // Try to use Google Gears.
- var gearsDb = goog.gears.getFactory().create('beta.database');
- var wp = goog.gears.getFactory().create('beta.workerpool');
-
- // Note that Gears will not allow file based URLs when creating a worker.
- dbms = new wireless.db.gears.Database();
- dbms.openDatabase('', dbName, gearsDb);
- wp.onmessage = google.bind(dbms.onMessage_, dbms);
-
- // Comment this line out to use the synchronous database.
- dbms.startWorker(wp, dbworkerUrl, 0);
- }
- return dbms;
-};
diff --git a/middleman-cli/lib/middleman-templates/mobile/source/tools/wspl/dbworker.js b/middleman-cli/lib/middleman-templates/mobile/source/tools/wspl/dbworker.js
deleted file mode 100755
index c12cf017..00000000
--- a/middleman-cli/lib/middleman-templates/mobile/source/tools/wspl/dbworker.js
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-/**
- * @fileoverview A worker thread that performs synchronous queries against a
- * Gears database on behalf of an asynchronous calling client.
- *
- * The worker replies to the sender with messages to pass results, errors, and
- * notifications about completed transactions. The type field of the message
- * body specifies the message type. For each successful statement, a RESULT
- * message is sent with a result attribute containing the Gears result set. For
- * the first unsuccessful statement, an ERROR message will be sent with details
- * stored in the error field. After the transaction has been committed, a COMMIT
- * message is sent. If the transaction is rolled back, a ROLLBACK message is
- * sent.
- *
- * NB: The worker must be served over http. Further, to operate successfully,
- * it requires the inclusion of global_functions.js and gearsutils.js.
- */
-
-
-/**
- * Creates a DbWorker to handle incoming messages, execute queries, and return
- * results to the main thread.
- *
- * @param {GearsWorkerPool} wp The gears worker pool.
- * @constructor
- */
-google.wspl.gears.DbWorker = function(wp) {
-
- /**
- * An array of transaction ids representing the transactions that are open on
- * the database.
- * @type {Array.}
- * @private
- */
- this.transactions_ = [];
-
- /**
- * The gears worker pool.
- * @type {GearsWorkerPool}
- * @private
- */
- this.wp_ = wp;
-
- this.wp_.onmessage = google.bind(this.onMessage_, this);
-
- this.sendMessageToWorker_({
- 'type': google.wspl.gears.DbWorker.ReplyTypes.STARTED
- });
-};
-
-/**
- * The gears database that this worker thread will interact with.
- * @type {GearsDatabase}
- * @private
- */
-google.wspl.gears.DbWorker.prototype.db_;
-
-/**
- * A singleton instance of DbWorker.
- * @type {google.wspl.gears.DbWorker?}
- * @private
- */
-google.wspl.gears.DbWorker.instance_;
-
-/**
- * The sender ID of the incomming messages. Default to 0 for workerpool ID.
- * @type {number}
- * @private
- */
-google.wspl.gears.DbWorker.prototype.senderId_ = 0;
-
-/**
- * Message type constants for worker command messages.
- * @enum {number}
- */
-google.wspl.gears.DbWorker.CommandTypes = {
- OPEN: 1,
- BEGIN: 2,
- EXECUTE: 3,
- COMMIT: 4,
- ROLLBACK: 5
-};
-
-/**
- * Message type constants for worker reply messages.
- * @enum {number}
- */
-google.wspl.gears.DbWorker.ReplyTypes = {
- RESULT: 1,
- FAILURE: 2,
- COMMIT: 3,
- ROLLBACK: 4,
- STARTED: 5,
- OPEN_SUCCESSFUL: 6,
- OPEN_FAILED: 7,
- LOG: 8
-};
-
-/**
- * Starts the DbWorker.
- */
-google.wspl.gears.DbWorker.start = function() {
- var wp = google.gears.workerPool;
- google.wspl.gears.DbWorker.instance_ = new google.wspl.gears.DbWorker(wp);
-};
-
-/**
- * Handles an OPEN command from the main thread.
- *
- * @param {string} userId The user to which the database belongs.
- * @param {string} name The database's name.
- */
-google.wspl.gears.DbWorker.prototype.handleOpen_ = function(userId, name) {
- this.log_('Attempting to create Gears database: userId=' + userId + ', name='
- + name);
- try {
- this.db_ = google.gears.factory.create('beta.database', '1.0');
- google.wspl.GearsUtils.openDatabase(userId, name, this.db_, this.log_);
- this.sendMessageToWorker_({
- 'type': google.wspl.gears.DbWorker.ReplyTypes.OPEN_SUCCESSFUL
- });
- } catch (ex) {
- this.sendMessageToWorker_({
- 'type': google.wspl.gears.DbWorker.ReplyTypes.OPEN_FAILED,
- 'error': ex
- });
- }
-};
-
-/**
- * Handles a EXECUTE command from the main thread.
- *
- * @param {!Array.} statements The statements to execute.
- * @param {number} callbackId The callback to invoke after each execution.
- * @param {number} transactionId The transaction that the statements belong to.
- * @private
- */
-google.wspl.gears.DbWorker.prototype.handleExecute_ =
- function(statements, callbackId, transactionId) {
- var self = this;
- try {
- this.executeAll_(statements, function(results) {
- self.sendMessageToWorker_(/** @type {string} */({
- 'type': google.wspl.gears.DbWorker.ReplyTypes.RESULT,
- 'results': results,
- 'callbackId': callbackId,
- 'transactionId': transactionId
- }));
- });
- } catch (e) {
- this.sendMessageToWorker_({
- 'type': google.wspl.gears.DbWorker.ReplyTypes.FAILURE,
- 'error': e,
- 'callbackId': callbackId,
- 'transactionId': transactionId
- });
- }
-};
-
-/**
- * Executes all of the statements on the Gears database. The callback is
- * invoked with the query results after each successful query execution.
- *
- * @param {!Array.