Files
mercury/samples/diff
Paul Bone fc4b3ff196 Remove .cvsignore files
Remove old .cvsignore files, moving their contents to .gitignore files.
There are now no .cvsignore files in the repository.

I've also sorted some .gitignore files and avoided repeating a pattern in a
subdirectory's .gitignore file when it is already mentioned in the parent
.gitignore file.
2017-04-04 12:05:56 +10:00
..
2017-04-04 12:05:56 +10:00
2015-12-15 01:44:08 +11:00
2015-12-15 01:44:08 +11:00
2015-12-15 01:44:08 +11:00
2015-12-15 01:44:08 +11:00
2015-12-15 01:44:08 +11:00
2015-12-15 01:44:08 +11:00
2015-12-15 01:44:08 +11:00
2015-12-15 01:44:08 +11:00
2015-12-15 01:44:08 +11:00

This is now looking a LOT more like the standard "diff" utility.  There
are a few features missing (e.g. we can't do directory diffs), but apart
from that, it seems to work.

The major changes in this version are:

	- We now accept command-line options.  In particular, we
	  recognise all options that are accepted by GNU diff,
	  though some of them result in error reports and a few
	  which have do nothing to do with the output format or
	  semantics, but are merely for efficiency, are accepted
	  and ignored.

	- We support different output formats, in particular all
	  of the output formats supported by GNU diff. There are
	  a number of modifiers to the output formats (for example,
	  --show-function-line) which we don't yet support.

	- We have a new diff algorithm, based on the one by Eugene
	  Myers.  See myers.m for details.

	- Just about everything has been modified to support the
	  above changes.

	- Lots of cleanups, lots more documentation.

Examine the file TODO to see what's still missing.

Andrew Bromage  13 September 1998

===========================================================================

The version which appears here is a re-hacked version of Marnix Klooster's
hacked version of my original.  Special thanks to him for making my code
a lot more maintainable than it originally was.  :-)

The changes from the previous version:

	- Bug fix for a problem which was causing it to bomb out if
	  the two files were identical.

	- Changed indenting so it more closely matches the Mercury
	  compiler coding standard.

	- Update to use unique arrays (now called array.m).

	- Various minor documentation tweaks.

Oh, and it still runs in nowhere near the speed of GNU diff.

Andrew Bromage  28 Jul 1997

===========================================================================

The Mercury modules in this directory have been derived from the
'diff' sample distributed with Mercury 0.6.  That sample carries the
following copyright information, description and to-do list (in
diff.m):


%-----------------------------------------------------------------------------%
% Copyright (C) 1995 The University of Melbourne.
% This file may only be copied under the terms of the GNU General
% Public License - see the file COPYING in the Mercury distribution.
%-----------------------------------------------------------------------------%

% File: diff.m
% Main author: bromage

% Something very similar to the standard diff utility.  Sort of.  :-)

% On the still-to-do list:
%	- Add command-line options.  Probably:
%		--ignore-all-space
%		--ignore-blank-lines
%		--ignore-case
%		--rcs
%	  What others are easy and don't break up the code?


The major changes I made were

* Moved code for manipulating and displaying diffs to a separate
  module called diffs.m (and changed their calls in diff.m).  The type
  'lcss,' needed both by the rest of lcss.m and by diffs.m, was moved
  to a new module lcsstype.m.

* Made lcss.m independent of files, and allowed it to process any kind
  of list by adding polymorphism.  (The file processing calls have
  been moved to diff.m.)

* Added type synonyms 'pos' and 'segment' in diffs.m to clarify the
  types.  Renamed 'single_diff' to 'edit'.

* Added end-of-file match to the generated lcss, thereby allowing the
  to_diff predicate to be simplified considerably.

* Numbered lists from 0 internally in the lcss-algorithm.  This made
  to_diff simpler still, but also forced changes in the diff-printing
  part.

* Removed the swapping in find_lcss, because it doesn't seem to help.

* The array(string) representing a file in file.m was also renumbered
  to begin with 0.

* Added and corrected comments.

Have fun,

 <><

Marnix
--
Marnix Klooster
marnix@worldonline.nl