Skip to content

rodchenk/xenia

Repository files navigation

Xenia language - just another domain specific language

Eine DSL-Sprache, mit der sich die Webseiten in 2 Minuten erstellen lassen

Die xenia-Sprache ist mit Xtext-Framework v. 2.18 erstellt. Die Sprache erzeugt nach der Ausfuhrung native html Seiten, CSS und JS Files, htaccess und Bilder. Im weiteren Verlauf wird die Unterstutzung von anderen Sprachen und/oder Frameworks (z.B. PHP, Angular) realisiert. Unter Github Page findet man ein Demo.

Get started

  1. Die Erstellung einer Anwendung in xenia beginnt mit Schlüsselwort app gefolgt von dem Namen der Webseite, die auch im Logo erscheint:
app MyFirstApp
  1. Danach muss man feststellen, welche Seiten die Webseite beinhalten soll. Dafur gibt man an:
app MyFirstApp has pages[]
  1. Die Namen der Seiten sind mit @ At-Zeichen zu definieren:
app MyFirstApp has pages[@Home, @News, @Contact, @Admin]
  1. Semantik der Sprache bestimmt, dass die erste Seite, die in der Liste angegeben wird, als Root-Seite gekennzeichnet und entsprechend in .htaccess geschrieben wird.

  2. Um die Verzweigungen zu definieren, muss man ein zusätzliches Block mit Schlusselwort map angeben:

map: [
	Home -> (News, Contact),
	News -> (Contact),
	Contact -> (Home, News)
]
  1. Es ist zu beachten, dass die Seitennamen nun ohne @ angegeben werden und zu den im ersten Block angegebenen Seiten referenziert werden können. Die Eingabe einer nicht definierten Seite in map-Section wird eine Fehlermeldung auslösen.

image

  1. Es stehen zwei Modi zur Verfügung: Entwickler- und Produktionsmodus:
mode: development
# oder
mode: production

Im Entwicklermodus werden einige Werkzeuge angezeigt, wie z.B. Sitemap Visualizer.

image

Ein Beispiel der frisch generierten Webseite ist unter Github Page zu finden.


app Main has pages[
	@Home with modal(@Notification, @Login), 
	@Contact with modal(
		@Message, 
		@Logout with modal(
			@Contact
		)
	), 
	@Message
]
with: "native"
mode: DEV, // or PROD
xml: "/home/user/foliage/map.xml"
map :[
	Home -> (Login),
	Login -> (Home, Contact)
]
info :[
	Home -> mod: "today", freq: "daily",
	News -> mod: "monday"
]

Der AppName wird innerhalb von Logo angezeigt

app foliage has pages [@Home, @News, @Contact]
map: Contact -> (Home, News)

image

Die xenia-Sprache wurde im Rahmen der Abschlussarbeit an der Technischen Hochschule Brandenburg entwickelt.