code: func ParseSource(src *source, opts *Options) (*result, error) {
  	// Initialize the options.
  	opts = InitializeOptions(opts)
  
  	rslt := newResult(nil, nil, nil)
  
  	base, err := parseBytes(src.base.data, rslt, src, opts, src.base)
  	if err != nil {
  		return nil, err
  	}
  
  	inner, err := parseBytes(src.inner.data, rslt, src, opts, src.inner)
  	if err != nil {
  		return nil, err
  	}
  
  	includes := make(map[string][]element)
  
  	for _, f := range src.includes {
  		includes[f.path], err = parseBytes(f.data, rslt, src, opts, f)
  		if err != nil {
  			return nil, err
  		}
  	}
  
  	rslt.base = base
  	rslt.inner = inner
  	rslt.includes = includes
  
  	return rslt, nil
  }
docs: // ParseSource parses the source and returns the result.