;;; -*- mode: Lisp; Syntax: Common-Lisp; -*- ;;; ;;; Copyright (c) 2009 by the authors. ;;; ;;; See LICENCE for details. (in-package :hu.dwim.projectional-editor) ;;;;;;;; ;;;; Number domain provides: ;;;; - number classes provided by the Common Lisp implementation ;;;;;; ;;; Number document classes ;;; ;;; The number document classes are provided by the Common Lisp implementation. ;;;;;; ;;; Number document constructors ;;; ;;; The number document constructores are provided by the Common Lisp implementation. ;;;;;; ;;; Number operation classes (def class* operation/number/replace-range (operation) ((target :type reference) (replacement :type sequence))) ;;;;;; ;;; Number operation constructors (def (function e) make-operation/number/replace-range (target replacement) (make-instance 'operation/number/replace-range :target target :replacement replacement)) ;;;;;; ;;; Number operation API implementation (def method redo-operation ((operation operation/number/replace-range) document) (pattern-case (target-of operation) ((sequence-position (the string (write-to-string (the number ?a))) ?b) (bind ((old-sequence (write-to-string (reference/find-value document ?a))) (new-sequence (concatenate (form-type old-sequence) (subseq old-sequence 0 ?b) (replacement-of operation) (subseq old-sequence ?b)))) (setf (reference/find-value document ?a) (parse-number:parse-number new-sequence)))) (?a (not-yet-implemented))))