Reworked doclet to work with frames
Hash in url bar is page to load for frames When you click a nav link, it sets the hash If you go to nav link in new tab, and click home, it will load the same page, but in the frames
This commit is contained in:
@@ -30,7 +30,6 @@ a:hover {
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
top: 0px;
|
top: 0px;
|
||||||
left: 0px;
|
left: 0px;
|
||||||
position: fixed;
|
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
padding: 0px 0px 0px 10px;
|
padding: 0px 0px 0px 10px;
|
||||||
opacity: 0.6;
|
opacity: 0.6;
|
||||||
@@ -54,9 +53,14 @@ a:hover {
|
|||||||
text-indent: 10px;
|
text-indent: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.headbar {
|
||||||
|
padding: 5px 0px 5px 5px;
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: 1px solid black
|
||||||
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
padding: 20px 0px 20px 20px;
|
padding: 20px 0px 20px 20px;
|
||||||
margin-left: 250px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.content code {
|
.content code {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var elems = document.getElementsByTagName("pre");
|
var elems = document.getElementsByTagName("pre");
|
||||||
for (var i = 0; i < elems.length; i++) {
|
for (var i = 0; i < elems.length; i++) {
|
||||||
hljs.highlightBlock(elems[i]);
|
hljs.highlightBlock(elems[i]);
|
||||||
}
|
}
|
||||||
|
|||||||
9
doclet/resources/nav.js
Normal file
9
doclet/resources/nav.js
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
function goToHash(){
|
||||||
|
if(window.location.hash != ""){
|
||||||
|
document.getElementById("content-frame").src = window.location.hash.substr(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setHash(link){
|
||||||
|
window.parent.location.hash = link.getAttribute("newHash")
|
||||||
|
}
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
(cons [:div {:class "ns"} ns]
|
(cons [:div {:class "ns"} ns]
|
||||||
(for [{:keys [name]} groups]
|
(for [{:keys [name]} groups]
|
||||||
[:div {:class "name"}
|
[:div {:class "name"}
|
||||||
[:a {:href (str->filename ns name) :target "content-frame"}
|
[:a {:href (str->filename ns name) :target "content-frame" :onClick (str "setHash(this)") :newHash (str->filename ns name)}
|
||||||
name]])))])
|
name]])))])
|
||||||
|
|
||||||
(defn java-param
|
(defn java-param
|
||||||
@@ -61,16 +61,23 @@
|
|||||||
[:pre raw]]]])
|
[:pre raw]]]])
|
||||||
|
|
||||||
(defn create-site-file
|
(defn create-site-file
|
||||||
[name content]
|
([name content home-link-hash]
|
||||||
(html [:html
|
(html [:html
|
||||||
[:head
|
[:head
|
||||||
[:title name]
|
[:title name]
|
||||||
[:link {:rel "stylesheet" :href "highlight.css"}]
|
[:script {:src "nav.js"}]
|
||||||
[:link {:rel "stylesheet" :href "main.css"}]]
|
[:link {:rel "stylesheet" :href "highlight.css"}]
|
||||||
[:body
|
[:link {:rel "stylesheet" :href "main.css"}]]
|
||||||
content
|
[:body
|
||||||
[:script {:src "highlight.js"}]
|
(when home-link-hash
|
||||||
[:script {:src "main.js"}]]]))
|
[:div {:class "headbar"}
|
||||||
|
[:a {:href (str "index.html" (if (not-empty home-link-hash)
|
||||||
|
(str "#" home-link-hash)
|
||||||
|
""))
|
||||||
|
:target "_top"} "Home"]])
|
||||||
|
content
|
||||||
|
[:script {:src "highlight.js"}]
|
||||||
|
[:script {:src "main.js"}]]])))
|
||||||
|
|
||||||
(defn create-embed-file
|
(defn create-embed-file
|
||||||
[content]
|
[content]
|
||||||
@@ -83,25 +90,37 @@
|
|||||||
|
|
||||||
(defn index-frameset
|
(defn index-frameset
|
||||||
[]
|
[]
|
||||||
(html [:frameset
|
(html
|
||||||
[:frame {:src "sidebar.html"}
|
[:html
|
||||||
:frame {:name "content-frame"}]]))
|
[:head
|
||||||
|
[:title "play-clj docs"]
|
||||||
|
[:script {:src "nav.js"}]
|
||||||
|
[:link {:rel "stylesheet" :href "highlight.css"}]
|
||||||
|
[:link {:rel "stylesheet" :href "main.css"}]]
|
||||||
|
[:frameset {:cols "250px,100%" :onLoad "goToHash();"}
|
||||||
|
[:frame {:src "sidebar.html"}]
|
||||||
|
[:frame {:src "blank.html" :name "content-frame" :id "content-frame"}]
|
||||||
|
[:script {:src "highlight.js"}]
|
||||||
|
[:script {:src "main.js"}]]]))
|
||||||
|
|
||||||
(defn create-site!
|
(defn create-site!
|
||||||
[dir parsed-files]
|
[dir parsed-files]
|
||||||
(.mkdir (io/file dir))
|
(.mkdir (io/file dir))
|
||||||
(copy-from-res dir "main.css")
|
(copy-from-res dir "main.css")
|
||||||
(copy-from-res dir "main.js")
|
(copy-from-res dir "main.js")
|
||||||
|
(copy-from-res dir "nav.js")
|
||||||
(copy-from-res dir "highlight.css")
|
(copy-from-res dir "highlight.css")
|
||||||
(copy-from-res dir "highlight.js")
|
(copy-from-res dir "highlight.js")
|
||||||
(doseq [[ns groups] parsed-files]
|
(doseq [[ns groups] parsed-files]
|
||||||
(doseq [{:keys [name] :as group} groups]
|
(doseq [{:keys [name] :as group} groups]
|
||||||
(spit (io/file dir (str->filename ns name))
|
(spit (io/file dir (str->filename ns name))
|
||||||
(create-site-file name (content group)))))
|
(create-site-file name (content group) (str->filename ns name)))))
|
||||||
(spit (io/file dir "sidebar.html")
|
(spit (io/file dir "sidebar.html")
|
||||||
(sidebar parsed-files))
|
(create-site-file "sidebar" (sidebar parsed-files) nil))
|
||||||
|
(spit (io/file dir "blank.html")
|
||||||
|
(create-site-file "blank" nil ""))
|
||||||
(spit (io/file dir "index.html")
|
(spit (io/file dir "index.html")
|
||||||
(create-site-file "play-clj docs" (index-frameset)))
|
(index-frameset))
|
||||||
(println "Created" (str dir "/")))
|
(println "Created" (str dir "/")))
|
||||||
|
|
||||||
(defn create-embed!
|
(defn create-embed!
|
||||||
|
|||||||
Reference in New Issue
Block a user