claferwiki: A wiki-based IDE for literate modeling with Clafer

[ library, mit, wiki ] [ Propose Tags ]

A wiki-based IDE for literate modeling with Clafer. A Plugin for the Gitit wiki which collects code blocks written in Clafer (.clafer), compiles them, renders into HTML and Dot, and replaces the code blocks with the results.

[Skip to Readme]
Versions 0.3.5,, 0.3.6,, 0.3.7, 0.3.8, 0.3.9, 0.3.10, 0.4.0, 0.4.1, 0.4.2,, 0.4.3, 0.4.4, 0.4.5 (info)
Dependencies base (>= && <5), clafer (==0.3.5), containers (>=, directory (>=, gitit (>=, MissingH (>=, mtl (>=2.1.2), network (>=, pandoc-types (==1.10.*), process (>=, SHA (>=1.6.1), split (>=0.2.2), time (>=, transformers (>=, utf8-string (>=0.3.7) [details]
License MIT
Copyright Michal Antkiewicz, Chris Walker, Luke Michael Brown
Author Michal Antkiewicz, Chris Walker, Luke Michael Brown
Category Wiki
Home page
Source repo head: git clone git://
Uploaded by mantkiew at Thu Jan 30 18:39:05 UTC 2014
Distributions NixOS:0.4.5
Downloads 4258 total (43 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2016-12-18 [all 6 reports]
Hackage Matrix CI


  • Network
    • Gitit
      • Plugin
        • Network.Gitit.Plugin.ClaferWiki


Maintainer's Corner

For package maintainers and hackage trustees

Readme for claferwiki-0.3.5

[back to package description]

Clafer Wiki =========== v0.3.5.20-01-2014 ClaferWiki is a wiki system integrated with Clafer compiler. Clafer is a lightweight yet powerful structural modeling language. ClaferWiki allows for embedding Clafer model fragments in wiki pages and provides model authoring support including code highlighting, parse and semantic error reporting, hyperlinking from identifier use to its definition, and graphical view rendering. ClaferWiki supports informal-to-formal modeling, that is, gradually refining parts of specification in natural language into a Clafer model fragments. ClaferWiki supports literate modeling - both the rich text and the model fragments can be freely mixed. Informal-to-formal modeling is important during domain modeling. Also, ClaferWiki acts as a collaborative, lightweight, web-based integrated development environment (IDE) for Clafer. In addition to code highlighting, error reporting, hyperlinking, and graphical view rendering, it also provides model versioning and distributed online/offline editing capabilities as it is based on the Git distributed version control system and the Gitit wiki.

Live demo

Try me! If the demo is down or you encounter a bug, please email Michal Antkiewicz. Contributors ------------

  • Chris Walker, co-op student May-Aug, 2012. Developer of Clafer Wiki, HTML and GraphViz generators.
  • Michał Antkiewicz, Research Engineer. Requirements, development, architecture, testing, technology transfer.
  • Jimmy Liang, MSc. Candidate. Clafer compiler support, including multi-fragment compilation, source/AST/IR traceability, parsing and compilation error reporting. Getting Clafer Tools -------------------- Binary distributions of the release 0.3.5 of Clafer Tools for Windows, Mac, and Linux, can be downloaded from Clafer Tools - Binary Distributions. Clafer Wiki requires Haskell Platform and MinGW to run on Windows. In case these binaries do not work on your particular machine configuration, the tools can be built from source code, as described below.

Dependencies for running

Installation from Hackage

  1. cabal update
  2. cabal install claferwiki

Installation from source code

  1. install the Haskell Platform
  2. install Git
  3. install Clafer compiler from source code in some <source directory> where you want to have the wiki source code,
  4. execute git clone git://
  5. execute make dependencies to install pandoc with code highlighting support and gitit
  6. execute make install to=<target directory>
    • this will copy the wiki files and cabal install the package claferwiki

Important: Branches must correspond

All related projects are following the simultaneous release model. The branch master contains releases, whereas the branch develop contains code under development. When building the tools, the branches should match. Releases from branches 'masterare guaranteed to work well together. Development versions from branchesdevelop` should work well together but this might not always be the case. Usage =====

  • in the <target directory> execute to start the wiki server Wiki can be configured by editing the gitit.cnf file. See Configuring and customizing gitit. Update ------
  • in the <source directory> execute git pull
  • execute make update to=<target directory>
    • this will keep the directory structure and your existing git repository with the wiki contents Features -------- <a href=""> <img src="" width="30%" alt="Telematics Example, Module Overview"> </a> <a href=""> <img src="" width="30%" alt="Telematics Example, Module Details" > </a>
  • syntax coloring for Clafer models
  • linking from clafer name references within model fragments to clafer definitions
  • linking from clafer names used in wiki text to clafer definitions
  • pop-up information about clafers in graph rendering
  • translating constraints to controlled natural language and showing as pop-up?
  • overview with graph rendering, statistics, and download links for the entire model source and self-contained HTML rendering
  • integration with ClaferMooVisualizer Using Clafer Wiki ----------------- For general usage information for the GitIt wiki see the README. You can insert code blocks with clafer code anywhere in the page as follows: ```clafer <here goes your model fragment> ``` The model overview, including the graph, stats, and download links, can be added as follows: ``` {.clafer .summary} <the contents in this block are ignored> ``` To have the code blocks correctly processed, make sure to add an empty line before and after the code block, even if the code block is the last element on the page. How it works ------------
  • Clafer Wiki is a set of plugins for the GitIt wiki which processes clafer code blocks and invokes the Clafer compiler.
  • All code blocks on a single page are interpreted as a single module.
  • The Clafer compiler generates HTML rendering of each code block.
  • The rendering is enriched with:
    • links to the definitions for super clafers (inheritance)
    • links to the types of references
    • compiler error highlights Need help? ==========
  • See language's website for news, technical reports and more
  • Take a look at (incomplete) Clafer wiki
  • Browse example models in the test suite and MOO examples
  • Post questions, report bugs, suggest improvements GSD Lab Bug Tracker. Tag your entries with claferwiki (so that we know what they are related to) and with michal (so that Michał gets a notification).