Skip to content
HTML to Hiccup with one function
Clojure
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.gitignore
README.md
h2h.clj
repl-port

README.md

(ns h2h
  (:gen-class))

(comment
  html2hiccup.core=> (def html "<a>asd</a><img<v>valid tags only</v>>dsa</img>")
  #'html2hiccup.core/html
  html2hiccup.core=> html
  "<a>asd</a><img<v>valid tags only</v>>dsa</img>"
  html2hiccup.core=> (h2h html)
  ([:a "asd"] [:v "valid tags only"])
  html2hiccup.core=>
  ) ;; COMMENT

(defn html2hiccup
  "Converts full tag elemnts <t></t>"
  [str-html]
  (let
      [tags-open (map #(hash-map
                        (keyword (last %))
                        '{})
                      (re-seq #"<(\w+)>"
                              str-html))
       tags-close (map #(hash-map
                         (keyword (last %))
                         '{})
                       (re-seq #"<(/\w+)>"
                               str-html))
       tags-content (let
                        [tags (lazy-seq
                               (.split str-html
                                       ">"))
                         stags (filter #(.contains
                                         (str %)
                                         "</")
                                       tags)]
                      (map #(first
                             (.split
                              (str %)
                              "<"))
                           stags))
       html-tags (partition 3
                            (interleave
                             (flatten tags-content)
                             (flatten tags-open)
                             (flatten tags-close)))]
     (lazy-seq
      (for [ht html-tags
            :let
            [content (first ht)
             opent (first
                    (keys
                     (second ht)))
             closet (last ht)]]
        [opent
         content]))))

(defn h2h [str-html] (html2hiccup str-html))
Something went wrong with that request. Please try again.