From e041e77a1acef6101cc46f8616b37a80e26e138c Mon Sep 17 00:00:00 2001
From: Sebastian Lobinger <sebastian.lobinger@fu-berlin.de>
Date: Tue, 6 Jun 2017 14:19:50 +0200
Subject: [PATCH] add SAMSApp documentation to README.md #16

---
 README.md | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 99 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index 68f3194..e2a5a3e 100644
--- a/README.md
+++ b/README.md
@@ -84,8 +84,105 @@ gezogen werden.
 
 ### SAMSApp
 
-**TODO**
+#### Methoden
+
+##### Konstruktor
+
+Minimalistischste App:
+```python
+app = SAMSApp(name = 'appname', manifest = {'default_language': 'en'}
+  , langDict = {'en':{}})
+```
+Eine SAMSApp benötigt name (name des python packages oder moduls der app),
+langDict und manifest. Das Dictionary vom manifest muss eine default_language
+definieren, die im langDict enthalten ist.
+Eine derart definierte App beinhaltet keine views und keinen Proxy, macht also
+relativ wenig Sinn.
+In der Regel wird eine SAMSApp eher so aussehen:
+```python
+app = SAMSApp(
+  manifest = {
+    'default_language': 'en',
+    'views': [{'url': 'test/do_nothing', 'function': 'views.do_nothing'}],
+    'menu':[
+      {'url': '',
+        'name_string': menu_main},
+      {'url': 'topic', 'name_string': 'menu_topic',
+        'menu':[
+          {'url': 'topic/subtopic01',
+            'name_string': 'menu_topic_subtopic01'},
+          {'url': 'topic/subtopic02',
+            'name_string': 'menu_topic_subtopic02'}
+        ]
+      }
+    ]
+  }, name = 'test.app',
+  langDict={'en': {'menu_main': 'Home', 'menu_topic': 'Topic',
+  	  'menu_topic_subtopic01': 'Subtopic 01',
+  	  'menu_topic_subtopic02': 'Subtopic 02'},
+  	'de':{'menu_main': 'Startseite'}
+  }
+)
+```
+
+##### lang
+
+```python
+langDict = app.lang(langCode = 'de')
+```
+
+Gibt ein Dictionary für die angeforderte Sprache zurück. Sind Einträge im default
+dictionary und nicht in der Angeforderten Sprache vorhanden, werden diese verwendet. 
+
+##### menu
+
+```python
+# mandatory
+menuEntries = SAMSApp.menu(langCode = 'de')
+# optional
+menuEntries = SAMSApp.menu(langCode = 'de', urlPrefix = '/app/')
+```
+Gibt eine Liste von Menüeinträgen zurück. Jeder Eintrag ist ein Dictionary.
+Dieses Dictionary enthält immer 'url' und 'name' und kann außerdem wieder
+über 'menu' ein Menü enthalten. Der Anzeigename ('name') ist entweder der zu
+langCode passende oder der, der defaultSprache.
+
+#### Eigenschaften
+
+##### module
+
+Das zur App gehörende python Modul. Führt zu einer Exception falls das
+Modul nicht geladen werden kann,
+
+##### name
+
+Der Name der app.
+
+##### blueprint
+
+Das flask Blueprint der app.
+
+##### manifest
+
+Das manifest Dictionary. Hier wird folgendes festgelegt:
+
+- Standardsprache über ```default_language```
+- Menüeinträge über ```menu```
+- URL View regeln  über ```views```
+- proxies
+
+Die Menüeinträge bestehen jeweils aus einem Eintrag 'url' und dem 'name_string'
+Die zeichenkette in 'name_string' wird über einen Eintrag im langDict aufgelöst.
+
+Eine View besteht aus 'url' und dem Namen der function in 'function'.
+
+Die ist eine Liste von Proxy definitionen. Die Proxydefinition wird als proxySpec
+für SAMSProxy verwendet.
+
+##### proxies
+
+Eine Liste an SAMSProxy Objekten erzeugt aus den Spezifikationen im Manifest.
 
-### SAMSProxy
+### SAMProxy
 
 **TODO**
\ No newline at end of file
-- 
GitLab