summaryrefslogtreecommitdiff
path: root/indexing/forindex/source/acc.inc
blob: 42431758ac7beb706006d8d76617c9bf3befd27c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
* ACC.INC
* GM 2003
* <guido.milanese@mclink.it>
* Accents etc. according to different languages
* The returned string must be parsed by the calling program
* Up to '-' : lowercase accents
* After '-' : uppercase accents
* Options:	
*		es = Spanish
*		de = German
*		fr = French
*		it = Italian
*		XX = all accents of table 8859-XX (e.g. 8859-15)
*		en = no accents (English)

	DEFINE("acc(option)")
	digits = '1234567890'
* German	
	acc_de1 =  "äëïöüß" ; acc_de2 = "ÄËÏÖÜß" ; acc_de = acc_de1 '-' acc_de2
* Spanish	
	acc_es1 =  "áéíóúñ" ; acc_es2 = "ÁÉÍÓÚÑ" ; acc_es = acc_es1 '-' acc_es2
* French	
	acc_fr1 = "áàèéíìóòúùâêîôûäëïöüç" 
	acc_fr2 = "ÁÀÈÉÍÌÓÒÚÙÂÊÎÔÛÄËÏÖÜÇ" 
	acc_fr  = acc_fr1 '-' acc_fr2
* Italian	
	acc_it1 = "áàèéíìóòúùâêîôû" 
	acc_it2 = "ÁÀÈÉÍÌÓÒÚÙÂÊÎÔÛ"
	acc_it  = acc_it1 '-' acc_it2
* All
	acc_001 = acc_de1 acc_es1 acc_fr1 acc_it1
	acc_002 = acc_de2 acc_es2 acc_fr2 acc_it2
	acc_00  = acc_001 '-' acc_002

* Complete table (e.g. 8859-15): builds string of chars
	k = 127
	chars8859 = ''	
ACC_DO	(
+	  (lt(k,255))
+	  (k = k + 1)
+	  (chars8859 = chars8859 char(k))
+	)	:s(ACC_DO)
	
								:(ACC_END)
				
ACC
* Trims spaces at begin and end of option
ACC_N	option ? ' ' = 						:s(ACC_N)
* If no option given, sets to all accents (option '00')
**	( ~(option ? any(&lcase digits)) (option = '00') )
* If a number is passed as option, means a complete table (e.g. 8859-1)
**	( (option ? any(digits)) (option = 'TA') )
	(
+		(~(option ? any(&lcase digits)) (option = '00')), 
+		( (option ? any(digits)) (option = 'TA') ),
+		(option = option)
+	)

* Checks option	
	(	
+	~(option  ? ("en" | "es" | "de" | "fr" | "it" | "TA" | "00"))
+	(terminal = 'Please supply a valid language identifier')
+	)			:s(freturn)
       				:($('ACC_' option))

ACC_ES  acc = acc_es						  :(return)
ACC_DE	acc = acc_de               				  :(return)
ACC_FR	acc = acc_fr                                              :(return)
ACC_IT	acc = acc_it                                 		  :(return)
ACC_EN	acc = '' '-' ''						  :(return)
ACC_TA	acc = chars8859 '-' ' '					  :(return)
ACC_00	acc = acc_00                                              :(return)
ACC_  	terminal = "Please supply a valid language identifier"	  :(freturn)
ACC_END