diff options
Diffstat (limited to 'resources')
| -rw-r--r-- | resources/html/Classic.theme/haskell_icon.gif | bin | 0 -> 911 bytes | |||
| -rw-r--r-- | resources/html/Classic.theme/minus.gif | bin | 0 -> 56 bytes | |||
| -rw-r--r-- | resources/html/Classic.theme/plus.gif | bin | 0 -> 59 bytes | |||
| -rw-r--r-- | resources/html/Classic.theme/xhaddock.css | 493 | ||||
| -rw-r--r-- | resources/html/Ocean.std-theme/hslogo-16.png | bin | 0 -> 1684 bytes | |||
| -rw-r--r-- | resources/html/Ocean.std-theme/minus.gif | bin | 0 -> 56 bytes | |||
| -rw-r--r-- | resources/html/Ocean.std-theme/ocean.css | 546 | ||||
| -rw-r--r-- | resources/html/Ocean.std-theme/plus.gif | bin | 0 -> 59 bytes | |||
| -rw-r--r-- | resources/html/Ocean.std-theme/synopsis.png | bin | 0 -> 11327 bytes | |||
| -rw-r--r-- | resources/html/frames.html | 30 | ||||
| -rw-r--r-- | resources/html/haddock-util.js | 344 | ||||
| -rw-r--r-- | resources/latex/haddock.sty | 57 | 
12 files changed, 1470 insertions, 0 deletions
| diff --git a/resources/html/Classic.theme/haskell_icon.gif b/resources/html/Classic.theme/haskell_icon.gifBinary files differ new file mode 100644 index 00000000..10589f91 --- /dev/null +++ b/resources/html/Classic.theme/haskell_icon.gif diff --git a/resources/html/Classic.theme/minus.gif b/resources/html/Classic.theme/minus.gifBinary files differ new file mode 100644 index 00000000..1deac2fe --- /dev/null +++ b/resources/html/Classic.theme/minus.gif diff --git a/resources/html/Classic.theme/plus.gif b/resources/html/Classic.theme/plus.gifBinary files differ new file mode 100644 index 00000000..2d15c141 --- /dev/null +++ b/resources/html/Classic.theme/plus.gif diff --git a/resources/html/Classic.theme/xhaddock.css b/resources/html/Classic.theme/xhaddock.css new file mode 100644 index 00000000..40ea0d06 --- /dev/null +++ b/resources/html/Classic.theme/xhaddock.css @@ -0,0 +1,493 @@ +* { +	margin: 0; +	padding: 0; +} + +body {  +  	background-color: #ffffff; +  	color: #000000; +  	font-size: 100%; +	font-family: sans-serif; +	padding: 8px; +} + +a:link    { color: #0000e0; text-decoration: none } +a:visited { color: #0000a0; text-decoration: none } +a:hover   { background-color: #e0e0ff; text-decoration: none } + +/* <tt> font is a little too small in MSIE */ +tt  { font-size: 100%; } +pre { font-size: 100%; } +.keyword { text-decoration: underline; } +.caption { +	font-weight: bold; +	margin: 0; +	padding: 0; +} + +h1 { +  padding-top: 15px; +  font-weight: bold; +  font-size: 150%; +} + +h2 { +  padding-top: 10px; +  font-weight: bold; +  font-size: 130% +  } + +h3 { +  padding-top: 5px; +  font-weight: bold; +  font-size: 110% +  } + +h4, h5 { +  font-weight: bold; +  font-size: 100% +  } + +h1, h2, h3, h4, h5 { +	margin-top: 0.5em; +	margin-bottom: 0.5em; +} + +p  {  +	padding-top: 2px; +	padding-left: 10px; +} + +ul, ol, dl { +	padding-top: 2px; +	padding-left: 10px; +	margin-left: 2.5em; +} + +pre  {  +	padding-top: 2px; +	padding-left: 20px; +} + +* + p, * + pre { +	margin-top: 1em; +} +.caption + p, .src + p { +	margin-top: 0; +} + +.def { +	font-weight: bold; +} + +ul.links { +	list-style: none; +	text-align: left; +	float: right; +	display: inline-table; +	padding: 0; +} + +ul.links li { +	display: inline; +	border-left-width: 1px; +	border-left-color: #ffffff; +	border-left-style: solid; +	white-space: nowrap; +	padding: 1px 5px; +} + +.hide {	display: none; } +.show { } +.collapser { +  background: url(minus.gif) no-repeat 0 0.3em; +} +.expander { +  background: url(plus.gif) no-repeat 0 0.3em; +} +.collapser, .expander { +  padding-left: 14px; +  cursor: pointer; +} + +#package-header { +	color: #ffffff; +	padding: 5px 5px 5px 31px; +	margin: 0 0 1px; +	background: #000099 url(haskell_icon.gif) no-repeat 5px 6px; +	position: relative; +} + +#package-header .caption { +	font-weight: normal; +	font-style: normal; +} +#package-header a:link    { color: #ffffff } +#package-header a:visited { color: #ffff00 } +#package-header a:hover   { background-color: #6060ff; } +#package-header ul.links li:hover { background-color: #6060ff; } + +div#style-menu-holder { +	position: relative; +	z-index: 2; +	display: inline; +} + +#style-menu { +	position: absolute; +	z-index: 1; +	overflow: visible; +	background-color: #000099; +	margin: 0; +	width: 6em; +	text-align: center; +	right: 0; +	padding: 2px 2px 1px; +} + +#style-menu li { +	display: list-item; +	border-style: none; +	margin: 0; +	padding: 3px; +	color: #000; +	list-style-type: none; +	border-top: 1px solid #ffffff; +} + +#module-header { +	overflow: hidden; /* makes sure info float is properly contained */ +	display: inline-block; /* triggers hasLayout in IE*/ +} + +#module-header { +	display: block; /* back to block */ +	background-color: #0077dd; +	padding: 5px; +} + +#module-header .caption { +	font-size: 200%; +	padding: .35em 0; +	font-weight: normal; +	font-style: normal; +} + +table.info { +	color: #ffffff; +	display: block; +	float: right; +	max-width: 50%; +} + +.info th, .info td { +	text-align: left; +	padding: 0 10px 0 0; +} + + +#table-of-contents { +	margin-top: 1em; +	margin-bottom: 2em; +} + +#table-of-contents ul { +	margin-top: 1em; +	margin-bottom: 1em; +	margin-left: 0; +	list-style-type: none; +	padding: 0; +} + +#table-of-contents ul ul { +	margin-left: 2.5em; +} + +#description .caption, +#synopsis .caption, +#module-list .caption, +#index .caption { +  padding-top: 15px; +  font-weight: bold; +  font-size: 150%	 +} + +#synopsis { +	margin-bottom: 2em; +} + +#synopsis .expander, +#synopsis .collapser { +  background: none; +  padding-left: inherit; +} + +#synopsis .hide { +  display: inherit; +} + +#synopsis ul { +	margin: 0; +	padding-top: 0; +	padding-left: 20px; +	list-style-type: none; +} + +#synopsis li { +	margin-top: 8px; +	margin-bottom: 8px; +	padding: 3px; +} + +#synopsis li li { +	padding: 0; +	margin-top: 0; +	margin-bottom: 0; +} + + +div.top { +	margin-top: 1em; +	clear: left; +	margin-bottom: 1em; +} + +div.top h5 { +	margin-left: 10px; +} + + +.src { +	padding: 3px; +	background-color: #f0f0f0; +	font-family: monospace; +	margin-bottom: 0; +} + + +.src a.link { +	float: right; +	border-left-width: 1px; +	border-left-color: #000099; +	border-left-style: solid; +	white-space: nowrap; +	font-size: small; +	padding: 0 8px 2px 5px; +	margin-right: -3px; +	background-color: #f0f0f0; +} + +div.subs { +	margin-left: 10px; +	clear: both; +	margin-top: 2px; +} + +.subs dl { +	margin-left: 0; +} + +.subs dl dl { +	padding-left: 0; +	padding-top: 4px; +} + +.subs dd +{ +  margin: 2px 0 9px 2em; +} + +.subs dd.empty { +  display: none; +} + +.subs table { +	margin-left: 10px; +	border-spacing: 1px 1px; +	margin-top: 4px; +	margin-bottom: 4px; +} + +.subs table table { +	margin-left: 0; +} + +.arguments .caption, +.fields .caption { +	display: none; +} + +/* need extra .subs in the selector to make it override the rules for .subs and .subs table */ + +.subs.arguments { +	margin: 0; +} + +.subs.arguments table { +	border-spacing: 0; +	margin-top: 0; +	margin-bottom: 0; +} + +.subs.arguments td.src { +	white-space: nowrap; +} + +.subs.arguments + p { +	margin-top: 0; +} + +.subs.associated-types, +.subs.methods { +	margin-left: 20px; +} + +.subs.associated-types .caption, +.subs.methods .caption { +	margin-top: 0.5em; +	margin-left: -10px; +} + +.subs.associated-types .src + .src, +.subs.methods .src + .src { +	margin-top: 8px; +} + +p.arg { +	margin-bottom: 0; +} +p.arg span { +  background-color: #f0f0f0;  +  font-family: monospace; +  white-space: nowrap; +	float: none; +} + + +img.coll { +	width : 0.75em; height: 0.75em; margin-bottom: 0; margin-right: 0.5em  +} + + +td.arg { +  padding: 3px; +  background-color: #f0f0f0; +  font-family: monospace; +  margin-bottom: 0; +} + +td.rdoc p { +	margin-bottom: 0; +} + + + +#footer { +  background-color: #000099; +  color: #ffffff; +  padding: 4px +  } +   +#footer p { +	padding: 1px; +	margin: 0; +} + +#footer  a:link { +  color: #ffffff; +  text-decoration: underline +  } +#footer  a:visited { +  color: #ffff00 +  } +#footer  a:hover { +  background-color: #6060ff +  } + + +#module-list ul { +	list-style: none; +	padding-bottom: 15px; +	padding-left: 2px; +	margin: 0; +} + +#module-list ul ul { +	padding-bottom: 0; +	padding-left: 20px; +} + +#module-list li .package { +	float: right; +} +#mini #module-list .caption { +	display: none; +} + +#index .caption { +} + +#alphabet ul { +	list-style: none; +	padding: 0; +	margin: 0.5em 0 0; +} + +#alphabet li { +	display: inline; +	margin: 0 0.2em; +} + +#index .src { +	background: none; +	font-family: inherit; +} + +#index td.alt { +	padding-left: 2em; +} + +#index td { +	padding-top: 2px; +	padding-bottom: 1px; +	padding-right: 1em; +} + + +#mini h1 { font-size: 130%; } +#mini h2 { font-size: 110%; } +#mini h3 { font-size: 100%; } +#mini h1, #mini h2, #mini h3 { +  margin-top: 0.5em; +  margin-bottom: 0.25em; +  padding: 0 0; +} + +#mini h1 { border-bottom: 1px solid #ccc; } + +#mini #module-header { +	margin: 0; +	padding: 0; +} +#mini #module-header .caption { +  font-size: 130%; +  background: #0077dd; +  padding: 0.25em; +  height: inherit; +  margin: 0; +} + +#mini #interface .top { +	margin: 0; +	padding: 0; +} +#mini #interface .src { +	margin: 0; +	padding: 0; +	font-family: inherit; +	background: inherit; +} + +.warning { +  color: red; +} diff --git a/resources/html/Ocean.std-theme/hslogo-16.png b/resources/html/Ocean.std-theme/hslogo-16.pngBinary files differ new file mode 100644 index 00000000..0ff8579f --- /dev/null +++ b/resources/html/Ocean.std-theme/hslogo-16.png diff --git a/resources/html/Ocean.std-theme/minus.gif b/resources/html/Ocean.std-theme/minus.gifBinary files differ new file mode 100644 index 00000000..1deac2fe --- /dev/null +++ b/resources/html/Ocean.std-theme/minus.gif diff --git a/resources/html/Ocean.std-theme/ocean.css b/resources/html/Ocean.std-theme/ocean.css new file mode 100644 index 00000000..42238709 --- /dev/null +++ b/resources/html/Ocean.std-theme/ocean.css @@ -0,0 +1,546 @@ +/* @group Fundamentals */ + +* { margin: 0; padding: 0 } + +/* Is this portable? */ +html { +  background-color: white; +  width: 100%; +  height: 100%; +} + +body { +  background: white; +  color: black; +  text-align: left; +  min-height: 100%; +  position: relative; +} + +p { +  margin: 0.8em 0; +} + +ul, ol { +  margin: 0.8em 0 0.8em 2em; +} + +dl { +  margin: 0.8em 0; +} + +dt { +  font-weight: bold; +} +dd { +  margin-left: 2em; +} + +a { text-decoration: none; } +a[href]:link { color: rgb(196,69,29); } +a[href]:visited { color: rgb(171,105,84); } +a[href]:hover { text-decoration:underline; } + +/* @end */ + +/* @group Fonts & Sizes */ + +/* Basic technique & IE workarounds from YUI 3 +   For reasons, see: +      http://yui.yahooapis.com/3.1.1/build/cssfonts/fonts.css + */ +  +body { +	font:13px/1.4 sans-serif; +	*font-size:small; /* for IE */ +	*font:x-small; /* for IE in quirks mode */ +} + +h1 { font-size: 146.5%; /* 19pt */ }  +h2 { font-size: 131%;   /* 17pt */ } +h3 { font-size: 116%;   /* 15pt */ } +h4 { font-size: 100%;   /* 13pt */ } +h5 { font-size: 100%;   /* 13pt */ } + +select, input, button, textarea { +	font:99% sans-serif; +} + +table { +	font-size:inherit; +	font:100%; +} + +pre, code, kbd, samp, tt, .src { +	font-family:monospace; +	*font-size:108%; +	line-height: 124%; +} + +.links, .link { +  font-size: 85%; /* 11pt */ +} + +#module-header .caption { +  font-size: 182%; /* 24pt */ +} + +.info  { +  font-size: 85%; /* 11pt */ +} + +#table-of-contents, #synopsis  { +  /* font-size: 85%; /* 11pt */ +} + + +/* @end */ + +/* @group Common */ + +.caption, h1, h2, h3, h4, h5, h6 {  +  font-weight: bold; +  color: rgb(78,98,114); +  margin: 0.8em 0 0.4em; +} + +* + h1, * + h2, * + h3, * + h4, * + h5, * + h6 { +  margin-top: 2em; +} + +h1 + h2, h2 + h3, h3 + h4, h4 + h5, h5 + h6 { +  margin-top: inherit; +} + +ul.links { +  list-style: none; +  text-align: left; +  float: right; +  display: inline-table; +  margin: 0 0 0 1em; +} + +ul.links li { +  display: inline; +  border-left: 1px solid #d5d5d5;  +  white-space: nowrap; +  padding: 0; +} + +ul.links li a { +  padding: 0.2em 0.5em; +} + +.hide { display: none; } +.show { display: inherit; } +.clear { clear: both; } + +.collapser { +  background-image: url(minus.gif); +  background-repeat: no-repeat; +} +.expander { +  background-image: url(plus.gif); +  background-repeat: no-repeat; +} +p.caption.collapser, +p.caption.expander { +  background-position: 0 0.4em; +} +.collapser, .expander { +  padding-left: 14px; +  margin-left: -14px; +  cursor: pointer; +} + +pre { +  padding: 0.25em; +  margin: 0.8em 0; +  background: rgb(229,237,244); +  overflow: auto; +  border-bottom: 0.25em solid white; +  /* white border adds some space below the box to compensate +     for visual extra space that paragraphs have between baseline +     and the bounding box */ +} + +.src { +  background: #f0f0f0; +  padding: 0.2em 0.5em; +} + +.keyword { font-weight: normal; } +.def { font-weight: bold; } + + +/* @end */ + +/* @group Page Structure */ + +#content { +  margin: 0 auto; +  padding: 0 2em 6em; +} + +#package-header { +  background: rgb(41,56,69); +  border-top: 5px solid rgb(78,98,114); +  color: #ddd; +  padding: 0.2em; +  position: relative; +  text-align: left; +} + +#package-header .caption { +  background: url(hslogo-16.png) no-repeat 0em; +  color: white; +  margin: 0 2em; +  font-weight: normal; +  font-style: normal; +  padding-left: 2em; +} + +#package-header a:link, #package-header a:visited { color: white; } +#package-header a:hover { background: rgb(78,98,114); } + +#module-header .caption { +  color: rgb(78,98,114); +  font-weight: bold; +  border-bottom: 1px solid #ddd; +} + +table.info { +  float: right; +  padding: 0.5em 1em; +  border: 1px solid #ddd; +  color: rgb(78,98,114); +  background-color: #fff; +  max-width: 40%; +  border-spacing: 0; +  position: relative; +  top: -0.5em; +  margin: 0 0 0 2em; +} + +.info th { +	padding: 0 1em 0 0; +} + +div#style-menu-holder { +  position: relative; +  z-index: 2; +  display: inline; +} + +#style-menu { +  position: absolute; +  z-index: 1; +  overflow: visible; +  background: #374c5e; +  margin: 0; +  text-align: center; +  right: 0; +  padding: 0; +  top: 1.25em; +} + +#style-menu li { +	display: list-item; +	border-style: none; +	margin: 0; +	padding: 0; +	color: #000; +	list-style-type: none; +} + +#style-menu li + li { +	border-top: 1px solid #919191; +} + +#style-menu a { +  width: 6em; +  padding: 3px; +  display: block; +} + +#footer { +  background: #ddd; +  border-top: 1px solid #aaa; +  padding: 0.5em 0; +  color: #666; +  text-align: center; +  position: absolute; +  bottom: 0; +  width: 100%; +  height: 3em; +} + +/* @end */ + +/* @group Front Matter */ + +#table-of-contents { +  float: right; +  clear: right; +  background: #faf9dc; +  border: 1px solid #d8d7ad; +  padding: 0.5em 1em; +  max-width: 20em; +  margin: 0.5em 0 1em 1em; +} + +#table-of-contents .caption { +  text-align: center; +  margin: 0; +} + +#table-of-contents ul { +  list-style: none; +  margin: 0; +} + +#table-of-contents ul ul { +  margin-left: 2em; +} + +#description .caption { +  display: none; +} + +#synopsis { +  display: none; +} + +.no-frame #synopsis { +  display: block; +  position: fixed; +  right: 0; +  height: 80%; +  top: 10%; +  padding: 0; +} + +#synopsis .caption { +  float: left; +  width: 29px; +  color: rgba(255,255,255,0); +  height: 110px; +  margin: 0; +  font-size: 1px; +  padding: 0; +} + +#synopsis p.caption.collapser { +  background: url(synopsis.png) no-repeat -64px -8px; +} + +#synopsis p.caption.expander { +  background: url(synopsis.png) no-repeat 0px -8px; +} + +#synopsis ul { +  height: 100%; +  overflow: auto; +  padding: 0.5em; +  margin: 0; +} + +#synopsis ul ul { +  overflow: hidden; +} + +#synopsis ul, +#synopsis ul li.src { +  background-color: #faf9dc; +  white-space: nowrap; +  list-style: none; +  margin-left: 0; +} + +/* @end */ + +/* @group Main Content */ + +#interface div.top { margin: 2em 0; } +#interface h1 + div.top, +#interface h2 + div.top, +#interface h3 + div.top, +#interface h4 + div.top, +#interface h5 + div.top { + 	margin-top: 1em; +} +#interface p.src .link { +  float: right; +  color: #919191; +  border-left: 1px solid #919191; +  background: #f0f0f0; +  padding: 0 0.5em 0.2em; +  margin: 0 -0.5em 0 0.5em; +} + +#interface table { border-spacing: 2px; } +#interface td { +  vertical-align: top; +  padding-left: 0.5em; +} +#interface td.src { +  white-space: nowrap; +} +#interface td.doc p { +  margin: 0; +} +#interface td.doc p + p { +  margin-top: 0.8em; +} + +.subs dl { +  margin: 0; +} + +.subs dt { +  float: left; +  clear: left; +  display: block; +  margin: 1px 0; +} + +.subs dd { +  float: right; +  width: 90%; +  display: block; +  padding-left: 0.5em; +  margin-bottom: 0.5em; +} + +.subs dd.empty { +  display: none; +} + +.subs dd p { +  margin: 0; +} + +.top p.src { +  border-top: 1px solid #ccc; +} + +.subs, .doc { +  /* use this selector for one level of indent */ +  padding-left: 2em; +} + +.warning { +  color: red; +} + +.arguments { +  margin-top: -0.4em; +} +.arguments .caption { +  display: none; +} + +.fields { padding-left: 1em; } + +.fields .caption { display: none; } + +.fields p { margin: 0 0; } + +/* this seems bulky to me +.methods, .constructors { +  background: #f8f8f8; +  border: 1px solid #eee; +} +*/ + +/* @end */ + +/* @group Auxillary Pages */ + +#mini { +  margin: 0 auto; +  padding: 0 1em 1em; +} + +#mini > * { +  font-size: 93%; /* 12pt */   +} + +#mini #module-list .caption, +#mini #module-header .caption { +  font-size: 125%; /* 15pt */ +} + +#mini #interface h1, +#mini #interface h2, +#mini #interface h3, +#mini #interface h4 { +  font-size: 109%; /* 13pt */ +  margin: 1em 0 0; +} + +#mini #interface .top, +#mini #interface .src { +  margin: 0; +} + +#mini #module-list ul { +  list-style: none; +  margin: 0; +} + +#alphabet ul { +	list-style: none; +	padding: 0; +	margin: 0.5em 0 0; +	text-align: center; +} + +#alphabet li { +	display: inline; +	margin: 0 0.25em; +} + +#alphabet a { +	font-weight: bold; +} + +#index .caption, +#module-list .caption { font-size: 131%; /* 17pt */ } + +#index table { +  margin-left: 2em; +} + +#index .src { +  font-weight: bold; +} +#index .alt { +  font-size: 77%; /* 10pt */ +  font-style: italic; +  padding-left: 2em; +} + +#index td + td { +  padding-left: 1em; +} + +#module-list ul { +  list-style: none; +  margin: 0 0 0 2em; +} + +#module-list li { +  clear: right; +} + +#module-list span.collapser, +#module-list span.expander { +  background-position: 0 0.3em; +} + +#module-list .package { +  float: right; +} + +/* @end */ diff --git a/resources/html/Ocean.std-theme/plus.gif b/resources/html/Ocean.std-theme/plus.gifBinary files differ new file mode 100644 index 00000000..2d15c141 --- /dev/null +++ b/resources/html/Ocean.std-theme/plus.gif diff --git a/resources/html/Ocean.std-theme/synopsis.png b/resources/html/Ocean.std-theme/synopsis.pngBinary files differ new file mode 100644 index 00000000..85fb86ec --- /dev/null +++ b/resources/html/Ocean.std-theme/synopsis.png diff --git a/resources/html/frames.html b/resources/html/frames.html new file mode 100644 index 00000000..1b4e38d4 --- /dev/null +++ b/resources/html/frames.html @@ -0,0 +1,30 @@ +<!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/resources/html/haddock-util.js b/resources/html/haddock-util.js new file mode 100644 index 00000000..9a6fccf7 --- /dev/null +++ b/resources/html/haddock-util.js @@ -0,0 +1,344 @@ +// Haddock JavaScript utilities + +var rspace = /\s\s+/g, +	  rtrim = /^\s+|\s+$/g; + +function spaced(s) { return (" " + s + " ").replace(rspace, " "); } +function trim(s)   { return s.replace(rtrim, ""); } + +function hasClass(elem, value) { +  var className = spaced(elem.className || ""); +  return className.indexOf( " " + value + " " ) >= 0; +} + +function addClass(elem, value) { +  var className = spaced(elem.className || ""); +  if ( className.indexOf( " " + value + " " ) < 0 ) { +    elem.className = trim(className + " " + value); +  } +} + +function removeClass(elem, value) { +  var className = spaced(elem.className || ""); +  className = className.replace(" " + value + " ", " "); +  elem.className = trim(className); +} + +function toggleClass(elem, valueOn, valueOff, bool) { +  if (bool == null) { bool = ! hasClass(elem, valueOn); } +  if (bool) { +    removeClass(elem, valueOff); +    addClass(elem, valueOn); +  } +  else { +    removeClass(elem, valueOn); +    addClass(elem, valueOff); +  } +  return bool; +} + + +function makeClassToggle(valueOn, valueOff) +{ +  return function(elem, bool) { +    return toggleClass(elem, valueOn, valueOff, bool); +  } +} + +toggleShow = makeClassToggle("show", "hide"); +toggleCollapser = makeClassToggle("collapser", "expander"); + +function toggleSection(id) +{ +  var b = toggleShow(document.getElementById("section." + id)); +  toggleCollapser(document.getElementById("control." + id), b); +  rememberCollapsed(id, b); +  return b; +} + +var collapsed = {}; +function rememberCollapsed(id, b) +{ +  if(b) +    delete collapsed[id] +  else +    collapsed[id] = null; + +  var sections = []; +  for(var i in collapsed) +  { +    if(collapsed.hasOwnProperty(i)) +      sections.push(i); +  } +  // cookie specific to this page; don't use setCookie which sets path=/ +  document.cookie = "collapsed=" + escape(sections.join('+')); +} + +function restoreCollapsed() +{ +  var cookie = getCookie("collapsed"); +  if(!cookie) +    return; + +  var ids = cookie.split('+'); +  for(var i in ids) +  { +    if(document.getElementById("section." + ids[i])) +      toggleSection(ids[i]); +  } +} + +function setCookie(name, value) { +  document.cookie = name + "=" + escape(value) + ";path=/;"; +} + +function clearCookie(name) { +  document.cookie = name + "=;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT;"; +} + +function getCookie(name) { +  var nameEQ = name + "="; +  var ca = document.cookie.split(';'); +  for(var i=0;i < ca.length;i++) { +    var c = ca[i]; +    while (c.charAt(0)==' ') c = c.substring(1,c.length); +    if (c.indexOf(nameEQ) == 0) { +      return unescape(c.substring(nameEQ.length,c.length)); +    } +  } +  return null; +} + + + +var max_results = 75; // 50 is not enough to search for map in the base libraries +var shown_range = null; +var last_search = null; + +function quick_search() +{ +    perform_search(false); +} + +function full_search() +{ +    perform_search(true); +} + + +function perform_search(full) +{ +    var text = document.getElementById("searchbox").value.toLowerCase(); +    if (text == last_search && !full) return; +    last_search = text; +     +    var table = document.getElementById("indexlist"); +    var status = document.getElementById("searchmsg"); +    var children = table.firstChild.childNodes; +     +    // first figure out the first node with the prefix +    var first = bisect(-1); +    var last = (first == -1 ? -1 : bisect(1)); + +    if (first == -1) +    { +        table.className = ""; +        status.innerHTML = "No results found, displaying all"; +    } +    else if (first == 0 && last == children.length - 1) +    { +        table.className = ""; +        status.innerHTML = ""; +    } +    else if (last - first >= max_results && !full) +    { +        table.className = ""; +        status.innerHTML = "More than " + max_results + ", press Search to display"; +    } +    else +    { +        // decide what you need to clear/show +        if (shown_range) +            setclass(shown_range[0], shown_range[1], "indexrow"); +        setclass(first, last, "indexshow"); +        shown_range = [first, last]; +        table.className = "indexsearch"; +        status.innerHTML = ""; +    } + +     +    function setclass(first, last, status) +    { +        for (var i = first; i <= last; i++) +        { +            children[i].className = status; +        } +    } +     +     +    // do a binary search, treating 0 as ... +    // return either -1 (no 0's found) or location of most far match +    function bisect(dir) +    { +        var first = 0, finish = children.length - 1; +        var mid, success = false; + +        while (finish - first > 3) +        { +            mid = Math.floor((finish + first) / 2); + +            var i = checkitem(mid); +            if (i == 0) i = dir; +            if (i == -1) +                finish = mid; +            else +                first = mid; +        } +        var a = (dir == 1 ? first : finish); +        var b = (dir == 1 ? finish : first); +        for (var i = b; i != a - dir; i -= dir) +        { +            if (checkitem(i) == 0) return i; +        } +        return -1; +    }     +     +     +    // from an index, decide what the result is +    // 0 = match, -1 is lower, 1 is higher +    function checkitem(i) +    { +        var s = getitem(i).toLowerCase().substr(0, text.length); +        if (s == text) return 0; +        else return (s > text ? -1 : 1); +    } +     +     +    // from an index, get its string +    // this abstracts over alternates +    function getitem(i) +    { +        for ( ; i >= 0; i--) +        { +            var s = children[i].firstChild.firstChild.data; +            if (s.indexOf(' ') == -1) +                return s; +        } +        return ""; // should never be reached +    } +} + +function setSynopsis(filename) { +    if (parent.window.synopsis) { +        if (parent.window.synopsis.location.replace) { +            // In Firefox this avoids adding the change to the history. +            parent.window.synopsis.location.replace(filename); +        } else { +            parent.window.synopsis.location = filename; +        } +    } +} + +function addMenuItem(html) { +  var menu = document.getElementById("page-menu"); +  if (menu) { +    var btn = menu.firstChild.cloneNode(false); +    btn.innerHTML = html; +    menu.appendChild(btn); +  } +} + +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++) { +    if(a.rel.indexOf("style") != -1 && a.title) { +      rs.push(a); +    } +  } +  return rs; +} + +function addStyleMenu() { +  var as = styles(); +  var i, a, btns = ""; +  for(i=0; a = as[i]; i++) { +    btns += "<li><a href='#' onclick=\"setActiveStyleSheet('" +      + a.title + "'); return false;\">" +      + a.title + "</a></li>" +  } +  if (as.length > 1) { +    var h = "<div id='style-menu-holder'>" +      + "<a href='#' onclick='styleMenu(); return false;'>Style ▾</a>" +      + "<ul id='style-menu' class='hide'>" + btns + "</ul>" +      + "</div>"; +    addMenuItem(h); +  } +} + +function setActiveStyleSheet(title) { +  var as = styles(); +  var i, a, found; +  for(i=0; a = as[i]; i++) { +    a.disabled = true; +          // need to do this always, some browsers are edge triggered +    if(a.title == title) { +      found = a; +    } +  } +  if (found) { +    found.disabled = false; +    setCookie("haddock-style", title); +  } +  else { +    as[0].disabled = false; +    clearCookie("haddock-style"); +  } +  styleMenu(false); +} + +function resetStyle() { +  var s = getCookie("haddock-style"); +  if (s) setActiveStyleSheet(s); +} + + +function styleMenu(show) { +  var m = document.getElementById('style-menu'); +  if (m) toggleShow(m, show); +} + + +function pageLoad() { +  addStyleMenu(); +  adjustForFrames(); +  resetStyle(); +  restoreCollapsed(); +} + diff --git a/resources/latex/haddock.sty b/resources/latex/haddock.sty new file mode 100644 index 00000000..6e031a98 --- /dev/null +++ b/resources/latex/haddock.sty @@ -0,0 +1,57 @@ +% Default Haddock style definitions.  To use your own style, invoke +% Haddock with the option --latex-style=mystyle. + +\usepackage{tabulary} % see below + +% make hyperlinks in the PDF, and add an expandabale index +\usepackage[pdftex,bookmarks=true]{hyperref} + +\newenvironment{haddocktitle} +  {\begin{center}\bgroup\large\bfseries} +  {\egroup\end{center}} +\newenvironment{haddockprologue}{\vspace{1in}}{} + +\newcommand{\haddockmoduleheading}[1]{\chapter{\texttt{#1}}} + +\newcommand{\haddockbeginheader}{\hrulefill} +\newcommand{\haddockendheader}{\noindent\hrulefill} + +% a little gap before the ``Methods'' header +\newcommand{\haddockpremethods}{\vspace{2ex}} + +% inserted before \\begin{verbatim} +\newcommand{\haddockverb}{\small} + +% an identifier: add an index entry +\newcommand{\haddockid}[1]{\haddocktt{#1}\index{#1@\texttt{#1}}} + +% The tabulary environment lets us have a column that takes up ``the +% rest of the space''.  Unfortunately it doesn't allow +% the \end{tabulary} to be in the expansion of a macro, it must appear +% literally in the document text, so Haddock inserts +% the \end{tabulary} itself. +\newcommand{\haddockbeginconstrs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} +\newcommand{\haddockbeginargs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} + +\newcommand{\haddocktt}[1]{{\small \texttt{#1}}} +\newcommand{\haddockdecltt}[1]{{\small\bfseries \texttt{#1}}} + +\makeatletter +\newenvironment{haddockdesc} +               {\list{}{\labelwidth\z@ \itemindent-\leftmargin +                        \let\makelabel\haddocklabel}} +               {\endlist} +\newcommand*\haddocklabel[1]{\hspace\labelsep\haddockdecltt{#1}} +\makeatother + +% after a declaration, start a new line for the documentation. +% Otherwise, the documentation starts right after the declaration, +% because we're using the list environment and the declaration is the +% ``label''.  I tried making this newline part of the label, but +% couldn't get that to work reliably (the space seemed to stretch +% sometimes). +\newcommand{\haddockbegindoc}{\hfill\\[1ex]} + +% spacing between paragraphs and no \parindent looks better +\parskip=10pt plus2pt minus2pt +\setlength{\parindent}{0cm} | 
