briefing 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. data/.gitignore +4 -0
  2. data/.gitmodules +3 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE +22 -0
  5. data/README.md +95 -0
  6. data/Rakefile +26 -0
  7. data/bin/briefing +28 -0
  8. data/briefing.gemspec +19 -0
  9. data/lib/briefing/app.rb +20 -0
  10. data/lib/briefing/public/css/print/paper.css +176 -0
  11. data/lib/briefing/public/css/print/pdf.css +160 -0
  12. data/lib/briefing/public/css/reveal.css +1281 -0
  13. data/lib/briefing/public/css/reveal.min.css +7 -0
  14. data/lib/briefing/public/css/shaders/tile-flip.fs +64 -0
  15. data/lib/briefing/public/css/shaders/tile-flip.vs +141 -0
  16. data/lib/briefing/public/css/theme/README.md +5 -0
  17. data/lib/briefing/public/css/theme/beige.css +163 -0
  18. data/lib/briefing/public/css/theme/default.css +163 -0
  19. data/lib/briefing/public/css/theme/night.css +150 -0
  20. data/lib/briefing/public/css/theme/serif.css +150 -0
  21. data/lib/briefing/public/css/theme/simple.css +152 -0
  22. data/lib/briefing/public/css/theme/sky.css +156 -0
  23. data/lib/briefing/public/css/theme/source/beige.scss +50 -0
  24. data/lib/briefing/public/css/theme/source/default.scss +42 -0
  25. data/lib/briefing/public/css/theme/source/night.scss +35 -0
  26. data/lib/briefing/public/css/theme/source/serif.scss +33 -0
  27. data/lib/briefing/public/css/theme/source/simple.scss +38 -0
  28. data/lib/briefing/public/css/theme/source/sky.scss +41 -0
  29. data/lib/briefing/public/css/theme/template/mixins.scss +29 -0
  30. data/lib/briefing/public/css/theme/template/settings.scss +33 -0
  31. data/lib/briefing/public/css/theme/template/theme.scss +163 -0
  32. data/lib/briefing/public/js/reveal.js +1634 -0
  33. data/lib/briefing/public/js/reveal.min.js +8 -0
  34. data/lib/briefing/public/lib/css/zenburn.css +115 -0
  35. data/lib/briefing/public/lib/font/league_gothic-webfont.eot +0 -0
  36. data/lib/briefing/public/lib/font/league_gothic-webfont.svg +230 -0
  37. data/lib/briefing/public/lib/font/league_gothic-webfont.ttf +0 -0
  38. data/lib/briefing/public/lib/font/league_gothic-webfont.woff +0 -0
  39. data/lib/briefing/public/lib/font/league_gothic_license +2 -0
  40. data/lib/briefing/public/lib/js/classList.js +2 -0
  41. data/lib/briefing/public/lib/js/head.min.js +8 -0
  42. data/lib/briefing/public/lib/js/html5shiv.js +7 -0
  43. data/lib/briefing/public/plugin/highlight/highlight.js +14 -0
  44. data/lib/briefing/public/plugin/markdown/markdown.js +37 -0
  45. data/lib/briefing/public/plugin/markdown/showdown.js +62 -0
  46. data/lib/briefing/public/plugin/notes/notes.html +143 -0
  47. data/lib/briefing/public/plugin/notes/notes.js +98 -0
  48. data/lib/briefing/public/plugin/notes-server/client.js +57 -0
  49. data/lib/briefing/public/plugin/notes-server/index.js +58 -0
  50. data/lib/briefing/public/plugin/notes-server/notes.html +139 -0
  51. data/lib/briefing/public/plugin/postmessage/example.html +39 -0
  52. data/lib/briefing/public/plugin/postmessage/postmessage.js +42 -0
  53. data/lib/briefing/public/plugin/remotes/remotes.js +19 -0
  54. data/lib/briefing/public/plugin/zoom-js/zoom.js +251 -0
  55. data/lib/briefing/slides.rb +37 -0
  56. data/lib/briefing/version.rb +3 -0
  57. data/lib/briefing/views/index.erb +79 -0
  58. data/lib/briefing.rb +5 -0
  59. data/vendor/.gitkeep +0 -0
  60. metadata +140 -0
@@ -0,0 +1,42 @@
1
+ /*
2
+
3
+ simple postmessage plugin
4
+
5
+ Useful when a reveal slideshow is inside an iframe.
6
+ It allows to call reveal methods from outside.
7
+
8
+ Example:
9
+ var reveal = window.frames[0];
10
+
11
+ // Reveal.prev();
12
+ reveal.postMessage(JSON.stringify({method: 'prev', args: []}), '*');
13
+ // Reveal.next();
14
+ reveal.postMessage(JSON.stringify({method: 'next', args: []}), '*');
15
+ // Reveal.slide(2, 2);
16
+ reveal.postMessage(JSON.stringify({method: 'slide', args: [2,2]}), '*');
17
+
18
+ Add to the slideshow:
19
+
20
+ dependencies: [
21
+ ...
22
+ { src: 'plugin/postmessage/postmessage.js', async: true, condition: function() { return !!document.body.classList; } }
23
+ ]
24
+
25
+ */
26
+
27
+ (function (){
28
+
29
+ window.addEventListener( "message", function ( event ) {
30
+ var data = JSON.parse( event.data ),
31
+ method = data.method,
32
+ args = data.args;
33
+
34
+ if( typeof Reveal[method] === 'function' ) {
35
+ Reveal[method].apply( Reveal, data.args );
36
+ }
37
+ }, false);
38
+
39
+ }());
40
+
41
+
42
+
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Touch-based remote controller for your presentation courtesy
3
+ * of the folks at http://remotes.io
4
+ */
5
+
6
+ head.ready( 'remotes.ne.min.js', function() {
7
+
8
+ new Remotes("preview")
9
+ .on("swipe-left", function(e){ Reveal.right(); })
10
+ .on("swipe-right", function(e){ Reveal.left(); })
11
+ .on("swipe-up", function(e){ Reveal.down(); })
12
+ .on("swipe-down", function(e){ Reveal.up(); })
13
+ .on("tap", function(e){
14
+ Reveal.toggleOverview();
15
+ });
16
+
17
+ } );
18
+
19
+ head.js( 'https://raw.github.com/Remotes/Remotes/master/dist/remotes.ne.min.js' );
@@ -0,0 +1,251 @@
1
+ // Custom reveal.js integration
2
+ (function(){
3
+ document.querySelector( '.reveal' ).addEventListener( 'click', function( event ) {
4
+ if( event.altKey ) {
5
+ event.preventDefault();
6
+ zoom.to({ element: event.target, pan: false });
7
+ }
8
+ } );
9
+ })();
10
+
11
+ /*!
12
+ * zoom.js 0.2 (modified version for use with reveal.js)
13
+ * http://lab.hakim.se/zoom-js
14
+ * MIT licensed
15
+ *
16
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
17
+ */
18
+ var zoom = (function(){
19
+
20
+ // The current zoom level (scale)
21
+ var level = 1;
22
+
23
+ // The current mouse position, used for panning
24
+ var mouseX = 0,
25
+ mouseY = 0;
26
+
27
+ // Timeout before pan is activated
28
+ var panEngageTimeout = -1,
29
+ panUpdateInterval = -1;
30
+
31
+ var currentOptions = null;
32
+
33
+ // Check for transform support so that we can fallback otherwise
34
+ var supportsTransforms = 'WebkitTransform' in document.body.style ||
35
+ 'MozTransform' in document.body.style ||
36
+ 'msTransform' in document.body.style ||
37
+ 'OTransform' in document.body.style ||
38
+ 'transform' in document.body.style;
39
+
40
+ if( supportsTransforms ) {
41
+ // The easing that will be applied when we zoom in/out
42
+ document.body.style.transition = 'transform 0.8s ease';
43
+ document.body.style.OTransition = '-o-transform 0.8s ease';
44
+ document.body.style.msTransition = '-ms-transform 0.8s ease';
45
+ document.body.style.MozTransition = '-moz-transform 0.8s ease';
46
+ document.body.style.WebkitTransition = '-webkit-transform 0.8s ease';
47
+ }
48
+
49
+ // Zoom out if the user hits escape
50
+ document.addEventListener( 'keyup', function( event ) {
51
+ if( level !== 1 && event.keyCode === 27 ) {
52
+ zoom.out();
53
+ }
54
+ }, false );
55
+
56
+ // Monitor mouse movement for panning
57
+ document.addEventListener( 'mousemove', function( event ) {
58
+ if( level !== 1 ) {
59
+ mouseX = event.clientX;
60
+ mouseY = event.clientY;
61
+ }
62
+ }, false );
63
+
64
+ /**
65
+ * Applies the CSS required to zoom in, prioritizes use of CSS3
66
+ * transforms but falls back on zoom for IE.
67
+ *
68
+ * @param {Number} pageOffsetX
69
+ * @param {Number} pageOffsetY
70
+ * @param {Number} elementOffsetX
71
+ * @param {Number} elementOffsetY
72
+ * @param {Number} scale
73
+ */
74
+ function magnify( pageOffsetX, pageOffsetY, elementOffsetX, elementOffsetY, scale ) {
75
+
76
+ if( supportsTransforms ) {
77
+ var origin = pageOffsetX +'px '+ pageOffsetY +'px',
78
+ transform = 'translate('+ -elementOffsetX +'px,'+ -elementOffsetY +'px) scale('+ scale +')';
79
+
80
+ document.body.style.transformOrigin = origin;
81
+ document.body.style.OTransformOrigin = origin;
82
+ document.body.style.msTransformOrigin = origin;
83
+ document.body.style.MozTransformOrigin = origin;
84
+ document.body.style.WebkitTransformOrigin = origin;
85
+
86
+ document.body.style.transform = transform;
87
+ document.body.style.OTransform = transform;
88
+ document.body.style.msTransform = transform;
89
+ document.body.style.MozTransform = transform;
90
+ document.body.style.WebkitTransform = transform;
91
+ }
92
+ else {
93
+ // Reset all values
94
+ if( scale === 1 ) {
95
+ document.body.style.position = '';
96
+ document.body.style.left = '';
97
+ document.body.style.top = '';
98
+ document.body.style.width = '';
99
+ document.body.style.height = '';
100
+ document.body.style.zoom = '';
101
+ }
102
+ // Apply scale
103
+ else {
104
+ document.body.style.position = 'relative';
105
+ document.body.style.left = ( - ( pageOffsetX + elementOffsetX ) / scale ) + 'px';
106
+ document.body.style.top = ( - ( pageOffsetY + elementOffsetY ) / scale ) + 'px';
107
+ document.body.style.width = ( scale * 100 ) + '%';
108
+ document.body.style.height = ( scale * 100 ) + '%';
109
+ document.body.style.zoom = scale;
110
+ }
111
+ }
112
+
113
+ level = scale;
114
+
115
+ if( level !== 1 && document.documentElement.classList ) {
116
+ document.documentElement.classList.add( 'zoomed' );
117
+ }
118
+ else {
119
+ document.documentElement.classList.remove( 'zoomed' );
120
+ }
121
+ }
122
+
123
+ /**
124
+ * Pan the document when the mosue cursor approaches the edges
125
+ * of the window.
126
+ */
127
+ function pan() {
128
+ var range = 0.12,
129
+ rangeX = window.innerWidth * range,
130
+ rangeY = window.innerHeight * range,
131
+ scrollOffset = getScrollOffset();
132
+
133
+ // Up
134
+ if( mouseY < rangeY ) {
135
+ window.scroll( scrollOffset.x, scrollOffset.y - ( 1 - ( mouseY / rangeY ) ) * ( 14 / level ) );
136
+ }
137
+ // Down
138
+ else if( mouseY > window.innerHeight - rangeY ) {
139
+ window.scroll( scrollOffset.x, scrollOffset.y + ( 1 - ( window.innerHeight - mouseY ) / rangeY ) * ( 14 / level ) );
140
+ }
141
+
142
+ // Left
143
+ if( mouseX < rangeX ) {
144
+ window.scroll( scrollOffset.x - ( 1 - ( mouseX / rangeX ) ) * ( 14 / level ), scrollOffset.y );
145
+ }
146
+ // Right
147
+ else if( mouseX > window.innerWidth - rangeX ) {
148
+ window.scroll( scrollOffset.x + ( 1 - ( window.innerWidth - mouseX ) / rangeX ) * ( 14 / level ), scrollOffset.y );
149
+ }
150
+ }
151
+
152
+ function getScrollOffset() {
153
+ return {
154
+ x: window.scrollX !== undefined ? window.scrollX : window.pageXOffset,
155
+ y: window.scrollY !== undefined ? window.scrollY : window.pageXYffset
156
+ }
157
+ }
158
+
159
+ return {
160
+ /**
161
+ * Zooms in on either a rectangle or HTML element.
162
+ *
163
+ * @param {Object} options
164
+ * - element: HTML element to zoom in on
165
+ * OR
166
+ * - x/y: coordinates in non-transformed space to zoom in on
167
+ * - width/height: the portion of the screen to zoom in on
168
+ * - scale: can be used instead of width/height to explicitly set scale
169
+ */
170
+ to: function( options ) {
171
+ // Due to an implementation limitation we can't zoom in
172
+ // to another element without zooming out first
173
+ if( level !== 1 ) {
174
+ zoom.out();
175
+ }
176
+ else {
177
+ options.x = options.x || 0;
178
+ options.y = options.y || 0;
179
+
180
+ // If an element is set, that takes precedence
181
+ if( !!options.element ) {
182
+ // Space around the zoomed in element to leave on screen
183
+ var padding = 20;
184
+
185
+ options.width = options.element.getBoundingClientRect().width + ( padding * 2 );
186
+ options.height = options.element.getBoundingClientRect().height + ( padding * 2 );
187
+ options.x = options.element.getBoundingClientRect().left - padding;
188
+ options.y = options.element.getBoundingClientRect().top - padding;
189
+ }
190
+
191
+ // If width/height values are set, calculate scale from those values
192
+ if( options.width !== undefined && options.height !== undefined ) {
193
+ options.scale = Math.max( Math.min( window.innerWidth / options.width, window.innerHeight / options.height ), 1 );
194
+ }
195
+
196
+ if( options.scale > 1 ) {
197
+ options.x *= options.scale;
198
+ options.y *= options.scale;
199
+
200
+ var scrollOffset = getScrollOffset();
201
+
202
+ if( options.element ) {
203
+ scrollOffset.x -= ( window.innerWidth - ( options.width * options.scale ) ) / 2;
204
+ }
205
+
206
+ magnify( scrollOffset.x, scrollOffset.y, options.x, options.y, options.scale );
207
+
208
+ if( options.pan !== false ) {
209
+
210
+ // Wait with engaging panning as it may conflict with the
211
+ // zoom transition
212
+ panEngageTimeout = setTimeout( function() {
213
+ panUpdateInterval = setInterval( pan, 1000 / 60 );
214
+ }, 800 );
215
+
216
+ }
217
+ }
218
+
219
+ currentOptions = options;
220
+ }
221
+ },
222
+
223
+ /**
224
+ * Resets the document zoom state to its default.
225
+ */
226
+ out: function() {
227
+ clearTimeout( panEngageTimeout );
228
+ clearInterval( panUpdateInterval );
229
+
230
+ var scrollOffset = getScrollOffset();
231
+
232
+ if( currentOptions && currentOptions.element ) {
233
+ scrollOffset.x -= ( window.innerWidth - ( currentOptions.width * currentOptions.scale ) ) / 2;
234
+ }
235
+
236
+ magnify( scrollOffset.x, scrollOffset.y, 0, 0, 1 );
237
+
238
+ level = 1;
239
+ },
240
+
241
+ // Alias
242
+ magnify: function( options ) { this.to( options ) },
243
+ reset: function() { this.out() },
244
+
245
+ zoomLevel: function() {
246
+ return level;
247
+ }
248
+ }
249
+
250
+ })();
251
+
@@ -0,0 +1,37 @@
1
+ require 'yaml'
2
+
3
+ module Briefing
4
+ class Slides
5
+ attr_reader :sections, :options
6
+
7
+ DEFAULTS = {
8
+ 'controls' => false,
9
+ 'progress' => true,
10
+ 'history' => true,
11
+ 'keyboard' => true,
12
+ 'overview' => true,
13
+ 'center' => true,
14
+ 'loop' => false,
15
+ 'rtl' => false,
16
+ 'autoSlide' => 0,
17
+ 'mouseWheel' => false,
18
+ 'rollingLinks' => false
19
+ }
20
+
21
+ def initialize(filepath)
22
+ @sections = []
23
+ buffer = []
24
+ File.open(filepath).read.each_line {|line|
25
+ if line.match /^-{3,}(.*)$/
26
+ if buffer.length > 0
27
+ @sections << buffer.join("")
28
+ end
29
+ buffer = []
30
+ else
31
+ buffer << line
32
+ end
33
+ }
34
+ @options = DEFAULTS.merge(YAML.load(@sections.shift))
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,3 @@
1
+ module Briefing
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,79 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <title><%= @options['title'] || 'Slides' %></title>
7
+
8
+ <% if @options['author'] %>
9
+ <meta name="author" content="<%= @options['author'] %>">
10
+ <% end%>
11
+ <% if @options['description'] %>
12
+ <meta name="description" content="<%= @options['description'] %>">
13
+ <% end%>
14
+ <meta name="apple-mobile-web-app-capable" content="yes" />
15
+ <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
16
+
17
+ <link rel="stylesheet" href="css/reveal.min.css">
18
+ <link rel="stylesheet" href="css/theme/<%= @options['theme'] || 'default' %>.css" id="theme">
19
+
20
+ <!-- For syntax highlighting -->
21
+ <link rel="stylesheet" href="lib/css/zenburn.css">
22
+
23
+ <% if @options['style'] %>
24
+ <style>
25
+ <!--
26
+ <%= @options['style'] %>
27
+ -->
28
+ </style>
29
+ <% end %>
30
+
31
+ <!-- If the query includes 'print-pdf', use the PDF print sheet -->
32
+ <script>
33
+ document.write( '<link rel="stylesheet" href="css/print/' + ( window.location.search.match( /print-pdf/gi ) ? 'pdf' : 'paper' ) + '.css" type="text/css" media="print">' );
34
+ </script>
35
+
36
+ <!--[if lt IE 9]>
37
+ <script src="lib/js/html5shiv.js"></script>
38
+ <![endif]-->
39
+ </head>
40
+
41
+ <body>
42
+
43
+ <div class="reveal">
44
+ <div class="slides">
45
+ <% @slides.sections.each {|section| %>
46
+ <section data-markdown>
47
+ <script type="text/template">
48
+ <%= section %>
49
+ </script>
50
+ </section>
51
+ <% } %>
52
+ </div>
53
+ </div>
54
+
55
+ <script src="lib/js/head.min.js"></script>
56
+ <script src="js/reveal.min.js"></script>
57
+
58
+ <script>
59
+ Reveal.initialize({
60
+ <% Briefing::Slides::DEFAULTS.each_key {|key| %>
61
+ <%= key.to_s %>: <%= @options[key] %>,
62
+ <% } %>
63
+ theme: '<%= @options['theme'] || 'default' %>', // available themes are in /css/theme
64
+ transition: '<%= @options['transition'] || 'default' %>', // default/cube/page/concave/zoom/linear/none
65
+
66
+ // Optional libraries used to extend on reveal.js
67
+ dependencies: [
68
+ { src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
69
+ { src: 'plugin/markdown/showdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
70
+ { src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
71
+ { src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
72
+ { src: 'plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
73
+ { src: 'plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } }
74
+ ]
75
+ });
76
+ </script>
77
+
78
+ </body>
79
+ </html>
data/lib/briefing.rb ADDED
@@ -0,0 +1,5 @@
1
+ require "briefing/version"
2
+ require "briefing/app"
3
+
4
+ module Briefing
5
+ end
data/vendor/.gitkeep ADDED
File without changes
metadata ADDED
@@ -0,0 +1,140 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: briefing
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - kambara
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-05 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: sinatra
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: sinatra-reloader
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ description: Briefing is a presentation tool that lets you create slides from a text
47
+ file written in Markdown. By executing 'briefing' command and specifying a text
48
+ file, you can show it as a beautiful slides in your web browser.
49
+ email:
50
+ - kambara@sappari.org
51
+ executables:
52
+ - briefing
53
+ extensions: []
54
+ extra_rdoc_files: []
55
+ files:
56
+ - .gitignore
57
+ - .gitmodules
58
+ - Gemfile
59
+ - LICENSE
60
+ - README.md
61
+ - Rakefile
62
+ - bin/briefing
63
+ - briefing.gemspec
64
+ - lib/briefing.rb
65
+ - lib/briefing/app.rb
66
+ - lib/briefing/public/css/print/paper.css
67
+ - lib/briefing/public/css/print/pdf.css
68
+ - lib/briefing/public/css/reveal.css
69
+ - lib/briefing/public/css/reveal.min.css
70
+ - lib/briefing/public/css/shaders/tile-flip.fs
71
+ - lib/briefing/public/css/shaders/tile-flip.vs
72
+ - lib/briefing/public/css/theme/README.md
73
+ - lib/briefing/public/css/theme/beige.css
74
+ - lib/briefing/public/css/theme/default.css
75
+ - lib/briefing/public/css/theme/night.css
76
+ - lib/briefing/public/css/theme/serif.css
77
+ - lib/briefing/public/css/theme/simple.css
78
+ - lib/briefing/public/css/theme/sky.css
79
+ - lib/briefing/public/css/theme/source/beige.scss
80
+ - lib/briefing/public/css/theme/source/default.scss
81
+ - lib/briefing/public/css/theme/source/night.scss
82
+ - lib/briefing/public/css/theme/source/serif.scss
83
+ - lib/briefing/public/css/theme/source/simple.scss
84
+ - lib/briefing/public/css/theme/source/sky.scss
85
+ - lib/briefing/public/css/theme/template/mixins.scss
86
+ - lib/briefing/public/css/theme/template/settings.scss
87
+ - lib/briefing/public/css/theme/template/theme.scss
88
+ - lib/briefing/public/js/reveal.js
89
+ - lib/briefing/public/js/reveal.min.js
90
+ - lib/briefing/public/lib/css/zenburn.css
91
+ - lib/briefing/public/lib/font/league_gothic-webfont.eot
92
+ - lib/briefing/public/lib/font/league_gothic-webfont.svg
93
+ - lib/briefing/public/lib/font/league_gothic-webfont.ttf
94
+ - lib/briefing/public/lib/font/league_gothic-webfont.woff
95
+ - lib/briefing/public/lib/font/league_gothic_license
96
+ - lib/briefing/public/lib/js/classList.js
97
+ - lib/briefing/public/lib/js/head.min.js
98
+ - lib/briefing/public/lib/js/html5shiv.js
99
+ - lib/briefing/public/plugin/highlight/highlight.js
100
+ - lib/briefing/public/plugin/markdown/markdown.js
101
+ - lib/briefing/public/plugin/markdown/showdown.js
102
+ - lib/briefing/public/plugin/notes-server/client.js
103
+ - lib/briefing/public/plugin/notes-server/index.js
104
+ - lib/briefing/public/plugin/notes-server/notes.html
105
+ - lib/briefing/public/plugin/notes/notes.html
106
+ - lib/briefing/public/plugin/notes/notes.js
107
+ - lib/briefing/public/plugin/postmessage/example.html
108
+ - lib/briefing/public/plugin/postmessage/postmessage.js
109
+ - lib/briefing/public/plugin/remotes/remotes.js
110
+ - lib/briefing/public/plugin/zoom-js/zoom.js
111
+ - lib/briefing/slides.rb
112
+ - lib/briefing/version.rb
113
+ - lib/briefing/views/index.erb
114
+ - vendor/.gitkeep
115
+ homepage: https://github.com/kambara/briefing
116
+ licenses: []
117
+ post_install_message:
118
+ rdoc_options: []
119
+ require_paths:
120
+ - lib
121
+ required_ruby_version: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ required_rubygems_version: !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ! '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ requirements: []
134
+ rubyforge_project:
135
+ rubygems_version: 1.8.24
136
+ signing_key:
137
+ specification_version: 3
138
+ summary: A presentation tool that lets you create slides from a text file written
139
+ in Markdown
140
+ test_files: []