module Asciidoctor::Converter::BackendInfo

def backend_info

def backend_info
  @backend_info ||= setup_backend_info
end

def basebackend value = nil

def basebackend value = nil
  if value
    backend_info['basebackend'] = value
  else
    backend_info['basebackend']
  end
end

def filetype value = nil

def filetype value = nil
  if value
    backend_info['filetype'] = value
  else
    backend_info['filetype']
  end
end

def htmlsyntax value = nil

def htmlsyntax value = nil
  if value
    backend_info['htmlsyntax'] = value
  else
    backend_info['htmlsyntax']
  end
end

def outfilesuffix value = nil

def outfilesuffix value = nil
  if value
    backend_info['outfilesuffix'] = value
  else
    backend_info['outfilesuffix']
  end
end

def setup_backend_info

def setup_backend_info
  raise ::ArgumentError, %(Cannot determine backend for converter: #{self.class}) unless @backend
  base = @backend.sub TrailingDigitsRx, ''
  if (ext = DEFAULT_EXTENSIONS[base])
    type = ext[1..-1]
  else
    # QUESTION should we be forcing the basebackend to html if unknown?
    base = 'html'
    ext = '.html'
    type = 'html'
    syntax = 'html'
  end
  {
    'basebackend' => base,
    'outfilesuffix' => ext,
    'filetype' => type,
    'htmlsyntax' => syntax
  }
end