codex 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +8 -0
- data/LICENSE.txt +29 -0
- data/Manifest.txt +95 -0
- data/PostInstall.txt +5 -0
- data/README.txt +31 -0
- data/Rakefile +4 -0
- data/app_generators/codex/USAGE +5 -0
- data/app_generators/codex/codex_generator.rb +106 -0
- data/app_generators/codex/templates/Rakefile +54 -0
- data/app_generators/codex/templates/bin/build_all.rb +47 -0
- data/app_generators/codex/templates/bin/postprocess_all.rb +5 -0
- data/app_generators/codex/templates/bin/pressie.rb +7 -0
- data/app_generators/codex/templates/code/control/basic_continuation.rb +11 -0
- data/app_generators/codex/templates/code/control/cc_throw_catch.rb +59 -0
- data/app_generators/codex/templates/code/control/closure_continuation.rb +8 -0
- data/app_generators/codex/templates/code/control/closure_continuation_2.rb +12 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/CSS.html +115 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/CSharp.html +134 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/CollapseCode.html +90 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Cpp.html +190 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/CrashTest.html +108 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Delphi.html +112 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/FirstLine.html +90 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Index.html +80 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Java.html +122 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/JavaScript.html +112 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/NoControls.html +89 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/NoGutter.html +89 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/PHP.html +102 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Python.html +121 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Ruby.html +131 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/SQL.html +98 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/clipboard.swf +0 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushCSharp.js +32 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushCpp.js +73 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushCss.js +52 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushDelphi.js +34 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushJScript.js +22 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushJava.js +28 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushPhp.js +60 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushPython.js +30 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushRuby.js +28 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushSql.js +42 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushVb.js +29 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shBrushXml.js +70 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shCore.js +414 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Scripts/shCore.uncompressed.js +674 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/ShowColumns.html +89 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/SmartTabs.html +88 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Styles/SyntaxHighlighter.css +158 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Styles/TestPages.css +63 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/Templates/Test.dwt +80 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/VB.html +115 -0
- data/app_generators/codex/templates/dp.SyntaxHighlighter/XML.html +136 -0
- data/app_generators/codex/templates/html/all.html +0 -0
- data/app_generators/codex/templates/readme.txt +4 -0
- data/app_generators/codex/templates/slides/basics.slides +37 -0
- data/app_generators/codex/templates/slides/building.slides +27 -0
- data/app_generators/codex/templates/slides/example.slides +80 -0
- data/app_generators/codex/templates/slides/including_code.slides +80 -0
- data/app_generators/codex/templates/slides/metadata.yml +4 -0
- data/app_generators/codex/templates/slides/table_of_contents.slides +14 -0
- data/app_generators/codex/templates/ui/default/blank.gif +0 -0
- data/app_generators/codex/templates/ui/default/bodybg.gif +0 -0
- data/app_generators/codex/templates/ui/default/framing.css +23 -0
- data/app_generators/codex/templates/ui/default/iepngfix.htc +42 -0
- data/app_generators/codex/templates/ui/default/opera.css +7 -0
- data/app_generators/codex/templates/ui/default/outline.css +15 -0
- data/app_generators/codex/templates/ui/default/pretty.css +86 -0
- data/app_generators/codex/templates/ui/default/print.css +1 -0
- data/app_generators/codex/templates/ui/default/s5-core.css +9 -0
- data/app_generators/codex/templates/ui/default/slides.css +3 -0
- data/app_generators/codex/templates/ui/default/slides.js +553 -0
- data/bin/codex +17 -0
- data/codex.gemspec +30 -0
- data/config/hoe.rb +75 -0
- data/config/requirements.rb +15 -0
- data/lib/codex.rb +7 -0
- data/lib/codex/content.rb +160 -0
- data/lib/codex/pressie.rb +108 -0
- data/lib/codex/version.rb +9 -0
- data/lib/stylesheets/pressie.css +196 -0
- data/lib/stylesheets/print.css +149 -0
- data/lib/stylesheets/ruby.png +0 -0
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/setup.rb +1585 -0
- data/tasks/deployment.rake +34 -0
- data/tasks/environment.rake +7 -0
- data/tasks/website.rake +9 -0
- data/test/test_codex.rb +11 -0
- data/test/test_codex_generator.rb +78 -0
- data/test/test_generator_helper.rb +29 -0
- data/test/test_helper.rb +2 -0
- metadata +163 -0
@@ -0,0 +1,115 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/Test.dwt" codeOutsideHTMLIsLocked="false" -->
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
5
|
+
<title>dp.SyntaxHighlighter Tests</title>
|
6
|
+
<link type="text/css" rel="stylesheet" href="Styles/SyntaxHighlighter.css"></link>
|
7
|
+
<link href="Styles/TestPages.css" rel="stylesheet" type="text/css">
|
8
|
+
</head>
|
9
|
+
|
10
|
+
<body>
|
11
|
+
|
12
|
+
<h1>dp.SyntaxHighlighter 1.5.0 Tests and Samples</h1>
|
13
|
+
<p><a href="http://code.google.com/p/syntaxhighlighter/">http://code.google.com/p/syntaxhighlighter/</a></p>
|
14
|
+
|
15
|
+
<h2><!-- InstanceBeginEditable name="Title" -->Visual Basic<!-- InstanceEndEditable --></h2>
|
16
|
+
|
17
|
+
<div class="layout">
|
18
|
+
|
19
|
+
<div class="column1">
|
20
|
+
<h3>Languages:</h3>
|
21
|
+
<ol>
|
22
|
+
<li><a href="CSharp.html">C#</a></li>
|
23
|
+
<li><a href="CSS.html">CSS</a></li>
|
24
|
+
<li><a href="Cpp.html">C++</a></li>
|
25
|
+
<li><a href="Delphi.html">Delphi</a></li>
|
26
|
+
<li><a href="Java.html">Java</a></li>
|
27
|
+
<li><a href="JavaScript.html">JavaScript</a></li>
|
28
|
+
<li><a href="PHP.html">PHP</a></li>
|
29
|
+
<li><a href="Python.html">Python</a></li>
|
30
|
+
<li><a href="Ruby.html">Ruby</a></li>
|
31
|
+
<li><a href="SQL.html">SQL</a></li>
|
32
|
+
<li><a href="VB.html">Visual Basic</a></li>
|
33
|
+
<li><a href="XML.html">XML / HTML</a></li>
|
34
|
+
</ol>
|
35
|
+
<h3>Features:</h3>
|
36
|
+
<ol>
|
37
|
+
<li><a href="SmartTabs.html">Smart tabs</a></li>
|
38
|
+
<li><a href="FirstLine.html">First line</a> </li>
|
39
|
+
<li><a href="CollapseCode.html">Expand code</a></li>
|
40
|
+
<li><a href="ShowColumns.html">Show columns</a></li>
|
41
|
+
<li><a href="NoGutter.html">No gutter</a></li>
|
42
|
+
<li><a href="NoControls.html">No controls</a></li>
|
43
|
+
</ol>
|
44
|
+
</div>
|
45
|
+
|
46
|
+
<div class="column2">
|
47
|
+
Text body before.
|
48
|
+
<hr/>
|
49
|
+
<!-- InstanceBeginEditable name="Code" -->
|
50
|
+
<pre name="code" class="vb">
|
51
|
+
''
|
52
|
+
'' This is a VB test
|
53
|
+
''
|
54
|
+
'
|
55
|
+
' This is a VB test
|
56
|
+
'
|
57
|
+
|
58
|
+
Imports System.Collections
|
59
|
+
|
60
|
+
Dim stringWithUrl = "http://blog.dreamprojections.com"
|
61
|
+
|
62
|
+
Public Class MyVbClass
|
63
|
+
Private m_MyString As String
|
64
|
+
|
65
|
+
Public Sub New()
|
66
|
+
myString = "Hello there"
|
67
|
+
End Sub
|
68
|
+
|
69
|
+
Public Property MyString() As String
|
70
|
+
Get
|
71
|
+
Return m_MyString
|
72
|
+
End Get
|
73
|
+
Set(ByVal Value As String)
|
74
|
+
m_MyString = Value
|
75
|
+
End Set
|
76
|
+
End Property
|
77
|
+
|
78
|
+
#Region "This is my region"
|
79
|
+
' This is a comment
|
80
|
+
Public Function MyFunction( ByVal i as Integer ) As Double
|
81
|
+
MyFunction = 123.456
|
82
|
+
End Function
|
83
|
+
#End Region
|
84
|
+
End Class
|
85
|
+
</pre>
|
86
|
+
<!-- InstanceEndEditable -->
|
87
|
+
<hr/>
|
88
|
+
Text body after.
|
89
|
+
</div>
|
90
|
+
</div>
|
91
|
+
|
92
|
+
<div class="footer">
|
93
|
+
Copyright 2004-2007 Alex Gorbatchev.<br/>
|
94
|
+
</div>
|
95
|
+
|
96
|
+
<script class="javascript" src="Scripts/shCore.js"></script>
|
97
|
+
<script class="javascript" src="Scripts/shBrushCSharp.js"></script>
|
98
|
+
<script class="javascript" src="Scripts/shBrushPhp.js"></script>
|
99
|
+
<script class="javascript" src="Scripts/shBrushJScript.js"></script>
|
100
|
+
<script class="javascript" src="Scripts/shBrushJava.js"></script>
|
101
|
+
<script class="javascript" src="Scripts/shBrushVb.js"></script>
|
102
|
+
<script class="javascript" src="Scripts/shBrushSql.js"></script>
|
103
|
+
<script class="javascript" src="Scripts/shBrushXml.js"></script>
|
104
|
+
<script class="javascript" src="Scripts/shBrushDelphi.js"></script>
|
105
|
+
<script class="javascript" src="Scripts/shBrushPython.js"></script>
|
106
|
+
<script class="javascript" src="Scripts/shBrushRuby.js"></script>
|
107
|
+
<script class="javascript" src="Scripts/shBrushCss.js"></script>
|
108
|
+
<script class="javascript" src="Scripts/shBrushCpp.js"></script>
|
109
|
+
<script class="javascript">
|
110
|
+
dp.SyntaxHighlighter.ClipboardSwf = 'Scripts/clipboard.swf';
|
111
|
+
dp.SyntaxHighlighter.HighlightAll('code');
|
112
|
+
</script>
|
113
|
+
|
114
|
+
</body>
|
115
|
+
<!-- InstanceEnd --></html>
|
@@ -0,0 +1,136 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/Test.dwt" codeOutsideHTMLIsLocked="false" -->
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
5
|
+
<title>dp.SyntaxHighlighter Tests</title>
|
6
|
+
<link type="text/css" rel="stylesheet" href="Styles/SyntaxHighlighter.css"></link>
|
7
|
+
<link href="Styles/TestPages.css" rel="stylesheet" type="text/css">
|
8
|
+
</head>
|
9
|
+
|
10
|
+
<body>
|
11
|
+
|
12
|
+
<h1>dp.SyntaxHighlighter 1.5.0 Tests and Samples</h1>
|
13
|
+
<p><a href="http://code.google.com/p/syntaxhighlighter/">http://code.google.com/p/syntaxhighlighter/</a></p>
|
14
|
+
|
15
|
+
<h2><!-- InstanceBeginEditable name="Title" -->XML / HTML<!-- InstanceEndEditable --></h2>
|
16
|
+
|
17
|
+
<div class="layout">
|
18
|
+
|
19
|
+
<div class="column1">
|
20
|
+
<h3>Languages:</h3>
|
21
|
+
<ol>
|
22
|
+
<li><a href="CSharp.html">C#</a></li>
|
23
|
+
<li><a href="CSS.html">CSS</a></li>
|
24
|
+
<li><a href="Cpp.html">C++</a></li>
|
25
|
+
<li><a href="Delphi.html">Delphi</a></li>
|
26
|
+
<li><a href="Java.html">Java</a></li>
|
27
|
+
<li><a href="JavaScript.html">JavaScript</a></li>
|
28
|
+
<li><a href="PHP.html">PHP</a></li>
|
29
|
+
<li><a href="Python.html">Python</a></li>
|
30
|
+
<li><a href="Ruby.html">Ruby</a></li>
|
31
|
+
<li><a href="SQL.html">SQL</a></li>
|
32
|
+
<li><a href="VB.html">Visual Basic</a></li>
|
33
|
+
<li><a href="XML.html">XML / HTML</a></li>
|
34
|
+
</ol>
|
35
|
+
<h3>Features:</h3>
|
36
|
+
<ol>
|
37
|
+
<li><a href="SmartTabs.html">Smart tabs</a></li>
|
38
|
+
<li><a href="FirstLine.html">First line</a> </li>
|
39
|
+
<li><a href="CollapseCode.html">Expand code</a></li>
|
40
|
+
<li><a href="ShowColumns.html">Show columns</a></li>
|
41
|
+
<li><a href="NoGutter.html">No gutter</a></li>
|
42
|
+
<li><a href="NoControls.html">No controls</a></li>
|
43
|
+
</ol>
|
44
|
+
</div>
|
45
|
+
|
46
|
+
<div class="column2">
|
47
|
+
Text body before.
|
48
|
+
<hr/>
|
49
|
+
<!-- InstanceBeginEditable name="Code" -->
|
50
|
+
<h3>Using textarea</h3>
|
51
|
+
|
52
|
+
<textarea name="code" class="xml" rows="15" cols="100">
|
53
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
54
|
+
|
55
|
+
<!-- comments -->
|
56
|
+
<rootNode>
|
57
|
+
<childNodes>
|
58
|
+
<childNode attribute = "value" namespace:attribute='value' attribute=/>
|
59
|
+
<childNode />
|
60
|
+
<childNode />
|
61
|
+
<childNode />
|
62
|
+
<childNode attribute="value"></childNode>
|
63
|
+
<namespace:childNode>
|
64
|
+
<![CDATA[
|
65
|
+
this is some CDATA content
|
66
|
+
<!-- comments inside cdata -->
|
67
|
+
<b alert='false'>tags inside cdata</b>
|
68
|
+
]]>
|
69
|
+
</namespace:childNode>
|
70
|
+
</childNodes>
|
71
|
+
</rootNode>
|
72
|
+
|
73
|
+
<!--
|
74
|
+
-- Multiline comments <b>tag</b>
|
75
|
+
-->
|
76
|
+
</textarea>
|
77
|
+
|
78
|
+
<h3>Using pre</h3>
|
79
|
+
|
80
|
+
<pre name="code" class="xml">
|
81
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
82
|
+
|
83
|
+
<!-- comments -->
|
84
|
+
<rootNode>
|
85
|
+
<childNodes>
|
86
|
+
<childNode attribute = "value" namespace:attribute='value' attribute=/>
|
87
|
+
<childNode />
|
88
|
+
<childNode />
|
89
|
+
<childNode />
|
90
|
+
<childNode attribute="value"></childNode>
|
91
|
+
<namespace:childNode>
|
92
|
+
<![CDATA[
|
93
|
+
this is some CDATA content
|
94
|
+
<!-- comments inside cdata -->
|
95
|
+
<b alert='false'>tags inside cdata</b>
|
96
|
+
]]>
|
97
|
+
</namespace:childNode>
|
98
|
+
</childNodes>
|
99
|
+
</rootNode>
|
100
|
+
|
101
|
+
<!--
|
102
|
+
-- Multiline comments <b>tag</b>
|
103
|
+
-->
|
104
|
+
</pre>
|
105
|
+
|
106
|
+
|
107
|
+
<!-- InstanceEndEditable -->
|
108
|
+
<hr/>
|
109
|
+
Text body after.
|
110
|
+
</div>
|
111
|
+
</div>
|
112
|
+
|
113
|
+
<div class="footer">
|
114
|
+
Copyright 2004-2007 Alex Gorbatchev.<br/>
|
115
|
+
</div>
|
116
|
+
|
117
|
+
<script class="javascript" src="Scripts/shCore.js"></script>
|
118
|
+
<script class="javascript" src="Scripts/shBrushCSharp.js"></script>
|
119
|
+
<script class="javascript" src="Scripts/shBrushPhp.js"></script>
|
120
|
+
<script class="javascript" src="Scripts/shBrushJScript.js"></script>
|
121
|
+
<script class="javascript" src="Scripts/shBrushJava.js"></script>
|
122
|
+
<script class="javascript" src="Scripts/shBrushVb.js"></script>
|
123
|
+
<script class="javascript" src="Scripts/shBrushSql.js"></script>
|
124
|
+
<script class="javascript" src="Scripts/shBrushXml.js"></script>
|
125
|
+
<script class="javascript" src="Scripts/shBrushDelphi.js"></script>
|
126
|
+
<script class="javascript" src="Scripts/shBrushPython.js"></script>
|
127
|
+
<script class="javascript" src="Scripts/shBrushRuby.js"></script>
|
128
|
+
<script class="javascript" src="Scripts/shBrushCss.js"></script>
|
129
|
+
<script class="javascript" src="Scripts/shBrushCpp.js"></script>
|
130
|
+
<script class="javascript">
|
131
|
+
dp.SyntaxHighlighter.ClipboardSwf = 'Scripts/clipboard.swf';
|
132
|
+
dp.SyntaxHighlighter.HighlightAll('code');
|
133
|
+
</script>
|
134
|
+
|
135
|
+
</body>
|
136
|
+
<!-- InstanceEnd --></html>
|
File without changes
|
@@ -0,0 +1,37 @@
|
|
1
|
+
h1. The Basics
|
2
|
+
|
3
|
+
h1. Slides and Code
|
4
|
+
|
5
|
+
* Slides are created using "Textile markup":http://www.textism.com/tools/textile/
|
6
|
+
* Code is written as normal source files
|
7
|
+
* Slides can embed parts of the source files
|
8
|
+
* It's all processed into an HTML-based presentation
|
9
|
+
|
10
|
+
h1. Presentation Metadata
|
11
|
+
|
12
|
+
* Required file @slides/metadata.yml@
|
13
|
+
|
14
|
+
:code slides/metadata.yml
|
15
|
+
|
16
|
+
h1. Where Stuff Goes
|
17
|
+
|
18
|
+
* Create your slides in @slides/xxx.slides@
|
19
|
+
* Write code under @code/xxx@
|
20
|
+
* Build the files @html/xxx.html@ by running @Rake@
|
21
|
+
|
22
|
+
|
23
|
+
h1. @.slides@ files
|
24
|
+
|
25
|
+
* Each @.slides@ file is a separate chunk of the presentation
|
26
|
+
* The first @h1.@ heading is the banner page for that chunk
|
27
|
+
* Each subsequent @h1.@ starts a new slide
|
28
|
+
|
29
|
+
|
30
|
+
h1. Table of Contents
|
31
|
+
|
32
|
+
* You can divide your material into segments, each in a separate @xxx.slides@ file
|
33
|
+
* Then create @slides/table_of_contents.slides@, eg:
|
34
|
+
|
35
|
+
:code slides/table_of_contents.slides[class=code-small]
|
36
|
+
|
37
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
h1. Building and Displaying HTML Slides
|
2
|
+
|
3
|
+
h1. Building HTML Slides
|
4
|
+
|
5
|
+
* Given an individual section in @slides/xxx.slides@
|
6
|
+
|
7
|
+
@rake html/xxx.html@
|
8
|
+
|
9
|
+
* If you've created a @slide/table_of_contents.slides@, build the whole presentation with
|
10
|
+
|
11
|
+
@rake all@
|
12
|
+
|
13
|
+
The output will be in @html/all.html@
|
14
|
+
|
15
|
+
h1. Running the Presentation
|
16
|
+
|
17
|
+
* Simply open the appropriate HTML file
|
18
|
+
|
19
|
+
* See the "S5 documentation":http://meyerweb.com/eric/tools/s5/ for details
|
20
|
+
|
21
|
+
* Some hints
|
22
|
+
** arrow keys and space bar work
|
23
|
+
** type the slide number to jump
|
24
|
+
** mouse over the bottom right to bring up a set of controls and a list of all available slides
|
25
|
+
** most IR and radio clickers seem to work OK
|
26
|
+
** resizing your browser fonts works well to make stuff fit during the presentation
|
27
|
+
|
@@ -0,0 +1,80 @@
|
|
1
|
+
h1. An Example
|
2
|
+
|
3
|
+
This comes from the "Advanced Ruby Course":http://pragmaticstudio.com/ruby/
|
4
|
+
|
5
|
+
h1. Continuation
|
6
|
+
|
7
|
+
<div style="width: 50%; float: right">
|
8
|
+
:code code/control/basic_continuation.rb[class=code-normal]
|
9
|
+
</div>
|
10
|
+
|
11
|
+
<div style="width: 50%">
|
12
|
+
|
13
|
+
* Construct using @callcc@
|
14
|
+
** pass it a block
|
15
|
+
** block receives @Continuation@ object
|
16
|
+
** invoke that object's @call@ method, and control passes to the end of that block
|
17
|
+
|
18
|
+
</div>
|
19
|
+
|
20
|
+
|
21
|
+
h1. Continuations Are Closures
|
22
|
+
|
23
|
+
:code code/control/closure_continuation.rb
|
24
|
+
|
25
|
+
h1. But...
|
26
|
+
|
27
|
+
:code code/control/closure_continuation_2.rb
|
28
|
+
|
29
|
+
h1. But...
|
30
|
+
|
31
|
+
<div>
|
32
|
+
:code code/control/closure_continuation_2.rb
|
33
|
+
|
34
|
+
<div style="position: relative; left: 60%; top: -3em; font-size: 400%; color: #6b6">Why?</div>
|
35
|
+
</div>
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
h1. Implementing throw...catch
|
40
|
+
|
41
|
+
Let's try to implement throw and catch so that the following works as expected:
|
42
|
+
|
43
|
+
:code code/control/cc_throw_catch.rb[body]
|
44
|
+
|
45
|
+
h1. Implementing throw...catch
|
46
|
+
|
47
|
+
* We need a thread-local stack of all current catch blocks
|
48
|
+
|
49
|
+
* When we see a @catch@, we store the symbol and a continuation for the block on the stack. If that continuation gets called, execution resumes after the block (which is what @catch@ does)
|
50
|
+
|
51
|
+
* When we see a @throw@ we traverse it looking for the entry
|
52
|
+
with the corresponding system.
|
53
|
+
|
54
|
+
* When we find that entry, we call the corresponding continuation
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
bq{font-size="50%"}. This implementation is based on code from Jim Weirich
|
59
|
+
|
60
|
+
h1. Catch and Throw
|
61
|
+
|
62
|
+
:code code/control/cc_throw_catch.rb[CC class=code-tiny]
|
63
|
+
|
64
|
+
h1. And the stack
|
65
|
+
|
66
|
+
:code code/control/cc_throw_catch.rb[stack class=code-tiny]
|
67
|
+
|
68
|
+
h1. Continuations.
|
69
|
+
|
70
|
+
* Can't invoke across threads
|
71
|
+
|
72
|
+
* Can carry stale state around with them
|
73
|
+
|
74
|
+
* Can use up a lot of memory
|
75
|
+
|
76
|
+
* Are not fun to debug
|
77
|
+
|
78
|
+
But...
|
79
|
+
|
80
|
+
* They'll impress your friends
|
@@ -0,0 +1,80 @@
|
|
1
|
+
h1. Including Code in Slides
|
2
|
+
|
3
|
+
h1. Including Code in Slides
|
4
|
+
|
5
|
+
* Write code under @code/@
|
6
|
+
* Include it in your slides using @:code@ directives
|
7
|
+
|
8
|
+
:inlinecode
|
9
|
+
:code code/myfile.rb
|
10
|
+
:endinlinecode
|
11
|
+
|
12
|
+
* The entire contents of @code/myfile.rb@ will be included in the slide
|
13
|
+
|
14
|
+
h1. Including Parts of a Source File
|
15
|
+
|
16
|
+
* In the source file, use comments containing @START:sometag@ and @END:sometag@
|
17
|
+
|
18
|
+
:inlinecode
|
19
|
+
class SomeClass
|
20
|
+
#START:useful-method
|
21
|
+
def my_method
|
22
|
+
puts "hello world"
|
23
|
+
end
|
24
|
+
#END:useful-method
|
25
|
+
end
|
26
|
+
:endinlinecode
|
27
|
+
|
28
|
+
* In the slide, reference the tag in square brackets after the file name
|
29
|
+
|
30
|
+
:inlinecode
|
31
|
+
:code code/myfile.rb[useful-method]
|
32
|
+
:endinlinecode
|
33
|
+
|
34
|
+
h1. Merge Multiple Fragments
|
35
|
+
|
36
|
+
:inlinecode
|
37
|
+
#START:constructor
|
38
|
+
class SomeClass
|
39
|
+
|
40
|
+
def initialize
|
41
|
+
# ...
|
42
|
+
end
|
43
|
+
#END:constructor
|
44
|
+
|
45
|
+
def other_methods...
|
46
|
+
end
|
47
|
+
#START:constructor
|
48
|
+
end
|
49
|
+
#END:constructor
|
50
|
+
:endinlinecode
|
51
|
+
|
52
|
+
|
53
|
+
h1. Override Code Language and/or CSS Class
|
54
|
+
|
55
|
+
:inlinecode
|
56
|
+
:code code/file.xxx[section lang=name class=name]
|
57
|
+
:endinlinecode
|
58
|
+
|
59
|
+
* can appear in any order
|
60
|
+
* @lang=@<em>anything supported by SyntaxHighlighter</em>
|
61
|
+
** look in @dp.SyntaxHighlighter/Scripts@)
|
62
|
+
* @class=code-large | code-normal | code-small | code-tiny | code-supertiny@
|
63
|
+
|
64
|
+
h1. Embedding Code Inline
|
65
|
+
|
66
|
+
:inlinecode
|
67
|
+
:inlinecode
|
68
|
+
code that
|
69
|
+
goes inline in slides
|
70
|
+
:endinlinecode
|
71
|
+
:endinlinecode
|
72
|
+
|
73
|
+
* @:inlinecode@ optionally takes @lang=xxx@ and @class=xx@
|
74
|
+
|
75
|
+
:inlinecode
|
76
|
+
:inlinecode lang=ruby
|
77
|
+
puts "Hello World!"
|
78
|
+
:endinlinecode
|
79
|
+
:endinlinecode
|
80
|
+
|