1
0
Fork 0

Initial commit

This commit is contained in:
Andrew Tomaka 2015-05-12 14:42:45 -04:00
commit 740ca06669
16 changed files with 605 additions and 0 deletions

3
.bowerrc Normal file
View file

@ -0,0 +1,3 @@
{
"directory": "bower_components"
}

10
.editorconfig Normal file
View file

@ -0,0 +1,10 @@
# http://editorconfig.org
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

6
.gitignore vendored Normal file
View file

@ -0,0 +1,6 @@
node_modules
bower_components
dist
*.log
.sass-cache
index.html

19
.jshintrc Normal file
View file

@ -0,0 +1,19 @@
{
"esnext": true,
"bitwise": true,
"camelcase": true,
"curly": true,
"eqeqeq": true,
"immed": true,
"indent": 4,
"latedef": true,
"newcap": true,
"noarg": true,
"quotmark": "single",
"undef": true,
"unused": true,
"strict": true,
"trailing": true,
"smarttabs": true,
"white": true
}

10
.yo-rc.json Normal file
View file

@ -0,0 +1,10 @@
{
"generator-reveal": {
"presentationTitle": "Ruby Can Do Computer Sciency THings",
"packageVersion": "0.0.0",
"useSass": true,
"deployToGithubPages": true,
"githubUsername": "atomaka",
"githubRepository": "ruby-project-euler-talk"
}
}

160
Gruntfile.coffee Normal file
View file

@ -0,0 +1,160 @@
# Generated on 2015-05-12 using generator-reveal 0.4.0
module.exports = (grunt) ->
grunt.initConfig
watch:
livereload:
options:
livereload: true
files: [
'index.html'
'slides/{,*/}*.{md,html}'
'js/*.js'
'css/*.css'
]
index:
files: [
'templates/_index.html'
'templates/_section.html'
'slides/list.json'
]
tasks: ['buildIndex']
coffeelint:
files: ['Gruntfile.coffee']
tasks: ['coffeelint']
jshint:
files: ['js/*.js']
tasks: ['jshint']
sass:
files: ['css/source/theme.scss']
tasks: ['sass']
sass:
theme:
files:
'css/theme.css': 'css/source/theme.scss'
connect:
livereload:
options:
port: 9000
# Change hostname to '0.0.0.0' to access
# the server from outside.
hostname: 'localhost'
base: '.'
open: true
livereload: true
coffeelint:
options:
indentation:
value: 4
max_line_length:
level: 'ignore'
all: ['Gruntfile.coffee']
jshint:
options:
jshintrc: '.jshintrc'
all: ['js/*.js']
copy:
dist:
files: [{
expand: true
src: [
'slides/**'
'bower_components/**'
'js/**'
'css/*.css'
]
dest: 'dist/'
},{
expand: true
src: ['index.html']
dest: 'dist/'
filter: 'isFile'
}]
buildcontrol:
options:
dir: 'dist'
commit: true
push: true
message: 'Built from %sourceCommit% on branch %sourceBranch%'
pages:
options:
remote: 'git@github.com:atomaka/ruby-project-euler-talk.git'
branch: 'gh-pages'
# Load all grunt tasks.
require('load-grunt-tasks')(grunt)
grunt.registerTask 'buildIndex',
'Build index.html from templates/_index.html and slides/list.json.',
->
indexTemplate = grunt.file.read 'templates/_index.html'
sectionTemplate = grunt.file.read 'templates/_section.html'
slides = grunt.file.readJSON 'slides/list.json'
html = grunt.template.process indexTemplate, data:
slides:
slides
section: (slide) ->
grunt.template.process sectionTemplate, data:
slide:
slide
grunt.file.write 'index.html', html
grunt.registerTask 'test',
'*Lint* javascript and coffee files.', [
'coffeelint'
'jshint'
]
grunt.registerTask 'serve',
'Run presentation locally and start watch process (living document).', [
'buildIndex'
'sass'
'connect:livereload'
'watch'
]
grunt.registerTask 'dist',
'Save presentation files to *dist* directory.', [
'test'
'sass'
'buildIndex'
'copy'
]
grunt.registerTask 'deploy',
'Deploy to Github Pages', [
'dist'
'buildcontrol'
]
# Define default task.
grunt.registerTask 'default', [
'test'
'serve'
]

8
bower.json Normal file
View file

@ -0,0 +1,8 @@
{
"name": "ruby-can-do-computer-sciency-things",
"version": "0.0.0",
"dependencies": {
"reveal.js": "~2.6.1",
"reveal-highlight-themes": "~8.3.0"
}
}

57
css/source/theme.scss Normal file
View file

@ -0,0 +1,57 @@
/**
* Default theme for reveal.js.
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
// This file has been copied over from
// ../../bower_components/reveal.js/css/theme/source/default.scss
// Default mixins and settings -----------------
@import "../../bower_components/reveal.js/css/theme/template/mixins";
@import "../../bower_components/reveal.js/css/theme/template/settings";
// ---------------------------------------------
// Include theme-specific fonts ----------------
@font-face {
font-family: 'League Gothic';
src: url('../bower_components/reveal.js/lib/font/league_gothic-webfont.eot');
src: url('../bower_components/reveal.js/lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'),
url('../bower_components/reveal.js/lib/font/league_gothic-webfont.woff') format('woff'),
url('../bower_components/reveal.js/lib/font/league_gothic-webfont.ttf') format('truetype'),
url('../bower_components/reveal.js/lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg');
font-weight: normal;
font-style: normal;
}
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
// ---------------------------------------------
// Override theme settings ---------------------
$heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15);
// Other options include e.g.
// $mainFont: 'Open Sans', sans-serif;
// $linkColor: #ed1dff;
// $linkColorHover: $linkColor;
// $headingFont: 'Montserrat', Impact, sans-serif;
// $headingTextShadow: none;
// $headingLetterSpacing: -0.03em;
// $headingTextTransform: none;
// $selectionBackgroundColor: #e0ad52;
// $mainFontSize: 30px;
// See ../../bower_components/reveal.js/css/theme/template/settings.scss for the full list.
// ---------------------------------------------
// Background generator ------------------------
@mixin bodyBackground() {
@include radial-gradient( rgba(28,30,32,1), rgba(85,90,95,1) );
}
// ---------------------------------------------
// Theme template ------------------------------
@import "../../bower_components/reveal.js/css/theme/template/theme";
// ---------------------------------------------
// See ../../bower_components/reveal.js/css/theme/README.md
// for further explanations on how reveal.js themes work.

149
css/theme.css Normal file
View file

@ -0,0 +1,149 @@
/**
* Default theme for reveal.js.
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
@font-face {
font-family: 'League Gothic';
src: url("../bower_components/reveal.js/lib/font/league_gothic-webfont.eot");
src: url("../bower_components/reveal.js/lib/font/league_gothic-webfont.eot?#iefix") format("embedded-opentype"), url("../bower_components/reveal.js/lib/font/league_gothic-webfont.woff") format("woff"), url("../bower_components/reveal.js/lib/font/league_gothic-webfont.ttf") format("truetype"), url("../bower_components/reveal.js/lib/font/league_gothic-webfont.svg#LeagueGothicRegular") format("svg");
font-weight: normal;
font-style: normal; }
/*********************************************
* GLOBAL STYLES
*********************************************/
body {
background: #1c1e20;
background: -moz-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #555a5f), color-stop(100%, #1c1e20));
background: -webkit-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
background: -o-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
background: -ms-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
background: radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
background-color: #2b2b2b; }
.reveal {
font-family: "Lato", sans-serif;
font-size: 36px;
font-weight: normal;
letter-spacing: -0.02em;
color: #eee; }
::selection {
color: #fff;
background: #FF5E99;
text-shadow: none; }
/*********************************************
* HEADERS
*********************************************/
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
margin: 0 0 20px 0;
color: #eee;
font-family: "League Gothic", Impact, sans-serif;
line-height: 0.9em;
letter-spacing: 0.02em;
text-transform: uppercase;
text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
.reveal h1 {
text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); }
/*********************************************
* LINKS
*********************************************/
.reveal a:not(.image) {
color: #13DAEC;
text-decoration: none;
-webkit-transition: color .15s ease;
-moz-transition: color .15s ease;
-ms-transition: color .15s ease;
-o-transition: color .15s ease;
transition: color .15s ease; }
.reveal a:not(.image):hover {
color: #71e9f4;
text-shadow: none;
border: none; }
.reveal .roll span:after {
color: #fff;
background: #0d99a5; }
/*********************************************
* IMAGES
*********************************************/
.reveal section img {
margin: 15px 0px;
background: rgba(255, 255, 255, 0.12);
border: 4px solid #eee;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
-webkit-transition: all .2s linear;
-moz-transition: all .2s linear;
-ms-transition: all .2s linear;
-o-transition: all .2s linear;
transition: all .2s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
border-color: #13DAEC;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
border-right-color: #13DAEC; }
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
border-left-color: #13DAEC; }
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
border-bottom-color: #13DAEC; }
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
border-top-color: #13DAEC; }
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #71e9f4; }
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #71e9f4; }
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #71e9f4; }
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #71e9f4; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
background: rgba(0, 0, 0, 0.2); }
.reveal .progress span {
background: #13DAEC;
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
/*********************************************
* SLIDE NUMBER
*********************************************/
.reveal .slide-number {
color: #13DAEC; }
/*# sourceMappingURL=theme.css.map */

7
css/theme.css.map Normal file
View file

@ -0,0 +1,7 @@
{
"version": 3,
"mappings": ";;;;;AA2BQ,qFAA6E;AAZrF,UAUC;EATO,WAAW,EAAE,eAAe;EAC5B,GAAG,EAAE,uEAAuE;EAC5E,GAAG,EAAE,0YAA0G;EAK/G,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;;;;AClB1B,IAAK;ECeJ,UAAU,EAAE,OAAM;EAClB,UAAU,EAAE,oEAAoE;EAChF,UAAU,EAAE,qHAAmH;EAC/H,UAAU,EAAE,uEAAuE;EACnF,UAAU,EAAE,kEAAkE;EAC9E,UAAU,EAAE,mEAAmE;EAC/E,UAAU,EAAE,+DAA+D;EDnB3E,gBAAgB,EEJC,OAAO;;AFOzB,OAAQ;EACP,WAAW,EELD,kBAAM;EFMhB,SAAS,EELK,IAAI;EFMlB,WAAW,EAAE,MAAM;EACnB,cAAc,EAAE,OAAO;EACvB,KAAK,EEPM,IAAI;;AFUhB,WAAY;EACX,KAAK,EEOW,IAAI;EFNpB,UAAU,EEKgB,OAAO;EFJjC,WAAW,EAAE,IAAI;;;;;AAOlB;;;;;UAKW;EACV,MAAM,EEvBS,UAAU;EFwBzB,KAAK,EEtBS,IAAI;EFwBlB,WAAW,EEzBE,mCAAe;EF0B5B,WAAW,EExBQ,KAAK;EFyBxB,cAAc,EExBQ,MAAM;EF0B5B,cAAc,EEzBQ,SAAS;EF0B/B,WAAW,EExBS,8BAAkB;;AF2BvC,UAAW;EACV,WAAW,EDhBS,iQAAY;;;;;ACwBjC,qBAAsB;EACrB,KAAK,EElCM,OAAO;EFmClB,eAAe,EAAE,IAAI;EAErB,kBAAkB,EAAE,eAAe;EAChC,eAAe,EAAE,eAAe;EAC/B,cAAc,EAAE,eAAe;EAC9B,aAAa,EAAE,eAAe;EAC3B,UAAU,EAAE,eAAe;;AAEnC,2BAA4B;EAC3B,KAAK,EE3CU,OAA0B;EF6CzC,WAAW,EAAE,IAAI;EACjB,MAAM,EAAE,IAAI;;AAGd,wBAAyB;EACxB,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,OAAyB;;;;;AAQtC,mBAAoB;EACnB,MAAM,EAAE,QAAQ;EAChB,UAAU,EAAE,yBAAsB;EAClC,MAAM,EAAE,cAAoB;EAE5B,UAAU,EAAE,4BAA4B;EAExC,kBAAkB,EAAE,cAAc;EAC/B,eAAe,EAAE,cAAc;EAC9B,cAAc,EAAE,cAAc;EAC7B,aAAa,EAAE,cAAc;EAC1B,UAAU,EAAE,cAAc;;AAGlC,mBAAoB;EACnB,UAAU,EAAE,wBAAqB;EACjC,YAAY,EE5EF,OAAO;EF8EjB,UAAU,EAAE,4BAA4B;;;;;AAQ1C;2CAC4C;EAC3C,kBAAkB,EExFP,OAAO;;AF2FnB;4CAC6C;EAC5C,iBAAiB,EE7FN,OAAO;;AFgGnB;yCAC0C;EACzC,mBAAmB,EElGR,OAAO;;AFqGnB;2CAC4C;EAC3C,gBAAgB,EEvGL,OAAO;;AF0GnB,iDAAkD;EACjD,kBAAkB,EE1GF,OAA0B;;AF6G3C,kDAAmD;EAClD,iBAAiB,EE9GD,OAA0B;;AFiH3C,+CAAgD;EAC/C,mBAAmB,EElHH,OAA0B;;AFqH3C,iDAAkD;EACjD,gBAAgB,EEtHA,OAA0B;;;;;AF8H3C,iBAAkB;EACjB,UAAU,EAAE,kBAAe;;AAE3B,sBAAuB;EACtB,UAAU,EEnIA,OAAO;EFqIjB,kBAAkB,EAAE,iDAAoD;EACrE,eAAe,EAAE,iDAAoD;EACpE,cAAc,EAAE,iDAAoD;EACnE,aAAa,EAAE,iDAAoD;EAChE,UAAU,EAAE,iDAAoD;;;;;AAM1E,qBAAsB;EACpB,KAAK,EEhJK,OAAO",
"sources": ["source/theme.scss","../bower_components/reveal.js/css/theme/template/theme.scss","../bower_components/reveal.js/css/theme/template/mixins.scss","../bower_components/reveal.js/css/theme/template/settings.scss"],
"names": [],
"file": "theme.css"
}

44
js/loadhtmlslides.js Normal file
View file

@ -0,0 +1,44 @@
// Modified from markdown.js from Hakim to handle external html files
(function () {
/*jslint loopfunc: true, browser: true*/
/*globals alert*/
'use strict';
var querySlidingHtml = function () {
var sections = document.querySelectorAll('[data-html]'),
section, j, jlen;
for (j = 0, jlen = sections.length; j < jlen; j++) {
section = sections[j];
if (section.getAttribute('data-html').length) {
var xhr = new XMLHttpRequest(),
url = section.getAttribute('data-html'),
cb = function () {
if (xhr.readyState === 4) {
if (
(xhr.status >= 200 && xhr.status < 300) ||
xhr.status === 0 // file protocol yields status code 0 (useful for local debug, mobile applications etc.)
) {
section.innerHTML = xhr.responseText;
} else {
section.outerHTML = '<section data-state="alert">ERROR: The attempt to fetch ' + url + ' failed with the HTTP status ' + xhr.status + '. Check your browser\'s JavaScript console for more details.</p></section>';
}
}
};
xhr.onreadystatechange = cb;
xhr.open('GET', url, false);
try {
xhr.send();
} catch (e) {
alert('Failed to get file' + url + '.' + e);
}
}
}
};
querySlidingHtml();
})();

23
package.json Normal file
View file

@ -0,0 +1,23 @@
{
"name": "ruby-can-do-computer-sciency-things",
"version": "0.0.0",
"private": true,
"devDependencies": {
"grunt": "^0.4.5",
"grunt-contrib-sass": "^0.8.0",
"grunt-contrib-connect": "^0.9.0",
"grunt-contrib-watch": "^0.6.1",
"grunt-contrib-copy": "^0.7.0",
"grunt-contrib-jshint": "^0.10.0",
"load-grunt-tasks": "^1.0.0",
"grunt-build-control": "^0.2.2",
"grunt-coffeelint": "0.0.13"
},
"engines": {
"node": ">=0.10.0",
"npm": ">=1.3.7"
},
"scripts": {
"test": "grunt test"
}
}

10
slides/index.md Normal file
View file

@ -0,0 +1,10 @@
# Ruby Can Do Computer Sciency THings
From the terminal, pop in:
```yo reveal:slide "Slide Title"```
Available options:
```--markdown --attributes --notes```

1
slides/list.json Normal file
View file

@ -0,0 +1 @@
["index.md"]

93
templates/_index.html Normal file
View file

@ -0,0 +1,93 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Ruby Can Do Computer Sciency THings</title>
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="bower_components/reveal.js/css/reveal.min.css">
<link rel="stylesheet" href="css/theme.css" id="theme">
<!-- For syntax highlighting -->
<link rel="stylesheet" href="bower_components/reveal-highlight-themes/styles/zenburn.css" id="highlight-theme">
<!-- If the query includes 'print-pdf', use the PDF print sheet -->
<script>
if( window.location.search.match( /print-pdf/gi ) ) {
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = 'bower_components/reveal.js/css/print/pdf.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
}
</script>
<!--[if lt IE 9]>
<script src="lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div class="reveal">
<div class="slides">
<% _.forEach(slides, function(slide) { %>
<% if (!_.isArray(slide)) { %>
<%= section(slide) %>
<% } %>
<% if (_.isArray(slide)) { %>
<section>
<% _.forEach(slide, function(verticalslide) { %>
<%= section(verticalslide) %>
<% }); %>
</section>
<% } %>
<% }); %>
</div>
</div>
<script src="bower_components/reveal.js/lib/js/head.min.js"></script>
<script src="bower_components/reveal.js/js/reveal.min.js"></script>
<script>
// Configure Reveal
// Full list of configuration options available here:
// https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: true,
theme: Reveal.getQueryHash().theme, // available themes are in /css/theme
transition: Reveal.getQueryHash().transition || 'default', // default/cube/page/concave/zoom/linear/fade/none
// Optional libraries used to extend on reveal.js
dependencies: [
{ src: 'bower_components/reveal.js/lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: 'bower_components/reveal.js/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'bower_components/reveal.js/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'bower_components/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: 'bower_components/reveal.js/plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
{ src: 'bower_components/reveal.js/plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } },
// { src: 'bower_components/reveal.js/plugin/search/search.js', async: true, condition: function() { return !!document.body.classList; } }
//{ src: 'bower_components/reveal.js/plugin/remotes/remotes.js', async: true, condition: function() { return !!document.body.classList; } }
{ src: 'js/loadhtmlslides.js', condition: function() { return !!document.querySelector( '[data-html]' ); } }
]
});
</script>
</body>
</html>

5
templates/_section.html Normal file
View file

@ -0,0 +1,5 @@
<% if (!_.isString(slide) && !_.isArray(slide) && _.isObject(slide)) { %>
<section <%= _.map(slide.attr, function (val, attr) {return attr + '="' + val + '"'}).join(' ')%> <% if (_.isString(slide.filename)) { %>data-<% if (slide.filename.indexOf('.html') !== -1) { %>html<% } else { %>markdown<% }%>="slides/<%= slide.filename %>"<% } %>></section>
<% } %><% if (_.isString(slide)) { %>
<section data-<% if (slide.indexOf('.html') !== -1) { %>html<% } else { %>markdown<% }%>="slides/<%= slide %>"></section>
<% } %>