pygameui.WordUtils   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 75
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 22
dl 0
loc 75
rs 10
c 0
b 0
f 0
wmc 7

1 Function

Rating   Name   Duplication   Size   Complexity  
B splitter() 0 50 7
1
#
2
#  Copyright 2001 - 2016 Ludek Smid [http://www.ospace.net/]
3
#
4
#  This file is part of Pygame.UI.
5
#
6
#  Pygame.UI is free software; you can redistribute it and/or modify
7
#  it under the terms of the Lesser GNU General Public License as published by
8
#  the Free Software Foundation; either version 2.1 of the License, or
9
#  (at your option) any later version.
10
#
11
#  Pygame.UI 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
#  Lesser GNU General Public License for more details.
15
#
16
#  You should have received a copy of the Lesser GNU General Public License
17
#  along with Pygame.UI; if not, write to the Free Software
18
#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19
#
20
21
delimiters = [" ", ".", "-", "(", ")", "{", "}", "[", "]", ",", ":",\
22
              ";", "/", "\\", "\"", "<", ">", "?", "!", "+", "*", "&",\
23
              "^", "@", "#", "$", "%", "^", "=", "|", "~"]
24
25
def splitter(text, delims = None):
26
    """Splits given string into parts separated by more delimiters.
27
28
    delims parameter is list of delimiter characters. Function returns
29
    tuple containg word, starting postion of word and ending position
30
    of word. Given word can be taken from text as text[start:end].
31
    Example:
32
        text = "This is line"
33
        result = ""
34
        for word in splitter(text, [" "]):
35
            result = result + text[word[1]:word[2]] + " "
36
        print result
37
        result = ""
38
        for word in splitter(text, [" "]):
39
            result = result + word[0] + " "
40
        print result
41
    """
42
    #stores result
43
    result = []
44
    #if delimiter is not specified, use defaults
45
    if delims == None:
46
        delims = delimiters
47
    #starting with empty word
48
    word = ""
49
    #starting position of word
50
    start = 0
51
    #traverse string by chars
52
    for i in range(len(text)):
53
        #test, if char is delimiter
54
        if text[i] in delims:
55
            #is delimiter, so add new word (non empty) to result
56
            if len(word) > 0:
57
                result.append((word, start, i))
58
            #start new word
59
            word = ""
60
            #skip delimiter
61
            start = i + 1
62
        else:
63
            #char is not delimiter, so append it to word
64
            word = word + text[i]
65
66
    #append last word to result
67
    if len(word) > 0:
68
        #handle end of text with no delimiter
69
        if start + len(word) == len(text):
70
            #word end beyond end of text
71
            i = i + 1
0 ignored issues
show
introduced by
The variable i does not seem to be defined in case the for loop on line 52 is not entered. Are you sure this can never be the case?
Loading history...
72
        result.append((word, start, i))
73
74
    return result
75