Fix eBay's egregious breakage of HTML standards by including raw < and > characters in their title blocks. I'm sure I'll have to back this out some day, when they fix their page generator, so I've added a configuration option ebay.titleFix which defaults to 'true', and can be overridden to 'false' when eBay gets their code together.
[#183 state:resolved]
[#221 state:resolved]
| 508 | 570 | |
|---|---|---|
| 7 | 7 | |
| 8 | 8 | import com.jbidwatcher.util.config.JConfig; |
| 9 | 9 | import com.jbidwatcher.util.config.ErrorManagement; |
| 10 | import com.jbidwatcher.util.xml.XMLElement; | |
| 10 | 11 | |
| 11 | 12 | import java.util.Vector; |
| 12 | 13 | import java.util.List; |
| 14 | import java.util.regex.Matcher; | |
| 15 | import java.util.regex.Pattern; | |
| 13 | 16 | |
| 14 | 17 | /** |
| 15 | 18 | * Created by IntelliJ IDEA. |
| --- | --- | |
| 40 | 43 | |
| 41 | 44 | protected void parse(StringBuffer trueBuffer) { |
| 42 | 45 | boolean inQuote=false, inTag=false, inComment=false; |
| 43 | boolean suspicious = false; | |
| 44 | int firstClose=0; | |
| 45 | int charStep, start=0; | |
| 46 | 46 | char ch, prev = '\0', next = '\0'; |
| 47 | boolean spitNextTag = false; | |
| 48 | 47 | |
| 49 | trueBuffer = new StringBuffer(trueBuffer.toString().replaceAll("(<nobr>|</nobr>)", "")); | |
| 48 | StringBuffer sb; | |
| 49 | Matcher m; | |
| 50 | if(JConfig.queryConfiguration("ebay.titleFix", "true").equals("true")) { | |
| 51 | sb = new StringBuffer(trueBuffer.length()); | |
| 52 | m = Pattern.compile("<title>(.*)</title>").matcher(trueBuffer); | |
| 53 | String quotedTitle = null; | |
| 54 | while(m.find()) { | |
| 55 | if(quotedTitle == null) quotedTitle = "<title>" + XMLElement.encodeString(m.group(1)) + "</title>"; | |
| 56 | m.appendReplacement(sb, quotedTitle); | |
| 57 | } | |
| 58 | m.appendTail(sb); | |
| 59 | trueBuffer = sb; | |
| 60 | } | |
| 61 | ||
| 62 | sb = new StringBuffer(trueBuffer.length()); | |
| 63 | m = Pattern.compile("(<nobr>|</nobr>)").matcher(trueBuffer); | |
| 64 | while(m.find()) { | |
| 65 | m.appendReplacement(sb, ""); | |
| 66 | } | |
| 67 | m.appendTail(sb); | |
| 68 | trueBuffer = sb; | |
| 69 | ||
| 50 | 70 | int bufLen = trueBuffer.length(); |
| 51 | ||
| 52 | for(charStep=0; charStep<bufLen; charStep++) { | |
| 71 | boolean spitNextTag = false; | |
| 72 | int start = 0; | |
| 73 | int firstClose = 0; | |
| 74 | boolean suspicious = false; | |
| 75 | for(int charStep = 0; charStep<bufLen; charStep++) { | |
| 53 | 76 | ch = trueBuffer.charAt(charStep); |
| 54 | 77 | |
| 55 | 78 | if(charStep>1) prev = trueBuffer.charAt(charStep-1); |
