def update_backend_attributes new_backend, force = false
if force || (new_backend && new_backend != @attributes['backend'])
attrs = @attributes
current_backend = attrs['backend']
current_basebackend = attrs['basebackend']
current_doctype = attrs['doctype']
if new_backend.start_with? 'xhtml'
attrs['htmlsyntax'] = 'xml'
new_backend = new_backend[1..-1]
elsif new_backend.start_with? 'html'
attrs['htmlsyntax'] = 'html' unless attrs['htmlsyntax'] == 'xml'
end
if (resolved_name = BACKEND_ALIASES[new_backend])
new_backend = resolved_name
end
if current_backend
attrs.delete %(backend-#{current_backend})
if current_doctype
attrs.delete %(backend-#{current_backend}-doctype-#{current_doctype})
end
end
if current_doctype
attrs[%(doctype-#{current_doctype})] = ''
attrs[%(backend-#{new_backend}-doctype-#{current_doctype})] = ''
end
attrs['backend'] = new_backend
attrs[%(backend-#{new_backend})] = ''
if Converter::BackendInfo === (@converter = create_converter)
new_basebackend = @converter.basebackend
attrs['outfilesuffix'] = @converter.outfilesuffix unless attribute_locked? 'outfilesuffix'
new_filetype = @converter.filetype
else
new_basebackend = new_backend.sub TrailingDigitsRx, ''
new_outfilesuffix = DEFAULT_EXTENSIONS[new_basebackend] || '.html'
new_filetype = new_outfilesuffix[1..-1]
attrs['outfilesuffix'] = new_outfilesuffix unless attribute_locked? 'outfilesuffix'
end
if (current_filetype = attrs['filetype'])
attrs.delete %(filetype-#{current_filetype})
end
attrs['filetype'] = new_filetype
attrs[%(filetype-#{new_filetype})] = ''
if (page_width = DEFAULT_PAGE_WIDTHS[new_basebackend])
attrs['pagewidth'] = page_width
else
attrs.delete 'pagewidth'
end
if new_basebackend != current_basebackend
if current_basebackend
attrs.delete %(basebackend-#{current_basebackend})
if current_doctype
attrs.delete %(basebackend-#{current_basebackend}-doctype-#{current_doctype})
end
end
attrs['basebackend'] = new_basebackend
attrs[%(basebackend-#{new_basebackend})] = ''
attrs[%(basebackend-#{new_basebackend}-doctype-#{current_doctype})] = '' if current_doctype
end
@backend = nil
end
end