Skip to content

Instantly share code, notes, and snippets.

@sivajag
Created June 25, 2011 17:30
Show Gist options
  • Save sivajag/1046688 to your computer and use it in GitHub Desktop.
Save sivajag/1046688 to your computer and use it in GitHub Desktop.
core.clj
(defproject address_book "1.0.0-SNAPSHOT"
:description "Address Book"
:dependencies [[org.clojure/clojure "1.2.1"]
[org.clojure/clojure-contrib "1.2.0"]
[compojure "0.6.2"]
[ring/ring-core "0.3.7"]
[ring/ring-jetty-adapter "0.2.3"]]
:dev-dependencies [[swank-clojure "1.2.1"]]
:main address-book.core)
(ns address-book.core
(:gen-class)
(:use [compojure.core]
[ring.adapter.jetty])
(:require [compojure.route :as route]))
(defroutes rts
(GET "/" [] "Address Book")
(route/not-found "Page not found"))
(def app
rts)
(defn -main []
(run-jetty app {:port 8080
:join? false}))
;;(swank.swank/start-server "/tmp/swank.port" :port 4005 :dont-close true)
(ns address-book.address
(:use [address-book.utils number])
(:refer-clojure :exclude (find create)))
(def STORE (atom {:1 {"id" :1 "name" "Siva Jagadeesan" "street1" "88 7th" "street2" "#203" "city" "Cupertino" "country" "USA" "zipcode" 98802}}))
(defn to-keyword [num]
(if-not (keyword? num)
(keyword (str num))
num))
(defn random-number []
(to-keyword (.getTime (Date.))))
(defn create [attrs]
(let [id (random-number)
new-attrs (merge {:id id} attrs)]
(swap! STORE merge {id new-attrs})
new-attrs))
(defn find-all []
(vals @STORE))
(defn find [id]
((to-keyword id) @STORE))
(defn update [id attrs]
(let [updated-attrs (merge (find id) attrs)]
(swap! STORE assoc (to-keyword id) updated-attrs)
updated-attrs))
(defn delete [id]
(let [old-attrs (find id)]
(swap! STORE dissoc (to-keyword id))
old-attrs))
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>My Address Book</title>
<link href="/css/address.css" media="screen" rel="stylesheet" type="text/css" />
<link href="/css/ui-lightness/jquery-ui-1.8.4.custom.css" media="screen" rel="stylesheet" type="text/css" />
<script src="/js/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="/js/jquery-ui-1.8.4.custom.min.js" type="text/javascript"></script>
<script src="/js/jquery.form.js" type="text/javascript"></script>
<script src="/js/address_book.js" type="text/javascript"></script>
<script src="/js/address_list.js" type="text/javascript"></script>
</head>
<body>
<div id="wrap">
<div id="header"><h1>My Address Book</h1></div>
<div id="main">
<table id="address">
<tr><td>Name</td><td id="name"/></tr>
<tr><td>Street1</td><td id="street1"/></tr>
<tr><td>Street2</td><td id="street2"/></tr>
<tr><td>City</td><td id="city"/></tr>
<tr><td>Country</td><td id="country"/></tr>
<tr><td>ZipCode</td><td id="zipcode"/></tr>
</table>
<table id="address-list" border="1" width="100%" rules="rows" align="center">
<tr>
<th>Name</th>
<th>Action</th>
</tr>
<tr>
<td >row 1, cell 1</td>
<td align="center">row 1, cell 2</td>
</tr>
</table>
</div>
<div id="sidebar">
<form id="address-form" class="formular" method="post" action="/addresses">
<fieldset class="login">
<legend>New Address</legend>
<div>
<label for="name">Name</label> <input type="text" id="name" name="name">
</div>
<div>
<label for="street1">Street1</label> <input type="text" id="street1" name="street1">
</div>
<div>
<label for="street2">Street2</label> <input type="text" id="street2" name="street2">
</div>
<div>
<label for="city">City</label> <input type="text" id="city" name="city">
</div>
<div>
<label for="country">Country</label> <input type="text" id="country" name="country">
</div>
<div>
<label for="zipcode">ZipCode</label> <input type="text" id="zipcode" name="zipcode">
</div>
<input class="submit" type="submit" value="Create"/>
</fieldset>
</form>
</div>
<div id="edit-dialog" >
<form id="edit-address-form" class="formular" method="put" action="/addresses">
<fieldset class="login">
<legend>Edit Address</legend>
<div>
<label for="name">Name</label> <input type="text" id="name" name="name">
</div>
<div>
<label for="street1">Street1</label> <input type="text" id="street1" name="street1">
</div>
<div>
<label for="street2">Street2</label> <input type="text" id="street2" name="street2">
</div>
<div>
<label for="city">City</label> <input type="text" id="city" name="city">
</div>
<div>
<label for="country">Country</label> <input type="text" id="country" name="country">
</div>
<div>
<label for="zipcode">ZipCode</label> <input type="text" id="zipcode" name="zipcode">
</div>
<input class="submit" type="submit" value="Update"/>
</fieldset>
</form>
</div>
<div id="footer">
<p><a href="TechbehindTech.com">TechBehindTech</a> -- Siva Jagadeesan</p>
</div>
</div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment