Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
CIRCLE
/
django-taggit
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Wiki
Members
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
A prog2-höz tartozó friss repo anyagok itt elérhetőek:
https://git.iit.bme.hu/
Commit
e04918d6
authored
Jun 03, 2010
by
Alex Gaynor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
A little bit of reformatting.
parent
e07091a4
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
66 additions
and
56 deletions
+66
-56
docs/forms.txt
+10
-10
taggit/tests/tests.py
+55
-45
taggit/utils.py
+1
-1
No files found.
docs/forms.txt
View file @
e04918d6
...
...
@@ -22,14 +22,14 @@ as follows:
Examples:
====================== =================================
======
================================================
Tag input string Resulting tags
Notes
====================== =================================
======
================================================
apple ball cat
[``apple``], [``ball``], [``cat``]
No commas, so space delimited
apple, ball cat
[``apple``], [``ball cat``]
Comma present, so comma delimited
"apple, ball" cat dog
[``apple, ball``], [``cat``], [``dog``]
All commas are quoted, so space delimited
"apple, ball", cat dog
[``apple, ball``], [``cat dog``]
Contains an unquoted comma, so comma delimited
apple "ball cat" dog
[``apple``], [``ball cat``], [``dog``]
No commas, so space delimited
"apple" "ball dog
[``apple``], [``ball``], [``dog``]
Unclosed double quote is ignored
====================== =================================
======
================================================
====================== ================================= ================================================
Tag input string Resulting tags Notes
====================== ================================= ================================================
apple ball cat
``["apple", "ball", "cat"]``
No commas, so space delimited
apple, ball cat
``["apple", "ball cat"]``
Comma present, so comma delimited
"apple, ball" cat dog
``["apple, ball", "cat", "dog"]``
All commas are quoted, so space delimited
"apple, ball", cat dog
``["apple, ball", "cat dog"]``
Contains an unquoted comma, so comma delimited
apple "ball cat" dog
``["apple", "ball cat", "dog"]``
No commas, so space delimited
"apple" "ball dog
``["apple", "ball", "dog"]``
Unclosed double quote is ignored
====================== ================================= ================================================
taggit/tests/tests.py
View file @
e04918d6
...
...
@@ -3,11 +3,11 @@ from unittest import TestCase as UnitTestCase
from
django.test
import
TestCase
,
TransactionTestCase
from
taggit.models
import
Tag
,
TaggedItem
from
taggit.utils
import
parse_tags
,
edit_string_for_tags
from
taggit.tests.forms
import
FoodForm
,
DirectFoodForm
,
CustomPKFoodForm
from
taggit.tests.models
import
(
Food
,
Pet
,
HousePet
,
DirectFood
,
DirectPet
,
DirectHousePet
,
TaggedPet
,
CustomPKFood
,
CustomPKPet
,
CustomPKHousePet
,
TaggedCustomPKPet
)
from
taggit.utils
import
parse_tags
,
edit_string_for_tags
class
BaseTaggingTest
(
object
):
...
...
@@ -231,73 +231,83 @@ class TagStringParseTestCase(UnitTestCase):
"""
Ported from Jonathan Buchanan's `django-tagging
<http://django-tagging.googlecode.com/>`_
"""
def
test_with_simple_space_delimited_tags
(
self
):
""" Test with simple space-delimited tags. """
self
.
assertEquals
(
parse_tags
(
'one'
),
[
u'one'
])
self
.
assertEquals
(
parse_tags
(
'one two'
),
[
u'one'
,
u'two'
])
self
.
assertEquals
(
parse_tags
(
'one two three'
),
[
u'one'
,
u'three'
,
u'two'
])
self
.
assertEquals
(
parse_tags
(
'one one two two'
),
[
u'one'
,
u'two'
])
"""
Test with simple space-delimited tags.
"""
self
.
assertEqual
(
parse_tags
(
'one'
),
[
u'one'
])
self
.
assertEqual
(
parse_tags
(
'one two'
),
[
u'one'
,
u'two'
])
self
.
assertEqual
(
parse_tags
(
'one two three'
),
[
u'one'
,
u'three'
,
u'two'
])
self
.
assertEqual
(
parse_tags
(
'one one two two'
),
[
u'one'
,
u'two'
])
def
test_with_comma_delimited_multiple_words
(
self
):
""" Test with comma-delimited multiple words.
An unquoted comma in the input will trigger this. """
self
.
assertEquals
(
parse_tags
(
',one'
),
[
u'one'
])
self
.
assertEquals
(
parse_tags
(
',one two'
),
[
u'one two'
])
self
.
assertEquals
(
parse_tags
(
',one two three'
),
[
u'one two three'
])
self
.
assertEquals
(
parse_tags
(
'a-one, a-two and a-three'
),
"""
Test with comma-delimited multiple words.
An unquoted comma in the input will trigger this.
"""
self
.
assertEqual
(
parse_tags
(
',one'
),
[
u'one'
])
self
.
assertEqual
(
parse_tags
(
',one two'
),
[
u'one two'
])
self
.
assertEqual
(
parse_tags
(
',one two three'
),
[
u'one two three'
])
self
.
assertEqual
(
parse_tags
(
'a-one, a-two and a-three'
),
[
u'a-one'
,
u'a-two and a-three'
])
def
test_with_double_quoted_multiple_words
(
self
):
""" Test with double-quoted multiple words.
A completed quote will trigger this. Unclosed quotes are ignored. """
self
.
assertEquals
(
parse_tags
(
'"one'
),
[
u'one'
])
self
.
assertEquals
(
parse_tags
(
'"one two'
),
[
u'one'
,
u'two'
])
self
.
assertEquals
(
parse_tags
(
'"one two three'
),
[
u'one'
,
u'three'
,
u'two'
])
self
.
assertEquals
(
parse_tags
(
'"one two"'
),
[
u'one two'
])
self
.
assertEquals
(
parse_tags
(
'a-one "a-two and a-three"'
),
"""
Test with double-quoted multiple words.
A completed quote will trigger this. Unclosed quotes are ignored.
"""
self
.
assertEqual
(
parse_tags
(
'"one'
),
[
u'one'
])
self
.
assertEqual
(
parse_tags
(
'"one two'
),
[
u'one'
,
u'two'
])
self
.
assertEqual
(
parse_tags
(
'"one two three'
),
[
u'one'
,
u'three'
,
u'two'
])
self
.
assertEqual
(
parse_tags
(
'"one two"'
),
[
u'one two'
])
self
.
assertEqual
(
parse_tags
(
'a-one "a-two and a-three"'
),
[
u'a-one'
,
u'a-two and a-three'
])
def
test_with_no_loose_commas
(
self
):
""" Test with no loose commas -- split on spaces. """
self
.
assertEquals
(
parse_tags
(
'one two "thr,ee"'
),
[
u'one'
,
u'thr,ee'
,
u'two'
])
"""
Test with no loose commas -- split on spaces.
"""
self
.
assertEqual
(
parse_tags
(
'one two "thr,ee"'
),
[
u'one'
,
u'thr,ee'
,
u'two'
])
def
test_with_loose_commas
(
self
):
""" Loose commas - split on commas """
self
.
assertEquals
(
parse_tags
(
'"one", two three'
),
[
u'one'
,
u'two three'
])
"""
Loose commas - split on commas
"""
self
.
assertEqual
(
parse_tags
(
'"one", two three'
),
[
u'one'
,
u'two three'
])
def
test_tags_with_double_quotes_can_contain_commas
(
self
):
""" Double quotes can contain commas """
self
.
assertEquals
(
parse_tags
(
'a-one "a-two, and a-three"'
),
"""
Double quotes can contain commas
"""
self
.
assertEqual
(
parse_tags
(
'a-one "a-two, and a-three"'
),
[
u'a-one'
,
u'a-two, and a-three'
])
self
.
assertEqual
s
(
parse_tags
(
'"two", one, one, two, "one"'
),
self
.
assertEqual
(
parse_tags
(
'"two", one, one, two, "one"'
),
[
u'one'
,
u'two'
])
def
test_with_naughty_input
(
self
):
""" Test with naughty input. """
"""
Test with naughty input.
"""
# Bad users! Naughty users!
self
.
assertEqual
s
(
parse_tags
(
None
),
[])
self
.
assertEqual
s
(
parse_tags
(
''
),
[])
self
.
assertEqual
s
(
parse_tags
(
'"'
),
[])
self
.
assertEqual
s
(
parse_tags
(
'""'
),
[])
self
.
assertEqual
s
(
parse_tags
(
'"'
*
7
),
[])
self
.
assertEqual
s
(
parse_tags
(
',,,,,,'
),
[])
self
.
assertEqual
s
(
parse_tags
(
'",",",",",",","'
),
[
u','
])
self
.
assertEqual
s
(
parse_tags
(
'a-one "a-two" and "a-three'
),
self
.
assertEqual
(
parse_tags
(
None
),
[])
self
.
assertEqual
(
parse_tags
(
''
),
[])
self
.
assertEqual
(
parse_tags
(
'"'
),
[])
self
.
assertEqual
(
parse_tags
(
'""'
),
[])
self
.
assertEqual
(
parse_tags
(
'"'
*
7
),
[])
self
.
assertEqual
(
parse_tags
(
',,,,,,'
),
[])
self
.
assertEqual
(
parse_tags
(
'",",",",",",","'
),
[
u','
])
self
.
assertEqual
(
parse_tags
(
'a-one "a-two" and "a-three'
),
[
u'a-one'
,
u'a-three'
,
u'a-two'
,
u'and'
])
def
test_recreation_of_tag_list_string_representations
(
self
):
plain
=
Tag
.
objects
.
create
(
name
=
'plain'
)
spaces
=
Tag
.
objects
.
create
(
name
=
'spa ces'
)
comma
=
Tag
.
objects
.
create
(
name
=
'com,ma'
)
self
.
assertEqual
s
(
edit_string_for_tags
([
plain
]),
u'plain'
)
self
.
assertEqual
s
(
edit_string_for_tags
([
plain
,
spaces
]),
u'plain, spa ces'
)
self
.
assertEqual
s
(
edit_string_for_tags
([
plain
,
spaces
,
comma
]),
u'plain, spa ces, "com,ma"'
)
self
.
assertEqual
s
(
edit_string_for_tags
([
plain
,
comma
]),
u'plain "com,ma"'
)
self
.
assertEqual
s
(
edit_string_for_tags
([
comma
,
spaces
]),
u'"com,ma", spa ces'
)
self
.
assertEqual
(
edit_string_for_tags
([
plain
]),
u'plain'
)
self
.
assertEqual
(
edit_string_for_tags
([
plain
,
spaces
]),
u'plain, spa ces'
)
self
.
assertEqual
(
edit_string_for_tags
([
plain
,
spaces
,
comma
]),
u'plain, spa ces, "com,ma"'
)
self
.
assertEqual
(
edit_string_for_tags
([
plain
,
comma
]),
u'plain "com,ma"'
)
self
.
assertEqual
(
edit_string_for_tags
([
comma
,
spaces
]),
u'"com,ma", spa ces'
)
taggit/utils.py
View file @
e04918d6
...
...
@@ -35,7 +35,7 @@ def parse_tags(tagstring):
open_quote
=
False
i
=
iter
(
tagstring
)
try
:
while
1
:
while
True
:
c
=
i
.
next
()
if
c
==
u'"'
:
if
buffer
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment