aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2008-06-01 18:27:55 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2008-06-01 18:27:55 +0000
commit084092e8d341e84048aa82bc7d0d18ff479f43a1 (patch)
tree79b57d87a032877697e4054c651dedd156dd05cb
parentbad5cebbeb453558318f9efd27e612755fbdc06c (diff)
downloadellinika-084092e8d341e84048aa82bc7d0d18ff479f43a1.tar.gz
ellinika-084092e8d341e84048aa82bc7d0d18ff479f43a1.tar.bz2
* cgi-bin/dico-ellinika.scm4 (target-language): Remove global.
Store target language in the database handler. git-svn-id: file:///home/puszcza/svnroot/ellinika/trunk@511 941c8c0f-9102-463b-b60b-cd22ce0e6858
-rw-r--r--ChangeLog3
-rw-r--r--cgi-bin/dico-ellinika.scm459
2 files changed, 34 insertions, 28 deletions
diff --git a/ChangeLog b/ChangeLog
index acfb98c..5efe941 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2008-06-01 Sergey Poznyakoff <gray@gnu.org.ua>
+ * cgi-bin/dico-ellinika.scm4 (target-language): Remove global.
+ Store target language in the database handler.
+
* scm/dictrans.scm (insert-node): Fix inserts into links table.
* scm/dictrans.scm: Allow to call without arguments if --cleanup
diff --git a/cgi-bin/dico-ellinika.scm4 b/cgi-bin/dico-ellinika.scm4
index 9f3a140..325873b 100644
--- a/cgi-bin/dico-ellinika.scm4
+++ b/cgi-bin/dico-ellinika.scm4
@@ -36,8 +36,6 @@
(define sql-username "gray") ;; Database user name
(define sql-password "") ;; Password for that user name
-(define-public target-language "el")
-
(define-public sysconf-dir "SYSCONFDIR")
(define-public config-file-name "ellinika.conf")
@@ -92,38 +90,43 @@
;; Dico interface
(define (open-module name . rest)
- (for-each (lambda (arg)
- (let ((av (string-split arg #\=)))
- (case (length av)
- ((2) (if (string=? (car av) "lang")
- (set! target-language (cadr av))
- (dico-error "Unknown option " (car av))))
- (else
- (dico-error "Unknown option " (car av))))))
- (cdr rest))
- (let ((db-connection (sql-connect
- sql-iface sql-host sql-port sql-database
- sql-username sql-password)))
- (sql-query db-connection "SET NAMES utf8")
- db-connection))
+ (let ((target-language "el"))
+ (for-each (lambda (arg)
+ (let ((av (string-split arg #\=)))
+ (case (length av)
+ ((2) (if (string=? (car av) "lang")
+ (set! target-language (cadr av))
+ (dico-error "Unknown option " (car av))))
+ (else
+ (dico-error "Unknown option " (car av))))))
+ (cdr rest))
+ (let ((db-connection (sql-connect
+ sql-iface sql-host sql-port sql-database
+ sql-username sql-password)))
+ (sql-query db-connection "SET NAMES utf8")
+ (cons db-connection target-language))))
+
+(defmacro dbh:conn (dbh) `(car ,dbh))
+(defmacro dbh:lang (dbh) `(cdr ,dbh))
(define (close-module name dbh)
- (sql-connect-close dbh))
+ (sql-connect-close (dbh:conn dbh)))
(define descr-list
'(("pl" . "Słownik grecko-polski")
("uk" . "Грецько-украЇнський словник")
("ru" . "Греческо-русский словарь")))
-(define (descr name handle)
- (let ((res (assoc target-language descr-list)))
+(define (descr name dbh)
+ (let ((res (assoc (dbh:lang dbh) descr-list)))
(if res
(cdr res)
"Ellinika (no description available)")))
-(define (info name handle)
+(define (info name dbh)
(string-append "Ellinika - A greek dictionary.\n\
-See http://ellinika.gnu.org.ua/cgi-bin/dict.cgi?LANG=" target-language "\n\
+See http://ellinika.gnu.org.ua/cgi-bin/dict.cgi?LANG="
+ (dbh:lang target-language) "\n\
Copyright © 2004, 2005, 2006, 2007, 2008 Sergey Poznyakoff\n\
\n\
Permission is granted to copy, distribute and/or modify this document\n\
@@ -154,13 +157,13 @@ Invariant Sections, no Front-Cover and Back-Cover Texts"))
(list-ref tuple 5))
articles)))
(my-sql-query
- dbh
+ (dbh:conn dbh)
(string-append
"SELECT dict.ident,dict.word,pos.abbr,dict.forms,articles.subindex,articles.meaning "
"FROM dict,articles,pos WHERE dict.word=\""
key
"\" AND dict.ident=articles.ident "
- "AND articles.lang='" target-language "' "
+ "AND articles.lang='" (dbh:lang dbh) "' "
"AND dict.pos=pos.id AND pos.canonical='Y' ORDER BY dict.ident, articles.subindex")))
(if (not (null? articles))
(set! result (cons
@@ -170,28 +173,28 @@ Invariant Sections, no Front-Cover and Back-Cover Texts"))
(define (match-exact dbh strat word)
(my-sql-query
- dbh
+ (dbh:conn dbh)
(string-append "SELECT DISTINCT word FROM dict WHERE word=\""
(ellinika:translate-input word)
"\" ORDER BY 1")))
(define (match-prefix dbh strat word)
(my-sql-query
- dbh
+ (dbh:conn dbh)
(string-append "SELECT DISTINCT word FROM dict WHERE word LIKE \""
(ellinika:translate-input word)
"%\" ORDER BY 1")))
(define (match-suffix dbh strat word)
(my-sql-query
- dbh
+ (dbh:conn dbh)
(string-append "SELECT DISTINCT word FROM dict WHERE word LIKE \"%"
(ellinika:translate-input word)
"\" ORDER BY 1")))
(define (match-extnd-regex dbh strat word)
(my-sql-query
- dbh
+ (dbh:conn dbh)
(string-append "SELECT DISTINCT word FROM dict WHERE word regexp \""
(ellinika:translate-input word)
"\" ORDER BY 1")))
@@ -201,7 +204,7 @@ Invariant Sections, no Front-Cover and Back-Cover Texts"))
(define (match-default dbh strat word)
(my-sql-query
- dbh
+ (dbh:conn dbh)
(string-append "SELECT DISTINCT word FROM dict WHERE sound LIKE \""
(ellinika:sounds-like word)
"%\"")))

Return to:

Send suggestions and report system problems to the System administrator.