Fix and simplify QBasedComparer.
Make parsing of qvalues independent from a system's language setting and ensure that the comparison adheres to a descending order.0.7.1-dev
							parent
							
								
									c169a62f55
								
							
						
					
					
						commit
						19d3792278
					
				|  | @ -29,6 +29,7 @@ using System; | |||
| using System.Collections; | ||||
| using System.Collections.Generic; | ||||
| using System.Collections.Specialized; | ||||
| using System.Globalization; | ||||
| using System.IO; | ||||
| using System.Net; | ||||
| using System.Net.Security; | ||||
|  | @ -557,34 +558,27 @@ namespace OpenSim.Framework | |||
|             { | ||||
|                 float qx = GetQ(x); | ||||
|                 float qy = GetQ(y); | ||||
|                 if (qx < qy) | ||||
|                     return -1; | ||||
|                 if (qx == qy) | ||||
|                     return 0; | ||||
|                 return 1; | ||||
|                 return qy.CompareTo(qx); // descending order | ||||
|             } | ||||
| 
 | ||||
|             private float GetQ(Object o) | ||||
|             { | ||||
|                 // Example: image/png;q=0.9 | ||||
| 
 | ||||
|                 float qvalue = 1F; | ||||
|                 if (o is String) | ||||
|                 { | ||||
|                     string mime = (string)o; | ||||
|                     string[] parts = mime.Split(new char[] { ';' }); | ||||
|                     string[] parts = mime.Split(';'); | ||||
|                     if (parts.Length > 1) | ||||
|                     { | ||||
|                         string[] kvp = parts[1].Split(new char[] { '=' }); | ||||
|                         string[] kvp = parts[1].Split('='); | ||||
|                         if (kvp.Length == 2 && kvp[0] == "q") | ||||
|                         { | ||||
|                             float qvalue = 1F; | ||||
|                             float.TryParse(kvp[1], out qvalue); | ||||
|                             return qvalue; | ||||
|                         } | ||||
|                             float.TryParse(kvp[1], NumberStyles.Number, CultureInfo.InvariantCulture, out qvalue); | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|                 return 1F; | ||||
|                 return qvalue; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Marck
						Marck