summaryrefslogtreecommitdiff
path: root/app/lib/taggit/utils.py
diff options
context:
space:
mode:
authorluxagraf <sng@luxagraf.net>2014-05-08 19:47:44 -0400
committerluxagraf <sng@luxagraf.net>2014-05-08 19:47:44 -0400
commitc54417f2eb53c2bbeff7e94acef688c97cd949d5 (patch)
treeefb4b6c5305d8c7a97e7787b500b90a62e01d86c /app/lib/taggit/utils.py
parent58e402a077c710c04934e3a7ddc25883427d1f64 (diff)
moved taggit to virtualenv and cleaned up lib app
Diffstat (limited to 'app/lib/taggit/utils.py')
-rw-r--r--app/lib/taggit/utils.py126
1 files changed, 0 insertions, 126 deletions
diff --git a/app/lib/taggit/utils.py b/app/lib/taggit/utils.py
deleted file mode 100644
index 1b5e5a7..0000000
--- a/app/lib/taggit/utils.py
+++ /dev/null
@@ -1,126 +0,0 @@
-from django.utils.encoding import force_unicode
-from django.utils.functional import wraps
-
-
-def parse_tags(tagstring):
- """
- Parses tag input, with multiple word input being activated and
- delineated by commas and double quotes. Quotes take precedence, so
- they may contain commas.
-
- Returns a sorted list of unique tag names.
-
- Ported from Jonathan Buchanan's `django-tagging
- <http://django-tagging.googlecode.com/>`_
- """
- if not tagstring:
- return []
-
- tagstring = force_unicode(tagstring)
-
- # Special case - if there are no commas or double quotes in the
- # input, we don't *do* a recall... I mean, we know we only need to
- # split on spaces.
- if u',' not in tagstring and u'"' not in tagstring:
- words = list(set(split_strip(tagstring, u' ')))
- words.sort()
- return words
-
- words = []
- buffer = []
- # Defer splitting of non-quoted sections until we know if there are
- # any unquoted commas.
- to_be_split = []
- saw_loose_comma = False
- open_quote = False
- i = iter(tagstring)
- try:
- while True:
- c = i.next()
- if c == u'"':
- if buffer:
- to_be_split.append(u''.join(buffer))
- buffer = []
- # Find the matching quote
- open_quote = True
- c = i.next()
- while c != u'"':
- buffer.append(c)
- c = i.next()
- if buffer:
- word = u''.join(buffer).strip()
- if word:
- words.append(word)
- buffer = []
- open_quote = False
- else:
- if not saw_loose_comma and c == u',':
- saw_loose_comma = True
- buffer.append(c)
- except StopIteration:
- # If we were parsing an open quote which was never closed treat
- # the buffer as unquoted.
- if buffer:
- if open_quote and u',' in buffer:
- saw_loose_comma = True
- to_be_split.append(u''.join(buffer))
- if to_be_split:
- if saw_loose_comma:
- delimiter = u','
- else:
- delimiter = u' '
- for chunk in to_be_split:
- words.extend(split_strip(chunk, delimiter))
- words = list(set(words))
- words.sort()
- return words
-
-
-def split_strip(string, delimiter=u','):
- """
- Splits ``string`` on ``delimiter``, stripping each resulting string
- and returning a list of non-empty strings.
-
- Ported from Jonathan Buchanan's `django-tagging
- <http://django-tagging.googlecode.com/>`_
- """
- if not string:
- return []
-
- words = [w.strip() for w in string.split(delimiter)]
- return [w for w in words if w]
-
-
-def edit_string_for_tags(tags):
- """
- Given list of ``Tag`` instances, creates a string representation of
- the list suitable for editing by the user, such that submitting the
- given string representation back without changing it will give the
- same list of tags.
-
- Tag names which contain commas will be double quoted.
-
- If any tag name which isn't being quoted contains whitespace, the
- resulting string of tag names will be comma-delimited, otherwise
- it will be space-delimited.
-
- Ported from Jonathan Buchanan's `django-tagging
- <http://django-tagging.googlecode.com/>`_
- """
- names = []
- for tag in tags:
- name = tag.name
- if u',' in name or u' ' in name:
- names.append('"%s"' % name)
- else:
- names.append(name)
- return u', '.join(sorted(names))
-
-
-def require_instance_manager(func):
- @wraps(func)
- def inner(self, *args, **kwargs):
- if self.instance is None:
- raise TypeError("Can't call %s with a non-instance manager" % func.__name__)
- return func(self, *args, **kwargs)
- return inner