[Gd-chatter] r10883 - trunk/www/books/dpg
tim at gwydiondylan.org
tim at gwydiondylan.org
Sun Sep 3 20:05:54 CEST 2006
Author: tim
Date: Sun Sep 3 20:05:52 2006
New Revision: 10883
Modified:
trunk/www/books/dpg/db_106.html
trunk/www/books/dpg/db_107.html
Log:
job: website
fixed <pre> formatting for source code. removed unnecessary <td> elements.
Modified: trunk/www/books/dpg/db_106.html
==============================================================================
--- trunk/www/books/dpg/db_106.html (original)
+++ trunk/www/books/dpg/db_106.html Sun Sep 3 20:05:52 2006
@@ -8,7 +8,7 @@
<link rel="up" href="db_103.html" />
<link rel="prev" href="db_105.html" />
<link rel="next" href="db_107.html" />
- <title>Dylan Programming: 8.3 The implementation file</title>
+ <title>Dylan Programming: 8.3 The implementation file</title>
</head>
<body>
@@ -17,149 +17,218 @@
</div>
<div class="content" id="heading106-0">
-<h1>8.3 The implementation file</h1>
-<table><tr><th><p>The implementation file: <code>library-implementation.dylan</code>. </p>
-</th></tr><tr><td><pre>
+<h1>8.3 The implementation file</h1>
+<table><tr><th>The implementation file: <code>library-implementation.dylan</code>.</th></tr>
+<tr><td><pre>
module: timespace
<em>// The sixty-unit class</em>
define abstract class <sixty-unit> (<object>)
slot total-seconds :: <integer>, init-keyword: total-seconds:;
end class <sixty-unit>;
-</pre></td></tr><tr><td><em>// decode-total-seconds</em>
+
+
+<em>// decode-total-seconds</em>
define method decode-total-seconds
(sixty-unit :: <sixty-unit>)
=> (max-unit :: <integer>, minutes :: <integer>, seconds :: <integer>)
decode-total-seconds(abs(time.total-seconds));
end method decode-total-seconds;
-</td></tr><tr><td>define method decode-total-seconds
+
+
+define method decode-total-seconds
(total-seconds :: <integer>)
- => (hours :: <integer>, minutes :: <integer>, seconds :: <integer>)<em> </em> let(total-minutes, seconds) = truncate/(total-seconds, 60);
+ => (hours :: <integer>, minutes :: <integer>, seconds :: <integer>)
+ let(total-minutes, seconds) = truncate/(total-seconds, 60);
let(hours, minutes) = truncate/(total-minutes, 60);
values(hours, minutes, seconds);
-end method decode-total-seconds;
-</td></tr><tr><td><em>// encode-total-seconds</em>
+end method decode-total-seconds;
+
+
+<em>// encode-total-seconds</em>
define method encode-total-seconds
(max-unit :: <integer>, minutes :: <integer>, seconds :: <integer>)
=> (total-seconds :: <integer>)
((max-unit * 60) + minutes) * 60 + seconds;
end method encode-total-seconds;
-</td></tr><tr><td><em>// The say generic function</em>
-<em>// Given an object, print a description of the object
-</em>define generic say (any-object :: <object>) => ();
-</td></tr><tr><td><em>// The time classes and methods</em>
+
+
+<em>// The say generic function</em>
+<em>// Given an object, print a description of the object</em>
+define generic say (any-object :: <object>) => ();
+
+
+<em>// The time classes and methods</em>
define abstract class <time> (<sixty-unit>)
end class <time>;
-</td></tr><tr><td>define method say (time :: <time>) => ()
+
+
+define method say (time :: <time>) => ()
let (hours, minutes) = decode-total-seconds(time);
format-out
("%d:%s%d", hours, if (minutes < 10) "0" else "" end, minutes);
end method say;
-</td></tr><tr><td><em>// A specific time of day from 00:00 (midnight) to before 24:00 (tomorrow)
-</em>define class <time-of-day> (<time>)
+
+
+<em>// A specific time of day from 00:00 (midnight) to before 24:00 (tomorrow)</em>
+define class <time-of-day> (<time>)
end class <time-of-day>;
-</td></tr><tr><td><em>// A relative time between -24:00 and +24:00
-</em>define class <time-offset> (<time>)
+
+
+<em>// A relative time between -24:00 and +24:00</em>
+define class <time-offset> (<time>)
end class <time-offset>;
-</td></tr><tr><td><em>// Method for determining whether a time offset is in the past
-</em>define method past? (time :: <time-offset>) => (past? :: <boolean>)
+
+
+<em>// Method for determining whether a time offset is in the past</em>
+define method past? (time :: <time-offset>) => (past? :: <boolean>)
time.total-seconds < 0;
end method past?;
-</td></tr><tr><td>define method say (time :: <time-offset>)
+
+
+define method say (time :: <time-offset>)
format-out("%s ", if (past?(time)) "minus" else "plus" end);
next-method();
end method say;
-</td></tr><tr><td><em>// Methods for adding times</em>
+
+
+<em>// Methods for adding times</em>
define method \+
(offset1 :: <time-offset>, offset2 :: <time-offset>)
- => (sum :: <time-offset>) <em>
-</em> let sum = offset1.total-seconds + offset2.total-seconds;
+ => (sum :: <time-offset>)
+ let sum = offset1.total-seconds + offset2.total-seconds;
make(<time-offset>, total-seconds: sum);
-end method \+; <em> </em>
-</td></tr><tr><td>define method \+
+end method \+;
+
+
+define method \+
(offset :: <time-offset>, time-of-day :: <time-of-day>)
=> (sum :: <time-of-day>)
make(<time-of-day>,
total-seconds: offset.total-seconds + time-of-day.total-seconds);
end method \+;
-</td></tr><tr><td>define method \+
+
+
+define method \+
(time-of-day :: <time-of-day>, offset :: <time-offset>)
=> (sum :: <time-of-day>)
offset + time-of-day;
end method \+;
-</td></tr><tr><td>define method \+ (time1 :: <time>, time2 :: <time>)
+
+
+define method \+ (time1 :: <time>, time2 :: <time>)
error("Sorry, we can't add a %s to a %s.",
object-class(time1), object-class(time2));
end method \+;
-</td></tr><tr><td><em>// Methods for comparing times</em>
+
+
+<em>// Methods for comparing times</em>
define method \< (time1 :: <time-of-day>, time2 :: <time-of-day>)
time1.total-seconds < time2.total-seconds;
end method \<;
-</td></tr><tr><td>define method \< (time1 :: <time-offset>, time2 :: <time-offset>)
+
+
+define method \< (time1 :: <time-offset>, time2 :: <time-offset>)
time1.total-seconds < time2.total-seconds;
end method \<;
-</td></tr><tr><td>define method \= (time1 :: <time-of-day>, time2 :: <time-of-day>)
+
+
+define method \= (time1 :: <time-of-day>, time2 :: <time-of-day>)
time1.total-seconds = time2.total-seconds;
end method \=;
-</td></tr><tr><td>define method \= (time1 :: <time-offset>, time2 :: <time-offset>)
+
+
+define method \= (time1 :: <time-offset>, time2 :: <time-offset>)
time1.total-seconds = time2.total-seconds;
end method \=;
-</td></tr><tr><td><em>// The angle classes and methods</em>
+
+
+<em>// The angle classes and methods</em>
define abstract class <angle> (<sixty-unit>)
end class <angle>;
-</td></tr><tr><td>define method say (angle :: <angle>) => ()
+
+
+define method say (angle :: <angle>) => ()
let(degrees, minutes, seconds) = decode-total-seconds(angle);
format-out
("%d degrees %d minutes %d seconds",
degrees, minutes, seconds);
end method say;
-</td></tr><tr><td>define class <relative-angle> (<angle>)
+
+
+define class <relative-angle> (<angle>)
end class <relative-angle>;
-</td></tr><tr><td><em>// We need to show degrees for <relative-angle> but we do not need to
-// show minutes and seconds, so we override the method on <angle>
-</em>define method say (angle :: <relative-angle>) => ()
+
+
+<em>// We need to show degrees for <relative-angle> but we do not need to</em>
+<em>// show minutes and seconds, so we override the method on <angle></em>
+define method say (angle :: <relative-angle>) => ()
format-out(" %d degrees", decode-total-seconds(angle));
end method say;
-</td></tr><tr><td>define abstract class <directed-angle> (<angle>)
+
+
+define abstract class <directed-angle> (<angle>)
slot direction :: <string>, init-keyword: direction:;
end class <directed-angle>;
-</td></tr><tr><td>define method say (angle :: <directed-angle>) => ()
+
+
+define method say (angle :: <directed-angle>) => ()
next-method();
format-out(" %s", angle.direction);
end method say;
-</td></tr><tr><td><em>// The latitude and longitude classes and methods</em>
+
+
+<em>// The latitude and longitude classes and methods</em>
define class <latitude> (<directed-angle>)
end class <latitude>;
-</td></tr><tr><td>define method say (latitude :: <latitude>) => ()
+
+
+define method say (latitude :: <latitude>) => ()
next-method();
format-out(" latitude\n");
end method say;
-</td></tr><tr><td>define class <longitude> (<directed-angle>)
+
+
+define class <longitude> (<directed-angle>)
end class <longitude>;
-</td></tr><tr><td>define method say (longitude :: <longitude>) => ()
+
+
+define method say (longitude :: <longitude>) => ()
next-method();
format-out(" longitude\n");
end method say;
-</td></tr><tr><td><em>// The position classes and methods</em>
+
+
+<em>// The position classes and methods</em>
define abstract class <position> (<object>)
-end class <position>;
-</td></tr><tr><td>define class <absolute-position> (<position>)
+end class <position>;
+
+
+define class <absolute-position> (<position>)
slot latitude :: <latitude>, init-keyword: latitude:;
slot longitude :: <longitude>, init-keyword: longitude:;
end class <absolute-position>;
-</td></tr><tr><td>define method say (position :: <absolute-position>) => ()
+
+
+define method say (position :: <absolute-position>) => ()
say(position.latitude);
say(position.longitude);
-end method say;
-</td></tr><tr><td>define class <relative-position> (<position>)
-<em> // Distance is in miles
-</em> slot distance :: <single-float>, init-keyword: distance:;
+end method say;
+
+
+define class <relative-position> (<position>)
+<em> // Distance is in miles</em>
+ slot distance :: <single-float>, init-keyword: distance:;
slot angle :: <angle>, init-keyword: angle:;
end class <relative-position>;
-</td></tr><tr><td><pre>define method say (position :: <relative-position>) => ()
+
+
+<pre>define method say (position :: <relative-position>) => ()
format-out("%d miles away at heading ", position.distance);
say(position.angle);
end method say;
-</pre></td></tr></table>
+</pre></td>
+</tr>
+</table>
</div>
Modified: trunk/www/books/dpg/db_107.html
==============================================================================
--- trunk/www/books/dpg/db_107.html (original)
+++ trunk/www/books/dpg/db_107.html Sun Sep 3 20:05:52 2006
@@ -17,41 +17,75 @@
</div>
<div class="content" id="heading107-0">
-<h1>8.4 The test file</h1>
+<h1>8.4 The test file</h1>
<table>
<tr>
- <th><p>The test file: <code>test.dylan</code>. </p></th>
+ <th>The test file: <code>test.dylan</code>.</th>
</tr>
<tr>
- <td><p>module: timespace</p><p>format-out("Creating an instance of <absolute-position>:\n");</p><p>define variable *my-absolute-position* <br /> = make(<absolute-position>, <br /> latitude: make(<latitude>, <br /> total-seconds: encode-total-seconds(42, 19, 34),<br /> direction: "North"),<br /> longitude: make(<longitude>,<br /> total-seconds: encode-total-seconds(70, 56, 26),<br /> direction: "West")); </p><p>say(*my-absolute-position*);</p><p>format-out("\n"); </p>
- </td>
- </tr>
- <tr>
-<td><p>format-out("Creating an instance of <relative-position>:\n");</p><p>define variable *her-relative-position* <br /> = make(<relative-position>,<br /> distance: 30,<br /> angle: make(<angle>, <br /> total-seconds: encode-total-seconds(90, 5, 0)));</p><p>say(*her-relative-position*); </p><p>format-out("\n");</p>
- </td>
- </tr>
- <tr>
-<td><p>format-out("Creating an instance of <time-offset> in *minus-2-hours*.\n");</p><p>define variable *minus-2-hours* <br /> = make(<time-offset>, total-seconds: - encode-total-seconds (2, 0, 0)); </p>
- </td>
- </tr>
- <tr>
-<td><p>format-out("Creating an instance of <time-offset> in *plus-15-20-45*.\n");</p><p>define variable *plus-15-20-45* <br /> = make(<time-offset>, total-seconds: encode-total-seconds (15, 20, 45)); </p>
- </td>
- </tr>
- <tr>
-<td><p>format-out("Creating an instance of <time-of-day> in *8-30-59*.\n");</p><p>define variable *8-30-59*<br /> = make(<time-of-day>, total-seconds: encode-total-seconds (8, 30, 59));</p>
- </td>
- </tr>
- <tr>
-<td><p>format-out("Adding <time-offset> + <time-offset>: *minus-2-hours* + *plus-15-20-45*:\n");</p><p>decode-total-seconds(*minus-2-hours* + *plus-15-20-45*); </p>
- </td>
- </tr>
- <tr>
-<td><p>format-out("Adding <time-offset> + <time-of-day>: *minus-2-hours* + *8-30-59*:\n");</p><p>decode-total-seconds(*minus-2-hours* + *8-30-59*); </p>
- </td>
- </tr>
- <tr>
-<td><p>format-out("Adding <time-of-day> + <time-offset>: *8-30-59* + *minus-2-hours* :\n");</p><p>decode-total-seconds(*8-30-59* + *minus-2-hours*);</p>
+ <td>
+<pre>
+module: timespace
+
+format-out("Creating an instance of <absolute-position>:\n");
+
+define variable *my-absolute-position*
+ = make(<absolute-position>,
+ latitude: make(<latitude>,
+ total-seconds: encode-total-seconds(42, 19, 34),
+ direction: "North"),
+ longitude: make(<longitude>,
+ total-seconds: encode-total-seconds(70, 56, 26),
+ direction: "West"));
+
+say (*my-absolute-position*);
+
+format-out("\n");
+
+
+format-out("Creating an instance of <relative-position>:\n");
+
+define variable *her-relative-position*
+ = make(<relative-position>,
+ distance: 30,
+ angle: make(<angle>,
+ total-seconds: encode-total-seconds(90, 5, 0)));
+say(*her-relative-position*);
+format-out("\n");
+
+
+format-out("Creating an instance of <time-offset> in *minus-2-hours*.\n");
+
+define variable *minus-2-hours*
+ = make(<time-offset>, total-seconds: - encode-total-seconds (2, 0, 0));
+
+
+format-out("Creating an instance of <time-offset> in *plus-15-20-45*.\n");
+
+define variable *plus-15-20-45*
+ = make(<time-offset>, total-seconds: encode-total-seconds (15, 20, 45));
+
+
+format-out("Creating an instance of <time-of-day> in *8-30-59*.\n");
+
+define variable *8-30-59*
+ = make(<time-of-day>, total-seconds: encode-total-seconds (8, 30, 59));
+
+
+format-out("Adding <time-offset> + <time-offset>: *minus-2-hours* + *plus-15-20-45*:\n");
+
+decode-total-seconds(*minus-2-hours* + *plus-15-20-45*);
+
+
+format-out("Adding <time-offset> + <time-of-day>: *minus-2-hours* + *8-30-59*:\n");
+
+decode-total-seconds(*minus-2-hours* + *8-30-59*);
+
+
+format-out("Adding <time-of-day> + <time-offset>: *8-30-59* + *minus-2-hours* :\n");
+
+decode-total-seconds(*8-30-59* + *minus-2-hours*);
+</pre>
</td>
</tr>
</table>
More information about the chatter
mailing list