Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
CIRCLE
/
cloud
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
94
Merge Requests
10
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
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
912ccc1b
authored
Mar 19, 2014
by
Őry Máté
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
common: cleanup HumanSortField.get_normalized_value
parent
0c795347
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
24 additions
and
11 deletions
+24
-11
circle/common/models.py
+24
-11
No files found.
circle/common/models.py
View file @
912ccc1b
...
@@ -174,22 +174,35 @@ class HumanSortField(CharField):
...
@@ -174,22 +174,35 @@ class HumanSortField(CharField):
def
get_monitored_value
(
self
,
instance
):
def
get_monitored_value
(
self
,
instance
):
return
getattr
(
instance
,
self
.
monitor
)
return
getattr
(
instance
,
self
.
monitor
)
def
get_normalized_value
(
self
,
val
):
@staticmethod
def
_partition
(
s
,
pred
):
def
partition
(
s
,
pred
):
"""Partition a deque of chars to a tuple of a
match
,
notmatch
=
deque
(),
deque
()
- string of the longest prefix matching pred,
while
s
and
pred
(
s
[
0
]):
- string of the longest prefix after the former one not matching,
match
.
append
(
s
.
popleft
())
- deque of the remaining characters.
while
s
and
not
pred
(
s
[
0
]):
notmatch
.
append
(
s
.
popleft
())
>>> HumanSortField._partition(deque("1234abc567"),
return
(
''
.
join
(
match
),
''
.
join
(
notmatch
),
s
)
... lambda s: s.isdigit())
('1234', 'abc', deque(['5', '6', '7']))
>>> HumanSortField._partition(deque("12ab"), lambda s: s.isalpha())
('', '12', deque(['a', 'b']))
"""
match
,
notmatch
=
deque
(),
deque
()
while
s
and
pred
(
s
[
0
]):
match
.
append
(
s
.
popleft
())
while
s
and
not
pred
(
s
[
0
]):
notmatch
.
append
(
s
.
popleft
())
return
(
''
.
join
(
match
),
''
.
join
(
notmatch
),
s
)
def
get_normalized_value
(
self
,
val
):
logger
.
debug
(
'Normalizing value:
%
s'
,
val
)
logger
.
debug
(
'Normalizing value:
%
s'
,
val
)
norm
=
""
norm
=
""
val
=
deque
(
val
)
val
=
deque
(
val
)
while
val
:
while
val
:
numbers
,
letters
,
val
=
partition
(
val
,
lambda
s
:
s
[
0
]
.
isdigit
())
numbers
,
letters
,
val
=
self
.
_partition
(
val
,
norm
+=
numbers
and
numbers
.
rjust
(
self
.
maximum_number_length
,
'0'
)
lambda
s
:
s
[
0
]
.
isdigit
())
if
numbers
:
norm
+=
numbers
.
rjust
(
self
.
maximum_number_length
,
'0'
)
norm
+=
letters
norm
+=
letters
logger
.
debug
(
'Normalized value:
%
s'
,
norm
)
logger
.
debug
(
'Normalized value:
%
s'
,
norm
)
return
norm
return
norm
...
...
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