class AoBane::Document
Constants
- BLANK_LINE_PATTERN
- HEADER_PATTERN
- HEADER_SEQUEL_PATTERN
Attributes
body[RW]
headers[RW]
text[RW]
text=[RW]
Public Class Methods
new(headers = {}, body = '')
click to toggle source
# File lib/AoBane.rb, line 333 def initialize(headers = {}, body = '') @headers = {} headers.each do |k, v| self[k] = v end @body = body end
parse(str, default_enc = EncodingType::UTF8)
click to toggle source
# File lib/AoBane.rb, line 326 def parse(str, default_enc = EncodingType::UTF8) parse_io(StringIO.new(str), default_enc) end
parse_io(input, default_enc = EncodingType::UTF8)
click to toggle source
# File lib/AoBane.rb, line 246 def parse_io(input, default_enc = EncodingType::UTF8) headers = {} body = nil first_pos = input.pos default_enc = EncodingType.regulate(default_enc) Util.change_kcode(EncodingType.convert_to_kcode(default_enc)){ # default encoding if defined?(Encoding) then input.set_encoding(Encoding.find(default_enc)) end # get headers pos_before_gets = nil first_line = true loop do pos_before_gets = input.pos line = input.gets # cut UTF-8 BOM if first_line and Util.utf8_bom?(line) then line.slice!(UTF8_BOM_PATTERN) end first_line = false if line and line.chomp =~ HEADER_PATTERN then key = $1.downcase; value = $2 if key == 'encoding' and not headers.include?('encoding') then kc = EncodingType.convert_to_kcode(value.downcase) if input.respond_to?(:set_encoding) then input.set_encoding(EncodingType.regulate(value)) # rewind (reason => [ruby-list:45988]) input.pos = first_pos first_line = true else $KCODE = kc end end headers[key] = value else # EOF or Metadata end break end end # back input.pos = pos_before_gets # skip blank lines loop do pos_before_gets = input.pos line = input.gets if line.nil? or not line =~ BLANK_LINE_PATTERN then break end end # back input.pos = pos_before_gets # get body body = input.read } return self.new(headers, body) end
Public Instance Methods
[](key)
click to toggle source
# File lib/AoBane.rb, line 341 def [](key) @headers[key.to_s.downcase] end
[]=(key, value)
click to toggle source
# File lib/AoBane.rb, line 345 def []=(key, value) @headers[key.to_s.downcase] = value.to_s end
css()
click to toggle source
# File lib/AoBane.rb, line 353 def css @headers['css'] end
encoding_type()
click to toggle source
# File lib/AoBane.rb, line 377 def encoding_type @headers['encoding'] || EncodingType::UTF8 end
header_id_type()
click to toggle source
# File lib/AoBane.rb, line 381 def header_id_type (@headers['header-id-type'] || HeaderIDType::MD5).downcase end
kcode()
click to toggle source
# File lib/AoBane.rb, line 385 def kcode self.encoding_type && EncodingType.convert_to_kcode(self.encoding_type) end
numbering()
click to toggle source
# File lib/AoBane.rb, line 357 def numbering case @headers['numbering'] when 'yes', '1', 'true', 'on' true else false end end
Also aliased as: numbering?
numbering_start_level()
click to toggle source
# File lib/AoBane.rb, line 368 def numbering_start_level level = (@headers['numbering-start-level'] || 2).to_i if level >= 1 and level <= 6 then return level else return 2 end end
title()
click to toggle source
# File lib/AoBane.rb, line 349 def title @headers['title'] end
to_html()
click to toggle source
# File lib/AoBane.rb, line 389 def to_html Parser.new.document_to_html(self) end