summaryrefslogtreecommitdiff
path: root/uml
diff options
context:
space:
mode:
authorFrancois Perrad <francois.perrad@gadz.org>2010-10-15 16:24:37 +0200
committerFrancois Perrad <francois.perrad@gadz.org>2010-10-15 16:24:37 +0200
commit2f0f999ed3a3a1dc1fe0d1ad5f06786a87574614 (patch)
treebe64d9db45939fb32640675d7644e75f78ea3eda /uml
parentremove params level (diff)
downloadspore-specifications-2f0f999ed3a3a1dc1fe0d1ad5f06786a87574614.tar.gz
graphical representation (UML Class Diagram) of the Rx schema.
png <-- dot <-- lua-Coat
Diffstat (limited to 'uml')
-rw-r--r--uml/Makefile10
-rw-r--r--uml/api.dot13
-rw-r--r--uml/api.lua29
-rw-r--r--uml/api.pngbin0 -> 25676 bytes
4 files changed, 52 insertions, 0 deletions
diff --git a/uml/Makefile b/uml/Makefile
new file mode 100644
index 0000000..219141c
--- /dev/null
+++ b/uml/Makefile
@@ -0,0 +1,10 @@
+
+api.png: api.dot
+ dot -T png -o api.png api.dot
+
+api.dot: api.lua
+ coat2dot api > api.dot
+ perl -i.bak -pe "s/_method/method/g" api.dot
+
+clean:
+ rm *.bak *.dot *.png \ No newline at end of file
diff --git a/uml/api.dot b/uml/api.dot
new file mode 100644
index 0000000..4d2a3dc
--- /dev/null
+++ b/uml/api.dot
@@ -0,0 +1,13 @@
+digraph {
+
+ node [shape=record];
+
+ "Method"
+ [label="{\N|authentication : boolean\lbase_url : string\ldescription : string\lexpected : table&lt;number&gt;\lformat : table&lt;string&gt;\lmethod : string\loptional : table&lt;string&gt;\lpath : string\lrequired : table&lt;string&gt;\l}"];
+
+ "API"
+ [label="{\N|authentication : boolean\lauthority : string\lbase_url : string\ldescription : string\lformat : table&lt;string&gt;\lmeta : table&lt;string,string&gt;\lmethods : table&lt;string,Method&gt;\lname : string\lversion : string\l}"];
+ "API" -> "Method" // attr isa table<string,Method>
+ [label = "methods", arrowhead = none, arrowtail = odiamond];
+
+}
diff --git a/uml/api.lua b/uml/api.lua
new file mode 100644
index 0000000..16f187a
--- /dev/null
+++ b/uml/api.lua
@@ -0,0 +1,29 @@
+
+require 'Coat'
+require 'Coat.Types'
+
+class 'Method'
+
+has._method = { is = 'ro', isa = 'string', required = true }
+has.path = { is = 'ro', isa = 'string', required = true }
+has.expected = { is = 'ro', isa = 'table<number>' }
+has.required = { is = 'ro', isa = 'table<string>' }
+has.optional = { is = 'ro', isa = 'table<string>' }
+has.base_url = { is = 'ro', isa = 'string' }
+has.description = { is = 'ro', isa = 'string' }
+has.authentication = { is = 'ro', isa = 'boolean' }
+has.format = { is = 'ro', isa = 'table<string>' }
+
+
+class 'API'
+
+has.name = { is = 'ro', isa = 'string', required = true }
+has.methods = { is = 'ro', isa = 'table<string,Method>', required = true }
+has.base_url = { is = 'ro', isa = 'string' }
+has.description = { is = 'ro', isa = 'string' }
+has.authentication = { is = 'ro', isa = 'boolean' }
+has.version = { is = 'ro', isa = 'string' }
+has.authority = { is = 'ro', isa = 'string' }
+has.format = { is = 'ro', isa = 'table<string>' }
+has.meta = { is = 'ro', isa = 'table<string,string>' }
+
diff --git a/uml/api.png b/uml/api.png
new file mode 100644
index 0000000..b2045c9
--- /dev/null
+++ b/uml/api.png
Binary files differ