Skip to content

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
hgoebl committed May 26, 2012
1 parent 2798332 commit 3c6268e
Show file tree
Hide file tree
Showing 15 changed files with 607 additions and 630 deletions.
3 changes: 3 additions & 0 deletions bin/nerdshow-generate 100644 → 100755
@@ -0,0 +1,3 @@
#!/usr/bin/env node

require('../lib/generator/cli.js');
3 changes: 3 additions & 0 deletions bin/nerdshow-run 100644 → 100755
@@ -0,0 +1,3 @@
#!/usr/bin/env node

require('../lib/server/server.js');
43 changes: 6 additions & 37 deletions examples/about/00-about-nerdshow.md
@@ -1,56 +1,25 @@

.<div class="slide">

# JavaScript
# Nerdshow

## Not only for Java Programmers
## HTML-based presentation for Nerds

### Heinrich Göbl

#### www.goebl.com
#### <https://github.com/hgoebl/nerdshow>

.</div><div class="slide" style="">

# About me

* Heinrich Göbl
* Day job as JEE programmer at AGENDA Software GmbH
* Day job as JEE programmer at [AGENDA Software GmbH](http://www.agenda-software.de/)
* Focus on Java EE
* I like JavaScript ;-)
* I like to play with JavaScript ;-)

<br/>
<br/>

* **www.goebl.com**

.</div><div class="slide" style="">

# JUGM Survey (1)

<div style="background: url('media/weight-javascript.png') no-repeat; background-position: center center; height: 100%"></div>

.</div><div class="slide" style="">

# JUGM Survey (2)

<div style="background: url('media/weight-nodejs.png') no-repeat; background-position: center center; height: 100%"></div>

.</div><div class="slide" style="">

# JUGM Survey (3)

<div style="background: url('media/weight-mongodb.png') no-repeat; background-position: center center; height: 100%"></div>

.</div><div class="slide" style="">

# JUGM Survey (4)

<div style="background: url('media/javascript-items.png') no-repeat; background-position: center center; height: 100%"></div>

.</div><div class="slide" style="">

# JUGM Survey (5)

<div style="background: url('media/javascript-expert-level.png') no-repeat; background-position: center center; height: 100%"></div>
* **<https://www.goebl.com>**

.</div>
28 changes: 8 additions & 20 deletions examples/about/presentation.json
@@ -1,29 +1,17 @@
{
"title": "JavaScript - not only for Java Developers",
"title": "About Nerdshow",
"author": "Heinrich Göbl",
"company": "www.goebl.com",
"footer_left": "pro-js.com",
"footer_right": "hgoebl &#8226; 16.01.2012",
"footer_left": "--no footer--",
"footer_right": "hgoebl &#8226; 26.05.2012",
"theme": "advanced",
"transitions": "no",
"transitions": "yes",
"source": [
"00-javascript-for-javadev.md",
"05-intro.md",
"10-basics.md",
"20-functions.md",
"30-advanced.md",
"40-prototypal-inheritance.md",
"41-prototypal-1.html",
"60-pitfalls.md",
"65-tools.md",
"70-for-java-developers.md",
"80-weird.md",
"90-conclusions.md",
"95-reading.md",
"00-about-nerdshow.md",
"99-end.md"
],
"sourceEncoding": "utf8",
"template": "../../s5/s5-template.html",
"s5-res-folder": "/nerdshow/s5",
"destination": "presentation.html"
"template": "s5",
"nerdshow-folder": "/nerdshow",
"destination": "index.html"
}
25 changes: 1 addition & 24 deletions generate.js
@@ -1,27 +1,4 @@
/*jshint node:true, nomen:false, globalstrict:true*/
'use strict';

var fs = require('fs'),
path = require('path'),
argv = require('optimist')
.usage('Usage: $0 <path/config.json>')
.demand(1)
.argv,
generate = require('./generate-slideshow.js').generateSlideshow,
extractSlides = require('./extract-slides.js').extractSlides;

function main(configFileName) {
var directory = path.dirname(configFileName),
config;

config = JSON.parse(fs.readFileSync(configFileName, 'utf8'));

generate(directory, config);

extractSlides(directory, config, function (error, slides) {
if (error) throw error;
fs.writeFileSync(directory + '/' + 'slides.json', JSON.stringify(slides));
});
}

main(argv._[0]);
require('./lib/generator/cli.js');
30 changes: 15 additions & 15 deletions lib/generator/cli.js
Expand Up @@ -2,26 +2,26 @@
'use strict';

var fs = require('fs'),
path = require('path'),
argv = require('optimist')
.usage('Usage: $0 <path/config.json>')
.demand(1)
.argv,
generate = require('./lib/generate-slideshow.js').generateSlideshow,
extractSlides = require('./lib/extract-slides.js').extractSlides;
path = require('path'),
argv = require('optimist')
.usage('Usage: $0 <path/config.json>')
.demand(1)
.argv,
generate = require('./generate-slideshow.js').generateSlideshow,
extractSlides = require('./extract-slides.js').extractSlides;

function main(configFileName) {
var directory = path.dirname(configFileName),
config;
var directory = path.dirname(configFileName),
config;

config = JSON.parse(fs.readFileSync(configFileName, 'utf8'));
config = JSON.parse(fs.readFileSync(configFileName, 'utf8'));

generate(directory, config);
generate(directory, config);

extractSlides(directory, config, function (error, slides) {
if (error) throw error;
fs.writeFileSync(directory + '/' + 'slides.json', JSON.stringify(slides));
});
extractSlides(directory, config, function (error, slides) {
if (error) throw error;
fs.writeFileSync(directory + '/' + 'slides.json', JSON.stringify(slides));
});
}

main(argv._[0]);
28 changes: 14 additions & 14 deletions lib/generator/extract-slides.js
Expand Up @@ -4,23 +4,23 @@
var jsdom = require("jsdom");

function extractSlides(directory, config, callback) {
var slides = [];
var slides = [];

jsdom.env(directory + '/' + config.destination,
[ 'http://code.jquery.com/jquery-1.7.1.min.js' ],
function (error, window) {
var $ = window.$;
if (error) {
callback(error);
return;
}
jsdom.env(directory + '/' + config.destination,
[ 'http://code.jquery.com/jquery-1.7.1.min.js' ],
function (error, window) {
var $ = window.$;
if (error) {
callback(error);
return;
}

$('div.slide').find('h1:first').each(function (index) {
slides.push($(this).text());
});
$('div.slide').find('h1:first').each(function (index) {
slides.push($(this).text());
});

callback(null, slides);
});
callback(null, slides);
});
}

exports.extractSlides = extractSlides;
57 changes: 32 additions & 25 deletions lib/generator/generate-slideshow.js
Expand Up @@ -2,45 +2,52 @@
'use strict';

var fs = require('fs'),
path = require('path'),
marked = require('marked'),
Mustache = require('mustache');
path = require('path'),
marked = require('marked'),
Mustache = require('mustache');


function md2html(md) {
var html = marked.lexer(md);
var html = marked.lexer(md);

html.forEach(function (item) {
if (item.type === 'paragraph' && item.text.match(/^\./)) {
item.type = 'html';
item.text = item.text.slice(1);
}
});
html.forEach(function (item) {
if (item.type === 'paragraph' && item.text.match(/^\./)) {
item.type = 'html';
item.text = item.text.slice(1);
}
});

html = marked.parser(html);
html = marked.parser(html);

return html;
return html;
}

function generateSlideshow(directory, config) {
var template, html, slides;
var template, html, slides, templatePath;

template = fs.readFileSync(path.join(directory, config.template), 'utf8');
if (config.template.match(/^\w+$/)) {
templatePath = path.join(__dirname, 'templates', config.template + '-template.html');
}
else {
templatePath = config.template; // TODO distinguish between relative (directory+) and absolute paths
}

slides = config.source.map(function (fileName) {
var file = path.join(directory, fileName),
content = fs.readFileSync(file, 'utf8');
template = fs.readFileSync(templatePath, 'utf8');

if (path.extname(file) === '.md') {
return md2html(content);
}
return content; // probably a html file
});
slides = config.source.map(function (fileName) {
var file = path.join(directory, fileName),
content = fs.readFileSync(file, 'utf8');

if (path.extname(file) === '.md') {
return md2html(content);
}
return content; // probably a html file
});

config.slides = slides.join('\n');
config.slides = slides.join('\n');

html = Mustache.to_html(template, config);
fs.writeFileSync(path.join(directory, config.destination), html, 'utf8');
html = Mustache.to_html(template, config);
fs.writeFileSync(path.join(directory, config.destination), html, 'utf8');
}

exports.generateSlideshow = generateSlideshow;
14 changes: 7 additions & 7 deletions lib/generator/templates/s5-template.html
Expand Up @@ -9,9 +9,9 @@
<meta name="company" content="{{company}}"/>
<!-- extensions -->
<meta name="transitions" content="{{transitions}}"/>
<script src="{{s5-res-folder}}/../jquery/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="{{s5-res-folder}}/ui/common/s5.js" type="text/javascript"></script>
<link rel="stylesheet" href="{{s5-res-folder}}/ui/{{theme}}/theme.css" type="text/css" title="{{theme}}" media="screen"/>
<script src="{{nerdshow-folder}}/jquery/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="{{nerdshow-folder}}/s5/ui/common/s5.js" type="text/javascript"></script>
<link rel="stylesheet" href="{{nerdshow-folder}}/s5/ui/{{theme}}/theme.css" type="text/css" title="{{theme}}" media="screen"/>
<style>
img.scaled-centered {
max-width:100%;
Expand All @@ -20,7 +20,7 @@
margin:auto;
}
table.info {
font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
margin:auto;
width: 80%;
text-align: left;
Expand Down Expand Up @@ -61,15 +61,15 @@ <h2>{{{footer_right}}}</h2>
{{{slides}}}

</div>
<script src="{{s5-res-folder}}/../hijs/hijs.js"></script>
<script src="{{nerdshow-folder}}/hijs/hijs.js"></script>
<script>

$(function () {
$('<link rel="stylesheet" type="text/css" href="{{s5-res-folder}}/../hijs/my-hijs.css"/>').appendTo('head');
$('<link rel="stylesheet" type="text/css" href="{{nerdshow-folder}}/hijs/my-hijs.css"/>').appendTo('head');
});

</script>
<script src="{{s5-res-folder}}/../zoom/zoom.js"></script>
<script src="{{nerdshow-folder}}/zoom/zoom.js"></script>
<script>

$(function () {
Expand Down
4 changes: 2 additions & 2 deletions lib/server/htdocs/rc/remote.html
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>s5 remote control</title>
<title>nerdshow remote control</title>
<link rel="stylesheet" href="../jquery/jquery.mobile-1.1.0.min.css"/>
<script src="../jquery/jquery-1.7.1.min.js"></script>
<script src="../jquery/jquery.mobile-1.1.0.min.js"></script>
Expand All @@ -14,7 +14,7 @@

<section id="home" data-role="page">
<header data-role="header" data-position="fixed">
<h1>s5 remote control</h1>
<h1>nerdshow rc</h1>
</header>
<div data-role="content">
<select id="slides">
Expand Down

0 comments on commit 3c6268e

Please sign in to comment.