       {:expected-docs expected-docs
        :docstring (fix-docstring docstring)
        :signatures signatures
-       :fn-or-macro fn-or-macro})))
+       :type type-})))
 
 (defn parse-def-fn
   [form]

  [form]
  nil)

(defn parse-common
  [form ns- repo]
  (let [name- (second form)
        name-meta (meta name-)
        return-type (:tag name-meta)
        m (meta form)
        lines [(:line m) (:end-line m)]
        num-lines (inc (- (:end-line m) (:line m)))
        source (join "\n" (take-last num-lines (split-lines (:source m))))
        filename (subs (:file m) (inc (count repo-dir)))
        github-link (get-github-file-link repo filename lines)
        manual-macro? (or (*fn-macros* name-)
                          (:macro name-meta))]
    (merge
      {:ns ns-
       :name name-
       :return-type return-type
       :full-name (str ns- "/" name-)
       :source source
       :filename filename
       :lines lines
       :github-link github-link}

      (when manual-macro?
        {:fn-or-macro "macro"}))))

(defn parse-form
  [form ns- repo]
  (when-let [specific (parse-form* form)]
    (let [common (parse-common form ns- repo)
          merged (merge specific common)
          final (update-in merged [:source] try-remove-docs (:expected-docs specific))]
      final)))


  (join "\n"
    (keep identity
      [(cljsdoc-section "Name" (:full-name item))
       (cljsdoc-section "Type" (:type item))
       (cljsdoc-section "Return Type" (:return-type item))
       (cljsdoc-section "Docstring" (:docstring item))
       (cljsdoc-section "Signature" (join "\n" (:signatures item)))
