trickster 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/README.rdoc +14 -0
- data/bin/trickster +1 -1
- data/css/styles.css +34 -0
- data/erb/index.html.erb +29 -2
- data/features/init.feature +1 -1
- data/js/lib/jquery.touchSwipe.min.js +1 -0
- data/js/timer.js +81 -0
- data/js/trickster.js +32 -4
- data/lib/trickster/renderer/code_renderer.rb +13 -5
- data/lib/trickster/slide_parser.rb +1 -0
- data/lib/trickster/version.rb +1 -1
- data/test/slide_parser_test.rb +22 -0
- data/test_slides +45 -0
- data/trickster.gemspec +1 -1
- metadata +204 -412
- data/.rvmrc +0 -1
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5308d593c057d2a323226877617ae50e6aac31ec
|
4
|
+
data.tar.gz: 9b5050525dfc9eeef89352a7d73807c2b89b86a9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ad51ce913a437a04c8ca3fb0bf4258601bb28dc8873b931a31321a064f520ed3dfd127ba5b01af62cc59b9698c86bd4c6c877ac1e809b09a2ce5d785afc26e3d
|
7
|
+
data.tar.gz: 574787f3ae4030971b1ccebbdfae5ad0c504504427440c3ded1aac5706c5a06116394a89ce1c3f9158b16edf10dee3ea1080874b2f7341f05c17a3e496f2f5e8
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
trickster
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.0.0
|
data/README.rdoc
CHANGED
@@ -103,6 +103,16 @@ Prompts can be <tt>></tt>, <tt>%</tt>, and <tt>#</tt>.
|
|
103
103
|
|
104
104
|
These slides take the first three lines of content and display them in an +H1+, +H2+, and +H3+, respectively. All other lines are ignored.
|
105
105
|
|
106
|
+
== Timer
|
107
|
+
|
108
|
+
Currently, there will be a small timer on the bottom left of your presentation. By default, it will show the number of minutes elapsed since you clicked the play button. It can be customized:
|
109
|
+
|
110
|
+
* If you don't want to use the timer, simply add <code>display: none</code> to the <code>#timer</code> stanza in the stylesheet.
|
111
|
+
* If your presentation might go over an hour, remove <code>display: none</code> from the <code>#timer .hours</code> stanza in the stylesheet.
|
112
|
+
* If you want to see seconds elapsing, remove <code>display: none</code> from the <code>#timer .seconds</code> stanza in the stylesheet.
|
113
|
+
* If you want to hide the controls (e.g. because you know the keyboard shortcuts or have a presentation remote), add <code>display: none</code> to the <code>#controls</code> stanza in the stylesheet.
|
114
|
+
* You can adjust the style in any other way you see fit in the stylsheet
|
115
|
+
|
106
116
|
== Customizations/Styling
|
107
117
|
|
108
118
|
You have two points of customization: +custom.js+, which is loaded *after* all the other JS, but before the +load+ event. This is where you can override Trickster's configuration if you like (e.g. for default transition time).
|
@@ -123,6 +133,8 @@ Every time you reload, the presentation will be dynamically sized to the size of
|
|
123
133
|
|
124
134
|
Occasionally, Trickster will size the slides too larger or too small. In that case, you can use "-" and "+" to resize the slides on the fly. Note that if you you reload, the sizes will be reset.
|
125
135
|
|
136
|
+
Finally, if you want to see your elapsed time, click the play button before you start (see keyboard shortcuts below).
|
137
|
+
|
126
138
|
=== Keyboard Commands
|
127
139
|
|
128
140
|
advance:: "j", space-bar, right-arrow, or the advance button on the Kensington Wireless Presenter.
|
@@ -130,6 +142,8 @@ back:: "k", backspace, left-arrow, or the back button the Kensington Wireless Pr
|
|
130
142
|
restart:: down/stop button on the Kensington Wireless Presenter.
|
131
143
|
increase font-size:: "+" or "=" (font-size will be reset if you reload the page)
|
132
144
|
decrease font-size:: "-" (font-size will be reset if you reload the page)
|
145
|
+
start timer:: down on your Kensington remote, or "p"
|
146
|
+
pause timer:: "a"
|
133
147
|
|
134
148
|
== Tips
|
135
149
|
|
data/bin/trickster
CHANGED
@@ -80,7 +80,7 @@ EOF
|
|
80
80
|
theme_copier = Trickster::ThemeCopier.new(BASE_DIR,dir)
|
81
81
|
theme_copier.copy_theme(options[:theme])
|
82
82
|
|
83
|
-
puts "Your slideshow is ready, run trickster build
|
83
|
+
puts "Your slideshow is ready, cd to #{BASE_DIR} and run `trickster build`, then open index.html"
|
84
84
|
end
|
85
85
|
end
|
86
86
|
end
|
data/css/styles.css
CHANGED
@@ -66,3 +66,37 @@ li {
|
|
66
66
|
margin-right: 1em;
|
67
67
|
line-height: 2em;
|
68
68
|
}
|
69
|
+
|
70
|
+
#timer {
|
71
|
+
position: fixed;
|
72
|
+
left: 1em;
|
73
|
+
bottom: 1em;
|
74
|
+
/* uncomment this to remove the timer
|
75
|
+
display: none;
|
76
|
+
*/
|
77
|
+
}
|
78
|
+
|
79
|
+
#timer .seconds {
|
80
|
+
display: none; /* remove this to show seconds elapsing */
|
81
|
+
}
|
82
|
+
|
83
|
+
#timer .hours {
|
84
|
+
display: none; /* remove this to show the hours field */
|
85
|
+
}
|
86
|
+
|
87
|
+
#timer a {
|
88
|
+
text-decoration: none;
|
89
|
+
}
|
90
|
+
#timer #clock, #timer #controls {
|
91
|
+
display: inline;
|
92
|
+
}
|
93
|
+
|
94
|
+
#timer #pause {
|
95
|
+
letter-spacing: -0.2em;
|
96
|
+
}
|
97
|
+
|
98
|
+
#timer #controls {
|
99
|
+
/* Uncomment this if you want to hide the timer controls
|
100
|
+
display: none;
|
101
|
+
*/
|
102
|
+
}
|
data/erb/index.html.erb
CHANGED
@@ -3,26 +3,53 @@
|
|
3
3
|
<head>
|
4
4
|
<title><%= title %></title>
|
5
5
|
<meta charset="utf-8">
|
6
|
+
<meta name="description" content="<%= title %>">
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
6
8
|
<script src="js/lib/jquery-1.8.0.min.js"></script>
|
7
9
|
<script src="js/lib/highlight-7.1.min.js"></script>
|
8
10
|
<script src="js/lib/jquerytypewriter.js"></script>
|
9
11
|
<script src="js/lib/underscore-1.3.3.min.js"></script>
|
12
|
+
<script src="js/lib/jquery.touchSwipe.min.js"></script>
|
10
13
|
<script src="js/utils.js"></script>
|
11
14
|
<script src="js/sizer.js"></script>
|
12
15
|
<script src="js/bullets.js"></script>
|
13
16
|
<script src="js/trickster.js"></script>
|
17
|
+
<script src="js/timer.js"></script>
|
14
18
|
<script src="js/custom.js"></script>
|
15
19
|
<link rel="stylesheet" href="css/normalize.css">
|
16
20
|
<link rel="stylesheet" href="css/theme.css">
|
17
21
|
<link rel="stylesheet" href="css/styles.css">
|
18
22
|
<script>
|
19
23
|
$(window).load(function() {
|
24
|
+
TricksterTimer = TricksterTimer(TricksterDefaultConfig,{});
|
25
|
+
TricksterTimer.setup();
|
26
|
+
|
20
27
|
Trickster = TricksterLoader(TricksterDefaultConfig,{});
|
21
|
-
Trickster.load();
|
28
|
+
Trickster.load(TricksterTimer);
|
29
|
+
|
22
30
|
});
|
23
31
|
</script>
|
24
32
|
</head>
|
25
33
|
<body><div id="contents">
|
26
34
|
<%= body %>
|
27
|
-
|
35
|
+
</div>
|
36
|
+
<aside id="timer">
|
37
|
+
<div id="clock">
|
38
|
+
<span class="hours">
|
39
|
+
<span id="hour">0</span> :
|
40
|
+
</span>
|
41
|
+
<span class="minutes">
|
42
|
+
<span id="minute">00</span>
|
43
|
+
</span>
|
44
|
+
<span class="seconds"> :
|
45
|
+
<span id="second">00</span>
|
46
|
+
</span>
|
47
|
+
</div>
|
48
|
+
<div id="controls">
|
49
|
+
<a id="stop" href="#" onclick="return TricksterTimer.stop();">◼</a>
|
50
|
+
<a id="play" href="#" onclick="return TricksterTimer.play();">▶</a>
|
51
|
+
<a id="pause" href="#" onclick="return TricksterTimer.pause();">▮▮</a>
|
52
|
+
</div>
|
53
|
+
</aside>
|
54
|
+
</body>
|
28
55
|
</html>
|
data/features/init.feature
CHANGED
@@ -38,7 +38,7 @@ Feature: I can create a new slideshow
|
|
38
38
|
And the directory "slideshow/js" should contain all the trickster JavaScript files and support libs
|
39
39
|
And a directory named "slideshow/css" should exist
|
40
40
|
And the directory "slideshow/css" should contain all the trickster CSS files and support stylesheets
|
41
|
-
And the output should
|
41
|
+
And the output should match /Your slideshow is ready/
|
42
42
|
And "css/theme.css" in "slideshow" should be identical to "default.css"
|
43
43
|
|
44
44
|
Scenario: Can init a new slideshow with a different theme
|
@@ -0,0 +1 @@
|
|
1
|
+
(function(a){if(typeof define==="function"&&define.amd&&define.amd.jQuery){define(["jquery"],a)}else{a(jQuery)}}(function(e){var o="left",n="right",d="up",v="down",c="in",w="out",l="none",r="auto",k="swipe",s="pinch",x="tap",i="doubletap",b="longtap",A="horizontal",t="vertical",h="all",q=10,f="start",j="move",g="end",p="cancel",a="ontouchstart" in window,y="TouchSwipe";var m={fingers:1,threshold:75,cancelThreshold:null,pinchThreshold:20,maxTimeThreshold:null,fingerReleaseThreshold:250,longTapThreshold:500,doubleTapThreshold:200,swipe:null,swipeLeft:null,swipeRight:null,swipeUp:null,swipeDown:null,swipeStatus:null,pinchIn:null,pinchOut:null,pinchStatus:null,click:null,tap:null,doubleTap:null,longTap:null,triggerOnTouchEnd:true,triggerOnTouchLeave:false,allowPageScroll:"auto",fallbackToMouseEvents:true,excludedElements:"label, button, input, select, textarea, a, .noSwipe"};e.fn.swipe=function(D){var C=e(this),B=C.data(y);if(B&&typeof D==="string"){if(B[D]){return B[D].apply(this,Array.prototype.slice.call(arguments,1))}else{e.error("Method "+D+" does not exist on jQuery.swipe")}}else{if(!B&&(typeof D==="object"||!D)){return u.apply(this,arguments)}}return C};e.fn.swipe.defaults=m;e.fn.swipe.phases={PHASE_START:f,PHASE_MOVE:j,PHASE_END:g,PHASE_CANCEL:p};e.fn.swipe.directions={LEFT:o,RIGHT:n,UP:d,DOWN:v,IN:c,OUT:w};e.fn.swipe.pageScroll={NONE:l,HORIZONTAL:A,VERTICAL:t,AUTO:r};e.fn.swipe.fingers={ONE:1,TWO:2,THREE:3,ALL:h};function u(B){if(B&&(B.allowPageScroll===undefined&&(B.swipe!==undefined||B.swipeStatus!==undefined))){B.allowPageScroll=l}if(B.click!==undefined&&B.tap===undefined){B.tap=B.click}if(!B){B={}}B=e.extend({},e.fn.swipe.defaults,B);return this.each(function(){var D=e(this);var C=D.data(y);if(!C){C=new z(this,B);D.data(y,C)}})}function z(a0,aq){var av=(a||!aq.fallbackToMouseEvents),G=av?"touchstart":"mousedown",au=av?"touchmove":"mousemove",R=av?"touchend":"mouseup",P=av?null:"mouseleave",az="touchcancel";var ac=0,aL=null,Y=0,aX=0,aV=0,D=1,am=0,aF=0,J=null;var aN=e(a0);var W="start";var T=0;var aM=null;var Q=0,aY=0,a1=0,aa=0,K=0;var aS=null;try{aN.bind(G,aJ);aN.bind(az,a5)}catch(ag){e.error("events not supported "+G+","+az+" on jQuery.swipe")}this.enable=function(){aN.bind(G,aJ);aN.bind(az,a5);return aN};this.disable=function(){aG();return aN};this.destroy=function(){aG();aN.data(y,null);return aN};this.option=function(a8,a7){if(aq[a8]!==undefined){if(a7===undefined){return aq[a8]}else{aq[a8]=a7}}else{e.error("Option "+a8+" does not exist on jQuery.swipe.options")}return null};function aJ(a9){if(ax()){return}if(e(a9.target).closest(aq.excludedElements,aN).length>0){return}var ba=a9.originalEvent?a9.originalEvent:a9;var a8,a7=a?ba.touches[0]:ba;W=f;if(a){T=ba.touches.length}else{a9.preventDefault()}ac=0;aL=null;aF=null;Y=0;aX=0;aV=0;D=1;am=0;aM=af();J=X();O();if(!a||(T===aq.fingers||aq.fingers===h)||aT()){ae(0,a7);Q=ao();if(T==2){ae(1,ba.touches[1]);aX=aV=ap(aM[0].start,aM[1].start)}if(aq.swipeStatus||aq.pinchStatus){a8=L(ba,W)}}else{a8=false}if(a8===false){W=p;L(ba,W);return a8}else{ak(true)}return null}function aZ(ba){var bd=ba.originalEvent?ba.originalEvent:ba;if(W===g||W===p||ai()){return}var a9,a8=a?bd.touches[0]:bd;var bb=aD(a8);aY=ao();if(a){T=bd.touches.length}W=j;if(T==2){if(aX==0){ae(1,bd.touches[1]);aX=aV=ap(aM[0].start,aM[1].start)}else{aD(bd.touches[1]);aV=ap(aM[0].end,aM[1].end);aF=an(aM[0].end,aM[1].end)}D=a3(aX,aV);am=Math.abs(aX-aV)}if((T===aq.fingers||aq.fingers===h)||!a||aT()){aL=aH(bb.start,bb.end);ah(ba,aL);ac=aO(bb.start,bb.end);Y=aI();aE(aL,ac);if(aq.swipeStatus||aq.pinchStatus){a9=L(bd,W)}if(!aq.triggerOnTouchEnd||aq.triggerOnTouchLeave){var a7=true;if(aq.triggerOnTouchLeave){var bc=aU(this);a7=B(bb.end,bc)}if(!aq.triggerOnTouchEnd&&a7){W=ay(j)}else{if(aq.triggerOnTouchLeave&&!a7){W=ay(g)}}if(W==p||W==g){L(bd,W)}}}else{W=p;L(bd,W)}if(a9===false){W=p;L(bd,W)}}function I(a7){var a8=a7.originalEvent;if(a){if(a8.touches.length>0){C();return true}}if(ai()){T=aa}a7.preventDefault();aY=ao();Y=aI();if(a6()){W=p;L(a8,W)}else{if(aq.triggerOnTouchEnd||(aq.triggerOnTouchEnd==false&&W===j)){W=g;L(a8,W)}else{if(!aq.triggerOnTouchEnd&&a2()){W=g;aB(a8,W,x)}else{if(W===j){W=p;L(a8,W)}}}}ak(false);return null}function a5(){T=0;aY=0;Q=0;aX=0;aV=0;D=1;O();ak(false)}function H(a7){var a8=a7.originalEvent;if(aq.triggerOnTouchLeave){W=ay(g);L(a8,W)}}function aG(){aN.unbind(G,aJ);aN.unbind(az,a5);aN.unbind(au,aZ);aN.unbind(R,I);if(P){aN.unbind(P,H)}ak(false)}function ay(bb){var ba=bb;var a9=aw();var a8=aj();var a7=a6();if(!a9||a7){ba=p}else{if(a8&&bb==j&&(!aq.triggerOnTouchEnd||aq.triggerOnTouchLeave)){ba=g}else{if(!a8&&bb==g&&aq.triggerOnTouchLeave){ba=p}}}return ba}function L(a9,a7){var a8=undefined;if(F()||S()){a8=aB(a9,a7,k)}else{if((M()||aT())&&a8!==false){a8=aB(a9,a7,s)}}if(aC()&&a8!==false){a8=aB(a9,a7,i)}else{if(al()&&a8!==false){a8=aB(a9,a7,b)}else{if(ad()&&a8!==false){a8=aB(a9,a7,x)}}}if(a7===p){a5(a9)}if(a7===g){if(a){if(a9.touches.length==0){a5(a9)}}else{a5(a9)}}return a8}function aB(ba,a7,a9){var a8=undefined;if(a9==k){aN.trigger("swipeStatus",[a7,aL||null,ac||0,Y||0,T]);if(aq.swipeStatus){a8=aq.swipeStatus.call(aN,ba,a7,aL||null,ac||0,Y||0,T);if(a8===false){return false}}if(a7==g&&aR()){aN.trigger("swipe",[aL,ac,Y,T]);if(aq.swipe){a8=aq.swipe.call(aN,ba,aL,ac,Y,T);if(a8===false){return false}}switch(aL){case o:aN.trigger("swipeLeft",[aL,ac,Y,T]);if(aq.swipeLeft){a8=aq.swipeLeft.call(aN,ba,aL,ac,Y,T)}break;case n:aN.trigger("swipeRight",[aL,ac,Y,T]);if(aq.swipeRight){a8=aq.swipeRight.call(aN,ba,aL,ac,Y,T)}break;case d:aN.trigger("swipeUp",[aL,ac,Y,T]);if(aq.swipeUp){a8=aq.swipeUp.call(aN,ba,aL,ac,Y,T)}break;case v:aN.trigger("swipeDown",[aL,ac,Y,T]);if(aq.swipeDown){a8=aq.swipeDown.call(aN,ba,aL,ac,Y,T)}break}}}if(a9==s){aN.trigger("pinchStatus",[a7,aF||null,am||0,Y||0,T,D]);if(aq.pinchStatus){a8=aq.pinchStatus.call(aN,ba,a7,aF||null,am||0,Y||0,T,D);if(a8===false){return false}}if(a7==g&&a4()){switch(aF){case c:aN.trigger("pinchIn",[aF||null,am||0,Y||0,T,D]);if(aq.pinchIn){a8=aq.pinchIn.call(aN,ba,aF||null,am||0,Y||0,T,D)}break;case w:aN.trigger("pinchOut",[aF||null,am||0,Y||0,T,D]);if(aq.pinchOut){a8=aq.pinchOut.call(aN,ba,aF||null,am||0,Y||0,T,D)}break}}}if(a9==x){if(a7===p||a7===g){clearTimeout(aS);if(V()&&!E()){K=ao();aS=setTimeout(e.proxy(function(){K=null;aN.trigger("tap",[ba.target]);if(aq.tap){a8=aq.tap.call(aN,ba,ba.target)}},this),aq.doubleTapThreshold)}else{K=null;aN.trigger("tap",[ba.target]);if(aq.tap){a8=aq.tap.call(aN,ba,ba.target)}}}}else{if(a9==i){if(a7===p||a7===g){clearTimeout(aS);K=null;aN.trigger("doubletap",[ba.target]);if(aq.doubleTap){a8=aq.doubleTap.call(aN,ba,ba.target)}}}else{if(a9==b){if(a7===p||a7===g){clearTimeout(aS);K=null;aN.trigger("longtap",[ba.target]);if(aq.longTap){a8=aq.longTap.call(aN,ba,ba.target)}}}}}return a8}function aj(){var a7=true;if(aq.threshold!==null){a7=ac>=aq.threshold}return a7}function a6(){var a7=false;if(aq.cancelThreshold!==null&&aL!==null){a7=(aP(aL)-ac)>=aq.cancelThreshold}return a7}function ab(){if(aq.pinchThreshold!==null){return am>=aq.pinchThreshold}return true}function aw(){var a7;if(aq.maxTimeThreshold){if(Y>=aq.maxTimeThreshold){a7=false}else{a7=true}}else{a7=true}return a7}function ah(a7,a8){if(aq.allowPageScroll===l||aT()){a7.preventDefault()}else{var a9=aq.allowPageScroll===r;switch(a8){case o:if((aq.swipeLeft&&a9)||(!a9&&aq.allowPageScroll!=A)){a7.preventDefault()}break;case n:if((aq.swipeRight&&a9)||(!a9&&aq.allowPageScroll!=A)){a7.preventDefault()}break;case d:if((aq.swipeUp&&a9)||(!a9&&aq.allowPageScroll!=t)){a7.preventDefault()}break;case v:if((aq.swipeDown&&a9)||(!a9&&aq.allowPageScroll!=t)){a7.preventDefault()}break}}}function a4(){var a8=aK();var a7=U();var a9=ab();return a8&&a7&&a9}function aT(){return !!(aq.pinchStatus||aq.pinchIn||aq.pinchOut)}function M(){return !!(a4()&&aT())}function aR(){var ba=aw();var bc=aj();var a9=aK();var a7=U();var a8=a6();var bb=!a8&&a7&&a9&&bc&&ba;return bb}function S(){return !!(aq.swipe||aq.swipeStatus||aq.swipeLeft||aq.swipeRight||aq.swipeUp||aq.swipeDown)}function F(){return !!(aR()&&S())}function aK(){return((T===aq.fingers||aq.fingers===h)||!a)}function U(){return aM[0].end.x!==0}function a2(){return !!(aq.tap)}function V(){return !!(aq.doubleTap)}function aQ(){return !!(aq.longTap)}function N(){if(K==null){return false}var a7=ao();return(V()&&((a7-K)<=aq.doubleTapThreshold))}function E(){return N()}function at(){return((T===1||!a)&&(isNaN(ac)||ac===0))}function aW(){return((Y>aq.longTapThreshold)&&(ac<q))}function ad(){return !!(at()&&a2())}function aC(){return !!(N()&&V())}function al(){return !!(aW()&&aQ())}function C(){a1=ao();aa=event.touches.length+1}function O(){a1=0;aa=0}function ai(){var a7=false;if(a1){var a8=ao()-a1;if(a8<=aq.fingerReleaseThreshold){a7=true}}return a7}function ax(){return !!(aN.data(y+"_intouch")===true)}function ak(a7){if(a7===true){aN.bind(au,aZ);aN.bind(R,I);if(P){aN.bind(P,H)}}else{aN.unbind(au,aZ,false);aN.unbind(R,I,false);if(P){aN.unbind(P,H,false)}}aN.data(y+"_intouch",a7===true)}function ae(a8,a7){var a9=a7.identifier!==undefined?a7.identifier:0;aM[a8].identifier=a9;aM[a8].start.x=aM[a8].end.x=a7.pageX||a7.clientX;aM[a8].start.y=aM[a8].end.y=a7.pageY||a7.clientY;return aM[a8]}function aD(a7){var a9=a7.identifier!==undefined?a7.identifier:0;var a8=Z(a9);a8.end.x=a7.pageX||a7.clientX;a8.end.y=a7.pageY||a7.clientY;return a8}function Z(a8){for(var a7=0;a7<aM.length;a7++){if(aM[a7].identifier==a8){return aM[a7]}}}function af(){var a7=[];for(var a8=0;a8<=5;a8++){a7.push({start:{x:0,y:0},end:{x:0,y:0},identifier:0})}return a7}function aE(a7,a8){a8=Math.max(a8,aP(a7));J[a7].distance=a8}function aP(a7){if(J[a7]){return J[a7].distance}return undefined}function X(){var a7={};a7[o]=ar(o);a7[n]=ar(n);a7[d]=ar(d);a7[v]=ar(v);return a7}function ar(a7){return{direction:a7,distance:0}}function aI(){return aY-Q}function ap(ba,a9){var a8=Math.abs(ba.x-a9.x);var a7=Math.abs(ba.y-a9.y);return Math.round(Math.sqrt(a8*a8+a7*a7))}function a3(a7,a8){var a9=(a8/a7)*1;return a9.toFixed(2)}function an(){if(D<1){return w}else{return c}}function aO(a8,a7){return Math.round(Math.sqrt(Math.pow(a7.x-a8.x,2)+Math.pow(a7.y-a8.y,2)))}function aA(ba,a8){var a7=ba.x-a8.x;var bc=a8.y-ba.y;var a9=Math.atan2(bc,a7);var bb=Math.round(a9*180/Math.PI);if(bb<0){bb=360-Math.abs(bb)}return bb}function aH(a8,a7){var a9=aA(a8,a7);if((a9<=45)&&(a9>=0)){return o}else{if((a9<=360)&&(a9>=315)){return o}else{if((a9>=135)&&(a9<=225)){return n}else{if((a9>45)&&(a9<135)){return v}else{return d}}}}}function ao(){var a7=new Date();return a7.getTime()}function aU(a7){a7=e(a7);var a9=a7.offset();var a8={left:a9.left,right:a9.left+a7.outerWidth(),top:a9.top,bottom:a9.top+a7.outerHeight()};return a8}function B(a7,a8){return(a7.x>a8.left&&a7.x<a8.right&&a7.y>a8.top&&a7.y<a8.bottom)}}}));
|
data/js/timer.js
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
/** Trickster Timer.
|
2
|
+
* config: configuration, or TricksterDefaultConfig to get the defaults
|
3
|
+
* functions: override helper functions
|
4
|
+
*/
|
5
|
+
var TricksterTimer = function(config,functions) {
|
6
|
+
var start = (new Date()).getTime();
|
7
|
+
var pauseTime = null;
|
8
|
+
var running = false;
|
9
|
+
var paused = false;
|
10
|
+
|
11
|
+
function pad(num) {
|
12
|
+
if (num < 10) {
|
13
|
+
return "0" + num;
|
14
|
+
}
|
15
|
+
else {
|
16
|
+
return num;
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
function tick() {
|
21
|
+
if (!paused) {
|
22
|
+
var now = (new Date()).getTime();
|
23
|
+
var diff = (now - start) / 1000;
|
24
|
+
var hour = Math.floor(diff / (60 * 60));
|
25
|
+
var minute = pad((Math.floor(diff / 60) % 60));
|
26
|
+
var second = pad(Math.floor(diff % 60));
|
27
|
+
|
28
|
+
$("#hour").text(hour);
|
29
|
+
$("#minute").text(minute);
|
30
|
+
$("#second").text(second);
|
31
|
+
}
|
32
|
+
|
33
|
+
if (running) {
|
34
|
+
window.setTimeout(tick,1000);
|
35
|
+
}
|
36
|
+
else {
|
37
|
+
$("#hour").text("0");
|
38
|
+
$("#minute").text("00");
|
39
|
+
$("#second").text("00");
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
function stop() {
|
44
|
+
running = false;
|
45
|
+
paused = false;
|
46
|
+
$("#pause").hide();
|
47
|
+
$("#play").show();
|
48
|
+
}
|
49
|
+
|
50
|
+
function pause() {
|
51
|
+
paused = true;
|
52
|
+
pauseTime = (new Date()).getTime();
|
53
|
+
$("#play").show();
|
54
|
+
$("#pause").hide();
|
55
|
+
}
|
56
|
+
|
57
|
+
function play() {
|
58
|
+
if (paused) {
|
59
|
+
var timePaused = (new Date()).getTime() - pauseTime;
|
60
|
+
start += timePaused;
|
61
|
+
}
|
62
|
+
paused = false
|
63
|
+
$("#play").hide();
|
64
|
+
$("#pause").show();
|
65
|
+
if (!running) {
|
66
|
+
running = true;
|
67
|
+
tick();
|
68
|
+
}
|
69
|
+
}
|
70
|
+
|
71
|
+
return {
|
72
|
+
setup: function() {
|
73
|
+
$("#stop").show();
|
74
|
+
$("#play").show();
|
75
|
+
$("#pause").hide();
|
76
|
+
},
|
77
|
+
play: play,
|
78
|
+
pause: pause,
|
79
|
+
stop: stop
|
80
|
+
};
|
81
|
+
};
|
data/js/trickster.js
CHANGED
@@ -10,12 +10,19 @@ var TricksterDefaultConfig = {
|
|
10
10
|
39, // right arrow
|
11
11
|
34, // Kensington presenter right arrow
|
12
12
|
32], // space bar
|
13
|
+
advanceSwipe: "left",
|
13
14
|
/** Keycodes that go back to the previous slide */
|
14
15
|
backKeycodes: [75, // k
|
15
16
|
37, // left arrow
|
16
17
|
33, // Kensington presenter left arrow
|
17
18
|
8], // delete
|
18
|
-
|
19
|
+
backSwipe: "right",
|
20
|
+
startOverKeycodes: [], // not really needed since you can just refresh the browser window
|
21
|
+
startTimerKeycodes: [66, // Kensington presenter down/stop aka "b"
|
22
|
+
80 // p
|
23
|
+
],
|
24
|
+
pauseTimerKeycodes: [65 // a
|
25
|
+
],
|
19
26
|
/** These keycodes, if encountered, will not be sent along
|
20
27
|
to the browser. Useful if there might be some vertical
|
21
28
|
scrolling and 32/33/34 would otherwise scroll */
|
@@ -128,13 +135,33 @@ var TricksterLoader = function(config,functions) {
|
|
128
135
|
});
|
129
136
|
}
|
130
137
|
|
131
|
-
function setupKeyBindings() {
|
138
|
+
function setupKeyBindings(timer) {
|
132
139
|
bindKeys(config.advanceKeycodes,Trickster.advance);
|
133
140
|
bindKeys(config.backKeycodes,Trickster.back);
|
134
141
|
bindKeys(config.startOverKeycodes,Trickster.startOver);
|
135
142
|
preventDefaultKeyCodeAction(config.keyCodesPreventingDefault);
|
136
143
|
bindKeys([189],Trickster.shrink); // -
|
137
144
|
bindKeys([187],Trickster.embiggen); // +
|
145
|
+
if (timer) {
|
146
|
+
bindKeys(config.startTimerKeycodes,timer.play);
|
147
|
+
bindKeys(config.pauseTimerKeycodes,timer.pause);
|
148
|
+
}
|
149
|
+
}
|
150
|
+
|
151
|
+
function setupSwiping() {
|
152
|
+
$("body").swipe({
|
153
|
+
swipe: function(event,direction,distance,duration,fingerCount) {
|
154
|
+
if (direction == config.advanceSwipe) {
|
155
|
+
Trickster.advance();
|
156
|
+
}
|
157
|
+
else if (direction == config.backSwipe) {
|
158
|
+
Trickster.back();
|
159
|
+
}
|
160
|
+
else {
|
161
|
+
alert("Swiped " + direction);
|
162
|
+
}
|
163
|
+
},
|
164
|
+
});
|
138
165
|
}
|
139
166
|
|
140
167
|
function hideAllSlides() {
|
@@ -151,11 +178,12 @@ var TricksterLoader = function(config,functions) {
|
|
151
178
|
previousSlide: 0,
|
152
179
|
|
153
180
|
/** Set everything up for the slideshow */
|
154
|
-
load: function() {
|
181
|
+
load: function(timer) {
|
155
182
|
// Order matters here
|
156
183
|
Trickster.totalSlides = slides().length;
|
157
184
|
initCurrentSlide();
|
158
|
-
setupKeyBindings();
|
185
|
+
setupKeyBindings(timer);
|
186
|
+
setupSwiping();
|
159
187
|
syntaxHighlighter().highlight();
|
160
188
|
sizeAllToFit();
|
161
189
|
hideAllSlides();
|
@@ -2,9 +2,9 @@ module Trickster
|
|
2
2
|
module Renderer
|
3
3
|
class CodeRenderer
|
4
4
|
def render(io,content,options)
|
5
|
-
content = read_file_if_content_is_filename(content)
|
5
|
+
content,extension = read_file_if_content_is_filename(content)
|
6
6
|
content = wrap_lines_with_callouts(content,options)
|
7
|
-
io.puts "<pre><code #{language(options)}data-strikeouts='#{strikes(options)}' data-callout-lines='#{callouts(options)}'>#{content}</code></pre>"
|
7
|
+
io.puts "<pre><code #{language(options,extension)}data-strikeouts='#{strikes(options)}' data-callout-lines='#{callouts(options)}'>#{content}</code></pre>"
|
8
8
|
end
|
9
9
|
|
10
10
|
private
|
@@ -49,16 +49,24 @@ module Trickster
|
|
49
49
|
|
50
50
|
def read_file_if_content_is_filename(content)
|
51
51
|
if content[0] =~ /file:\/\/(.*$)/
|
52
|
-
File.open($1).readlines.map(&:chomp)
|
52
|
+
[File.open($1).readlines.map(&:chomp),content[0].split(/\./)[-1]]
|
53
53
|
else
|
54
|
-
content
|
54
|
+
[content,nil]
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
|
-
|
58
|
+
EXTENSIONS = {
|
59
|
+
"rb" => "ruby",
|
60
|
+
}
|
61
|
+
|
62
|
+
def language(options,extension)
|
59
63
|
language = ''
|
60
64
|
if options =~/language=([^\s]+)/
|
61
65
|
language = "class='#{$1}' "
|
66
|
+
else
|
67
|
+
if EXTENSIONS.key?(extension)
|
68
|
+
language = "class='#{EXTENSIONS[extension]}'"
|
69
|
+
end
|
62
70
|
end
|
63
71
|
language
|
64
72
|
end
|
data/lib/trickster/version.rb
CHANGED
data/test/slide_parser_test.rb
CHANGED
@@ -47,4 +47,26 @@ class SlideParserTest < Clean::Test::TestCase
|
|
47
47
|
assert_equal @slides,@renderer.rendered_slides
|
48
48
|
}
|
49
49
|
end
|
50
|
+
|
51
|
+
test_that "comments are ignored" do
|
52
|
+
Given {
|
53
|
+
@slides = [
|
54
|
+
['TITLE',[any_string,any_string]],
|
55
|
+
['BULLETS',[any_string,any_string]],
|
56
|
+
];
|
57
|
+
lines = @slides.map { |(slide_type,content)|
|
58
|
+
["!#{slide_type}",content]
|
59
|
+
}.flatten
|
60
|
+
lines.unshift(any_string)
|
61
|
+
@renderer = RememberingRenderer.new
|
62
|
+
@parser = Trickster::SlideParser.new(lines,@renderer)
|
63
|
+
}
|
64
|
+
When {
|
65
|
+
@resulting_content = @parser.body
|
66
|
+
}
|
67
|
+
Then {
|
68
|
+
assert_equal @slides[0..2].inspect,@resulting_content
|
69
|
+
assert_equal @slides[0..2],@renderer.rendered_slides
|
70
|
+
}
|
71
|
+
end
|
50
72
|
end
|
data/test_slides
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
Test Slideshow
|
2
|
+
!TITLE
|
3
|
+
Title of your slideshow
|
4
|
+
Subtitle
|
5
|
+
Subsubtitle
|
6
|
+
|
7
|
+
!SECTION
|
8
|
+
A section
|
9
|
+
|
10
|
+
!BULLETS
|
11
|
+
A bullet list
|
12
|
+
- can use
|
13
|
+
* any reasonable
|
14
|
+
+ bullet
|
15
|
+
|
16
|
+
!CODE: language=ruby, callout=1,2,-4
|
17
|
+
class Foo
|
18
|
+
attr_reader :bar
|
19
|
+
|
20
|
+
attr_writer :bar
|
21
|
+
end
|
22
|
+
|
23
|
+
!IMAGE
|
24
|
+
test/slideshow/rudy.png
|
25
|
+
|
26
|
+
!COMMANDLINE
|
27
|
+
> ls
|
28
|
+
-rw-r--r-- 1 David staff 97 Aug 28 10:03 trickster.rdoc
|
29
|
+
-rw-r--r-- 1 David staff 1339 Aug 28 10:03 Rakefile
|
30
|
+
-rw-r--r-- 1 David staff 25 Aug 28 10:03 Gemfile
|
31
|
+
drwxr-xr-x 7 David staff 238 Sep 10 16:53 js
|
32
|
+
drwxr-xr-x 6 David staff 204 Sep 10 16:53 features
|
33
|
+
drwxr-xr-x 3 David staff 102 Sep 10 16:53 erb
|
34
|
+
drwxr-xr-x 5 David staff 170 Sep 10 16:53 css
|
35
|
+
-rw-r--r-- 1 David staff 1254 Sep 10 16:53 trickster.gemspec
|
36
|
+
drwxr-xr-x 3 David staff 102 Sep 10 16:53 bin
|
37
|
+
-rw-r--r-- 1 David staff 150 Sep 10 16:53 TODO
|
38
|
+
-rw-r--r-- 1 David staff 1563 Sep 10 16:53 Gemfile.lock
|
39
|
+
drwxr-xr-x 4 David staff 136 Sep 10 16:58 lib
|
40
|
+
-rw-r--r-- 1 David staff 3991 Sep 10 17:01 README.rdoc
|
41
|
+
drwxr-xr-x 3 David staff 102 Sep 10 17:07 tmp
|
42
|
+
-rw-r--r-- 1 David staff 87290 Sep 10 17:07 results.html
|
43
|
+
drwxr-xr-x 9 David staff 306 Sep 10 17:19 test
|
44
|
+
> rm *
|
45
|
+
|
data/trickster.gemspec
CHANGED
@@ -22,6 +22,6 @@ spec = Gem::Specification.new do |s|
|
|
22
22
|
s.add_development_dependency('aruba')
|
23
23
|
s.add_development_dependency('jasmine-headless-webkit')
|
24
24
|
s.add_development_dependency('clean_test')
|
25
|
-
s.add_runtime_dependency('gli','2
|
25
|
+
s.add_runtime_dependency('gli','~> 2')
|
26
26
|
s.add_runtime_dependency('sass')
|
27
27
|
end
|
metadata
CHANGED
@@ -1,414 +1,263 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trickster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- David Copeland
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-11-04 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rdoc
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: aruba
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: jasmine-headless-webkit
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: clean_test
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: gli
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - ~>
|
100
88
|
- !ruby/object:Gem::Version
|
101
|
-
version: 2
|
89
|
+
version: '2'
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - ~>
|
108
95
|
- !ruby/object:Gem::Version
|
109
|
-
version: 2
|
96
|
+
version: '2'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: sass
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - '>='
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - '>='
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '0'
|
126
111
|
description: Make aweomse technical presentation with big fonts that size to fit,
|
127
112
|
and awesome syntax highlighting
|
128
113
|
email: davetron5000@gmail.com
|
129
114
|
executables:
|
130
|
-
-
|
131
|
-
dHJpY2tzdGVy
|
115
|
+
- trickster
|
132
116
|
extensions: []
|
133
117
|
extra_rdoc_files:
|
134
118
|
- README.rdoc
|
135
119
|
- trickster.rdoc
|
136
120
|
files:
|
137
|
-
-
|
138
|
-
|
139
|
-
-
|
140
|
-
|
141
|
-
-
|
142
|
-
|
143
|
-
-
|
144
|
-
|
145
|
-
-
|
146
|
-
|
147
|
-
-
|
148
|
-
|
149
|
-
-
|
150
|
-
|
151
|
-
-
|
152
|
-
|
153
|
-
-
|
154
|
-
|
155
|
-
-
|
156
|
-
|
157
|
-
-
|
158
|
-
|
159
|
-
-
|
160
|
-
|
161
|
-
-
|
162
|
-
|
163
|
-
-
|
164
|
-
|
165
|
-
-
|
166
|
-
|
167
|
-
-
|
168
|
-
|
169
|
-
-
|
170
|
-
|
171
|
-
-
|
172
|
-
|
173
|
-
-
|
174
|
-
|
175
|
-
-
|
176
|
-
|
177
|
-
-
|
178
|
-
|
179
|
-
-
|
180
|
-
|
181
|
-
-
|
182
|
-
|
183
|
-
-
|
184
|
-
|
185
|
-
-
|
186
|
-
|
187
|
-
-
|
188
|
-
|
189
|
-
-
|
190
|
-
|
191
|
-
-
|
192
|
-
|
193
|
-
-
|
194
|
-
|
195
|
-
-
|
196
|
-
|
197
|
-
-
|
198
|
-
|
199
|
-
-
|
200
|
-
|
201
|
-
-
|
202
|
-
|
203
|
-
-
|
204
|
-
|
205
|
-
-
|
206
|
-
|
207
|
-
-
|
208
|
-
|
209
|
-
-
|
210
|
-
|
211
|
-
-
|
212
|
-
|
213
|
-
-
|
214
|
-
|
215
|
-
-
|
216
|
-
|
217
|
-
-
|
218
|
-
|
219
|
-
-
|
220
|
-
|
221
|
-
-
|
222
|
-
|
223
|
-
-
|
224
|
-
|
225
|
-
-
|
226
|
-
|
227
|
-
-
|
228
|
-
|
229
|
-
-
|
230
|
-
|
231
|
-
-
|
232
|
-
|
233
|
-
-
|
234
|
-
|
235
|
-
-
|
236
|
-
|
237
|
-
-
|
238
|
-
|
239
|
-
-
|
240
|
-
|
241
|
-
-
|
242
|
-
|
243
|
-
-
|
244
|
-
|
245
|
-
-
|
246
|
-
|
247
|
-
-
|
248
|
-
|
249
|
-
-
|
250
|
-
|
251
|
-
-
|
252
|
-
|
253
|
-
-
|
254
|
-
|
255
|
-
-
|
256
|
-
|
257
|
-
-
|
258
|
-
|
259
|
-
-
|
260
|
-
|
261
|
-
-
|
262
|
-
|
263
|
-
-
|
264
|
-
|
265
|
-
-
|
266
|
-
|
267
|
-
-
|
268
|
-
|
269
|
-
-
|
270
|
-
|
271
|
-
-
|
272
|
-
|
273
|
-
-
|
274
|
-
ZmVhdHVyZXMvc3RlcF9kZWZpbml0aW9ucy90cmlja3N0ZXJfc3RlcHMucmI=
|
275
|
-
- !binary |-
|
276
|
-
ZmVhdHVyZXMvc3VwcG9ydC9lbnYucmI=
|
277
|
-
- !binary |-
|
278
|
-
ZmVhdHVyZXMvdXBkYXRlLmZlYXR1cmU=
|
279
|
-
- !binary |-
|
280
|
-
anMvYnVsbGV0cy5qcw==
|
281
|
-
- !binary |-
|
282
|
-
anMvY3VzdG9tLmpz
|
283
|
-
- !binary |-
|
284
|
-
anMvbGliL2hpZ2hsaWdodC03LjEubWluLmpz
|
285
|
-
- !binary |-
|
286
|
-
anMvbGliL2pxdWVyeS0xLjguMC5taW4uanM=
|
287
|
-
- !binary |-
|
288
|
-
anMvbGliL2pxdWVyeXR5cGV3cml0ZXIuanM=
|
289
|
-
- !binary |-
|
290
|
-
anMvbGliL3VuZGVyc2NvcmUtMS4zLjMubWluLmpz
|
291
|
-
- !binary |-
|
292
|
-
anMvc2l6ZXIuanM=
|
293
|
-
- !binary |-
|
294
|
-
anMvdHJpY2tzdGVyLmpz
|
295
|
-
- !binary |-
|
296
|
-
anMvdXRpbHMuanM=
|
297
|
-
- !binary |-
|
298
|
-
bGliL3RyaWNrc3Rlci5yYg==
|
299
|
-
- !binary |-
|
300
|
-
bGliL3RyaWNrc3Rlci9jb3BpZXIucmI=
|
301
|
-
- !binary |-
|
302
|
-
bGliL3RyaWNrc3Rlci9maWxlX2NvcGllci5yYg==
|
303
|
-
- !binary |-
|
304
|
-
bGliL3RyaWNrc3Rlci9yZW5kZXJlci9idWxsZXRzX3JlbmRlcmVyLnJi
|
305
|
-
- !binary |-
|
306
|
-
bGliL3RyaWNrc3Rlci9yZW5kZXJlci9jb2RlX3JlbmRlcmVyLnJi
|
307
|
-
- !binary |-
|
308
|
-
bGliL3RyaWNrc3Rlci9yZW5kZXJlci9jb21tYW5kbGluZV9yZW5kZXJlci5y
|
309
|
-
Yg==
|
310
|
-
- !binary |-
|
311
|
-
bGliL3RyaWNrc3Rlci9yZW5kZXJlci9pbWFnZV9yZW5kZXJlci5yYg==
|
312
|
-
- !binary |-
|
313
|
-
bGliL3RyaWNrc3Rlci9yZW5kZXJlci9ub3JtYWxfcmVuZGVyZXIucmI=
|
314
|
-
- !binary |-
|
315
|
-
bGliL3RyaWNrc3Rlci9zbGlkZV9wYXJzZXIucmI=
|
316
|
-
- !binary |-
|
317
|
-
bGliL3RyaWNrc3Rlci9zbGlkZV9yZW5kZXJlci5yYg==
|
318
|
-
- !binary |-
|
319
|
-
bGliL3RyaWNrc3Rlci90aGVtZV9jb3BpZXIucmI=
|
320
|
-
- !binary |-
|
321
|
-
bGliL3RyaWNrc3Rlci92ZXJzaW9uLnJi
|
322
|
-
- !binary |-
|
323
|
-
bm90ZXMudHh0Lm1k
|
324
|
-
- !binary |-
|
325
|
-
dGVzdC9qYXNtaW5lLnltbA==
|
326
|
-
- !binary |-
|
327
|
-
dGVzdC9qcy9idWxsZXRzX3NwZWMuanM=
|
328
|
-
- !binary |-
|
329
|
-
dGVzdC9qcy9zaXplcl9zcGVjLmpz
|
330
|
-
- !binary |-
|
331
|
-
dGVzdC9qcy90cmlja3N0ZXJfc3BlYy5qcw==
|
332
|
-
- !binary |-
|
333
|
-
dGVzdC9qcy91dGlsc19zcGVjLmpz
|
334
|
-
- !binary |-
|
335
|
-
dGVzdC9zbGlkZV9wYXJzZXJfdGVzdC5yYg==
|
336
|
-
- !binary |-
|
337
|
-
dGVzdC9zbGlkZV9yZW5kZXJlcl90ZXN0LnJi
|
338
|
-
- !binary |-
|
339
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL2Nzcy9oaWdobGlnaHQtc29sYXJp
|
340
|
-
emVkX2xpZ2h0Lm1pbi5jc3M=
|
341
|
-
- !binary |-
|
342
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL2Nzcy9ub3JtYWxpemUuY3Nz
|
343
|
-
- !binary |-
|
344
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL2Nzcy9zdHlsZXMuc2Nzcw==
|
345
|
-
- !binary |-
|
346
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL2pzL2J1bGxldHMuanM=
|
347
|
-
- !binary |-
|
348
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL2pzL2N1c3RvbS5qcw==
|
349
|
-
- !binary |-
|
350
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL2pzL2xpYi9oaWdobGlnaHQtNy4x
|
351
|
-
Lm1pbi5qcw==
|
352
|
-
- !binary |-
|
353
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL2pzL2xpYi9qcXVlcnktMS44LjAu
|
354
|
-
bWluLmpz
|
355
|
-
- !binary |-
|
356
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL2pzL2xpYi9qcXVlcnl0eXBld3Jp
|
357
|
-
dGVyLmpz
|
358
|
-
- !binary |-
|
359
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL2pzL2xpYi91bmRlcnNjb3JlLTEu
|
360
|
-
My4zLm1pbi5qcw==
|
361
|
-
- !binary |-
|
362
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL2pzL3NpemVyLmpz
|
363
|
-
- !binary |-
|
364
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL2pzL3RyaWNrc3Rlci5qcw==
|
365
|
-
- !binary |-
|
366
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL2pzL3V0aWxzLmpz
|
367
|
-
- !binary |-
|
368
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL3J1ZHkucG5n
|
369
|
-
- !binary |-
|
370
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL3NsaWRlcw==
|
371
|
-
- !binary |-
|
372
|
-
dGVzdC9zbGlkZXNob3cvY3NzL2hpZ2hsaWdodC1zb2xhcml6ZWRfbGlnaHQu
|
373
|
-
bWluLmNzcw==
|
374
|
-
- !binary |-
|
375
|
-
dGVzdC9zbGlkZXNob3cvY3NzL25vcm1hbGl6ZS5jc3M=
|
376
|
-
- !binary |-
|
377
|
-
dGVzdC9zbGlkZXNob3cvY3NzL3N0eWxlcy5jc3M=
|
378
|
-
- !binary |-
|
379
|
-
dGVzdC9zbGlkZXNob3cvY3NzL3RoZW1lLmNzcw==
|
380
|
-
- !binary |-
|
381
|
-
dGVzdC9zbGlkZXNob3cvaW5kZXguaHRtbA==
|
382
|
-
- !binary |-
|
383
|
-
dGVzdC9zbGlkZXNob3cvanMvYnVsbGV0cy5qcw==
|
384
|
-
- !binary |-
|
385
|
-
dGVzdC9zbGlkZXNob3cvanMvY3VzdG9tLmpz
|
386
|
-
- !binary |-
|
387
|
-
dGVzdC9zbGlkZXNob3cvanMvbGliL2hpZ2hsaWdodC03LjEubWluLmpz
|
388
|
-
- !binary |-
|
389
|
-
dGVzdC9zbGlkZXNob3cvanMvbGliL2pxdWVyeS0xLjguMC5taW4uanM=
|
390
|
-
- !binary |-
|
391
|
-
dGVzdC9zbGlkZXNob3cvanMvbGliL2pxdWVyeXR5cGV3cml0ZXIuanM=
|
392
|
-
- !binary |-
|
393
|
-
dGVzdC9zbGlkZXNob3cvanMvbGliL3VuZGVyc2NvcmUtMS4zLjMubWluLmpz
|
394
|
-
- !binary |-
|
395
|
-
dGVzdC9zbGlkZXNob3cvanMvc2l6ZXIuanM=
|
396
|
-
- !binary |-
|
397
|
-
dGVzdC9zbGlkZXNob3cvanMvdHJpY2tzdGVyLmpz
|
398
|
-
- !binary |-
|
399
|
-
dGVzdC9zbGlkZXNob3cvanMvdXRpbHMuanM=
|
400
|
-
- !binary |-
|
401
|
-
dGVzdC9zbGlkZXNob3cvcnVkeS5wbmc=
|
402
|
-
- !binary |-
|
403
|
-
dGVzdC9zbGlkZXNob3cvc2xpZGVz
|
404
|
-
- !binary |-
|
405
|
-
dGVzdC90ZXN0X2hlbHBlci5yYg==
|
406
|
-
- !binary |-
|
407
|
-
dHJpY2tzdGVyLmdlbXNwZWM=
|
408
|
-
- !binary |-
|
409
|
-
dHJpY2tzdGVyLnJkb2M=
|
121
|
+
- .gitignore
|
122
|
+
- .ruby-gemset
|
123
|
+
- .ruby-version
|
124
|
+
- Gemfile
|
125
|
+
- README.rdoc
|
126
|
+
- Rakefile
|
127
|
+
- TODO
|
128
|
+
- bin/trickster
|
129
|
+
- css/normalize.css
|
130
|
+
- css/styles.css
|
131
|
+
- css/themes-orig/arta.css
|
132
|
+
- css/themes-orig/ascetic.css
|
133
|
+
- css/themes-orig/brown_paper.css
|
134
|
+
- css/themes-orig/brown_papersq.png
|
135
|
+
- css/themes-orig/dark.css
|
136
|
+
- css/themes-orig/default.css
|
137
|
+
- css/themes-orig/far.css
|
138
|
+
- css/themes-orig/github.css
|
139
|
+
- css/themes-orig/googlecode.css
|
140
|
+
- css/themes-orig/idea.css
|
141
|
+
- css/themes-orig/ir_black.css
|
142
|
+
- css/themes-orig/magula.css
|
143
|
+
- css/themes-orig/monokai.css
|
144
|
+
- css/themes-orig/pojoaque.css
|
145
|
+
- css/themes-orig/pojoaque.jpg
|
146
|
+
- css/themes-orig/rainbow.css
|
147
|
+
- css/themes-orig/school_book.css
|
148
|
+
- css/themes-orig/school_book.png
|
149
|
+
- css/themes-orig/solarized_dark.css
|
150
|
+
- css/themes-orig/solarized_light.css
|
151
|
+
- css/themes-orig/sunburst.css
|
152
|
+
- css/themes-orig/tomorrow-night-blue.css
|
153
|
+
- css/themes-orig/tomorrow-night-bright.css
|
154
|
+
- css/themes-orig/tomorrow-night-eighties.css
|
155
|
+
- css/themes-orig/tomorrow-night.css
|
156
|
+
- css/themes-orig/tomorrow.css
|
157
|
+
- css/themes-orig/vs.css
|
158
|
+
- css/themes-orig/xcode.css
|
159
|
+
- css/themes-orig/zenburn.css
|
160
|
+
- css/themes/arta.css
|
161
|
+
- css/themes/ascetic.css
|
162
|
+
- css/themes/brown_paper.css
|
163
|
+
- css/themes/custom.scss
|
164
|
+
- css/themes/dark.css
|
165
|
+
- css/themes/default.css
|
166
|
+
- css/themes/far.css
|
167
|
+
- css/themes/github.css
|
168
|
+
- css/themes/googlecode.css
|
169
|
+
- css/themes/idea.css
|
170
|
+
- css/themes/ir_black.css
|
171
|
+
- css/themes/magula.css
|
172
|
+
- css/themes/monokai.css
|
173
|
+
- css/themes/pojoaque.css
|
174
|
+
- css/themes/rainbow.css
|
175
|
+
- css/themes/school_book.css
|
176
|
+
- css/themes/solarized_dark.css
|
177
|
+
- css/themes/solarized_light.css
|
178
|
+
- css/themes/sunburst.css
|
179
|
+
- css/themes/tomorrow-night-blue.css
|
180
|
+
- css/themes/tomorrow-night-bright.css
|
181
|
+
- css/themes/tomorrow-night-eighties.css
|
182
|
+
- css/themes/tomorrow-night.css
|
183
|
+
- css/themes/tomorrow.css
|
184
|
+
- css/themes/vs.css
|
185
|
+
- css/themes/xcode.css
|
186
|
+
- css/themes/zenburn.css
|
187
|
+
- erb/index.html.erb
|
188
|
+
- features/build.feature
|
189
|
+
- features/init.feature
|
190
|
+
- features/step_definitions/trickster_steps.rb
|
191
|
+
- features/support/env.rb
|
192
|
+
- features/update.feature
|
193
|
+
- js/bullets.js
|
194
|
+
- js/custom.js
|
195
|
+
- js/lib/highlight-7.1.min.js
|
196
|
+
- js/lib/jquery-1.8.0.min.js
|
197
|
+
- js/lib/jquery.touchSwipe.min.js
|
198
|
+
- js/lib/jquerytypewriter.js
|
199
|
+
- js/lib/underscore-1.3.3.min.js
|
200
|
+
- js/sizer.js
|
201
|
+
- js/timer.js
|
202
|
+
- js/trickster.js
|
203
|
+
- js/utils.js
|
204
|
+
- lib/trickster.rb
|
205
|
+
- lib/trickster/copier.rb
|
206
|
+
- lib/trickster/file_copier.rb
|
207
|
+
- lib/trickster/renderer/bullets_renderer.rb
|
208
|
+
- lib/trickster/renderer/code_renderer.rb
|
209
|
+
- lib/trickster/renderer/commandline_renderer.rb
|
210
|
+
- lib/trickster/renderer/image_renderer.rb
|
211
|
+
- lib/trickster/renderer/normal_renderer.rb
|
212
|
+
- lib/trickster/slide_parser.rb
|
213
|
+
- lib/trickster/slide_renderer.rb
|
214
|
+
- lib/trickster/theme_copier.rb
|
215
|
+
- lib/trickster/version.rb
|
216
|
+
- notes.txt.md
|
217
|
+
- test/jasmine.yml
|
218
|
+
- test/js/bullets_spec.js
|
219
|
+
- test/js/sizer_spec.js
|
220
|
+
- test/js/trickster_spec.js
|
221
|
+
- test/js/utils_spec.js
|
222
|
+
- test/slide_parser_test.rb
|
223
|
+
- test/slide_renderer_test.rb
|
224
|
+
- test/slideshow-with-sass/css/highlight-solarized_light.min.css
|
225
|
+
- test/slideshow-with-sass/css/normalize.css
|
226
|
+
- test/slideshow-with-sass/css/styles.scss
|
227
|
+
- test/slideshow-with-sass/js/bullets.js
|
228
|
+
- test/slideshow-with-sass/js/custom.js
|
229
|
+
- test/slideshow-with-sass/js/lib/highlight-7.1.min.js
|
230
|
+
- test/slideshow-with-sass/js/lib/jquery-1.8.0.min.js
|
231
|
+
- test/slideshow-with-sass/js/lib/jquerytypewriter.js
|
232
|
+
- test/slideshow-with-sass/js/lib/underscore-1.3.3.min.js
|
233
|
+
- test/slideshow-with-sass/js/sizer.js
|
234
|
+
- test/slideshow-with-sass/js/trickster.js
|
235
|
+
- test/slideshow-with-sass/js/utils.js
|
236
|
+
- test/slideshow-with-sass/rudy.png
|
237
|
+
- test/slideshow-with-sass/slides
|
238
|
+
- test/slideshow/css/highlight-solarized_light.min.css
|
239
|
+
- test/slideshow/css/normalize.css
|
240
|
+
- test/slideshow/css/styles.css
|
241
|
+
- test/slideshow/css/theme.css
|
242
|
+
- test/slideshow/index.html
|
243
|
+
- test/slideshow/js/bullets.js
|
244
|
+
- test/slideshow/js/custom.js
|
245
|
+
- test/slideshow/js/lib/highlight-7.1.min.js
|
246
|
+
- test/slideshow/js/lib/jquery-1.8.0.min.js
|
247
|
+
- test/slideshow/js/lib/jquerytypewriter.js
|
248
|
+
- test/slideshow/js/lib/underscore-1.3.3.min.js
|
249
|
+
- test/slideshow/js/sizer.js
|
250
|
+
- test/slideshow/js/trickster.js
|
251
|
+
- test/slideshow/js/utils.js
|
252
|
+
- test/slideshow/rudy.png
|
253
|
+
- test/slideshow/slides
|
254
|
+
- test/test_helper.rb
|
255
|
+
- test_slides
|
256
|
+
- trickster.gemspec
|
257
|
+
- trickster.rdoc
|
410
258
|
homepage: http://your.website.com
|
411
259
|
licenses: []
|
260
|
+
metadata: {}
|
412
261
|
post_install_message:
|
413
262
|
rdoc_options:
|
414
263
|
- --title
|
@@ -419,119 +268,62 @@ rdoc_options:
|
|
419
268
|
require_paths:
|
420
269
|
- lib
|
421
270
|
required_ruby_version: !ruby/object:Gem::Requirement
|
422
|
-
none: false
|
423
271
|
requirements:
|
424
|
-
- -
|
272
|
+
- - '>='
|
425
273
|
- !ruby/object:Gem::Version
|
426
274
|
version: '0'
|
427
|
-
segments:
|
428
|
-
- 0
|
429
|
-
hash: 4110386478035712256
|
430
275
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
431
|
-
none: false
|
432
276
|
requirements:
|
433
|
-
- -
|
277
|
+
- - '>='
|
434
278
|
- !ruby/object:Gem::Version
|
435
279
|
version: '0'
|
436
|
-
segments:
|
437
|
-
- 0
|
438
|
-
hash: 4110386478035712256
|
439
280
|
requirements: []
|
440
281
|
rubyforge_project:
|
441
|
-
rubygems_version:
|
282
|
+
rubygems_version: 2.0.3
|
442
283
|
signing_key:
|
443
|
-
specification_version:
|
284
|
+
specification_version: 4
|
444
285
|
summary: Generate and manage in-browser presentation-slides
|
445
286
|
test_files:
|
446
|
-
-
|
447
|
-
|
448
|
-
-
|
449
|
-
|
450
|
-
-
|
451
|
-
|
452
|
-
-
|
453
|
-
|
454
|
-
-
|
455
|
-
|
456
|
-
-
|
457
|
-
|
458
|
-
-
|
459
|
-
|
460
|
-
-
|
461
|
-
|
462
|
-
-
|
463
|
-
|
464
|
-
-
|
465
|
-
|
466
|
-
-
|
467
|
-
|
468
|
-
-
|
469
|
-
|
470
|
-
-
|
471
|
-
|
472
|
-
|
473
|
-
-
|
474
|
-
|
475
|
-
-
|
476
|
-
|
477
|
-
-
|
478
|
-
|
479
|
-
-
|
480
|
-
|
481
|
-
-
|
482
|
-
|
483
|
-
|
484
|
-
-
|
485
|
-
|
486
|
-
|
487
|
-
-
|
488
|
-
|
489
|
-
dGVyLmpz
|
490
|
-
- !binary |-
|
491
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL2pzL2xpYi91bmRlcnNjb3JlLTEu
|
492
|
-
My4zLm1pbi5qcw==
|
493
|
-
- !binary |-
|
494
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL2pzL3NpemVyLmpz
|
495
|
-
- !binary |-
|
496
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL2pzL3RyaWNrc3Rlci5qcw==
|
497
|
-
- !binary |-
|
498
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL2pzL3V0aWxzLmpz
|
499
|
-
- !binary |-
|
500
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL3J1ZHkucG5n
|
501
|
-
- !binary |-
|
502
|
-
dGVzdC9zbGlkZXNob3ctd2l0aC1zYXNzL3NsaWRlcw==
|
503
|
-
- !binary |-
|
504
|
-
dGVzdC9zbGlkZXNob3cvY3NzL2hpZ2hsaWdodC1zb2xhcml6ZWRfbGlnaHQu
|
505
|
-
bWluLmNzcw==
|
506
|
-
- !binary |-
|
507
|
-
dGVzdC9zbGlkZXNob3cvY3NzL25vcm1hbGl6ZS5jc3M=
|
508
|
-
- !binary |-
|
509
|
-
dGVzdC9zbGlkZXNob3cvY3NzL3N0eWxlcy5jc3M=
|
510
|
-
- !binary |-
|
511
|
-
dGVzdC9zbGlkZXNob3cvY3NzL3RoZW1lLmNzcw==
|
512
|
-
- !binary |-
|
513
|
-
dGVzdC9zbGlkZXNob3cvaW5kZXguaHRtbA==
|
514
|
-
- !binary |-
|
515
|
-
dGVzdC9zbGlkZXNob3cvanMvYnVsbGV0cy5qcw==
|
516
|
-
- !binary |-
|
517
|
-
dGVzdC9zbGlkZXNob3cvanMvY3VzdG9tLmpz
|
518
|
-
- !binary |-
|
519
|
-
dGVzdC9zbGlkZXNob3cvanMvbGliL2hpZ2hsaWdodC03LjEubWluLmpz
|
520
|
-
- !binary |-
|
521
|
-
dGVzdC9zbGlkZXNob3cvanMvbGliL2pxdWVyeS0xLjguMC5taW4uanM=
|
522
|
-
- !binary |-
|
523
|
-
dGVzdC9zbGlkZXNob3cvanMvbGliL2pxdWVyeXR5cGV3cml0ZXIuanM=
|
524
|
-
- !binary |-
|
525
|
-
dGVzdC9zbGlkZXNob3cvanMvbGliL3VuZGVyc2NvcmUtMS4zLjMubWluLmpz
|
526
|
-
- !binary |-
|
527
|
-
dGVzdC9zbGlkZXNob3cvanMvc2l6ZXIuanM=
|
528
|
-
- !binary |-
|
529
|
-
dGVzdC9zbGlkZXNob3cvanMvdHJpY2tzdGVyLmpz
|
530
|
-
- !binary |-
|
531
|
-
dGVzdC9zbGlkZXNob3cvanMvdXRpbHMuanM=
|
532
|
-
- !binary |-
|
533
|
-
dGVzdC9zbGlkZXNob3cvcnVkeS5wbmc=
|
534
|
-
- !binary |-
|
535
|
-
dGVzdC9zbGlkZXNob3cvc2xpZGVz
|
536
|
-
- !binary |-
|
537
|
-
dGVzdC90ZXN0X2hlbHBlci5yYg==
|
287
|
+
- features/build.feature
|
288
|
+
- features/init.feature
|
289
|
+
- features/step_definitions/trickster_steps.rb
|
290
|
+
- features/support/env.rb
|
291
|
+
- features/update.feature
|
292
|
+
- test/jasmine.yml
|
293
|
+
- test/js/bullets_spec.js
|
294
|
+
- test/js/sizer_spec.js
|
295
|
+
- test/js/trickster_spec.js
|
296
|
+
- test/js/utils_spec.js
|
297
|
+
- test/slide_parser_test.rb
|
298
|
+
- test/slide_renderer_test.rb
|
299
|
+
- test/slideshow-with-sass/css/highlight-solarized_light.min.css
|
300
|
+
- test/slideshow-with-sass/css/normalize.css
|
301
|
+
- test/slideshow-with-sass/css/styles.scss
|
302
|
+
- test/slideshow-with-sass/js/bullets.js
|
303
|
+
- test/slideshow-with-sass/js/custom.js
|
304
|
+
- test/slideshow-with-sass/js/lib/highlight-7.1.min.js
|
305
|
+
- test/slideshow-with-sass/js/lib/jquery-1.8.0.min.js
|
306
|
+
- test/slideshow-with-sass/js/lib/jquerytypewriter.js
|
307
|
+
- test/slideshow-with-sass/js/lib/underscore-1.3.3.min.js
|
308
|
+
- test/slideshow-with-sass/js/sizer.js
|
309
|
+
- test/slideshow-with-sass/js/trickster.js
|
310
|
+
- test/slideshow-with-sass/js/utils.js
|
311
|
+
- test/slideshow-with-sass/rudy.png
|
312
|
+
- test/slideshow-with-sass/slides
|
313
|
+
- test/slideshow/css/highlight-solarized_light.min.css
|
314
|
+
- test/slideshow/css/normalize.css
|
315
|
+
- test/slideshow/css/styles.css
|
316
|
+
- test/slideshow/css/theme.css
|
317
|
+
- test/slideshow/index.html
|
318
|
+
- test/slideshow/js/bullets.js
|
319
|
+
- test/slideshow/js/custom.js
|
320
|
+
- test/slideshow/js/lib/highlight-7.1.min.js
|
321
|
+
- test/slideshow/js/lib/jquery-1.8.0.min.js
|
322
|
+
- test/slideshow/js/lib/jquerytypewriter.js
|
323
|
+
- test/slideshow/js/lib/underscore-1.3.3.min.js
|
324
|
+
- test/slideshow/js/sizer.js
|
325
|
+
- test/slideshow/js/trickster.js
|
326
|
+
- test/slideshow/js/utils.js
|
327
|
+
- test/slideshow/rudy.png
|
328
|
+
- test/slideshow/slides
|
329
|
+
- test/test_helper.rb
|
data/.rvmrc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
rvm use 1.9.3@trickster --create
|