summaryrefslogtreecommitdiff
path: root/Lisp/name-conversion.lisp
diff options
context:
space:
mode:
authorMatthias Benkard <code@mail.matthias.benkard.de>2007-08-06 16:32:24 +0200
committerMatthias Benkard <code@mail.matthias.benkard.de>2007-08-06 16:32:24 +0200
commit676e99eaf8991168cf33c24921b8d63b381fea20 (patch)
treea964b35442038c9d14fa96fcb706d6429339dd03 /Lisp/name-conversion.lisp
parent4cdb467706500d621769ffef0286be58d7bfc8da (diff)
Put name conversion routines into their own file.
darcs-hash:5634f866252465787558f61b05f4bc3006d48f37
Diffstat (limited to 'Lisp/name-conversion.lisp')
-rw-r--r--Lisp/name-conversion.lisp42
1 files changed, 42 insertions, 0 deletions
diff --git a/Lisp/name-conversion.lisp b/Lisp/name-conversion.lisp
new file mode 100644
index 0000000..900e4d0
--- /dev/null
+++ b/Lisp/name-conversion.lisp
@@ -0,0 +1,42 @@
+(in-package #:mulk.objective-cl)
+
+
+;;; (@* "Message and selector names")
+(defun message-component->string (symbol)
+ (let* ((components (split-sequence #\- (symbol-name symbol)
+ :remove-empty-subseqs t))
+ (acc-string
+ (reduce #'(lambda (x y) (concatenate 'string x y))
+ (mapcar #'(lambda (x)
+ (concatenate 'string
+ (string (char x 0))
+ (string-downcase (subseq x 1))))
+ (subseq components 1))
+ :initial-value (string-downcase (first components)))))
+ (if (eql (find-package '#:keyword)
+ (symbol-package symbol))
+ (concatenate 'string acc-string ":")
+ acc-string)))
+
+
+(defun symbol-list->message-name (symbol-list)
+ (reduce #'(lambda (acc symbol)
+ (concatenate 'string acc (message-component->string symbol)))
+ symbol-list
+ :initial-value ""))
+
+
+;;; (@* "Class names")
+(defun symbol->objc-class-name (symbol)
+ (let ((components (split-sequence #\- (symbol-name symbol)
+ :remove-empty-subseqs t)))
+ (reduce #'(lambda (x y) (concatenate 'string x y))
+ (mapcar #'(lambda (x)
+ (concatenate 'string
+ (string (char x 0))
+ (string-downcase (subseq x 1))))
+ (subseq components 1))
+ :initial-value (concatenate 'string
+ (string (char (first components) 0))
+ (string-upcase
+ (subseq (first components) 1))))))