Fix order of result content

Julien LepillerThu Jul 29 14:48:26+0200 2021

680cac2

Fix order of result content

modules/nani/result/jibiki.scm

125125
          (match (car lst)
126126
            ((? string? s)
127127
             (update-source source
128-
               #:content (cons s (source-content source))))
128+
               #:content (append (source-content source) (list s))))
129129
            (('lang . l)
130130
             (update-source source #:lang l))
131131
            ((? list? l)

141141
            (#f meaning)
142142
            (('n . _) meaning)
143143
            (('info . info) (update-meaning meaning
144-
                              #:infos (cons info (meaning-infos meaning))))
144+
                              #:infos
145+
                              (append (meaning-infos meaning) (list info))))
145146
            (('content . c) (update-meaning meaning
146147
                              #:glosses (append
147-
                                          (map string-downcase
148-
					       (string-split c #\,))
149-
                                          (meaning-glosses meaning))))
148+
                                          (meaning-glosses meaning)
149+
                                          (string-split c #\,))))
150150
            ((? source? s)
151151
             (update-meaning meaning
152-
               #:sources (cons s (meaning-sources meaning))))
152+
               #:sources (append (meaning-sources meaning) (lit s))))
153153
            ((? string? _) meaning)
154154
            ((? list? l) (loop l meaning)))))))
155155

166166
            (('kanji . k)
167167
             (loop (cdr lst)
168168
                   (update-result result
169-
                     #:kanjis (cons k (result-kanjis result)))
169+
                     #:kanjis (append (result-kanjis result) (list k)))
170170
                   infos
171171
                   sources))
172172
            ((? reading? r)
173173
             (loop
174174
               (cdr lst)
175175
               (update-result result
176-
                 #:readings (cons r (result-readings result)))
176+
                 #:readings (append (result-readings result) (list r)))
177177
               infos
178178
               sources))
179179
            ((? meaning? s)
180180
             (loop
181181
               (cdr lst)
182182
               (update-result result
183-
                 #:meanings (cons s (result-meanings result)))
183+
                 #:meanings (append (result-meanings result) (list s)))
184184
               infos
185185
               sources))
186186
            ((? source? s)
187-
             (loop (cdr lst) result infos (cons s sources)))
187+
             (loop (cdr lst) result infos (append sources (list s))))
188188
            (('info . info)
189189
             (loop (cdr lst)
190190
                   result
191-
                   (cons info infos)
191+
                   (append infos (list info))
192192
                   sources))
193193
            ((? list? l)
194194
             (match (loop l result infos sources)

modules/nani/result/jmdict.scm

3434
      reading
3535
      (loop
3636
        (match (car lst)
37-
          (('reading r) (update-reading reading #:readings (cons r (reading-readings reading))))
38-
          (('info r) (update-reading reading #:info (cons r (reading-info reading))))
39-
          (('limit r) (update-reading reading #:kanjis (cons r (reading-kanjis reading))))
37+
          (('reading r) (update-reading reading #:readings
38+
                                        (append (reading-readings reading) (list r))))
39+
          (('info r) (update-reading reading #:info
40+
                                     (append (reading-info reading) (list r))))
41+
          (('limit r) (update-reading reading #:kanjis
42+
                                      (append (reading-kanjis reading) (list r))))
4043
          (((? symbol? s) v) (throw 'unknown-content s v))
4144
          ((? string? _) reading))
4245
        (cdr lst)))))

4750
      source
4851
      (loop
4952
        (match (car lst)
50-
          (('content c) (update-source source #:content (cons c (source-content source))))
53+
          (('content c) (update-source source #:content
54+
                                       (append (source-content source) (list c))))
5155
          (('ls_wasei _) (update-source source #:wasei? #t))
5256
          (('ls_type t) source); type is always "part" or nothing
5357
          ((('xml . 'lang) l) (update-source source #:lang l))
5458
          (((? symbol? s) v) (throw 'unknown-content s v))
5559
          ((? list? l) (loop source l))
5660
          ((? string? c) (update-source source #:content
57-
                                        (cons c (source-content source)))))
61+
                                        (append (source-content source) (list c)))))
5862
        (cdr lst)))))
5963
6064
(define (sxml->meaning lst)

6367
      meaning
6468
      (loop
6569
        (match (car lst)
66-
          (('ref (? string? r)) (update-meaning meaning #:references (cons r (meaning-references meaning))))
67-
          (('limit (? string? r)) (update-meaning meaning #:limits (cons r (meaning-limits meaning))))
68-
          (('info (? string? r)) (update-meaning meaning #:infos (cons r (meaning-infos meaning))))
69-
          ((? source? s) (update-meaning meaning #:sources (cons s (meaning-sources meaning))))
70-
          (('info (? string? r)) (update-meaning meaning #:infos (cons r (meaning-infos meaning))))
71-
          (('gloss (? string? r)) (update-meaning meaning
72-
                                    #:glosses
73-
                                    (cons (string-downcase r)
74-
                                          (meaning-glosses meaning))))
70+
          (('ref (? string? r))
71+
           (update-meaning meaning #:references
72+
                           (append (meaning-references meaning) (list r))))
73+
          (('limit (? string? r))
74+
           (update-meaning meaning #:limits
75+
                           (append (meaning-limits meaning) (list r))))
76+
          (('info (? string? r))
77+
           (update-meaning meaning #:infos
78+
                           (append (meaning-infos meaning) (list r))))
79+
          ((? source? s)
80+
           (update-meaning meaning #:sources
81+
                           (append (meaning-sources meaning) (list s))))
82+
          (('info (? string? r))
83+
           (update-meaning meaning #:infos
84+
                           (append (meaning-infos meaning) (list r))))
85+
          (('gloss (? string? r))
86+
           (update-meaning meaning #:glosses
87+
                           (append (meaning-glosses meaning) (list r))))
7588
          ((('xml . 'lang) (? string? l)) (update-meaning meaning #:language l))
7689
          (((? symbol? s) v) (throw 'unknown-content s v))
7790
          ((? list? l) (loop meaning l))

8699
            (loop
87100
              (match (car lst)
88101
                (('kanji kanji)
89-
                 (update-result result #:kanjis (cons kanji (result-kanjis result))))
102+
                 (update-result result #:kanjis
103+
                                (append (result-kanjis result) (list kanji))))
90104
                ((? reading? r)
91-
                 (update-result result #:readings (cons r (result-readings result))))
105+
                 (update-result result #:readings
106+
                                (append (result-readings result) (list r))))
92107
                ((? meaning? s)
93-
                 (update-result result #:meanings (cons s (result-meanings result))))
108+
                 (update-result result #:meanings
109+
                                (append (result-meanings result) (list s))))
94110
                ((? string? _) result))
95111
              (cdr lst))))))
96112
    (let* ((word (if (null? (result-kanjis result))

modules/nani/result/wadoku.scm

6767
          ((? meaning? s)
6868
           (merge-meanings s meaning))
6969
          ((? source? s)
70-
           (update-meaning meaning #:sources (cons s (meaning-sources meaning))))
70+
           (update-meaning meaning #:sources
71+
                           (append (meaning-sources meaning) (list s))))
7172
          (('ref (? string? r))
72-
           (update-meaning meaning #:references (cons r (meaning-references meaning))))
73+
           (update-meaning meaning #:references
74+
                           (append (meaning-references meaning) (list r))))
7375
          (('info (? string? r))
74-
           (update-meaning meaning #:infos (cons r (meaning-infos meaning))))
76+
           (update-meaning meaning #:infos
77+
                           (append (meaning-infos meaning) (list r))))
7578
          (('infos (? string? r))
76-
           (update-meaning meaning #:infos (cons r (meaning-infos meaning))))
79+
           (update-meaning meaning #:infos
80+
                           (append (meaning-infos meaning) (list r))))
7781
          (('infos (? list? r))
7882
           (update-meaning meaning #:infos (append r (meaning-infos meaning))))
7983
          (('trans (? string? r))
80-
           (update-meaning meaning #:glosses (cons (string-downcase r)
81-
                                               (meaning-glosses meaning))))
84+
           (update-meaning meaning #:glosses
85+
                           (append (meaning-glosses meaning) (list r))))
8286
          (('related . _) meaning)
8387
          (('transcr . _) meaning)
8488
          (('pitch . _) meaning)

117121
          (('foreign foreign)
118122
           (update-source source
119123
             #:content (if (list? foreign)
120-
                           (append foreign (source-content source))
121-
                           (cons foreign (source-content source)))))
124+
                           (append (source-content source) foreign)
125+
                           (append (source-content source) (list foreign)))))
122126
          ((? list? l) (loop source l))
123127
          (_ source))
124128
        (cdr lst)))))

130134
      (loop
131135
        (match (car lst)
132136
          (('reading r)
133-
           (update-reading reading #:readings (cons r (reading-readings reading))))
137+
           (update-reading reading #:readings
138+
                           (append (reading-readings reading) (list r))))
134139
          (_ reading))
135140
        (cdr lst)))))
136141

142147
        (match (car lst)
143148
          (('kanji kanji)
144149
           (loop
145-
             (update-result result #:kanjis (cons kanji (result-kanjis result)))
150+
             (update-result result #:kanjis
151+
                            (append (result-kanjis result) (list kanji)))
146152
             last-source (cdr lst)))
147153
          ((? reading? reading)
148154
           (loop
149-
             (update-result result #:readings (cons reading (result-readings result)))
155+
             (update-result result #:readings
156+
                            (append (result-readings result) (list reading)))
150157
             last-source (cdr lst)))
151158
          ((? meaning? meaning)
152159
           (loop
153160
             (update-result result
154161
               #:meanings
155-
               (cons
156-
                 (if last-source
157-
                     (update-meaning meaning
158-
                       #:sources (cons last-source (meaning-sources meaning)))
159-
                     meaning)
160-
                 (result-meanings result)))
162+
               (append
163+
                 (result-meanings result)
164+
                 (list
165+
                   (if last-source
166+
                       (update-meaning meaning
167+
                         #:sources
168+
                         (append (meaning-sources meaning) (list last-source)))
169+
                       meaning))))
161170
             last-source (cdr lst)))
162171
          ((? list? l)
163172
           (loop (loop result last-source l) last-source (cdr lst)))

332341
       ;(loop (cons `(info ,genki) infos) result lst))
333342
       (loop infos result lst))
334343
      ((('jlpt . jlpt) lst ...)
335-
       (loop (cons `(info ,(string-append "jlpt-" jlpt)) infos) result lst))
344+
       (loop (append infos `((info ,(string-append "jlpt-" jlpt)))) result lst))
336345
      ((('ref . (? string? ref)) lst ...)
337-
       (loop (cons `(ref ,ref) infos) result lst))
346+
       (loop (append infos `((ref ,ref))) result lst))
338347
      ((('ref (? string? ref)) lst ...)
339-
       (loop (cons `(ref ,ref) infos) result lst))
348+
       (loop (append infos `((ref ,ref))) result lst))
340349
      ((('jap l) lst ...)
341350
       (sub-loop loop infos result lst l))
342351
      ((('foreign l) lst ...)