Class: Mhtml::Document
- Inherits:
-
Object
- Object
- Mhtml::Document
- Defined in:
- lib/mhtml/document.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#body ⇒ Object
Returns the value of attribute body.
-
#chunked ⇒ Object
readonly
Returns the value of attribute chunked.
-
#encoding ⇒ Object
Returns the value of attribute encoding.
-
#file_path ⇒ Object
Returns the value of attribute file_path.
-
#headers ⇒ Object
Returns the value of attribute headers.
-
#is_quoted_printable ⇒ Object
Returns the value of attribute is_quoted_printable.
-
#parser ⇒ Object
readonly
Returns the value of attribute parser.
-
#root_doc ⇒ Object
Returns the value of attribute root_doc.
Instance Method Summary collapse
- #<<(chunk) ⇒ Object
- #==(other) ⇒ Object
- #header(key) ⇒ Object
-
#initialize(str = nil) ⇒ Document
constructor
A new instance of Document.
- #on_body ⇒ Object
- #on_header ⇒ Object
- #relative_file_path ⇒ Object
-
#to_s ⇒ Object
for testing only = no spec implemented.
Constructor Details
#initialize(str = nil) ⇒ Document
Returns a new instance of Document.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/mhtml/document.rb', line 14 def initialize(str = nil) @chunked = !str.is_a?(String) @header_key = nil @header_value_lines = nil @is_quoted_printable = false @encoding = nil @request = HttpParser::Parser.new_instance { |inst| inst.type = :response } @parser = HttpParser::Parser.new do |parser| parser.on_header_field { |inst, data| handle_header_field(inst, data) } parser.on_header_value { |inst, data| handle_header_value(inst, data) } parser.on_body { |inst, data| handle_body(inst, data) } parser. { |inst| (inst) } parser. { |inst| (inst) } end @parser.parse(@request, Mhtml::STATUS_LINE) unless @chunked @headers = [] @body = '' @parser.parse(@request, str) end end |
Instance Attribute Details
#body ⇒ Object
Returns the value of attribute body.
7 8 9 |
# File 'lib/mhtml/document.rb', line 7 def body @body end |
#chunked ⇒ Object (readonly)
Returns the value of attribute chunked.
5 6 7 |
# File 'lib/mhtml/document.rb', line 5 def chunked @chunked end |
#encoding ⇒ Object
Returns the value of attribute encoding.
7 8 9 |
# File 'lib/mhtml/document.rb', line 7 def encoding @encoding end |
#file_path ⇒ Object
Returns the value of attribute file_path.
7 8 9 |
# File 'lib/mhtml/document.rb', line 7 def file_path @file_path end |
#headers ⇒ Object
Returns the value of attribute headers.
7 8 9 |
# File 'lib/mhtml/document.rb', line 7 def headers @headers end |
#is_quoted_printable ⇒ Object
Returns the value of attribute is_quoted_printable.
7 8 9 |
# File 'lib/mhtml/document.rb', line 7 def is_quoted_printable @is_quoted_printable end |
#parser ⇒ Object (readonly)
Returns the value of attribute parser.
5 6 7 |
# File 'lib/mhtml/document.rb', line 5 def parser @parser end |
#root_doc ⇒ Object
Returns the value of attribute root_doc.
7 8 9 |
# File 'lib/mhtml/document.rb', line 7 def root_doc @root_doc end |
Instance Method Details
#<<(chunk) ⇒ Object
40 41 42 |
# File 'lib/mhtml/document.rb', line 40 def <<(chunk) @parser.parse(@request, chunk) end |
#==(other) ⇒ Object
44 45 46 47 |
# File 'lib/mhtml/document.rb', line 44 def ==(other) @headers == other.headers && @body.gsub(/\r\n/, "\n").strip == other.body.gsub(/\r\n/, "\n").strip end |
#header(key) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/mhtml/document.rb', line 57 def header(key) header = nil @headers.each do |h| if h.key == key header = h break end end header end |
#on_body ⇒ Object
53 54 55 |
# File 'lib/mhtml/document.rb', line 53 def on_body @body_proc = Proc.new end |
#on_header ⇒ Object
49 50 51 |
# File 'lib/mhtml/document.rb', line 49 def on_header @headers_proc = Proc.new end |
#relative_file_path ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/mhtml/document.rb', line 70 def relative_file_path return nil if @file_path.nil? return '.' if @file_path == @root_doc.file_path str = nil if !@root_doc.file_path.nil? && @file_path.start_with?(@root_doc.file_path) start = @root_doc.file_path.length str = @file_path[start..(@file_path.length - 1)] elsif @file_path.include?(':') start = @file_path.rindex(':') + 1 str = @file_path[start..(@file_path.length - 1)] else str = @file_path end str = str[1..(str.length - 1)] if str[0] == '/' str end |
#to_s ⇒ Object
for testing only = no spec implemented
94 95 96 |
# File 'lib/mhtml/document.rb', line 94 def to_s @headers.join(LINE_BREAK) + Mhtml::DOUBLE_LINE_BREAK + @body end |