Completed
Branch master (78a222)
by Chris
14:36
created

abydos.distance._util   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 4
eloc 14
dl 0
loc 56
ccs 10
cts 10
cp 1
rs 10
c 0
b 0
f 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A _get_qgrams() 0 19 4
1
# -*- coding: utf-8 -*-
2
3
# Copyright 2018 by Christopher C. Little.
4
# This file is part of Abydos.
5
#
6
# Abydos is free software: you can redistribute it and/or modify
7
# it under the terms of the GNU General Public License as published by
8
# the Free Software Foundation, either version 3 of the License, or
9
# (at your option) any later version.
10
#
11
# Abydos is distributed in the hope that it will be useful,
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
# GNU General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License
17
# along with Abydos. If not, see <http://www.gnu.org/licenses/>.
18
19 1
"""abydos.distance._util.
20
21
The distance._util module implements _get_qgrams.
22
"""
23
24 1
from __future__ import unicode_literals
25
26 1
from collections import Counter
27
28 1
from ..tokenizer import QGrams
29
30
31 1
def _get_qgrams(src, tar, qval=0, skip=0):
32
    """Return the Q-Grams in src & tar.
33
34
    :param str src: source string (or QGrams/Counter objects) for comparison
35
    :param str tar: target string (or QGrams/Counter objects) for comparison
36
    :param int qval: the length of each q-gram; 0 for non-q-gram version
37
    :param int skip: the number of characters to skip (only works when
38
        src and tar are strings
39
    :returns: Q-Grams
40
    :rtype: tuple of Counters
41
42
    >>> _get_qgrams('AT', 'TT', qval=2)
43
    (QGrams({'$A': 1, 'AT': 1, 'T#': 1}), QGrams({'$T': 1, 'TT': 1, 'T#': 1}))
44
    """
45 1
    if isinstance(src, Counter) and isinstance(tar, Counter):
46 1
        return src, tar
47 1
    if qval > 0:
48 1
        return QGrams(src, qval, '$#', skip), QGrams(tar, qval, '$#', skip)
49 1
    return Counter(src.strip().split()), Counter(tar.strip().split())
50
51
52
if __name__ == '__main__':
53
    import doctest
54
55
    doctest.testmod()
56