Code Duplication    Length = 44-44 lines in 2 locations

abydos/phonetic/de.py 2 locations

@@ 439-482 (lines=44) @@
436
    def _haase_code(word):
437
        sdx = ''
438
        for i in range(len(word)):
439
            if word[i] in _vowels:
440
                sdx += '9'
441
            elif word[i] == 'B':
442
                sdx += '1'
443
            elif word[i] == 'P':
444
                if _before(word, i, {'H'}):
445
                    sdx += '3'
446
                else:
447
                    sdx += '1'
448
            elif word[i] in {'D', 'T'}:
449
                if _before(word, i, {'C', 'S', 'Z'}):
450
                    sdx += '8'
451
                else:
452
                    sdx += '2'
453
            elif word[i] in {'F', 'V', 'W'}:
454
                sdx += '3'
455
            elif word[i] in {'G', 'K', 'Q'}:
456
                sdx += '4'
457
            elif word[i] == 'C':
458
                if _after(word, i, {'S', 'Z'}):
459
                    sdx += '8'
460
                elif i == 0:
461
                    if _before(
462
                        word, i, {'A', 'H', 'K', 'L', 'O', 'Q', 'R', 'U', 'X'}
463
                    ):
464
                        sdx += '4'
465
                    else:
466
                        sdx += '8'
467
                elif _before(word, i, {'A', 'H', 'K', 'O', 'Q', 'U', 'X'}):
468
                    sdx += '4'
469
                else:
470
                    sdx += '8'
471
            elif word[i] == 'X':
472
                if _after(word, i, {'C', 'K', 'Q'}):
473
                    sdx += '8'
474
                else:
475
                    sdx += '48'
476
            elif word[i] == 'L':
477
                sdx += '5'
478
            elif word[i] in {'M', 'N'}:
479
                sdx += '6'
480
            elif word[i] == 'R':
481
                sdx += '7'
482
            elif word[i] in {'S', 'Z'}:
483
                sdx += '8'
484
485
        sdx = _delete_consecutive_repeats(sdx)
@@ 133-176 (lines=44) @@
130
        return sdx
131
132
    for i in range(len(word)):
133
        if word[i] in _vowels:
134
            sdx += '0'
135
        elif word[i] == 'B':
136
            sdx += '1'
137
        elif word[i] == 'P':
138
            if _before(word, i, {'H'}):
139
                sdx += '3'
140
            else:
141
                sdx += '1'
142
        elif word[i] in {'D', 'T'}:
143
            if _before(word, i, {'C', 'S', 'Z'}):
144
                sdx += '8'
145
            else:
146
                sdx += '2'
147
        elif word[i] in {'F', 'V', 'W'}:
148
            sdx += '3'
149
        elif word[i] in {'G', 'K', 'Q'}:
150
            sdx += '4'
151
        elif word[i] == 'C':
152
            if _after(word, i, {'S', 'Z'}):
153
                sdx += '8'
154
            elif i == 0:
155
                if _before(
156
                    word, i, {'A', 'H', 'K', 'L', 'O', 'Q', 'R', 'U', 'X'}
157
                ):
158
                    sdx += '4'
159
                else:
160
                    sdx += '8'
161
            elif _before(word, i, {'A', 'H', 'K', 'O', 'Q', 'U', 'X'}):
162
                sdx += '4'
163
            else:
164
                sdx += '8'
165
        elif word[i] == 'X':
166
            if _after(word, i, {'C', 'K', 'Q'}):
167
                sdx += '8'
168
            else:
169
                sdx += '48'
170
        elif word[i] == 'L':
171
            sdx += '5'
172
        elif word[i] in {'M', 'N'}:
173
            sdx += '6'
174
        elif word[i] == 'R':
175
            sdx += '7'
176
        elif word[i] in {'S', 'Z'}:
177
            sdx += '8'
178
179
    sdx = _delete_consecutive_repeats(sdx)