shining 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.2
1
+ 1.1.0
data/bin/console CHANGED
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
- require File.join(File.dirname(__FILE__), *%w(.. .bundle environment))
3
- require 'harmony'
2
+
3
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
4
+
5
+ require 'shining'
4
6
  require 'irb'
5
- require 'tilt'
7
+
6
8
  IRB.start
data/bin/shine CHANGED
@@ -8,7 +8,8 @@ ACTIONS = {
8
8
  :new_on! => ['build'],
9
9
  :new_slide! => ['slide'],
10
10
  :compile_templates! => ['compile'],
11
- :vendorize => ['vendor', 'vendorize']
11
+ :vendorize => ['vendor', 'vendorize'],
12
+ :play => ['play', 'go']
12
13
  }
13
14
 
14
15
  def bail! reason
@@ -57,4 +58,10 @@ def compile_templates!
57
58
  preso.compile_templates!
58
59
  end
59
60
 
61
+ def play
62
+ preso = Shining::Preso.open Dir.pwd
63
+ player = Shining::Player.new preso
64
+ player.go!
65
+ end
66
+
60
67
  figure_what_to_do!
@@ -11,6 +11,10 @@ module FileMethods
11
11
  def dir? dir
12
12
  File.directory? dir
13
13
  end
14
+
15
+ def move from, to
16
+ Shining.say("Moving #{from} to #{to}") { FileUtils.mv(from, to) }
17
+ end
14
18
 
15
19
  def copy from, to
16
20
  Shining.say("Copying #{from} to #{to}") { File.directory?(from) ? FileUtils.cp_r(from, to) : FileUtils.cp(from, to) }
@@ -1,4 +1,5 @@
1
1
  (function($) {
2
+
2
3
  $.shining = function() {
3
4
  $.shining.slides = {
4
5
  get length() { return this._slides.length },
@@ -22,7 +23,8 @@
22
23
  firstSlide: function() { getSlide($.shining.slides.first) },
23
24
  lastSlide: function() { getSlide($.shining.slides.last ) },
24
25
  nextSlide: function() { getSlide($.shining.slides.next) },
25
- previousSlide: function() { getSlide($.shining.slides.previous) }
26
+ previousSlide: function() { getSlide($.shining.slides.previous) },
27
+ getSlide: function(slide) { getSlide(slide) }
26
28
  });
27
29
 
28
30
  function init() {
@@ -32,25 +34,20 @@
32
34
  function(controls) { $(controls).addClass('fades-in') },
33
35
  function(controls) { $(controls).removeClass('fades-in') }
34
36
  );
35
- $('#controls #first'). click(function() { $.shining.firstSlide() });
36
- $('#controls #previous'). click(function() { $.shining.previousSlide() });
37
- $('#controls #next'). click(function() { $.shining.nextSlide() });
38
- $('#controls #last'). click(function() { $.shining.lastSlide() });
39
37
  $('#stage').centralize();
40
38
  });
41
39
  $(window).resize(function() { $('#stage').centralize() });
42
- $(document).click(function(event) {
43
- if ($(event.target).is('a')) return false;
44
- if (event.pageX < ($(window).width() / 2)) {
45
- $.shining.previousSlide();
40
+ loadConfig(function() {
41
+ var startAt = document.location.hash.replace('#', '');
42
+ if (startAt) {
43
+ getSlide(startAt)
46
44
  } else {
47
- $.shining.nextSlide();
45
+ getSlide($.shining.slides.current);
48
46
  }
49
- })
50
- loadConfig(function() {
51
- getSlide($.shining.slides.current);
52
47
  setTitle($.shining.config.title);
53
48
  setTheme($.shining.config.theme);
49
+ parseEffects();
50
+ updateControlAnchors();
54
51
  });
55
52
  }
56
53
 
@@ -83,7 +80,7 @@
83
80
  var path = $('link.theme').attr('href').replace('default.css', name + 'css');
84
81
  return $('link.theme').attr('href', path);
85
82
  }
86
-
83
+
87
84
  // private
88
85
  function slide(name) {
89
86
  return 'slides/' + name;
@@ -102,6 +99,7 @@
102
99
  if (SyntaxHighlighter) SyntaxHighlighter.highlight();
103
100
  $('#stage').centralize();
104
101
  $.shining.scripts.reap();
102
+ updateControlAnchors();
105
103
  if (data) {
106
104
  loadSlideScript(name);
107
105
  loadSlideStyle(name);
@@ -128,13 +126,24 @@
128
126
  $.getJSON('config.json', function(config) {
129
127
  $.shining.config = config;
130
128
  $.shining.slides.add(config.slides);
131
- if (config.transitions) {
132
- $('#stage').addClass('transparent fades-in');
133
- }
129
+ if (config.transitions) { $('#stage').addClass('transparent fades-in'); }
134
130
  callback.call();
135
131
  });
136
132
  }
137
133
 
134
+ function parseEffects() {
135
+ $.get($('link[href$=effects.css]').attr('href'),
136
+ function(css) { $.shining.effects = $.parseCSS(css) }
137
+ );
138
+ }
139
+
140
+ function updateControlAnchors() {
141
+ $('#controls #first'). attr('href', '#' + $.shining.slides.first);
142
+ $('#controls #previous'). attr('href', ($.shining.slides.previous ? '#' + $.shining.slides.previous : ''));
143
+ $('#controls #next'). attr('href', ($.shining.slides.next ? '#' + $.shining.slides.next : ''));
144
+ $('#controls #last'). attr('href', '#' + $.shining.slides.first);
145
+ }
146
+
138
147
  $.shining.scripts = {
139
148
  LINE: /^(\d[.\d]*),[\s]*(.*)/,
140
149
  parsed: [], processes: [],
@@ -192,8 +201,35 @@
192
201
  */
193
202
  (function(b){var a=function(c){return parseInt(c,10)||0};b.each(["min","max"],function(d,c){b.fn[c+"Size"]=function(g){var f,e;if(g){if(g.width!==undefined){this.css(c+"-width",g.width)}if(g.height!==undefined){this.css(c+"-height",g.height)}return this}else{f=this.css(c+"-width");e=this.css(c+"-height");return{width:(c==="max"&&(f===undefined||f==="none"||a(f)===-1)&&Number.MAX_VALUE)||a(f),height:(c==="max"&&(e===undefined||e==="none"||a(e)===-1)&&Number.MAX_VALUE)||a(e)}}}});b.fn.isVisible=function(){return this.is(":visible")};b.each(["border","margin","padding"],function(d,c){b.fn[c]=function(e){if(e){if(e.top!==undefined){this.css(c+"-top"+(c==="border"?"-width":""),e.top)}if(e.bottom!==undefined){this.css(c+"-bottom"+(c==="border"?"-width":""),e.bottom)}if(e.left!==undefined){this.css(c+"-left"+(c==="border"?"-width":""),e.left)}if(e.right!==undefined){this.css(c+"-right"+(c==="border"?"-width":""),e.right)}return this}else{return{top:a(this.css(c+"-top"+(c==="border"?"-width":""))),bottom:a(this.css(c+"-bottom"+(c==="border"?"-width":""))),left:a(this.css(c+"-left"+(c==="border"?"-width":""))),right:a(this.css(c+"-right"+(c==="border"?"-width":"")))}}}})})(jQuery);
194
203
 
204
+
195
205
  // http://github.com/juliocesar/jquery-ondistance
196
206
  (function($){$.fn.ondistance=function(specified,close,far){var elt=this.get(0),last=new Date().getTime();$(document).mousemove(function(e){var current=new Date().getTime();if(current-last<500)return;var offset=$(elt).offset(),center={x:offset.left+($(elt).width()/2),y:offset.top+($(elt).height()/2)},last=current,distance=parseInt(Math.sqrt(Math.pow(e.pageX-center.x,2)+Math.pow(e.pageY-center.y,2)));if(specified>=distance){if($(elt).data('mouseclose')==true)return false;$(elt).data('mouseclose',true);close(elt);}else{if($(elt).data('mouseclose')==false)return false;$(elt).data('mouseclose',false);far(elt);}})}})(jQuery);
197
207
 
198
208
  // centralizes an element vertically
199
- (function($){$.fn.centralize=function(){var self=this.get(0);windowHeight=document.documentElement.clientHeight,elementHeight=(self.offsetHeight+$(self).padding().top+$(self).padding().bottom);$(self).css('position','relative').css('top',(windowHeight/2)-(elementHeight/2)+'px');};})(jQuery);
209
+ (function($){$.fn.centralize=function(){var self=this.get(0);windowHeight=document.documentElement.clientHeight,elementHeight=(self.offsetHeight+$(self).padding().top+$(self).padding().bottom);$(self).css('position','relative').css('top',(windowHeight/2)-(elementHeight/2)+'px');};})(jQuery);
210
+
211
+ // Trimmed down/modified version of the original Javascript/jQuery CSS parser
212
+ // by Danny.
213
+ // http://bililite.com/blog/2009/01/16/jquery-css-parser/
214
+ (function($){$.parseCSS=function(str){var ret={};str=munge(str).replace(/@(([^;`]|`[^b]|`b[^%])*(`b%)?);?/g,function(s,rule){return'';});$.each(str.split('`b%'),function(i,css){css=css.split('%b`');if(css.length<2)return;css[0]=restore(css[0]);ret[css[0]]=$.extend(ret[css[0]]||{},parsedeclarations(css[1]));});return ret;};$.parseCSS.mediumApplies=(window.media&&window.media.query)||function(str){if(!str)return true;if(str in media)return media[str];var style=$('<style media="'+str+'">body {position: relative; z-index: 1;}</style>').appendTo('head');return media[str]=[$('body').css('z-index')==1,style.remove()][0];};$.parseCSS.parseArguments=function(str){if(!str)return[];var ret=[],mungedArguments=munge(str,true).split(/\s+/);for(var i=0;i<mungedArguments.length;++i){var a=restore(mungedArguments[i]);try{ret.push(eval('('+a+')'));}catch(err){ret.push(a);}}
215
+ return ret;};var media={};var munged={};function parsedeclarations(index){var str=munged[index].replace(/^{|}$/g,'');str=munge(str);var parsed={};$.each(str.split(';'),function(i,decl){decl=decl.split(':');if(decl.length<2)return;parsed[restore(decl[0])]=restore(decl[1]);});return parsed;}
216
+ var REbraces=/{[^{}]*}/,REfull=/\[[^\[\]]*\]|{[^{}]*}|\([^()]*\)|function(\s+\w+)?(\s*%b`\d+`b%){2}/,REatcomment=/\/\*@((?:[^\*]|\*[^\/])*)\*\//g,REcomment_string=/(?:\/\*(?:[^\*]|\*[^\/])*\*\/)|(\\.|"(?:[^\\\"]|\\.|\\\n)*"|'(?:[^\\\']|\\.|\\\n)*')/g,REmunged=/%\w`(\d+)`\w%/,uid=0;function munge(str,full){str=str.replace(REatcomment,'$1').replace(REcomment_string,function(s,string){if(!string)return'';var replacement='%s`'+(++uid)+'`s%';munged[uid]=string.replace(/^\\/,'');return replacement;});var RE=full?REfull:REbraces;while(match=RE.exec(str)){replacement='%b`'+(++uid)+'`b%';munged[uid]=match[0];str=str.replace(RE,replacement);}
217
+ return str;}
218
+ function restore(str){if(str===undefined)return str;while(match=REmunged.exec(str)){str=str.replace(REmunged,munged[match[1]]);}
219
+ return $.trim(str);}
220
+ var RESGMLcomment=/<!--([^-]|-[^-])*-->/g;var REnotATag=/(>)[^<]*/g;var REtag=/<(\w+)([^>]*)>/g;})(jQuery);
221
+
222
+ /*
223
+ * jQuery hashchange event - v1.2 - 2/11/2010
224
+ * http://benalman.com/projects/jquery-hashchange-plugin/
225
+ *
226
+ * Copyright (c) 2010 "Cowboy" Ben Alman
227
+ * Dual licensed under the MIT and GPL licenses.
228
+ * http://benalman.com/about/license/
229
+ */
230
+ (function($,i,b){var j,k=$.event.special,c="location",d="hashchange",l="href",f=$.browser,g=document.documentMode,h=f.msie&&(g===b||g<8),e="on"+d in i&&!h;function a(m){m=m||i[c][l];return m.replace(/^[^#]*#?(.*)$/,"$1")}$[d+"Delay"]=100;k[d]=$.extend(k[d],{setup:function(){if(e){return false}$(j.start)},teardown:function(){if(e){return false}$(j.stop)}});j=(function(){var m={},r,n,o,q;function p(){o=q=function(s){return s};if(h){n=$('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this);
231
+
232
+ $(window).bind('hashchange', function(event) {
233
+ var slide = document.location.hash.replace('#', '');
234
+ if (slide) { $.shining.getSlide(slide) };
235
+ });
data/lib/shining.rb CHANGED
@@ -4,6 +4,7 @@ require 'rubygems'
4
4
  require 'ext/string'
5
5
  require 'ext/filemethods'
6
6
  require 'shining/preso'
7
+ require 'shining/player'
7
8
  require 'term/ansicolor'
8
9
 
9
10
  module Shining
@@ -0,0 +1,50 @@
1
+ # For now this is just a wrapper for Plainview. More goodness coming soon
2
+
3
+ require 'rbconfig'
4
+
5
+ module Shining
6
+
7
+ class Player
8
+ include FileMethods and extend FileMethods
9
+
10
+ def initialize(preso)
11
+ raise ArgumentError, "argument needs to be an instance of Shining::Preso" unless preso.is_a? Shining::Preso
12
+ @preso = preso
13
+ end
14
+
15
+ def go!
16
+ raise RuntimeError, %w(
17
+ Sorry! We currently only support Plainview on MacOSX as
18
+ a player. Manually open your presentation's index.html
19
+ via Safari or Chrome for the time being.
20
+ ).join(' ') unless osx?
21
+ download and decompress and install unless installed?
22
+ `#{@preso.path}/vendor/Plainview.app/Contents/MacOS/Plainview #{@preso.path}/index.html`
23
+ end
24
+
25
+ def download
26
+ Shining.say "Downloading Plainview from http://s3.amazonaws.com/plainviewapp/plainview_1.0.173.zip..."
27
+ `curl -# http://s3.amazonaws.com/plainviewapp/plainview_1.0.173.zip -o /tmp/plainview.zip`
28
+ end
29
+
30
+ def decompress
31
+ Shining.say "Decompressing /tmp/plainview.zip"
32
+ `unzip -o -d /tmp /tmp/plainview.zip`
33
+ end
34
+
35
+ def install
36
+ new_dir @preso.path/'vendor'
37
+ move '/tmp/Plainview.app', @preso.path/'vendor/'
38
+ end
39
+
40
+ def installed?
41
+ dir? @preso.path/'vendor'/'Plainview.app'
42
+ end
43
+
44
+ protected
45
+ def osx?
46
+ Config::CONFIG['host_os'].include? 'darwin'
47
+ end
48
+ end
49
+
50
+ end
data/shining.gemspec ADDED
@@ -0,0 +1,125 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{shining}
8
+ s.version = "1.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Julio Cesar Ody"]
12
+ s.date = %q{2010-03-23}
13
+ s.description = %q{Webkit + CSS + Javascript = awesome presos}
14
+ s.email = %q{julio.ody@gmail.com}
15
+ s.executables = ["console", "shine"]
16
+ s.extra_rdoc_files = [
17
+ "README.markdown"
18
+ ]
19
+ s.files = [
20
+ "README.markdown",
21
+ "Rakefile",
22
+ "VERSION",
23
+ "bin/console",
24
+ "bin/shine",
25
+ "css/base.css",
26
+ "css/effects.css",
27
+ "css/shCore.css",
28
+ "css/shThemeFadeToGrey.css",
29
+ "images/help.png",
30
+ "images/magnifier.png",
31
+ "images/page_white_code.png",
32
+ "images/page_white_copy.png",
33
+ "images/printer.png",
34
+ "lib/ext/filemethods.rb",
35
+ "lib/ext/string.rb",
36
+ "lib/jquery-1.4.1.min.js",
37
+ "lib/jquery.shining.js",
38
+ "lib/plugins/jquery.shining-audio-0.0.1.js",
39
+ "lib/shBrushAll.js",
40
+ "lib/shCore.js",
41
+ "lib/shining.rb",
42
+ "lib/shining/player.rb",
43
+ "lib/shining/preso.rb",
44
+ "shining.gemspec",
45
+ "spec/cli_spec.rb",
46
+ "spec/generators_spec.rb",
47
+ "spec/preso_spec.rb",
48
+ "spec/sample/base.css",
49
+ "spec/sample/config.json",
50
+ "spec/sample/effects.css",
51
+ "spec/sample/index.html",
52
+ "spec/sample/slides/first.html",
53
+ "spec/sample/slides/first.js",
54
+ "spec/sample/slides/second.html",
55
+ "spec/sample/slides/second.js",
56
+ "spec/sample/slides/third.html",
57
+ "spec/sample/slides/third.js",
58
+ "spec/shining_spec.rb",
59
+ "spec/spec_helper.rb",
60
+ "templates/config.json",
61
+ "templates/index.html",
62
+ "templates/slides/welcome.html",
63
+ "themes/default.css",
64
+ "themes/slidedown.css"
65
+ ]
66
+ s.homepage = %q{http://github.com/juliocesar/shining}
67
+ s.rdoc_options = ["--charset=UTF-8"]
68
+ s.require_paths = ["lib"]
69
+ s.rubygems_version = %q{1.3.5}
70
+ s.summary = %q{Webkit + CSS + Javascript = awesome presos}
71
+ s.test_files = [
72
+ "spec/cli_spec.rb",
73
+ "spec/generators_spec.rb",
74
+ "spec/preso_spec.rb",
75
+ "spec/shining_spec.rb",
76
+ "spec/spec_helper.rb"
77
+ ]
78
+
79
+ if s.respond_to? :specification_version then
80
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
81
+ s.specification_version = 3
82
+
83
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
84
+ s.add_runtime_dependency(%q<haml>, [">= 2.2.17"])
85
+ s.add_runtime_dependency(%q<json_pure>, [">= 1.1.9"])
86
+ s.add_runtime_dependency(%q<tilt>, [">= 0.6"])
87
+ s.add_runtime_dependency(%q<rdiscount>, [">= 1.6.3"])
88
+ s.add_runtime_dependency(%q<term-ansicolor>, [">= 1.0.4"])
89
+ s.add_development_dependency(%q<rspec>, ["= 1.3.0"])
90
+ s.add_development_dependency(%q<stackdeck>, ["= 0.2.0"])
91
+ s.add_development_dependency(%q<johnson>, ["= 2.0.0.pre2"])
92
+ s.add_development_dependency(%q<rspec>, ["= 1.3.0"])
93
+ s.add_development_dependency(%q<rake>, ["= 0.8.7"])
94
+ s.add_development_dependency(%q<envjs>, ["= 0.1.4"])
95
+ s.add_development_dependency(%q<juliocesar-harmony>, ["= 0.5.2"])
96
+ else
97
+ s.add_dependency(%q<haml>, [">= 2.2.17"])
98
+ s.add_dependency(%q<json_pure>, [">= 1.1.9"])
99
+ s.add_dependency(%q<tilt>, [">= 0.6"])
100
+ s.add_dependency(%q<rdiscount>, [">= 1.6.3"])
101
+ s.add_dependency(%q<term-ansicolor>, [">= 1.0.4"])
102
+ s.add_dependency(%q<rspec>, ["= 1.3.0"])
103
+ s.add_dependency(%q<stackdeck>, ["= 0.2.0"])
104
+ s.add_dependency(%q<johnson>, ["= 2.0.0.pre2"])
105
+ s.add_dependency(%q<rspec>, ["= 1.3.0"])
106
+ s.add_dependency(%q<rake>, ["= 0.8.7"])
107
+ s.add_dependency(%q<envjs>, ["= 0.1.4"])
108
+ s.add_dependency(%q<juliocesar-harmony>, ["= 0.5.2"])
109
+ end
110
+ else
111
+ s.add_dependency(%q<haml>, [">= 2.2.17"])
112
+ s.add_dependency(%q<json_pure>, [">= 1.1.9"])
113
+ s.add_dependency(%q<tilt>, [">= 0.6"])
114
+ s.add_dependency(%q<rdiscount>, [">= 1.6.3"])
115
+ s.add_dependency(%q<term-ansicolor>, [">= 1.0.4"])
116
+ s.add_dependency(%q<rspec>, ["= 1.3.0"])
117
+ s.add_dependency(%q<stackdeck>, ["= 0.2.0"])
118
+ s.add_dependency(%q<johnson>, ["= 2.0.0.pre2"])
119
+ s.add_dependency(%q<rspec>, ["= 1.3.0"])
120
+ s.add_dependency(%q<rake>, ["= 0.8.7"])
121
+ s.add_dependency(%q<envjs>, ["= 0.1.4"])
122
+ s.add_dependency(%q<juliocesar-harmony>, ["= 0.5.2"])
123
+ end
124
+ end
125
+
data/spec/cli_spec.rb CHANGED
@@ -4,20 +4,24 @@ describe 'shine' do
4
4
  PRESO = Dir.tmpdir/'shining-tmp'/'preso'
5
5
  SHINE = Shining.root/'bin'/'shine'
6
6
 
7
+ def quiet command
8
+ system "#{command} > /dev/null"
9
+ end
10
+
7
11
  def new_preso
8
- system "#{SHINE} #{PRESO}"
12
+ quiet "#{SHINE} #{PRESO}"
9
13
  end
10
14
 
11
15
  def vendorize
12
- system "cd #{PRESO} && #{SHINE} vendor"
16
+ quiet "cd #{PRESO} && #{SHINE} vendor"
13
17
  end
14
18
 
15
19
  def new_slide(name, format = 'html')
16
- system "cd #{PRESO} && #{SHINE} slide #{name} #{format}"
20
+ quiet "cd #{PRESO} && #{SHINE} slide #{name} #{format}"
17
21
  end
18
22
 
19
23
  def compile_templates
20
- system "cd #{PRESO} && #{SHINE} compile"
24
+ quiet "cd #{PRESO} && #{SHINE} compile"
21
25
  end
22
26
 
23
27
  def make_haml_template!(name)
@@ -70,4 +74,15 @@ describe 'shine' do
70
74
  compile_templates
71
75
  File.read(PRESO/'slides'/'test.html').should == "<p>LOOK MA</p>\n"
72
76
  end
77
+
78
+ describe 'go' do
79
+ it "for now it only works on Mac OSX" do
80
+ player = Shining::Player.new
81
+ player.should_receive(:osx?).and_return(false)
82
+ lambda { player.go! }.should raise_error
83
+ end
84
+
85
+ it "downloads and decompresses Plainview and if it's not found #{'PRESO_ROOT'/'vendor'/'Plainview.app'}"
86
+ it "fires up Plainview"
87
+ end
73
88
  end
data/spec/spec_helper.rb CHANGED
@@ -4,8 +4,9 @@ require File.join(File.dirname(__FILE__), *%w(.. lib shining))
4
4
 
5
5
  gem 'stackdeck', '0.2.0'; require 'stackdeck'
6
6
  gem 'johnson', '2.0.0.pre2'; require 'johnson'
7
- gem 'rspec', '1.3.0'; require 'spec'
8
- gem 'rake', '0.8.7'; require 'rake'
7
+ gem 'rspec', '>= 1.3.0'; require 'spec'
8
+ gem 'rake', '>= 0.8.7'; require 'rake'
9
9
  gem 'envjs', '0.1.4'; require 'envjs'
10
10
  gem 'juliocesar-harmony', '0.5.2'; require 'harmony'
11
- gem 'json_pure', '1.1.9'; require 'json/pure'
11
+ gem 'json_pure', '>= 1.1.9'; require 'json/pure'
12
+ gem 'haml', '>= 2.2.17'; require 'haml'
data/themes/default.css CHANGED
@@ -5,7 +5,7 @@ body { background-color: rgb(48, 48, 48) }
5
5
  }
6
6
 
7
7
  h1, h2, h3, p, li { color: rgb(238, 238, 238); text-shadow: rgb(0, 0, 0) 2px 2px 4px }
8
- a { color: rgb(73, 157, 255) }
8
+ a { color: rgb(73, 157, 255); text-decoration: none }
9
9
  ul { list-style-type: disc }
10
10
 
11
11
  #controls {
@@ -0,0 +1,19 @@
1
+ body { background-color: rgb(255, 255, 255) }
2
+ #stage { color: rgb(0, 0, 0) }
3
+
4
+ h1, h2, h3, p, li { color: rgb(238, 238, 238); text-shadow: rgb(0, 0, 0) 2px 2px 4px }
5
+ a { color: rgb(73, 157, 255) }
6
+ ul { list-style-type: disc }
7
+
8
+ #controls {
9
+ position: fixed;
10
+ bottom: 0;
11
+ left: 62%;
12
+ margin-left: -300px;
13
+ background-color: rgba(0, 0, 0, 0.5);
14
+ -webkit-border-top-left-radius: 5px;
15
+ -webkit-border-top-right-radius: 5px;
16
+ }
17
+ #controls a { display: inline-block; width: 75px; padding: 5px 0; font-weight: bold; color: #fff; text-decoration: none }
18
+ em { color: rgb(73, 255, 80) }
19
+ strong { color: rgb(255, 171, 73); font-weight: bold }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shining
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julio Cesar Ody
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-03-11 00:00:00 +11:00
12
+ date: 2010-03-23 00:00:00 +11:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -164,7 +164,9 @@ files:
164
164
  - lib/shBrushAll.js
165
165
  - lib/shCore.js
166
166
  - lib/shining.rb
167
+ - lib/shining/player.rb
167
168
  - lib/shining/preso.rb
169
+ - shining.gemspec
168
170
  - spec/cli_spec.rb
169
171
  - spec/generators_spec.rb
170
172
  - spec/preso_spec.rb
@@ -184,6 +186,7 @@ files:
184
186
  - templates/index.html
185
187
  - templates/slides/welcome.html
186
188
  - themes/default.css
189
+ - themes/slidedown.css
187
190
  has_rdoc: true
188
191
  homepage: http://github.com/juliocesar/shining
189
192
  licenses: []