def self.parse_document_header(reader, document)
block_attributes = parse_block_metadata_lines(reader, document)
if block_attributes.has_key?('title')
document.clear_playback_attributes block_attributes
document.save_attributes
block_attributes['invalid-header'] = true
return block_attributes
end
assigned_doctitle = nil
unless (val = document.attributes.fetch('doctitle', '')).empty?
document.title = val
assigned_doctitle = val
end
section_title = nil
if is_next_line_document_title?(reader, block_attributes)
document.id, doctitle, _, _ = parse_section_title(reader, document)
unless assigned_doctitle
document.title = doctitle
assigned_doctitle = doctitle
end
document.attributes['doctitle'] = section_title = doctitle
if document.id.nil? && block_attributes.has_key?('id')
document.id = block_attributes.delete('id')
end
parse_header_metadata(reader, document)
end
if !(val = document.attributes.fetch('doctitle', '')).empty? &&
val != section_title
document.title = val
assigned_doctitle = val
end
if assigned_doctitle
document.attributes['doctitle'] = assigned_doctitle
end
document.clear_playback_attributes block_attributes
document.save_attributes
block_attributes
end