docs: def build(
      root, source_module, output_dir,
      json_dump=False, ignore_modules=None, index_filename='index'
  ):
      '''
      Build markdown documentation from a directory and/or python module.
  
      # ignore_modules: takes a list of module names to ignore
      # index_filename: __init__.py output (default index.md), use README.md for github indexes
      '''
      if root.endswith('/'):
          root = root[:-1]
  
      if ignore_modules is None:
          ignore_modules = []
      elif isinstance(ignore_modules, str):
          ignore_modules = ignore_modules.split(',')
  
      # Ensure output_dir format (no / at start, / at end)
      if output_dir.startswith('/'):
          output_dir = output_dir[1:]
  
      if not output_dir.endswith('/'):
          output_dir = '{}/'.format(output_dir)
  
      # Apply root to it, make the directory if not exists
      output_dir = '{}/{}'.format(root, output_dir)
      if not path.isdir(output_dir):
              makedirs(output_dir)
  
      if source_module == '.':
          source_dir = '{}/'.format(root)
      else:
          source_dir = '{}/{}/'.format(root, source_module.replace('.', os.sep))
  
      # Cd into the source directory
      chdir(source_dir)
      # And build the module list
      module_list = _build_module_list(
          source_module,
          index_filename=index_filename,
          ignore_modules=ignore_modules
      )
  
      # Cd back to old directory
      chdir(root)
      # And parse all the modules
      _parse_module_list(module_list)
  
      # Cd inot the target directory
      chdir(output_dir)
      # Finally, write the module list to our output dir
      _write_docs(module_list, output_dir)
  
      if json_dump:
          print json.dumps(module_list, indent=4)