trickster 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|