Skip to content
Browse files

Merge branch 'feature-rake-pipeline' into develop

  • Loading branch information...
2 parents 8d86f97 + 4036713 commit 2e920a715e04b0702afe60e5213123be8e06e90f @ethul committed Mar 20, 2012
View
4 .gitignore
@@ -1,4 +1,4 @@
*.swp
-assets/*.*.css
*.html
-!404.html
+public
+tmp
View
540 .htaccess
@@ -1,540 +0,0 @@
-# Apache configuration file
-# httpd.apache.org/docs/2.2/mod/quickreference.html
-
-# Note .htaccess files are an overhead, this logic should be in your Apache config if possible
-# httpd.apache.org/docs/2.2/howto/htaccess.html
-
-# Techniques in here adapted from all over, including:
-# Kroc Camen: camendesign.com/.htaccess
-# perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/
-# Sample .htaccess file of CMS MODx: modxcms.com
-
-
-###
-### If you run a webserver other than Apache, consider:
-### github.com/h5bp/server-configs
-###
-
-
-
-# ----------------------------------------------------------------------
-# Better website experience for IE users
-# ----------------------------------------------------------------------
-
-# Force the latest IE version, in various cases when it may fall back to IE7 mode
-# github.com/rails/rails/commit/123eb25#commitcomment-118920
-# Use ChromeFrame if it's installed for a better experience for the poor IE folk
-
-<IfModule mod_headers.c>
- Header set X-UA-Compatible "IE=Edge,chrome=1"
- # mod_headers can't match by content-type, but we don't want to send this header on *everything*...
- <FilesMatch "\.(js|css|gif|png|jpe?g|pdf|xml|oga|ogg|m4a|ogv|mp4|m4v|webm|svg|svgz|eot|ttf|otf|woff|ico|webp|appcache|manifest|htc|crx|oex|xpi|safariextz|vcf)$" >
- Header unset X-UA-Compatible
- </FilesMatch>
-</IfModule>
-
-
-# ----------------------------------------------------------------------
-# Cross-domain AJAX requests
-# ----------------------------------------------------------------------
-
-# Serve cross-domain Ajax requests, disabled by default.
-# enable-cors.org
-# code.google.com/p/html5security/wiki/CrossOriginRequestSecurity
-
-# <IfModule mod_headers.c>
-# Header set Access-Control-Allow-Origin "*"
-# </IfModule>
-
-
-# ----------------------------------------------------------------------
-# CORS-enabled images (@crossorigin)
-# ----------------------------------------------------------------------
-
-# Send CORS headers if browsers request them; enabled by default for images.
-# developer.mozilla.org/en/CORS_Enabled_Image
-# blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html
-# hacks.mozilla.org/2011/11/using-cors-to-load-webgl-textures-from-cross-domain-images/
-# wiki.mozilla.org/Security/Reviews/crossoriginAttribute
-
-#<IfModule mod_setenvif.c>
-# <IfModule mod_headers.c>
-# # mod_headers, y u no match by Content-Type?!
-# <FilesMatch "\.(gif|png|jpe?g|svg|svgz|ico|webp)$">
-# SetEnvIf Origin ":" IS_CORS
-# Header set Access-Control-Allow-Origin "*" env=IS_CORS
-# </FilesMatch>
-# </IfModule>
-#</IfModule>
-
-
-# ----------------------------------------------------------------------
-# Webfont access
-# ----------------------------------------------------------------------
-
-# Allow access from all domains for webfonts.
-# Alternatively you could only whitelist your
-# subdomains like "subdomain.example.com".
-
-#<IfModule mod_headers.c>
-# <FilesMatch "\.(ttf|ttc|otf|eot|woff|font.css)$">
-# Header set Access-Control-Allow-Origin "*"
-# </FilesMatch>
-#</IfModule>
-
-
-
-# ----------------------------------------------------------------------
-# Proper MIME type for all files
-# ----------------------------------------------------------------------
-
-
-# JavaScript
-# Normalize to standard type (it's sniffed in IE anyways)
-# tools.ietf.org/html/rfc4329#section-7.2
-AddType application/javascript js
-
-# Audio
-AddType audio/ogg oga ogg
-AddType audio/mp4 m4a
-
-# Video
-AddType video/ogg ogv
-AddType video/mp4 mp4 m4v
-AddType video/webm webm
-
-# SVG
-# Required for svg webfonts on iPad
-# twitter.com/FontSquirrel/status/14855840545
-AddType image/svg+xml svg svgz
-AddEncoding gzip svgz
-
-# Webfonts
-AddType application/vnd.ms-fontobject eot
-AddType application/x-font-ttf ttf ttc
-AddType font/opentype otf
-AddType application/x-font-woff woff
-
-# Assorted types
-AddType image/x-icon ico
-AddType image/webp webp
-AddType text/cache-manifest appcache manifest
-AddType text/x-component htc
-AddType application/x-chrome-extension crx
-AddType application/x-opera-extension oex
-AddType application/x-xpinstall xpi
-AddType application/octet-stream safariextz
-AddType application/x-web-app-manifest+json webapp
-AddType text/x-vcard vcf
-
-
-
-# ----------------------------------------------------------------------
-# Allow concatenation from within specific js and css files
-# ----------------------------------------------------------------------
-
-# e.g. Inside of script.combined.js you could have
-# <!--#include file="libs/jquery-1.5.0.min.js" -->
-# <!--#include file="plugins/jquery.idletimer.js" -->
-# and they would be included into this single file.
-
-# This is not in use in the boilerplate as it stands. You may
-# choose to name your files in this way for this advantage or
-# concatenate and minify them manually.
-# Disabled by default.
-
-#<FilesMatch "\.combined\.js$">
-# Options +Includes
-# AddOutputFilterByType INCLUDES application/javascript application/json
-# SetOutputFilter INCLUDES
-#</FilesMatch>
-#<FilesMatch "\.combined\.css$">
-# Options +Includes
-# AddOutputFilterByType INCLUDES text/css
-# SetOutputFilter INCLUDES
-#</FilesMatch>
-
-
-# ----------------------------------------------------------------------
-# Gzip compression
-# ----------------------------------------------------------------------
-
-<IfModule mod_deflate.c>
-
- # Force deflate for mangled headers developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
- <IfModule mod_setenvif.c>
- <IfModule mod_headers.c>
- 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
- </IfModule>
- </IfModule>
-
- # HTML, TXT, CSS, JavaScript, JSON, XML, HTC:
- <IfModule filter_module>
- FilterDeclare COMPRESS
- FilterProvider COMPRESS DEFLATE resp=Content-Type $text/html
- FilterProvider COMPRESS DEFLATE resp=Content-Type $text/css
- FilterProvider COMPRESS DEFLATE resp=Content-Type $text/plain
- FilterProvider COMPRESS DEFLATE resp=Content-Type $text/xml
- FilterProvider COMPRESS DEFLATE resp=Content-Type $text/x-component
- FilterProvider COMPRESS DEFLATE resp=Content-Type $application/javascript
- FilterProvider COMPRESS DEFLATE resp=Content-Type $application/json
- FilterProvider COMPRESS DEFLATE resp=Content-Type $application/xml
- FilterProvider COMPRESS DEFLATE resp=Content-Type $application/xhtml+xml
- FilterProvider COMPRESS DEFLATE resp=Content-Type $application/rss+xml
- FilterProvider COMPRESS DEFLATE resp=Content-Type $application/atom+xml
- FilterProvider COMPRESS DEFLATE resp=Content-Type $application/vnd.ms-fontobject
- FilterProvider COMPRESS DEFLATE resp=Content-Type $image/svg+xml
- FilterProvider COMPRESS DEFLATE resp=Content-Type $image/x-icon
- FilterProvider COMPRESS DEFLATE resp=Content-Type $application/x-font-ttf
- FilterProvider COMPRESS DEFLATE resp=Content-Type $font/opentype
- FilterChain COMPRESS
- FilterProtocol COMPRESS DEFLATE change=yes;byteranges=no
- </IfModule>
-
- <IfModule !mod_filter.c>
- # Legacy versions of Apache
- AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
- AddOutputFilterByType DEFLATE application/javascript
- AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
- AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml application/atom+xml
- AddOutputFilterByType DEFLATE image/x-icon image/svg+xml application/vnd.ms-fontobject application/x-font-ttf font/opentype
- </IfModule>
-
-</IfModule>
-
-
-# ----------------------------------------------------------------------
-# Expires headers (for better cache control)
-# ----------------------------------------------------------------------
-
-# These are pretty far-future expires headers.
-# They assume you control versioning with cachebusting query params like
-# <script src="application.js?20100608">
-# Additionally, consider that outdated proxies may miscache
-# www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/
-
-# If you don't use filenames to version, lower the CSS and JS to something like
-# "access plus 1 week" or so.
-
-<IfModule mod_expires.c>
- ExpiresActive on
-
-# Perhaps better to whitelist expires rules? Perhaps.
- ExpiresDefault "access plus 1 month"
-
-# cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5)
- ExpiresByType text/cache-manifest "access plus 0 seconds"
-
-# Your document html
- ExpiresByType text/html "access plus 0 seconds"
-
-# Data
- ExpiresByType text/xml "access plus 0 seconds"
- ExpiresByType application/xml "access plus 0 seconds"
- ExpiresByType application/json "access plus 0 seconds"
-
-# Feed
- ExpiresByType application/rss+xml "access plus 1 hour"
- ExpiresByType application/atom+xml "access plus 1 hour"
-
-# Favicon (cannot be renamed)
- ExpiresByType image/x-icon "access plus 1 week"
-
-# Media: images, video, audio
- ExpiresByType image/gif "access plus 1 month"
- ExpiresByType image/png "access plus 1 month"
- ExpiresByType image/jpg "access plus 1 month"
- ExpiresByType image/jpeg "access plus 1 month"
- ExpiresByType video/ogg "access plus 1 month"
- ExpiresByType audio/ogg "access plus 1 month"
- ExpiresByType video/mp4 "access plus 1 month"
- ExpiresByType video/webm "access plus 1 month"
-
-# HTC files (css3pie)
- ExpiresByType text/x-component "access plus 1 month"
-
-# Webfonts
- ExpiresByType application/x-font-ttf "access plus 1 month"
- ExpiresByType font/opentype "access plus 1 month"
- ExpiresByType application/x-font-woff "access plus 1 month"
- ExpiresByType image/svg+xml "access plus 1 month"
- ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
-
-# CSS and JavaScript
- ExpiresByType text/css "access plus 1 year"
- ExpiresByType application/javascript "access plus 1 year"
-
- <IfModule mod_headers.c>
- Header append Cache-Control "public"
- </IfModule>
-
-</IfModule>
-
-
-
-# ----------------------------------------------------------------------
-# ETag removal
-# ----------------------------------------------------------------------
-
-# FileETag None is not enough for every server.
-<IfModule mod_headers.c>
- Header unset ETag
-</IfModule>
-
-# Since we're sending far-future expires, we don't need ETags for
-# static content.
-# developer.yahoo.com/performance/rules.html#etags
-FileETag None
-
-
-
-# ----------------------------------------------------------------------
-# Stop screen flicker in IE on CSS rollovers
-# ----------------------------------------------------------------------
-
-# The following directives stop screen flicker in IE on CSS rollovers - in
-# combination with the "ExpiresByType" rules for images (see above). If
-# needed, un-comment the following rules.
-
-# BrowserMatch "MSIE" brokenvary=1
-# BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1
-# BrowserMatch "Opera" !brokenvary
-# SetEnvIf brokenvary 1 force-no-vary
-
-
-
-# ----------------------------------------------------------------------
-# Cookie setting from iframes
-# ----------------------------------------------------------------------
-
-# Allow cookies to be set from iframes (for IE only)
-# If needed, uncomment and specify a path or regex in the Location directive
-
-# <IfModule mod_headers.c>
-# <Location />
-# Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
-# </Location>
-# </IfModule>
-
-
-
-# ----------------------------------------------------------------------
-# Start rewrite engine
-# ----------------------------------------------------------------------
-
-# Turning on the rewrite engine is necessary for the following rules and features.
-# FollowSymLinks must be enabled for this to work.
-
-<IfModule mod_rewrite.c>
- Options +FollowSymlinks
- RewriteEngine On
-</IfModule>
-
-
-
-# ----------------------------------------------------------------------
-# Suppress or force 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, since this can cause SEO problems (duplicate content).
-# That's why you should choose one of the alternatives and redirect the other one.
-
-# By default option 1 (no "www.") is activated. Remember: Shorter URLs are sexier.
-# no-www.org/faq.php?q=class_b
-
-# If you rather want to use option 2, just comment out all option 1 lines
-# and uncomment option 2.
-# IMPORTANT: NEVER USE BOTH RULES AT THE SAME TIME!
-
-# ----------------------------------------------------------------------
-
-# Option 1:
-# Rewrite "www.example.com -> example.com"
-
-#<IfModule mod_rewrite.c>
-# RewriteCond %{HTTPS} !=on
-# RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
-# RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
-#</IfModule>
-
-# ----------------------------------------------------------------------
-
-# Option 2:
-# To rewrite "example.com -> www.example.com" uncomment the following lines.
-# Be aware that the following rule might not be a good idea if you
-# use "real" subdomains for certain parts of your website.
-
-# <IfModule mod_rewrite.c>
-# RewriteCond %{HTTPS} !=on
-# RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
-# RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
-# </IfModule>
-
-
-
-# ----------------------------------------------------------------------
-# Built-in filename-based cache busting
-# ----------------------------------------------------------------------
-
-# If you're not using the build script to manage your filename version revving,
-# you might want to consider enabling this, which will route requests for
-# /css/style.20110203.css to /css/style.css
-
-# To understand why this is important and a better idea than all.css?v1231,
-# read: github.com/h5bp/html5-boilerplate/wiki/Version-Control-with-Cachebusting
-
-# Uncomment to enable.
-<IfModule mod_rewrite.c>
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L]
-</IfModule>
-
-
-
-# ----------------------------------------------------------------------
-# Prevent SSL cert warnings
-# ----------------------------------------------------------------------
-
-# Rewrite secure requests properly to prevent SSL cert warnings, e.g. prevent
-# https://www.example.com when your cert only allows https://secure.example.com
-# Uncomment the following lines to use this feature.
-
-# <IfModule mod_rewrite.c>
-# RewriteCond %{SERVER_PORT} !^443
-# RewriteRule ^ https://example-domain-please-change-me.com%{REQUEST_URI} [R=301,L]
-# </IfModule>
-
-
-
-# ----------------------------------------------------------------------
-# Prevent 404 errors for non-existing redirected folders
-# ----------------------------------------------------------------------
-
-# without -MultiViews, Apache will give a 404 for a rewrite if a folder of the same name does not exist
-# e.g. /blog/hello : webmasterworld.com/apache/3808792.htm
-
-Options -MultiViews
-
-
-
-# ----------------------------------------------------------------------
-# Custom 404 page
-# ----------------------------------------------------------------------
-
-# You can add custom pages to handle 500 or 403 pretty easily, if you like.
-ErrorDocument 404 /404.html
-
-
-
-# ----------------------------------------------------------------------
-# UTF-8 encoding
-# ----------------------------------------------------------------------
-
-# Use UTF-8 encoding for anything served text/plain or text/html
-AddDefaultCharset utf-8
-
-# Force UTF-8 for a number of file formats
-AddCharset utf-8 .css .js .xml .json .rss .atom
-
-
-
-# ----------------------------------------------------------------------
-# A little more security
-# ----------------------------------------------------------------------
-
-
-# Do we want to advertise the exact version number of Apache we're running?
-# Probably not.
-## This can only be enabled if used in httpd.conf - It will not work in .htaccess
-# ServerTokens Prod
-
-
-# "-Indexes" will have Apache block users from browsing folders without a default document
-# Usually you should leave this activated, because you shouldn't allow everybody to surf through
-# every folder on your server (which includes rather private places like CMS system folders).
-<IfModule mod_autoindex.c>
- Options -Indexes
-</IfModule>
-
-
-# Block access to "hidden" directories whose names begin with a period. This
-# includes directories used by version control systems such as Subversion or Git.
-<IfModule mod_rewrite.c>
- RewriteCond %{SCRIPT_FILENAME} -d
- RewriteCond %{SCRIPT_FILENAME} -f
- RewriteRule "(^|/)\." - [F]
-</IfModule>
-
-
-# Block access to backup and source files
-# This files may be left by some text/html editors and
-# pose a great security danger, when someone can access them
-<FilesMatch "\.(bak|config|sql|fla|psd|ini|log|sh|inc|~|swp|dist)$">
- Order allow,deny
- Deny from all
- Satisfy All
-</FilesMatch>
-
-
-# If your server is not already configured as such, the following directive
-# should be uncommented in order to set PHP's register_globals option to OFF.
-# This closes a major security hole that is abused by most XSS (cross-site
-# scripting) attacks. For more information: http://php.net/register_globals
-#
-# IF REGISTER_GLOBALS DIRECTIVE CAUSES 500 INTERNAL SERVER ERRORS :
-#
-# Your server does not allow PHP directives to be set via .htaccess. In that
-# case you must make this change in your php.ini file instead. If you are
-# using a commercial web host, contact the administrators for assistance in
-# doing this. Not all servers allow local php.ini files, and they should
-# include all PHP configurations (not just this one), or you will effectively
-# reset everything to PHP defaults. Consult www.php.net for more detailed
-# information about setting PHP directives.
-
-# php_flag register_globals Off
-
-# Rename session cookie to something else, than PHPSESSID
-# php_value session.name sid
-
-# Do not show you are using PHP
-# Note: Move this line to php.ini since it won't work in .htaccess
-# php_flag expose_php Off
-
-# Level of log detail - log all errors
-# php_value error_reporting -1
-
-# Write errors to log file
-# php_flag log_errors On
-
-# Do not display errors in browser (production - Off, development - On)
-# php_flag display_errors Off
-
-# Do not display startup errors (production - Off, development - On)
-# php_flag display_startup_errors Off
-
-# Format errors in plain text
-# Note: Leave this setting 'On' for xdebug's var_dump() output
-# php_flag html_errors Off
-
-# Show multiple occurrence of error
-# php_flag ignore_repeated_errors Off
-
-# Show same errors from different sources
-# php_flag ignore_repeated_source Off
-
-# Size limit for error messages
-# php_value log_errors_max_len 1024
-
-# Don't precede error with string (doesn't accept empty string, use whitespace if you need)
-# php_value error_prepend_string " "
-
-# Don't prepend to error (doesn't accept empty string, use whitespace if you need)
-# php_value error_append_string " "
-
-# Increase cookie security
-<IfModule php5_module>
- php_value session.cookie_httponly true
-</IfModule>
View
2 .rspec
@@ -1,2 +0,0 @@
---color
---format progress
View
45 Assetfile
@@ -0,0 +1,45 @@
+require "slim"
+require "rake-pipeline-web-filters"
+
+output "public"
+
+input "assets" do
+ match "images/*.png" do
+ Rake::Pipeline::Web::Filters::CacheBusterFilter.processes_binary_files
+ cache_buster
+ end
+
+ match "stylesheets/{index,cv}.less" do
+ cache_buster
+ less :paths => ["./assets/stylesheets"]
+ yui_css do |input|
+ input.sub "\.min", ""
+ end
+ end
+
+ match "statics/**/*" do
+ copy do |input|
+ input.sub "statics/", ""
+ end
+ end
+end
+
+input "assets" do
+ match "templates/{layout,index}.slim" do
+ tilt_yielding(
+ :yields_to => ["layout","index"],
+ :output_name => "index.html",
+ :locals => {:page => "index"}
+ )
+ end
+end
+
+input "assets" do
+ match "templates/{layout,cv}.slim" do
+ tilt_yielding(
+ :yields_to => ["layout","cv"],
+ :output_name => "cv.html",
+ :locals => {:page => "cv"}
+ )
+ end
+end
View
8 Gemfile
@@ -1,4 +1,8 @@
-source :gemcutter
+source :rubygems
+
gem "less"
gem "slim"
-gem "rspec"
+gem "yui-compressor"
+gem "rack"
+gem "rake-pipeline", :git => "https://github.com/livingsocial/rake-pipeline.git"
+gem "rake-pipeline-web-filters", :git => "git://github.com/ethul/rake-pipeline-web-filters.git", :branch => "feature-tilt-yielding"
View
54 Gemfile.lock
@@ -1,33 +1,53 @@
+GIT
+ remote: git://github.com/ethul/rake-pipeline-web-filters.git
+ revision: 1348e12b0fa488c7530c815e2566af7d861f2248
+ branch: feature-tilt-yielding
+ specs:
+ rake-pipeline-web-filters (0.6.0)
+ rack
+ rake-pipeline (~> 0.6)
+
+GIT
+ remote: https://github.com/livingsocial/rake-pipeline.git
+ revision: 961659f592eca500050c884d61c5d1a2da45cf09
+ specs:
+ rake-pipeline (0.6.0)
+ rake (~> 0.9.0)
+ thor
+
GEM
remote: http://rubygems.org/
specs:
- commonjs (0.2.0)
- therubyracer (~> 0.9.9)
- diff-lcs (1.1.3)
- less (2.0.9)
+ POpen4 (0.1.4)
+ Platform (>= 0.4.0)
+ open4
+ Platform (0.4.0)
+ commonjs (0.2.5)
+ less (2.0.11)
commonjs (~> 0.2.0)
therubyracer (~> 0.9.9)
libv8 (3.3.10.4)
- rspec (2.8.0)
- rspec-core (~> 2.8.0)
- rspec-expectations (~> 2.8.0)
- rspec-mocks (~> 2.8.0)
- rspec-core (2.8.0)
- rspec-expectations (2.8.0)
- diff-lcs (~> 1.1.2)
- rspec-mocks (2.8.0)
- slim (1.1.0)
- temple (~> 0.3.5)
+ open4 (1.3.0)
+ rack (1.4.1)
+ rake (0.9.2.2)
+ slim (1.1.1)
+ temple (~> 0.4.0)
tilt (~> 1.3.2)
- temple (0.3.5)
- therubyracer (0.9.9)
+ temple (0.4.0)
+ therubyracer (0.9.10)
libv8 (~> 3.3.10)
+ thor (0.14.6)
tilt (1.3.3)
+ yui-compressor (0.9.6)
+ POpen4 (>= 0.1.4)
PLATFORMS
ruby
DEPENDENCIES
less
- rspec
+ rack
+ rake-pipeline!
+ rake-pipeline-web-filters!
slim
+ yui-compressor
View
0 assets/eric.20060929015500.png → assets/images/eric.png
File renamed without changes
View
0 404.html → assets/statics/404.html
File renamed without changes.
View
0 crossdomain.xml → assets/statics/crossdomain.xml
File renamed without changes.
View
0 humans.txt → assets/statics/humans.txt
File renamed without changes.
View
0 robots.txt → assets/statics/robots.txt
File renamed without changes.
View
0 assets/boilerplate.less → assets/stylesheets/_boilerplate.less
File renamed without changes.
View
36 assets/stylesheets/_frame.less
@@ -0,0 +1,36 @@
+@font-size: 17;
+@line: 24;
+@em: @font-size*1em;
+
+@column: 48;
+@gutter: 24;
+
+@1col: (1 * (@column + @gutter) - @gutter) / @em;
+@1cols: @1col;
+@2cols: (2 * (@column + @gutter) - @gutter) / @em;
+@3cols: (3 * (@column + @gutter) - @gutter) / @em;
+@4cols: (4 * (@column + @gutter) - @gutter) / @em;
+@5cols: (5 * (@column + @gutter) - @gutter) / @em;
+@6cols: (6 * (@column + @gutter) - @gutter) / @em;
+@7cols: (7 * (@column + @gutter) - @gutter) / @em;
+@8cols: (8 * (@column + @gutter) - @gutter) / @em;
+@9cols: (9 * (@column + @gutter) - @gutter) / @em;
+@10cols: (10 * (@column + @gutter) - @gutter) / @em;
+@11cols: (11 * (@column + @gutter) - @gutter) / @em;
+@12cols: (12 * (@column + @gutter) - @gutter) / @em;
+@13cols: (13 * (@column + @gutter) - @gutter) / @em;
+@14cols: (14 * (@column + @gutter) - @gutter) / @em;
+@15cols: (15 * (@column + @gutter) - @gutter) / @em;
+@16cols: (16 * (@column + @gutter) - @gutter) / @em;
+
+.width (@cols:1) {
+ width: (@cols * (@column + @gutter) - @gutter) / @em;
+}
+
+.small {font-size: 13/@em; line-height: @line/13*1em;}
+.normal {font-size: 1em;}
+.big {font-size: 23/@em; line-height: 24/23*1em;}
+.large {font-size: 27/@em; line-height: 36/27*1em;}
+.huge {font-size: 44/@em; line-height: 48/44*1em;}
+.enormous {font-size: 72/@em; line-height: 72/72*1em;}
+.gigantic {font-size: 116/@em; line-height: 120/116*1em;}
View
2 assets/cv.less → assets/stylesheets/cv.less
@@ -1,4 +1,4 @@
-@import "boilerplate.less";
+@import "_boilerplate";
article {width: 64%; margin-left: auto; margin-right: auto;}
dd {float: left; margin-left: 0em; margin-right: 0.78em; font-size: small;}
View
44 assets/index.less → assets/stylesheets/index.less
@@ -1,41 +1,5 @@
-@import "boilerplate.less";
-
-@font-size: 17;
-@line: 24;
-@em: @font-size*1em;
-
-@column: 48;
-@gutter: 24;
-
-@1col: (1 * (@column + @gutter) - @gutter) / @em;
-@1cols: @1col;
-@2cols: (2 * (@column + @gutter) - @gutter) / @em;
-@3cols: (3 * (@column + @gutter) - @gutter) / @em;
-@4cols: (4 * (@column + @gutter) - @gutter) / @em;
-@5cols: (5 * (@column + @gutter) - @gutter) / @em;
-@6cols: (6 * (@column + @gutter) - @gutter) / @em;
-@7cols: (7 * (@column + @gutter) - @gutter) / @em;
-@8cols: (8 * (@column + @gutter) - @gutter) / @em;
-@9cols: (9 * (@column + @gutter) - @gutter) / @em;
-@10cols: (10 * (@column + @gutter) - @gutter) / @em;
-@11cols: (11 * (@column + @gutter) - @gutter) / @em;
-@12cols: (12 * (@column + @gutter) - @gutter) / @em;
-@13cols: (13 * (@column + @gutter) - @gutter) / @em;
-@14cols: (14 * (@column + @gutter) - @gutter) / @em;
-@15cols: (15 * (@column + @gutter) - @gutter) / @em;
-@16cols: (16 * (@column + @gutter) - @gutter) / @em;
-
-.width (@cols:1) {
- width: (@cols * (@column + @gutter) - @gutter) / @em;
-}
-
-.small {font-size: 13/@em; line-height: @line/13*1em;}
-.normal {font-size: 1em;}
-.big {font-size: 23/@em; line-height: 24/23*1em;}
-.large {font-size: 27/@em; line-height: 36/27*1em;}
-.huge {font-size: 44/@em; line-height: 48/44*1em;}
-.enormous {font-size: 72/@em; line-height: 72/72*1em;}
-.gigantic {font-size: 116/@em; line-height: 120/116*1em;}
+@import "_boilerplate";
+@import "_frame";
ul {list-style-type: none; padding: 0;}
@@ -54,14 +18,14 @@ ul {list-style-type: none; padding: 0;}
header,aside,section,footer {width: @4cols; margin: 0 auto; text-align: center;}
header {margin-bottom: @1col;}
footer {margin-top: @1col;}
- .imaged {width: @4cols - @border*2; height: @4cols - @border*2; background-image: url(../assets/eric.20060929015500.png);}
+ .imaged {width: @4cols - @border*2; height: @4cols - @border*2;}
}
// Mobile wide layout 480px
@media screen and (min-width: 30em) {
header,aside,section,footer {width: @6cols; margin: 0 auto; text-align: center;}
header {margin-bottom: @1col;}
footer {margin-top: @1col;}
- .imaged {width: @6cols - @border*2; height: @6cols - @border*2; background-image: url(../assets/eric.20060929015500.png);}
+ .imaged {width: @6cols - @border*2; height: @6cols - @border*2;}
}
// Tablet layout 600px
@media screen and (min-width: 37.5em) {
View
0 cv.slim → assets/templates/cv.slim
File renamed without changes.
View
3 index.slim → assets/templates/index.slim
@@ -4,7 +4,8 @@ article
address eric.thul@cs.mcgill.ca
div.clearfix.outer
aside
- figure: div.bordered.rounded.imaged
+ figure
+ == "<div class=\"bordered rounded imaged\" style=\"background-image: url(images/#{File.basename(Dir["public/images/eric-*.png"].sort_by{|a|File.ctime a}.last)});\" />"
div.inner
section
h1 the latest
View
2 layout.slim → assets/templates/layout.slim
@@ -10,7 +10,7 @@ html lang="en"
meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"
meta name="viewport" content="width=device-width,initial-scale=1"
title eric thul - #{page}
- link rel="stylesheet" href="assets/#{page}.#{revision}.css"
+ == "<link rel=\"stylesheet\" href=\"stylesheets/#{File.basename(Dir["public/stylesheets/#{page}-*.css"].sort_by{|a|File.ctime a}.last)}\" />"
|<!--[if lt IE 9]>
script src="//html5shim.googlecode.com/svn/trunk/html5.js"
|<![endif]-->
View
47 lib/makers/css_maker.rb
@@ -1,47 +0,0 @@
-require "less"
-
-class CssMaker
- def initialize path, revision, files
- @path = "#{path}/assets"
- @revision = revision
- @files = files
- @parser = Less::Parser.new :paths => [@path]
- end
-
- def make
- @files.each do |file|
- result = @parser.parse(read_less_file @path, file).to_css(:compress => true)
- File.open(css_file_name(@path,file,@revision),"w") do |output|
- output.puts result
- end
- end
- end
-
- def clean
- @files.each do |file|
- File.delete *find_old_revisions(@path, file, @revision)
- end
- end
-
- private
- def read_less_file path, file
- IO.read("#{path}/#{file}.less")
- end
-
- def css_file_name path, file, revision
- "#{@path}/#{file}.#{@revision}.css"
- end
-
- def find_old_revisions path, file, revision
- Dir.glob("#{path}/#{file}.*.css").
- select {|a| older_revision? a, revision}
- end
-
- def older_revision? file, revision
- extract_timestamp(file).to_i < revision.to_i
- end
-
- def extract_timestamp file
- file.split(".")[-2].to_i
- end
-end
View
41 lib/makers/html_maker.rb
@@ -1,41 +0,0 @@
-require "slim"
-
-class HtmlMaker
- def initialize path, revision, files
- @path = path
- @layout = "#{path}/layout.slim"
- @revision = revision
- @files = files
- end
-
- def make
- @files.each do |file|
- result = render_layout @layout, layout_scope(file,@revision), render_page(@path,file)
- File.open("#{@path}/#{file}.html","w") do |output|
- output.puts result
- end
- end
- end
-
- def clean
- File.delete *existing_html_files(@files)
- end
-
- private
- def render_page path, file
- Slim::Template.new("#{path}/#{file}.slim").render
- end
-
- def render_layout layout, scope, page
- Slim::Template.new(layout).render(*scope) {page}
- end
-
- def layout_scope file, revision
- [Object.new, :page => file, :revision => revision]
- end
-
- def existing_html_files files
- files.map {|a| "#{@path}/#{a}.html"}.
- select {|a| File.exist? a}
- end
-end
View
0 script/.gitkeep
No changes.
View
19 script/make.rb
@@ -1,19 +0,0 @@
-BASEPATH = File.absolute_path File.dirname(__FILE__) + "/.."
-REVISION = Time.now.utc.strftime "%Y%m%d%H%M%S"
-PAGES = %w(index cv)
-
-$:.unshift BASEPATH + "/lib"
-require "makers/css_maker"
-require "makers/html_maker"
-
-css_maker = CssMaker.new BASEPATH, REVISION, PAGES
-html_maker = HtmlMaker.new BASEPATH, REVISION, PAGES
-
-[css_maker, html_maker].each do |maker|
- puts "#{maker.class.name} running clean"
- maker.clean
- puts "#{maker.class.name} running make"
- maker.make
-end
-
-puts "Done."
View
52 spec/makers/css_maker_spec.rb
@@ -1,52 +0,0 @@
-require "spec_helper"
-require "makers/css_maker"
-
-describe CssMaker do
- before do
- @time_format = "%Y%m%d%H%M%S"
- @path = "."
- @time = Time.now.utc
- @revision = @time.strftime @time_format
- @files = %w(file1)
- @maker = CssMaker.new @path, @revision, @files
- end
- describe "when the css files are cleaned" do
- before do
- @past_revision1 = Time.at(@time.to_i - 1000).utc.strftime @time_format
- @past_revision2 = Time.at(@time.to_i - 2000).utc.strftime @time_format
- @future_revision1 = Time.at(@time.to_i + 4000).utc.strftime @time_format
- @future_revision2 = Time.at(@time.to_i + 5000).utc.strftime @time_format
- end
- it "should remove all css files older than the current revision" do
- glob = ["./#{@files.first}.#{@past_revision1}.css","./#{@files.first}.#{@past_revision2}.css"]
- Dir.should_receive(:glob).with("./assets/#{@files.first}.*.css").and_return glob
- File.should_receive(:delete).with *glob
- @maker.clean
- end
- it "should not remove css files at a newer revision than the current" do
- glob = ["./#{@files.first}.#{@future_revision1}.css","./#{@files.first}.#{@future_revision2}.css"]
- Dir.should_receive(:glob).with("./assets/#{@files.first}.*.css").and_return glob
- File.should_receive(:delete).with()
- @maker.clean
- end
- it "should only remove css files at a past revision than the current" do
- glob = ["./#{@files.first}.#{@future_revision1}.css","./#{@files.first}.#{@past_revision1}.css"]
- Dir.should_receive(:glob).with("./assets/#{@files.first}.*.css").and_return glob
- File.should_receive(:delete).with(glob.last)
- @maker.clean
- end
- end
- describe "when the css files are made" do
- before do
- @css1 = <<CSS
-body {font-size: 1em;}
-h1 {font-weight: bold;}
-CSS
- end
- it "should make the css files named to the current revision" do
- IO.should_receive(:read).with("./assets/#{@files.first}.less").and_return @css1
- File.should_receive(:open).with("./assets/#{@files.first}.#{@revision}.css","w")
- @maker.make
- end
- end
-end
View
37 spec/makers/html_maker_spec.rb
@@ -1,37 +0,0 @@
-require "spec_helper"
-require "slim"
-require "makers/html_maker"
-
-describe HtmlMaker do
- before do
- @time_format = "%Y%m%d%H%M%S"
- @path = "."
- @time = Time.now.utc
- @revision = @time.strftime @time_format
- @files = %w(file1)
- @maker = HtmlMaker.new @path, @revision, @files
- end
- describe "when the html files are cleaned" do
- it "should remove the html files at previous revision" do
- File.should_receive(:exist?).with("#{@path}/#{@files.first}.html").and_return true
- File.should_receive(:delete).with *@files.map{|a| "#{@path}/#{a}.html"}
- @maker.clean
- end
- it "should only remove existing html files" do
- File.should_receive(:exist?).with("#{@path}/#{@files.first}.html").and_return false
- File.should_receive(:delete).with *[]
- @maker.clean
- end
- end
- describe "when the html files are made" do
- it "should make the html files to the current revision" do
- @mock_slim = mock "Slim"
- @mock_slim.should_receive(:render).with()
- @mock_slim.should_receive(:render).with(anything,{:page => @files.first, :revision => @revision})
- Slim::Template.should_receive(:new).with(/layout/).and_return @mock_slim
- Slim::Template.should_receive(:new).with("#{@path}/#{@files.first}.slim").and_return @mock_slim
- File.should_receive(:open).with("#{@path}/#{@files.first}.html","w")
- @maker.make
- end
- end
-end
View
11 spec/spec_helper.rb
@@ -1,11 +0,0 @@
-# This file was generated by the `rspec --init` command. Conventionally, all
-# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
-# Require this file using `require "spec_helper.rb"` to ensure that it is only
-# loaded once.
-#
-# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
-RSpec.configure do |config|
- config.treat_symbols_as_metadata_keys_with_true_values = true
- config.run_all_when_everything_filtered = true
- config.filter_run :focus
-end

0 comments on commit 2e920a7

Please sign in to comment.
Something went wrong with that request. Please try again.