summaryrefslogtreecommitdiff
path: root/mimeparse.py
diff options
context:
space:
mode:
authorD.B. Tsai <dbtsai@dbtsai.com>2012-08-26 17:15:26 -0700
committerD.B. Tsai <dbtsai@dbtsai.com>2012-08-27 20:03:06 -0700
commit2d600d3fc4a386af69d20fba433843b4df2b3c92 (patch)
tree448829c54d645a9331492b34a27c12861402f7ee /mimeparse.py
parent67b1d8bce8e41a77ee19038453b3ecdb85708f2a (diff)
downloadpython-mimeparse-2d600d3fc4a386af69d20fba433843b4df2b3c92.tar.gz
Fixed Wrong ordering of candidates
See https://github.com/dbtsai/python-mimeparse/issues/3 mimeparse.best_match(["image/jpeg", "text/plain"], "text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5") Expected: 'image/jpeg' Instead: 'text/plain'
Diffstat (limited to 'mimeparse.py')
-rwxr-xr-xmimeparse.py10
1 files changed, 5 insertions, 5 deletions
diff --git a/mimeparse.py b/mimeparse.py
index 181e01f..e258016 100755
--- a/mimeparse.py
+++ b/mimeparse.py
@@ -72,7 +72,7 @@ def parse_media_range(range):
return (type, subtype, params)
-def fitness_and_quality_parsed(mime_type, parsed_ranges):
+def quality_and_fitness_parsed(mime_type, parsed_ranges):
"""Find the best match for a mime-type amongst parsed media-ranges.
Find the best match for a given mime-type against a list of media_ranges
@@ -103,7 +103,7 @@ def fitness_and_quality_parsed(mime_type, parsed_ranges):
best_fitness = fitness
best_fit_q = params['q']
- return best_fitness, float(best_fit_q)
+ return float(best_fit_q), best_fitness
def quality_parsed(mime_type, parsed_ranges):
@@ -115,7 +115,7 @@ def quality_parsed(mime_type, parsed_ranges):
bahaves the same as quality() except that 'parsed_ranges' must be a list of
parsed media ranges. """
- return fitness_and_quality_parsed(mime_type, parsed_ranges)[1]
+ return quality_and_fitness_parsed(mime_type, parsed_ranges)[0]
def quality(mime_type, ranges):
@@ -153,12 +153,12 @@ def best_match(supported, header):
weighted_matches = []
pos = 0
for mime_type in supported:
- weighted_matches.append((fitness_and_quality_parsed(mime_type,
+ weighted_matches.append((quality_and_fitness_parsed(mime_type,
parsed_header), pos, mime_type))
pos += 1
weighted_matches.sort()
- return weighted_matches[-1][0][1] and weighted_matches[-1][2] or ''
+ return weighted_matches[-1][0][0] and weighted_matches[-1][2] or ''
def _filter_blank(i):