From: Roger B. <ro...@ei...> - 2001-05-29 13:26:28
|
> LICENSE > > The files in the Gobo Eiffel package are released under > the Eiffel Forum Freeware License. Perhaps you could consider using the Eiffel Forum License rather than the Eiffel Forum Freeware License. The EFL arose out of discussions on the "forum-discuss" list last year, to rework the EFFL so that it could be submitted to OSI for certification as an "OSI-certified Open Source" license. The changes are small. Here is the EFL: Eiffel Forum License, version 1 Permission is hereby granted to use, copy, modify and/or distribute this package, provided that: - copyright notices are retained unchanged - any distribution of this package, whether modified or not, includes this file Permission is hereby also granted to distribute binary programs which depend on this package, provided that: - if the binary program depends on a modified version of this package, you must publicly release the modified version of this package THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT WARRANTY. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE TO ANY PARTY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THIS PACKAGE. Sadly, OSI gives priority to discussing corporate licenses (such as those from Sun and IBM), and the Eiffel Forum License is still on the waiting list more than a year after submission. But there is no doubt that the EFL meets the requirements for OSI certification. > Graphviz could probably be used to generate class inheritance > graphs. Graphiz is an open source graph drawing software... At first I was surprised that you were not suggesting GraVis, which is more powerful and more elegant than Graphviz, and is written in Eiffel. Then, I checked the GraVis website again. When Tower dropped their Eiffel customers, the authors rewrote GraVis in Java. Sad but true. When it was released in 1977, GraVis was ahead of its time. It we'd had Gobo cross-vendor libraries back then, it could have been switched to one of the other Eiffel compilers and we would now have a famous Eiffel application. > > And perhaps a sed script to convert existing code to tab format. > > ... I think the > ! best choice for platform independent language in > ! the context of the development of Gobo Eiffel > ! package is ... Eiffel. What do you think? > > If you want to write such tool, please do. In the meantime, you can use Franck Arnaud's little utility to: 1. Check that lines are indented with tabs, not spaces 2. Check that tabs do not appear other than at the start of a line 3. Check that double-spaces do not appear within Eiffel text It's released to the public domain, and it's so short that I've just pasted it in here. Personally, I prefer indents of 3-spaces, because I've not yet found a way to tell Netscape that tabs are less than 8 characters (to avoid line-wrapping). Sure, you can tell emacs that tabls are 3 characters, but much software is not configurable and assumes 8 characters. Regards, Roger === -- chktab: Check correct usage of spaces and tabs (in Eiffel) -- Public Domain (may be copied, modified and sold freely) -- -- Detected errors: -- * Tab(s) not at the beginning of line: tabs in the middle of the text -- are dependent on user setup and not necessary in Eiffel. -- * Double spaces are redundant too (spaces at the beginning of lines are -- tabs). Double spaces are ignored inside comments. -- -- FA 1996-09-24 indexing description: "Simple program to check correct usage of tabs and spaces" licence: public_domain version: "1996-09" class CHECK_TAB inherit ARGUMENTS end creation make feature { NONE } Usage : STRING is "usage: chktab <in" feature make is -- Root procedure. do if argument_count > 0 then io.put_string(Usage) io.put_new_line else -- process stdin from line := 1 until io.end_of_file -- portability issue loop io.read_line check_line(io.last_string) line := line + 1 end end end feature { NONE } -- Attribute(s) line,column : INTEGER feature { NONE } check_line(str : STRING) is -- Check one line. require valid_str: str /= Void local in_comment : BOOLEAN do from column := 1 variant str.count + 1 - column until column > str.count loop -- misplaced tabs if column > 1 then -- detect comment if str.item(column) = '-' and str.item(column-1) = '-' then in_comment := true end -- tabs if str.item(column) = '%T' and str.item(column-1) /= '%T' then error("tab(s) not at the beginning of line") end -- double spaces if not in_comment then if str.item(column) = ' ' and str.item(column-1) = ' ' then error("double spaces") end end end column := column + 1 end end error(msg : STRING) is -- Print error message. require ok: msg /= Void do io.put_string("-:") io.put_integer(line) io.put_character(':') io.put_integer(column) io.put_character(':') io.put_string(msg) io.put_new_line end end -- class CHECK_TAB === -- Roger Browne - ro...@ei... - Everything Eiffel 19 Eden Park Lancaster LA1 4SJ UK - Phone +44 1524 32428 |