aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Meric de Bellefon <Sebastian.MericdeBellefon@tritondigital.com>2016-05-24 17:36:34 -0400
committerSebastian Meric de Bellefon <Sebastian.MericdeBellefon@tritondigital.com>2016-05-24 22:03:55 -0400
commit474a0c182d6ef9a7e93e277a2755d04d943059a0 (patch)
tree1bad321608bbeea28ec4a268620ef1fd94f060e1
parent6db811aefb9cba65c8efe3876e850c813f280b6c (diff)
remove framed view of the HTML documentation (see #114 and #274)
Frames are a bit broken, ignored by Hackage, and considered obsolete in general. This patch disables frames generation. The mini_*.html files are still used in the synopsis.
-rw-r--r--doc/invoking.rst8
-rw-r--r--haddock-api/haddock-api.cabal1
-rw-r--r--haddock-api/resources/html/frames.html30
-rw-r--r--haddock-api/resources/html/haddock-util.js28
-rw-r--r--haddock-api/src/Haddock/Backends/Xhtml.hs42
-rw-r--r--haddock-api/src/Haddock/Utils.hs12
-rw-r--r--html-test/ref/frames.html30
-rw-r--r--html-test/ref/haddock-util.js28
8 files changed, 7 insertions, 172 deletions
diff --git a/doc/invoking.rst b/doc/invoking.rst
index 13cb9f1e..83087bac 100644
--- a/doc/invoking.rst
+++ b/doc/invoking.rst
@@ -100,7 +100,7 @@ The following options are available:
``module.html``; ``mini_module.html``
An HTML page for each module, and a "mini" page for each used
- when viewing in frames.
+ when viewing their synopsis.
``index.html``
The top level page of the documentation: lists the modules
@@ -111,17 +111,13 @@ The following options are available:
The alphabetic index, possibly split into multiple pages if big
enough.
- ``frames.html``
- The top level document when viewing in frames.
-
``some.css``; ``etc...``
Files needed for the themes used. Specify your themes using the
:option:`--theme` option.
``haddock-util.js``
Some JavaScript utilities used to implement some of the dynamic
- features like collapsible sections, and switching to frames
- view.
+ features like collapsible sections.
.. option:: --latex
diff --git a/haddock-api/haddock-api.cabal b/haddock-api/haddock-api.cabal
index 6c98fcfb..d1bbf783 100644
--- a/haddock-api/haddock-api.cabal
+++ b/haddock-api/haddock-api.cabal
@@ -19,7 +19,6 @@ data-dir:
resources
data-files:
html/solarized.css
- html/frames.html
html/haddock-util.js
html/highlight.js
html/Classic.theme/haskell_icon.gif
diff --git a/haddock-api/resources/html/frames.html b/haddock-api/resources/html/frames.html
deleted file mode 100644
index e86edb66..00000000
--- a/haddock-api/resources/html/frames.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title></title>
-<script src="haddock-util.js" type="text/javascript"></script>
-<script type="text/javascript"><!--
-/*
-
- The synopsis frame needs to be updated using javascript, so we hide
- it by default and only show it if javascript is enabled.
-
- TODO: provide some means to disable it.
-*/
-function load() {
- var d = document.getElementById("inner-fs");
- d.rows = "50%,50%";
- postReframe();
-}
---></script>
-</head>
-<frameset id="outer-fs" cols="25%,75%" onload="load()">
- <frameset id="inner-fs" rows="100%,0%">
- <frame src="index-frames.html" name="modules" />
- <frame src="" name="synopsis" />
- </frameset>
- <frame src="index.html" name="main" />
-</frameset>
-</html>
diff --git a/haddock-api/resources/html/haddock-util.js b/haddock-api/resources/html/haddock-util.js
index fc7743fe..92d07d2a 100644
--- a/haddock-api/resources/html/haddock-util.js
+++ b/haddock-api/resources/html/haddock-util.js
@@ -248,33 +248,6 @@ function addMenuItem(html) {
}
}
-function adjustForFrames() {
- var bodyCls;
-
- if (parent.location.href == window.location.href) {
- // not in frames, so add Frames button
- addMenuItem("<a href='#' onclick='reframe();return true;'>Frames</a>");
- bodyCls = "no-frame";
- }
- else {
- bodyCls = "in-frame";
- }
- addClass(document.body, bodyCls);
-}
-
-function reframe() {
- setCookie("haddock-reframe", document.URL);
- window.location = "frames.html";
-}
-
-function postReframe() {
- var s = getCookie("haddock-reframe");
- if (s) {
- parent.window.main.location = s;
- clearCookie("haddock-reframe");
- }
-}
-
function styles() {
var i, a, es = document.getElementsByTagName("link"), rs = [];
for (i = 0; a = es[i]; i++) {
@@ -337,7 +310,6 @@ function styleMenu(show) {
function pageLoad() {
addStyleMenu();
- adjustForFrames();
resetStyle();
restoreCollapsed();
}
diff --git a/haddock-api/src/Haddock/Backends/Xhtml.hs b/haddock-api/src/Haddock/Backends/Xhtml.hs
index f7284062..8252839c 100644
--- a/haddock-api/src/Haddock/Backends/Xhtml.hs
+++ b/haddock-api/src/Haddock/Backends/Xhtml.hs
@@ -36,14 +36,13 @@ import Haddock.GhcUtils
import Control.Monad ( when, unless )
import Data.Char ( toUpper )
-import Data.List ( sortBy, groupBy, intercalate, isPrefixOf )
+import Data.List ( sortBy, intercalate, isPrefixOf )
import Data.Maybe
import System.FilePath hiding ( (</>) )
import System.Directory
import Data.Map ( Map )
import qualified Data.Map as Map hiding ( Map )
import qualified Data.Set as Set hiding ( Set )
-import Data.Function
import Data.Ord ( comparing )
import DynFlags (Language(..))
@@ -105,7 +104,8 @@ copyHtmlBits odir libdir themes = do
copyCssFile f = copyFile f (combine odir (takeFileName f))
copyLibFile f = copyFile (joinPath [libhtmldir, f]) (joinPath [odir, f])
mapM_ copyCssFile (cssFiles themes)
- mapM_ copyLibFile [ jsFile, framesFile ]
+ copyLibFile jsFile
+ return ()
headHtml :: String -> Maybe String -> Themes -> Maybe String -> Html
@@ -268,9 +268,6 @@ ppHtmlContents dflags odir doctitle _maybe_package
createDirectoryIfMissing True odir
writeFile (joinPath [odir, contentsHtmlFile]) (renderToString debug html)
- -- XXX: think of a better place for this?
- ppHtmlContentsFrame odir doctitle themes mathjax_url ifaces debug
-
ppPrologue :: Qualification -> String -> Maybe (MDoc GHC.RdrName) -> Html
ppPrologue _ _ Nothing = noHtml
@@ -321,39 +318,6 @@ mkNode qual ss p (Node s leaf pkg srcPkg short ts) =
subtree = mkNodeList qual (s:ss) p ts ! collapseSection p True ""
--- | Turn a module tree into a flat list of full module names. E.g.,
--- @
--- A
--- +-B
--- +-C
--- @
--- becomes
--- @["A", "A.B", "A.B.C"]@
-flatModuleTree :: [InstalledInterface] -> [Html]
-flatModuleTree ifaces =
- map (uncurry ppModule' . head)
- . groupBy ((==) `on` fst)
- . sortBy (comparing fst)
- $ mods
- where
- mods = [ (moduleString mdl, mdl) | mdl <- map instMod ifaces ]
- ppModule' txt mdl =
- anchor ! [href (moduleHtmlFile mdl), target mainFrameName]
- << toHtml txt
-
-
-ppHtmlContentsFrame :: FilePath -> String -> Themes -> Maybe String
- -> [InstalledInterface] -> Bool -> IO ()
-ppHtmlContentsFrame odir doctitle themes maybe_mathjax_url ifaces debug = do
- let mods = flatModuleTree ifaces
- html =
- headHtml doctitle Nothing themes maybe_mathjax_url +++
- miniBody << divModuleList <<
- (sectionName << "Modules" +++
- ulist << [ li ! [theclass "module"] << m | m <- mods ])
- createDirectoryIfMissing True odir
- writeFile (joinPath [odir, frameIndexHtmlFile]) (renderToString debug html)
-
--------------------------------------------------------------------------------
-- * Generate the index
diff --git a/haddock-api/src/Haddock/Utils.hs b/haddock-api/src/Haddock/Utils.hs
index 58a7ef90..389aa5ab 100644
--- a/haddock-api/src/Haddock/Utils.hs
+++ b/haddock-api/src/Haddock/Utils.hs
@@ -21,10 +21,9 @@ module Haddock.Utils (
-- * Filename utilities
moduleHtmlFile, moduleHtmlFile',
contentsHtmlFile, indexHtmlFile,
- frameIndexHtmlFile,
moduleIndexFrameName, mainFrameName, synopsisFrameName,
subIndexHtmlFile,
- jsFile, framesFile,
+ jsFile,
-- * Anchor and URL utilities
moduleNameUrl, moduleNameUrl', moduleUrl,
@@ -262,12 +261,6 @@ contentsHtmlFile = "index.html"
indexHtmlFile = "doc-index.html"
--- | The name of the module index file to be displayed inside a frame.
--- Modules are display in full, but without indentation. Clicking opens in
--- the main window.
-frameIndexHtmlFile :: String
-frameIndexHtmlFile = "index-frames.html"
-
moduleIndexFrameName, mainFrameName, synopsisFrameName :: String
moduleIndexFrameName = "modules"
@@ -333,9 +326,8 @@ makeAnchorId (f:r) = escape isAlpha f ++ concatMap (escape isLegal) r
-------------------------------------------------------------------------------
-jsFile, framesFile :: String
+jsFile :: String
jsFile = "haddock-util.js"
-framesFile = "frames.html"
-------------------------------------------------------------------------------
diff --git a/html-test/ref/frames.html b/html-test/ref/frames.html
deleted file mode 100644
index e86edb66..00000000
--- a/html-test/ref/frames.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title></title>
-<script src="haddock-util.js" type="text/javascript"></script>
-<script type="text/javascript"><!--
-/*
-
- The synopsis frame needs to be updated using javascript, so we hide
- it by default and only show it if javascript is enabled.
-
- TODO: provide some means to disable it.
-*/
-function load() {
- var d = document.getElementById("inner-fs");
- d.rows = "50%,50%";
- postReframe();
-}
---></script>
-</head>
-<frameset id="outer-fs" cols="25%,75%" onload="load()">
- <frameset id="inner-fs" rows="100%,0%">
- <frame src="index-frames.html" name="modules" />
- <frame src="" name="synopsis" />
- </frameset>
- <frame src="index.html" name="main" />
-</frameset>
-</html>
diff --git a/html-test/ref/haddock-util.js b/html-test/ref/haddock-util.js
index fc7743fe..92d07d2a 100644
--- a/html-test/ref/haddock-util.js
+++ b/html-test/ref/haddock-util.js
@@ -248,33 +248,6 @@ function addMenuItem(html) {
}
}
-function adjustForFrames() {
- var bodyCls;
-
- if (parent.location.href == window.location.href) {
- // not in frames, so add Frames button
- addMenuItem("<a href='#' onclick='reframe();return true;'>Frames</a>");
- bodyCls = "no-frame";
- }
- else {
- bodyCls = "in-frame";
- }
- addClass(document.body, bodyCls);
-}
-
-function reframe() {
- setCookie("haddock-reframe", document.URL);
- window.location = "frames.html";
-}
-
-function postReframe() {
- var s = getCookie("haddock-reframe");
- if (s) {
- parent.window.main.location = s;
- clearCookie("haddock-reframe");
- }
-}
-
function styles() {
var i, a, es = document.getElementsByTagName("link"), rs = [];
for (i = 0; a = es[i]; i++) {
@@ -337,7 +310,6 @@ function styleMenu(show) {
function pageLoad() {
addStyleMenu();
- adjustForFrames();
resetStyle();
restoreCollapsed();
}