Eiffel-Loop news (June 2016)
First launched in 2003, Eiffel-Loop is a collection of Eiffel libraries, example programs and development tools consisting of over 435 thousand code words* in more than 1700 classes. It also includes a sophisticated build system written in Python.
New release available
Eiffel-Loop version 1.3.4 is now available on github
New website in progress
I am currently doing a complete redesign of the Eiffel-Loop website which will be unveiled shortly. The website is being repurposed as primarily a way to explore the Eiffel-Loop contents repository and will be integrated with github.
This project is being carried out with the development of a general purpose Eiffel orientated repository publishing tool that might be of interest to other repository developers. It is described below.
New Eiffel code repository publishing tool
Work is in progress on a new repository publishing tool called 'Eiffel-View'. Eiffel-View will generate a website that will offer a superior Eiffel code repository browsing experience then that offered by github.
I have outlined here the expected features that will be delivered with each new version. The goals of this project are realistic as most of the code can be taken from existing tools in Eiffel-Loop.
- A Eiffel-View project will be configured from a single Pyxis configuration file. The config file allows you to define named modules (source trees) grouped by category. The category is derived from the relative Eiffel source path by propercasing the first path step. For example: Library, Example, Tool, Test etc.
- The repository website is generated using two html templates that use the Evolicity template language (Part of Eiffel-Loop). The first template is for the module indexing pages and the second for the source code view pages.
- It is recommended to use the Prism syntax highlighter for the source code files. Prism has good support for the Eiffel language. To facilitate the use of Prism, Eiffel-View will output a flattened form of the repository directory structure, so all the source code html files can be put into a single sub-directory. To do this the code files will be uniquely named using the following format:
Here 'identifier' is a string composed of the first two letters of each path step between the initial and last step. 'category' has been defined above. 'classname' is the normal eiffel class file name minus the .e extension.
- The home page will be a site map of all the modules organised by category: Library, Tool, Example, Test etc. Category names are determined by taking the first step of each source tree relative to the repository root.
- Each page will have a contents consisting of relative cluster directory paths. Then follows a list of classes each hyperlinked to a syntax highlighted html source code file. The classes are grouped by directory path. Any class that has a description that is neither empty nor matching the default entry, is displayed below the class link. See screenshots below.
- The display of the class description will follow some implicit formatting rules. If the text has an indent of 1 relative to the description field marker, then the text is displayed as a normal paragraph. However if the text is indented any deeper it will be assumed to be a code fragment or program output fragment and will be formatted as a highlighted block quote using a fixed-width font. See screenshots below.
- The generator will have an optional automatic ftp upload facility
- Some classes found in the library source tree will have a list of hyperlinked client classes found under any of the other source tree categories, which might be Tool, Test or Example programs. This allows you to instantly see an example of the usage of a library class if it is available somewhere.
- Eiffel-View will be integrated with another tool that allows you use the Thunderbird email client to author module documentation. This assumes you have an email address associated with the repository website. You make a 'www' subfolder under the account and beneath that you have a directory structure that corresponds to the repository directory structure. You create emails containing the documentation and then move it into the appropriate account subfolder for the module. An export tool will then extract the html bodies and save them in the repository using the file extension 'body' and the email subject as the file name. These body files are then automatically incorporated into the output of Eiffel-View as per module documentation. (This tool is already being used to author the contents of the myching.software website)
These screenshots are of hand crafted mockup using the output of an existing index generation tool.
- Code words include keywords, identifier words and quoted strings, but excludes comments and indexing notes.
Eifel-View repository publisher
I have abandoned the idea of integrating Eifel-View with github except for a single link to the repository homepage. Prism does a much better job of presenting Eiffel code.