r73757 - in /branches/upstream/libtext-levenshteinxs-perl: ./ current/ current/Changes current/LevenshteinXS.pm current/LevenshteinXS.xs current/MANIFEST current/META.yml current/Makefile.PL current/README current/test.pl

gregoa at users.alioth.debian.org gregoa at users.alioth.debian.org
Thu Apr 28 23:54:49 UTC 2011


Author: gregoa
Date: Thu Apr 28 23:54:43 2011
New Revision: 73757

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=73757
Log:
[svn-inject] Installing original source of libtext-levenshteinxs-perl (0.03)

Added:
    branches/upstream/libtext-levenshteinxs-perl/
    branches/upstream/libtext-levenshteinxs-perl/current/
    branches/upstream/libtext-levenshteinxs-perl/current/Changes
    branches/upstream/libtext-levenshteinxs-perl/current/LevenshteinXS.pm
    branches/upstream/libtext-levenshteinxs-perl/current/LevenshteinXS.xs
    branches/upstream/libtext-levenshteinxs-perl/current/MANIFEST
    branches/upstream/libtext-levenshteinxs-perl/current/META.yml
    branches/upstream/libtext-levenshteinxs-perl/current/Makefile.PL
    branches/upstream/libtext-levenshteinxs-perl/current/README
    branches/upstream/libtext-levenshteinxs-perl/current/test.pl

Added: branches/upstream/libtext-levenshteinxs-perl/current/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libtext-levenshteinxs-perl/current/Changes?rev=73757&op=file
==============================================================================
--- branches/upstream/libtext-levenshteinxs-perl/current/Changes (added)
+++ branches/upstream/libtext-levenshteinxs-perl/current/Changes Thu Apr 28 23:54:43 2011
@@ -1,0 +1,13 @@
+Revision history for Perl extension Text::LevenshteinXS.
+
+0.03  Tue Jun 29 14:42:00 2004
+	- move variable declaration to fix SGI compile error.
+
+0.02  Sat Mar 06 10:54:00 2004
+	- short circuits added for special cases to increase
+		speed.
+
+0.01  Wed Mar 26 10:23:49 2003
+	- original version; created by h2xs 1.21 with options
+		-n Text::LevenshteinXS
+

Added: branches/upstream/libtext-levenshteinxs-perl/current/LevenshteinXS.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libtext-levenshteinxs-perl/current/LevenshteinXS.pm?rev=73757&op=file
==============================================================================
--- branches/upstream/libtext-levenshteinxs-perl/current/LevenshteinXS.pm (added)
+++ branches/upstream/libtext-levenshteinxs-perl/current/LevenshteinXS.pm Thu Apr 28 23:54:43 2011
@@ -1,0 +1,75 @@
+package Text::LevenshteinXS;
+
+use strict;
+use warnings;
+use Carp;
+
+require Exporter;
+require DynaLoader;
+use AutoLoader;
+
+our @ISA = qw(Exporter DynaLoader);
+
+our %EXPORT_TAGS = ( 'all' => [ qw(
+	
+) ] );
+
+our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
+
+our @EXPORT = qw(
+distance
+);
+our $VERSION = '0.03';
+
+bootstrap Text::LevenshteinXS $VERSION;
+
+1;
+__END__
+
+=head1 NAME
+
+Text::LevenshteinXS - An XS implementation of the Levenshtein edit distance
+
+=head1 SYNOPSIS
+
+ use Text::LevenshteinXS qw(distance);
+
+ print distance("foo","four");
+ # prints "2"
+
+ print distance("foo","bar");
+ # prints "3"
+
+
+=head1 DESCRIPTION
+
+This module implements the Levenshtein edit distance in a XS way.
+
+The Levenshtein edit distance is a measure of the degree of proximity between two strings.
+This distance is the number of substitutions, deletions or insertions ("edits") 
+needed to transform one string into the other one (and vice versa).
+When two strings have distance 0, they are the same.
+A good point to start is: <http://www.merriampark.com/ld.htm>
+
+
+=head1 CREDITS
+
+All the credits go to Vladimir Levenshtein the author of the algorithm and to 
+Lorenzo Seidenari who made the C implementation <http://www.merriampark.com/ldc.htm>
+
+
+=head1 SEE ALSO
+
+Text::Levenshtein , Text::WagnerFischer , Text::Brew , String::Approx
+
+
+=head1 AUTHOR
+
+Copyright 2003 Dree Mistrut <F<dree at friul.it>>
+Modifications Copyright 2004 Josh Goldberg <F<josh at 3io.com>>
+
+This package is free software and is provided "as is" without express
+or implied warranty.  You can redistribute it and/or modify it under 
+the same terms as Perl itself.
+
+=cut

Added: branches/upstream/libtext-levenshteinxs-perl/current/LevenshteinXS.xs
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libtext-levenshteinxs-perl/current/LevenshteinXS.xs?rev=73757&op=file
==============================================================================
--- branches/upstream/libtext-levenshteinxs-perl/current/LevenshteinXS.xs (added)
+++ branches/upstream/libtext-levenshteinxs-perl/current/LevenshteinXS.xs Thu Apr 28 23:54:43 2011
@@ -1,0 +1,76 @@
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+/****************************************************/
+/* Levenshtein Distance Algorithm		    */
+/* C Implementation by Lorenzo Seidenari	    */
+/* http://www.merriampark.com/ldc.htm		    */
+/* modified by dree				    */
+/****************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+
+int levenshtein_distance(char *s,char*t);
+int minimum(int a,int b,int c);
+
+int levenshtein_distance(char *s,char*t)
+
+/*Compute levenshtein distance between s and t*/
+{
+  //Step 1
+  int k,i,j,n,m,cost,*d,distance;
+  if (strcmp(s,t) == 0) {return 0;}
+  n=strlen(s); 
+  m=strlen(t);
+  if(n==0) {return m;}
+  if(m==0) {return n;}
+
+  d=malloc((sizeof(int))*(m+1)*(n+1));
+  m++;
+  n++;
+  //Step 2	
+  for(k=0;k<n;k++)
+	d[k]=k;
+  for(k=0;k<m;k++)
+      d[k*n]=k;
+  //Step 3 and 4	
+  for(i=1;i<n;i++)
+    for(j=1;j<m;j++)
+    {
+        //Step 5
+        if(s[i-1]==t[j-1])
+          cost=0;
+        else
+          cost=1;
+        //Step 6			 
+        d[j*n+i]=minimum(d[(j-1)*n+i]+1,d[j*n+i-1]+1,d[(j-1)*n+i-1]+cost);
+    }
+  distance=d[n*m-1];
+  free(d);
+  return distance;
+}
+
+int minimum(int a,int b,int c)
+/*Gets the minimum of three values*/
+{
+  int min=a;
+  if(b<min)
+    min=b;
+  if(c<min)
+    min=c;
+  return min;
+}
+
+MODULE = Text::LevenshteinXS		PACKAGE = Text::LevenshteinXS
+
+int
+distance(s,t)
+	char * s
+	char * t
+CODE:
+	RETVAL = levenshtein_distance(s,t);
+OUTPUT:
+	RETVAL
+

Added: branches/upstream/libtext-levenshteinxs-perl/current/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libtext-levenshteinxs-perl/current/MANIFEST?rev=73757&op=file
==============================================================================
--- branches/upstream/libtext-levenshteinxs-perl/current/MANIFEST (added)
+++ branches/upstream/libtext-levenshteinxs-perl/current/MANIFEST Thu Apr 28 23:54:43 2011
@@ -1,0 +1,8 @@
+Changes
+LevenshteinXS.pm
+LevenshteinXS.xs
+Makefile.PL
+MANIFEST
+README
+test.pl
+META.yml                                 Module meta-data (added by MakeMaker)

Added: branches/upstream/libtext-levenshteinxs-perl/current/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libtext-levenshteinxs-perl/current/META.yml?rev=73757&op=file
==============================================================================
--- branches/upstream/libtext-levenshteinxs-perl/current/META.yml (added)
+++ branches/upstream/libtext-levenshteinxs-perl/current/META.yml Thu Apr 28 23:54:43 2011
@@ -1,0 +1,11 @@
+# http://module-build.sourceforge.net/META-spec.html
+#XXXXXXX This is a prototype!!!  It will change in the future!!! XXXXX#
+name:         Text-LevenshteinXS
+version:      0.03
+version_from: LevenshteinXS.pm
+installdirs:  site
+requires:
+    Test:                          
+
+distribution_type: module
+generated_by: ExtUtils::MakeMaker version 6.17

Added: branches/upstream/libtext-levenshteinxs-perl/current/Makefile.PL
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libtext-levenshteinxs-perl/current/Makefile.PL?rev=73757&op=file
==============================================================================
--- branches/upstream/libtext-levenshteinxs-perl/current/Makefile.PL (added)
+++ branches/upstream/libtext-levenshteinxs-perl/current/Makefile.PL Thu Apr 28 23:54:43 2011
@@ -1,0 +1,12 @@
+use ExtUtils::MakeMaker;
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+WriteMakefile(
+    'NAME'		=> 'Text::LevenshteinXS',
+    'VERSION_FROM'	=> 'LevenshteinXS.pm',
+    'PREREQ_PM'         => { Test },
+    ($] >= 5.005 ? () : (
+       ABSTRACT_FROM 	=> 'LevenshteinXS.pm', 
+       AUTHOR     	=> 'Dree Mistrut <dree at friul.it> and Josh Goldberg <josh at 3io.com>' 
+    )),
+);

Added: branches/upstream/libtext-levenshteinxs-perl/current/README
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libtext-levenshteinxs-perl/current/README?rev=73757&op=file
==============================================================================
--- branches/upstream/libtext-levenshteinxs-perl/current/README (added)
+++ branches/upstream/libtext-levenshteinxs-perl/current/README Thu Apr 28 23:54:43 2011
@@ -1,0 +1,54 @@
+
+Text::LevenshteinXS is an XS implementation of the Levenshtein edit distance in Perl.
+A good point to start is: <http://www.merriampark.com/ld.htm>
+
+See also Text::Levenshtein on CPAN for a pure Perl version of this module. 
+
+
+PREREQUISITES
+
+This suite requires Perl 5; I tested it only under Perl 5.6.
+
+Text::LevenshteinXS requires the Test module.
+
+A C compiler.
+
+
+INSTALLATION
+
+You install Text::LevenshteinXS by running these commands in the *nix environment:
+
+   perl Makefile.PL
+   make
+   make test (optional)
+   make install
+
+To install Text::LevenshteinXS in the Win32 environment, use nmake instead of make.
+nmake is available for free (in a self extracting executable):
+<http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe>
+After download and inflate, put nmake.exe and nmake.err in c:\windows\command .
+You need also a C compiler (e.g. Visual C++).
+
+
+DOCUMENTATION
+
+POD format documentation is included in LevenshteinXS.pm.  
+POD is readable with the command:
+
+  perldoc Text::LevenshteinXS
+
+
+AVAILABILITY
+
+The latest version of Text::LevenshteinXS is available from the
+CPAN <http://search.cpan.org/> 
+
+
+COPYRIGHT
+
+Copyright 2003 Dree Mistrut <dree at friul.it>
+
+This package is free software and is provided "as is" without express
+or implied warranty.  You can redistribute it and/or modify it under 
+the same terms as Perl itself.
+

Added: branches/upstream/libtext-levenshteinxs-perl/current/test.pl
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libtext-levenshteinxs-perl/current/test.pl?rev=73757&op=file
==============================================================================
--- branches/upstream/libtext-levenshteinxs-perl/current/test.pl (added)
+++ branches/upstream/libtext-levenshteinxs-perl/current/test.pl Thu Apr 28 23:54:43 2011
@@ -1,0 +1,16 @@
+use Test;
+BEGIN { plan tests => 6 };
+
+use Text::LevenshteinXS qw(distance);
+
+ok(1); 
+if (distance("foo","four") == 2) {ok(1)} else {ok(0)}
+if (distance("foo","foo")  == 0) {ok(1)} else {ok(0)}
+if (distance("foo","")  == 3) {ok(1)} else {ok(0)}
+if (distance("four","foo") == 2) {ok(1)} else {ok(0)}
+if (distance("foo","bar") == 3) {ok(1)} else {ok(0)}
+
+
+
+
+




More information about the Pkg-perl-cvs-commits mailing list