codex 1.0.2
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.
- 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
|
+
|