Module | HTML5::Sniffer |
In: |
lib/feed_tools/vendor/html5/lib/html5/sniffer.rb
|
4.7.4
# File lib/feed_tools/vendor/html5/lib/html5/sniffer.rb, line 4 4: def html_or_feed str 5: s = str[0, 512] # steps 1, 2 6: pos = 0 7: 8: while pos < s.length 9: case s[pos] 10: when 0x09, 0x20, 0x0A, 0x0D # tab, space, LF, CR 11: pos += 1 12: when 0x3C # "<" 13: pos += 1 14: if s[pos..pos+2] == "!--" # [0x21, 0x2D, 0x2D] 15: pos += 3 16: until s[pos..pos+2] == "-->" or pos >= s.length 17: pos += 1 18: end 19: pos += 3 20: elsif s[pos] == 0x21 # "!" 21: pos += 1 22: until s[pos] == 0x3E or pos >= s.length # ">" 23: pos += 1 24: end 25: pos += 1 26: elsif s[pos] == 0x3F # "?" 27: until s[pos..pos+1] == "?>" or pos >= s.length # [0x3F, 0x3E] 28: pos += 1 29: end 30: pos += 2 31: elsif s[pos..pos+2] == "rss" # [0x72, 0x73, 0x73] 32: return "application/rss+xml" 33: elsif s[pos..pos+3] == "feed" # [0x66, 0x65, 0x65, 0x64] 34: return "application/atom+xml" 35: elsif s[pos..pos+6] == "rdf:RDF" # [0x72, 0x64, 0x66, 0x3A, 0x52, 0x44, 0x46] 36: raise NotImplementedError 37: end 38: else 39: break 40: end 41: end 42: "text/html" 43: end