Swahili-norsk ordbok slik programmereren ser det (eller, hvorfor jeg ikke har blogget så mye i det siste)

Folk spør av og til hvor­dan jeg har tid til å være så aktiv på net­tet, og sva­ret på det er at det har jeg jo ikke. Sær­lig ikke i det sis­te, med ny jobb og ny kjæ­res­te og ny lei­lig­het og … vel, dere skjøn­ner. Jeg har skre­vet litt nylig om IQ i Dagens Nærings­liv og vært på radio etpar gan­ger og noe grei­er … men blog­ging er det ikke blitt mye av.

I skri­ven­de stund job­ber jeg med nyes­te utga­ve av Spar­ta­cus for­lags Swa­hi­li-Norsk ord­bok. Førs­te opp­lag kom i 1997, og er utsolgt. Da bru­ke for­fat­te­ren en File­ma­ker-data­base som jeg nenn­somt pluk­ket data­ene ut av og over­sat­te til LaTeX. Den­gang bruk­te jeg Perl. Det vil jeg ikke len­ger. Den­ne gan­gen, 2. utga­ve, er det fort­satt LaTeX (Jeg synes Con­TeXt er vak­kert, men ikke vel­dig godt doku­men­tert og et beve­ge­lig mål uan­sett).

Men den­ne gan­gen bru­ker jeg et ordent­lig pro­gram­me­rings­språk. Com­mon Lisp, og imple­men­ta­sjo­nen er Clozu­re CL for MacOS. (Onde tun­ger vil ha det til at det er fle­re Lisp-omgi­vel­ser enn pro­gram­mer skre­vet i Lisp. Ikke hør på dem.)

Her er koden så langt. Vak­kert. Jeg vet hvor­dan det vil­le sett ut i Perl.

(require 'split-sequence)
;(import 'split-sequence:split-sequence :cl-user)

(load "string-replace")

(require 'cl-ppcre) (import 'cl-ppcre:regex-replace :cl-user)

(defvar *infile* "001.csv")

(import 'csv-parser::do-csv-file 'cl-user)

(setq csv-parser::*field-separator* #,)

(defun collate (a b) (let ((split-a (split-sequence:split-sequence (code-char 29) a)) (split-b (split-sequence:split-sequence (code-char 29) b))) (mapcar #'(lambda (a b) (format nil "~A ~A " (tex-format a) (tex-format b))) split-a split-b)))

(defun tex-format (s) (and (stringp s) (> (length s) 2) (let* ((s (string-replace s "#I" "\emph{")) (s (string-replace s "#@" "} "))) s)))

(defun swahili () (let ((*swahili* nil)) (princ (format t "~&~A~A~&" "Kjører swahili" "...")) (with-open-file (out "swahili.tex" :direction :output :if-does-not-exist :create :if-exists :overwrite) (do-csv-file ((line num-fields) *infile*) (let ((keyword (nth 0 line)) (wordclass (nth 1 line)) (explanation (nth 2 line)) (examples (nth 3 line)) (eng-examples (nth 5 line)) (eng-phonetics (nth 4 line)) ) (progn (format out "~&\a{~A} ~A ~A ~A ~A ~&" keyword wordclass (collate explanation examples) eng-examples eng-phonetics )))))))

(swahili)

(quit)

 

 

nb_NONorwegian