Author: loliveira Date: Sun Apr 23 15:28:36 2006 New Revision: 4
Added: dyslexia/trunk/COPYRIGHT dyslexia/trunk/dyslexia.asd dyslexia/trunk/package.lisp Modified: dyslexia/trunk/spell.lisp Log: - Add package and system definition. - Add copyright notices. - Remove tabs from spell.lisp.
Added: dyslexia/trunk/COPYRIGHT ============================================================================== --- (empty file) +++ dyslexia/trunk/COPYRIGHT Sun Apr 23 15:28:36 2006 @@ -0,0 +1,21 @@ +Copyright (C) 2006 Robert Strandh strandh@labri.fr + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE.
Added: dyslexia/trunk/dyslexia.asd ============================================================================== --- (empty file) +++ dyslexia/trunk/dyslexia.asd Sun Apr 23 15:28:36 2006 @@ -0,0 +1,40 @@ +;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- +;;; +;;; dyslexia.asd --- ASDF system definition for dyslexia. +;;; +;;; Copyright (C) 2006 Luis Oliveira loliveira@common-lisp.net +;;; +;;; Permission is hereby granted, free of charge, to any person +;;; obtaining a copy of this software and associated documentation +;;; files (the "Software"), to deal in the Software without +;;; restriction, including without limitation the rights to use, copy, +;;; modify, merge, publish, distribute, sublicense, and/or sell copies +;;; of the Software, and to permit persons to whom the Software is +;;; furnished to do so, subject to the following conditions: +;;; +;;; The above copyright notice and this permission notice shall be +;;; included in all copies or substantial portions of the Software. +;;; +;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +;;; DEALINGS IN THE SOFTWARE. + +(defpackage #:dyslexia-system + (:use #:cl #:asdf)) +(in-package #:dyslexia-system) + +(defsystem dyslexia + :description "A spell checker." + :author "Robert Strandh" + :version "0.1.0" + :licence "MIT" + :components + ((:file "package") + (:file "spell" :depends-on ("package")))) + +;; vim: ft=lisp et
Added: dyslexia/trunk/package.lisp ============================================================================== --- (empty file) +++ dyslexia/trunk/package.lisp Sun Apr 23 15:28:36 2006 @@ -0,0 +1,34 @@ +;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- +;;; +;;; package.lisp --- Package definition for dyslexia. +;;; +;;; Copyright (C) 2006 Luis Oliveira loliveira@common-lisp.net +;;; +;;; Permission is hereby granted, free of charge, to any person +;;; obtaining a copy of this software and associated documentation +;;; files (the "Software"), to deal in the Software without +;;; restriction, including without limitation the rights to use, copy, +;;; modify, merge, publish, distribute, sublicense, and/or sell copies +;;; of the Software, and to permit persons to whom the Software is +;;; furnished to do so, subject to the following conditions: +;;; +;;; The above copyright notice and this permission notice shall be +;;; included in all copies or substantial portions of the Software. +;;; +;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +;;; DEALINGS IN THE SOFTWARE. + +(in-package #:cl-user) + +(defpackage #:dyslexia + (:use #:common-lisp) + ;; FIXME: For now, export just this until I understand what protocol + ;; is to be exported. + (:export #:lookup + #:insert))
Modified: dyslexia/trunk/spell.lisp ============================================================================== --- dyslexia/trunk/spell.lisp (original) +++ dyslexia/trunk/spell.lisp Sun Apr 23 15:28:36 2006 @@ -1,3 +1,31 @@ +;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- +;;; +;;; spell.lisp --- Spell checker. +;;; +;;; Copyright (C) 2006 Robert Strandh strandh@labri.fr +;;; +;;; Permission is hereby granted, free of charge, to any person +;;; obtaining a copy of this software and associated documentation +;;; files (the "Software"), to deal in the Software without +;;; restriction, including without limitation the rights to use, copy, +;;; modify, merge, publish, distribute, sublicense, and/or sell copies +;;; of the Software, and to permit persons to whom the Software is +;;; furnished to do so, subject to the following conditions: +;;; +;;; The above copyright notice and this permission notice shall be +;;; included in all copies or substantial portions of the Software. +;;; +;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +;;; DEALINGS IN THE SOFTWARE. + +(in-package #:dyslexia) + (defgeneric lookup (string dictionary)) (defgeneric insert (object string dictionary))
@@ -14,8 +42,8 @@
(defgeneric %lookup (string suffix node) (:method (string suffix node) - (declare (ignore string suffix node)) - '())) + (declare (ignore string suffix node)) + '()))
(defclass leaf-mixin () ((%entries :initform '() :initarg :entries :accessor entries))) @@ -33,10 +61,10 @@
(defmethod %lookup (string suffix (node interior-mixin)) (let ((child (find-child (aref string (- (length string) suffix)) - (children node)))) + (children node)))) (if (null child) - nil - (%lookup string (1- suffix) child)))) + nil + (%lookup string (1- suffix) child))))
(defclass leaf-node (leaf-mixin) ()) (defclass interior-leaf-node (interior-mixin leaf-mixin) ()) @@ -64,13 +92,13 @@
(defmethod %insert (object string suffix (node interior-mixin)) (let ((child (find-child (aref string (- (length string) suffix)) - (children node)))) + (children node)))) (when (null child) (setf child (make-instance 'node)) (setf (children node) - (add-child child - (aref string (- (length string) suffix)) - (children node)))) + (add-child child + (aref string (- (length string) suffix)) + (children node)))) (%insert object string (1- suffix) child)))
(defmethod insert (object string (dictionary dictionary)) @@ -91,14 +119,14 @@
(defmethod add-child (node char (entries vector)) (setf (aref entries (- (char-code char) #.(char-code #\a))) - node)) + node))
(defparameter *word-types* (make-hash-table :test #'eq))
(defmacro defword (class-name &body body) (let ((type (intern (symbol-name class-name) :keyword))) `(progn (setf (gethash ,type *word-types*) ',class-name) - (defclass ,class-name ,@body)))) + (defclass ,class-name ,@body))))
(defword word () ((%spelling :initarg :spelling :reader spelling) @@ -109,7 +137,7 @@ (%case :initarg :case :initform :nominative :reader %case) (%gender :initarg :gender :initform :any :reader gender) (%singular :initarg :singular :reader singular))) - + (defword proper-noun (noun) ())
(defword negative-mixin () @@ -182,7 +210,7 @@
(defun word (&rest arguments &key type spelling &allow-other-keys) (insert (apply #'make-instance - (gethash type *word-types*) - (progn (remf arguments :type) arguments)) - spelling - *english-dictionary*)) + (gethash type *word-types*) + (progn (remf arguments :type) arguments)) + spelling + *english-dictionary*))