summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Benjamin Barenblat <bbaren@mit.edu>2013-04-21 15:58:34 -0400
committerGravatar Benjamin Barenblat <bbaren@mit.edu>2013-04-21 15:58:34 -0400
commit7d189e95615b37106d504415ce21b8eec8710080 (patch)
tree8a555962766babe4325305ced0620cc5ddf2e786
parente65f4fa2ebe4ded5f15f59e729736879874e34a4 (diff)
Forum: Functorize entry point
-rw-r--r--forum/forum.ur24
-rw-r--r--forum/forum.urs8
-rw-r--r--main.ur18
3 files changed, 33 insertions, 17 deletions
diff --git a/forum/forum.ur b/forum/forum.ur
index f680ec4..8cb11da 100644
--- a/forum/forum.ur
+++ b/forum/forum.ur
@@ -16,13 +16,21 @@ details.
You should have received a copy of the GNU Affero General Public License along
with 6.947. If not, see <http://www.gnu.org/licenses/>. *)
+functor Make(Template : sig
+ val generic : option string -> xbody -> page
+end) = struct
+
open Styles
-fun main () : xbody =
- <xml>
- <div class={content}>
- <p>
- Coming soon!
- </p>
- </div>
- </xml>
+fun main () : transaction page =
+ return (
+ Template.generic (Some "Forum") <xml>
+ <div class={content}>
+ <p>
+ Coming soon!
+ </p>
+ </div>
+ </xml>
+ )
+
+end
diff --git a/forum/forum.urs b/forum/forum.urs
index 1dad9a7..bf25c4f 100644
--- a/forum/forum.urs
+++ b/forum/forum.urs
@@ -16,4 +16,10 @@ details.
You should have received a copy of the GNU Affero General Public License along
with 6.947. If not, see <http://www.gnu.org/licenses/>. *)
-val main : unit -> xbody
+functor Make(Template : sig
+ val generic : option string -> xbody -> page
+end) : sig
+
+val main : unit -> transaction page
+
+end
diff --git a/main.ur b/main.ur
index 7fe5845..a64254b 100644
--- a/main.ur
+++ b/main.ur
@@ -18,6 +18,16 @@ with 6.947. If not, see <http://www.gnu.org/licenses/>. *)
open Styles
+structure Forum = Forum.Make(struct
+ fun generic (pageName : option string) (content : xbody) : page =
+ Template.generic pageName <xml>
+ {Menu.header (make [#Forum] ())}
+ {content}
+ </xml>
+ end)
+
+val forum = Forum.main
+
fun main () =
return (Template.generic None <xml>
{Menu.header (make [#Main] ())}
@@ -29,11 +39,3 @@ fun main () =
</p>
</div>
</xml>)
-
-and forum () = forumWorker Forum.main
-and forumWorker (f : unit -> xbody) =
- return (Template.generic (Some "Forum") <xml>
- {Menu.header (make [#Forum] ())}
- {f ()}
- </xml>)
-