A wiki-based IDE for literate modeling with Clafer http://github.com/gsdlab/claferwiki
|Latest on Hackage:||0.4.5|
This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.
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 model publishing environment 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.
Claferwiki is also integrated with other Clafer Web Tools, allowing to open the current page in:
- Clafer Integrated Development Environment (ClaferIDE),
- Clafer Configurator (ClaferConfigurator),
- Multi-Objective Visualizer and Explorer
If the demo is down or you encounter a bug, please email Michal Antkiewicz.
- Michał Antkiewicz, Main developer. Requirements, development, architecture, testing, technology transfer.
- Chris Walker, co-op student May-Aug, 2012. Developer of Clafer Wiki, HTML and GraphViz generators.
- Jimmy Liang, Clafer compiler support, including multi-fragment compilation, source/AST/IR traceability, parsing and compilation error reporting.
Getting the Clafer Wiki
Clafer can be installed either from Hackage or from the source code.
Dependencies for running
Regardless of the installation method, the following are required:
Installation from Hackage
Stack is the only requirement: no other Haskell tooling needs to be installed because stack will automatically install everything that's needed.
stack install claferwiki
cabal install claferwiki-0.4.5 -fhighlighting -fhttps -fplugins -fnetwork-uri
cd <cabal's lib or share folder>(
C:\Users\<user>\AppData\Roaming\cabal\i386-windows-ghc-8.0.2\claferwiki-0.4.5on Windows or
make install to=<target directory>
- this will copy the wiki files
Important: branches must correspond
All related projects are following the simultaneous release model.
master contains releases, whereas the branch
develop contains code under development.
When building the tools, the branches should match.
Releases from branches 'master
are guaranteed to work well together.
Development versions from branches develop` should work well together but this might not always be the case.
Installation from source code
- In some
<source directory>where you want to have the wiki source code * execute
git clone git://github.com/gsdlab/claferwiki.git
- install clafer from source code
make install to=<target directory>
this will copy the wiki files
<target directory>, execute
git initto create a git repository for the wiki data
Wiki can be configured by editing the
gitit.cnf file. See Configuring and customizing gitit.
stack exec gitit -- -f gitit.cnfto start the wiki server.
claferwiki.shto start the wiki server.
The script can either use gitit and clafer installed in the user package space (default) or in the sandbox. The sandbox location can be provided using the parameter
--sandbox as follows:
./claferwiki.sh --sandbox <relative or absolute path to the sandbox>, or
./claferwiki.sh --sandboxwhich will use the default sandbox location
- in the
make update to=<target directory>* this will keep the directory structure and your existing git repository with the wiki contents
- 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:
<here goes your model fragment>
The model overview, including the graph, stats, and download links, can be added as follows:
<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
claferwiki Version 0.4.5 released on Mar 13, 2017
claferwiki Version 0.4.4 released on Jun 23, 2016
claferwiki Version 0.4.3 released on Dec 22, 2015
claferwiki Version 0.4.2.1 released on Oct 20, 2015
Updated to clafer 0.4.2.1, added stack instructions to README.
claferwiki Version 0.4.2 released on Oct 16, 2015
claferwiki Version 0.4.1 released on Sep 1, 2015
claferwiki Version 0.4.0 released on Jul 28, 2015
claferwiki Version 0.3.10 released on April 24, 2015
claferwiki Version 0.3.9 released on March 06, 2015
claferwiki Version 0.3.8 released on January 27, 2015
claferwiki Version 0.3.7 released on October 23, 2014
claferwiki Version 0.3.6.1 released on July 08, 2014
claferwiki Version 0.3.6 released on May 23, 2014
claferwiki Version 0.3.5 released on January 20, 2014
claferwiki Version 0.3.4 released on September 20, 2013
claferwiki Version 0.3.3 released on August 14, 2013