View | Details | Raw Unified | Return to bug 273260
Collapse All | Expand All

(-)b/MOVED (-1 lines)
Lines 66-72 x11-toolkits/hs-wxcore||2018-10-23|Has expired: Doesn't build with recent GHC ve Link Here
66
devel/hs-TypeCompose||2018-10-23|Has expired: Doesn't build with recent GHC version
66
devel/hs-TypeCompose||2018-10-23|Has expired: Doesn't build with recent GHC version
67
devel/hs-PSQueue||2018-10-23|Has expired: Doesn't build with recent GHC version
67
devel/hs-PSQueue||2018-10-23|Has expired: Doesn't build with recent GHC version
68
devel/hs-blaze-builder-enumerator||2018-10-23|Has expired: Doesn't build with recent GHC version
68
devel/hs-blaze-builder-enumerator||2018-10-23|Has expired: Doesn't build with recent GHC version
69
www/hs-gitit||2018-10-23|Has expired: Doesn't build with newest packages
70
cad/kicad-library||2018-10-25|Has expired: KiCad has been upgraded to 5.0.0
69
cad/kicad-library||2018-10-25|Has expired: KiCad has been upgraded to 5.0.0
71
devel/linux-kernel||2018-10-29|Has expired: no longer useful
70
devel/linux-kernel||2018-10-29|Has expired: no longer useful
72
audio/py-musicbrainz2||2018-10-29|Has expired: Musicbrainz Web Service 1.0 support ended 2018-08-01
71
audio/py-musicbrainz2||2018-10-29|Has expired: Musicbrainz Web Service 1.0 support ended 2018-08-01
(-)b/www/hs-gitit/Makefile (+244 lines)
Added Link Here
1
PORTNAME=	gitit
2
PORTVERSION=	0.15.1.1
3
CATEGORIES=	www haskell
4
5
MAINTAINER=	joemann@beefree.free.de
6
COMMENT=	Wiki using happstack and pandoc, and git or darcs or mercurial
7
WWW=		https://github.com/jgm/gitit
8
9
LICENSE=	GPLv2
10
11
USES=		cabal
12
13
OPTIONS_DEFINE=		PLUGINS EXPORTS
14
OPTIONS_DEFAULT=	PLUGINS
15
16
# "Plugin support makes the gitit executable considerably larger
17
#  and more memory-hungry". (jgm)
18
PLUGINS_DESC=		Enable support for plugins
19
PLUGINS_CABAL_FLAGS=	plugins
20
21
# "This feature is a security risk; it provided multiple
22
#  vectors by which contents of files could be exposed". (jgm)
23
EXPORTS_DESC=		Enable page exports to many formats (insecure!)
24
# This is the commit which removed the export options:
25
# https://github.com/jgm/gitit/commit/eed32638f4f6e3b2f4b8a9a04c4b72001acf9ad8
26
# To re-enable exports in gitit we have to revert it:
27
# git diff --no-prefix eed3263 735096f > extra-patch-exports
28
EXPORTS_EXTRA_PATCHES=	${PATCHDIR}/extra-patch-exports \
29
		${PATCHDIR}/extra-patch-data_default.conf \
30
		${PATCHDIR}/extra-patch-src_Network_Gitit_Config.hs \
31
		${PATCHDIR}/extra-patch-src_Network_Gitit_Export.hs \
32
		${PATCHDIR}/extra-patch-src_Network_Gitit_Layout.hs \
33
		${PATCHDIR}/extra-patch-src_Network_Gitit_Types.hs
34
# Besides applying the above patches one also has to set "exports: yes"
35
# in a gitit instance's config file to enable exports for that instance.
36
37
USE_CABAL=	ConfigFile-1.1.4_1 \
38
		Diff-0.4.1 \
39
		Glob-0.10.2_3 \
40
		HStringTemplate-0.8.8_5 \
41
		HTTP-4000.4.1_2 \
42
		JuicyPixels-3.3.8 \
43
		MissingH-1.6.0.0 \
44
		OneTuple-0.4.1.1 \
45
		Only-0.1_1 \
46
		QuickCheck-2.14.3 \
47
		SHA-1.6.4.4 \
48
		StateVar-1.2.2 \
49
		aeson-2.1.2.1_3 \
50
		aeson-pretty-0.8.10 \
51
		ansi-terminal-1.0 \
52
		ansi-terminal-types-0.11.5_1 \
53
		appar-0.1.8 \
54
		asn1-encoding-0.9.6_2 \
55
		asn1-parse-0.9.5 \
56
		asn1-types-0.3.4 \
57
		assoc-1.1 \
58
		async-2.2.4_3 \
59
		attoparsec-0.14.4_3 \
60
		base-compat-0.12.2 \
61
		base-compat-batteries-0.12.2 \
62
		base-orphans-0.9.0 \
63
		base16-bytestring-1.0.2.0 \
64
		base64-0.4.2.4_3 \
65
		base64-bytestring-1.2.1.0 \
66
		basement-0.0.16 \
67
		bifunctors-5.6.1 \
68
		bitvec-1.1.4.0 \
69
		blaze-builder-0.4.2.2_1 \
70
		blaze-html-0.9.1.2_2 \
71
		blaze-markup-0.8.2.8_4 \
72
		byteorder-1.0.4 \
73
		cabal-doctest-1.0.9_3 \
74
		case-insensitive-1.2.1.0 \
75
		cassava-0.5.3.0_1 \
76
		cereal-0.5.8.3 \
77
		citeproc-0.8.1 \
78
		colour-2.3.6 \
79
		commonmark-0.2.3 \
80
		commonmark-extensions-0.2.3.4 \
81
		commonmark-pandoc-0.2.1.3 \
82
		comonad-5.0.8_1 \
83
		conduit-1.3.5 \
84
		conduit-extra-1.3.6 \
85
		contravariant-1.5.5 \
86
		cookie-0.4.6 \
87
		cryptohash-md5-0.11.101.0_2 \
88
		cryptohash-sha1-0.11.101.0_2 \
89
		crypton-0.33 \
90
		crypton-connection-0.3.1 \
91
		crypton-x509-1.7.6_1 \
92
		crypton-x509-store-1.6.9 \
93
		crypton-x509-system-1.6.7 \
94
		crypton-x509-validation-1.6.12 \
95
		cryptonite-0.30 \
96
		css-text-0.1.3.0 \
97
		data-default-0.7.1.1 \
98
		data-default-class-0.1.2.0 \
99
		data-default-instances-containers-0.0.1 \
100
		data-default-instances-dlist-0.0.1 \
101
		data-default-instances-old-locale-0.0.1 \
102
		data-fix-0.3.2_4 \
103
		digest-0.0.1.7 \
104
		distributive-0.6.2.1_1 \
105
		dlist-1.0 \
106
		doclayout-0.4.0.1 \
107
		doctemplates-0.11 \
108
		emojis-0.1.2 \
109
		entropy-0.4.1.10_1 \
110
		extensible-exceptions-0.1.1.4 \
111
		feed-1.3.2.1_1 \
112
		file-embed-0.0.15.0 \
113
		filestore-0.6.5_1 \
114
		foldable1-classes-compat-0.1_2 \
115
		generically-0.1.1_1 \
116
		ghc-paths-0.1.0.12_5 \
117
		gridtables-0.1.0.0 \
118
		haddock-library-1.11.0_2 \
119
		happstack-server-7.8.0.2 \
120
		happy-1.20.1.1 \
121
		hashable-1.4.2.0_1 \
122
		haskell-lexer-1.1.1 \
123
		hoauth2-2.8.0 \
124
		hourglass-0.2.12 \
125
		hsc2hs-0.68.9 \
126
		hslogger-1.3.1.0_7 \
127
		html-1.0.1.2 \
128
		http-client-0.7.13.1_1 \
129
		http-client-tls-0.3.6.2 \
130
		http-conduit-2.3.8.2 \
131
		http-types-0.12.3 \
132
		indexed-traversable-0.1.2.1 \
133
		indexed-traversable-instances-0.1.1.2_1 \
134
		integer-logarithms-1.0.3.1_4 \
135
		iproute-1.7.12 \
136
		ipynb-0.2_1 \
137
		jira-wiki-markup-1.5.1 \
138
		json-0.10_1 \
139
		libyaml-0.1.2_1 \
140
		memory-0.18.0 \
141
		microlens-0.4.13.1 \
142
		mime-types-0.1.1.0 \
143
		monad-control-1.0.3.1 \
144
		mono-traversable-1.0.15.3 \
145
		network-3.1.4.0 \
146
		network-bsd-2.8.1.0_4 \
147
		network-info-0.2.1 \
148
		network-uri-2.6.4.2 \
149
		old-locale-1.0.0.7_2 \
150
		old-time-1.1.0.3_2 \
151
		ordered-containers-0.2.3 \
152
		pandoc-3.1.4 \
153
		pandoc-types-1.23 \
154
		pem-0.2.4 \
155
		pretty-show-1.10 \
156
		primitive-0.8.0.0 \
157
		random-1.2.1.1 \
158
		recaptcha-0.1.0.4 \
159
		regex-base-0.94.0.2_1 \
160
		regex-compat-0.95.2.1_2 \
161
		regex-posix-0.96.0.1_1 \
162
		regex-tdfa-1.3.2.1 \
163
		resourcet-1.3.0 \
164
		safe-0.3.19 \
165
		scientific-0.3.7.0_5 \
166
		semialign-1.3 \
167
		semigroupoids-6.0.0.1 \
168
		semigroups-0.20 \
169
		sendfile-0.7.11.4 \
170
		skylighting-0.13.3 \
171
		skylighting-core-0.13.3 \
172
		skylighting-format-ansi-0.1 \
173
		skylighting-format-blaze-html-0.1.1 \
174
		skylighting-format-context-0.1.0.2 \
175
		skylighting-format-latex-0.1 \
176
		socks-0.6.1 \
177
		split-0.2.3.5 \
178
		splitmix-0.1.0.4_2 \
179
		streaming-commons-0.2.2.6 \
180
		strict-0.5 \
181
		syb-0.7.2.3 \
182
		system-filepath-0.4.14_1 \
183
		tagged-0.8.7 \
184
		tagsoup-0.14.8 \
185
		temporary-1.3 \
186
		texmath-0.12.8 \
187
		text-conversions-0.3.1.1 \
188
		text-short-0.1.5_2 \
189
		th-abstraction-0.5.0.0 \
190
		th-compat-0.1.4_2 \
191
		th-lift-0.8.3 \
192
		th-lift-instances-0.1.20 \
193
		these-1.2 \
194
		threads-0.5.1.7_1 \
195
		time-compat-1.9.6.1_5 \
196
		time-locale-compat-0.1.1.5 \
197
		tls-1.7.0 \
198
		transformers-base-0.4.6 \
199
		transformers-compat-0.7.2 \
200
		typed-process-0.2.11.0 \
201
		typst-0.1.0.0 \
202
		typst-symbols-0.1.2 \
203
		unicode-collation-0.1.3.4 \
204
		unicode-data-0.4.0.1_1 \
205
		unicode-transforms-0.4.0.1_3 \
206
		uniplate-1.6.13_1 \
207
		unix-time-0.4.10 \
208
		unliftio-core-0.2.1.0_2 \
209
		unordered-containers-0.2.19.1_2 \
210
		uri-bytestring-0.3.3.1 \
211
		uri-bytestring-aeson-0.1.0.8 \
212
		url-2.1.3 \
213
		utf8-string-1.0.2 \
214
		uuid-1.3.15_2 \
215
		uuid-types-1.0.5_4 \
216
		vector-0.13.0.0_3 \
217
		vector-algorithms-0.9.0.1_2 \
218
		vector-stream-0.1.0.0_2 \
219
		void-0.7.3 \
220
		witherable-0.4.2_4 \
221
		xml-1.3.14_2 \
222
		xml-conduit-1.9.1.3 \
223
		xml-types-0.3.8 \
224
		xss-sanitize-0.3.7.2 \
225
		yaml-0.11.11.2_2 \
226
		zip-archive-0.4.3 \
227
		zlib-0.6.3.0_1
228
229
# Switch off idle GC using -with_rtsopts=-I0 in gitit.cabal
230
CABAL_FLAGS=	with_rtsopts
231
232
CABAL_EXECUTABLES=	gitit expireGititCache
233
CABAL_WRAPPER_SCRIPTS=	gitit
234
235
USE_RC_SUBR=	gitit
236
237
post-install:
238
	cd ${WRKSRC} && \
239
		${COPYTREE_SHARE} README.markdown ${STAGEDIR}${DATADIR} && \
240
		${COPYTREE_SHARE} data ${STAGEDIR}${DATADIR}
241
	cd ${STAGEDIR}${DATADIR} && \
242
		${FIND} data -name '*.orig' -exec ${RM} {} ";"
243
244
.include <bsd.port.mk>
(-)b/www/hs-gitit/distinfo (+513 lines)
Added Link Here
1
TIMESTAMP = 1688557589
2
SHA256 (cabal/gitit-0.15.1.1/gitit-0.15.1.1.tar.gz) = 90bc0d30386be90f11e4a6e67963738580327da0646a4c79ea45e16eda02d55d
3
SIZE (cabal/gitit-0.15.1.1/gitit-0.15.1.1.tar.gz) = 275402
4
SHA256 (cabal/ConfigFile-1.1.4/ConfigFile-1.1.4.tar.gz) = ae087b359ff2945a62b671449227e0a811d143ee651179f4e7e9c66548e0f514
5
SIZE (cabal/ConfigFile-1.1.4/ConfigFile-1.1.4.tar.gz) = 28969
6
SHA256 (cabal/ConfigFile-1.1.4/revision/1.cabal) = 4cb481f88bbbbba5a61d2c1aa76fda01ae3d8ba9d11439a6cf56a86bfa791883
7
SIZE (cabal/ConfigFile-1.1.4/revision/1.cabal) = 2097
8
SHA256 (cabal/Diff-0.4.1/Diff-0.4.1.tar.gz) = fd5e4aaac7219bcbb14834fb8580ebe0aae905958d0ad74f5338ea290b372670
9
SIZE (cabal/Diff-0.4.1/Diff-0.4.1.tar.gz) = 8759
10
SHA256 (cabal/Glob-0.10.2/Glob-0.10.2.tar.gz) = 6af672ac8427d35cbd42d64142dc288feab266f0be92dae3c696e8860d8173c0
11
SIZE (cabal/Glob-0.10.2/Glob-0.10.2.tar.gz) = 30226
12
SHA256 (cabal/Glob-0.10.2/revision/3.cabal) = dd2ddbecae8f84e8f4cacb5b856901a19c25ceaa11f2525d3ee88d034acb0081
13
SIZE (cabal/Glob-0.10.2/revision/3.cabal) = 2938
14
SHA256 (cabal/HStringTemplate-0.8.8/HStringTemplate-0.8.8.tar.gz) = 717df416550bdc62f2070c1a86238efe535b0fa41c5fd708c4f631f927880cd9
15
SIZE (cabal/HStringTemplate-0.8.8/HStringTemplate-0.8.8.tar.gz) = 18043
16
SHA256 (cabal/HStringTemplate-0.8.8/revision/5.cabal) = 8cf2c140b0f7c6357dc21d0a9c218233309220278e836208f4b8e911be1d1492
17
SIZE (cabal/HStringTemplate-0.8.8/revision/5.cabal) = 1985
18
SHA256 (cabal/HTTP-4000.4.1/HTTP-4000.4.1.tar.gz) = df31d8efec775124dab856d7177ddcba31be9f9e0836ebdab03d94392f2dd453
19
SIZE (cabal/HTTP-4000.4.1/HTTP-4000.4.1.tar.gz) = 74330
20
SHA256 (cabal/HTTP-4000.4.1/revision/2.cabal) = d9220cc1b8c1f287248d650910710b96e62e54530772e3bcd19dbdec6547f8ae
21
SIZE (cabal/HTTP-4000.4.1/revision/2.cabal) = 5862
22
SHA256 (cabal/JuicyPixels-3.3.8/JuicyPixels-3.3.8.tar.gz) = d3a0f6ca3515a1b3d526cbf79f2e0b0aab57f208ab216f9c26437bbcd86fb63e
23
SIZE (cabal/JuicyPixels-3.3.8/JuicyPixels-3.3.8.tar.gz) = 132479
24
SHA256 (cabal/MissingH-1.6.0.0/MissingH-1.6.0.0.tar.gz) = fc3b9684a0a14fc9a0afdd9c8ffb1ae93db122c7150b1eea1769065658092d4f
25
SIZE (cabal/MissingH-1.6.0.0/MissingH-1.6.0.0.tar.gz) = 109652
26
SHA256 (cabal/OneTuple-0.4.1.1/OneTuple-0.4.1.1.tar.gz) = c9e764d4ee1e57cad8341bd5d0de33ba3a52b6793fc1309679f2bf60c030bb2b
27
SIZE (cabal/OneTuple-0.4.1.1/OneTuple-0.4.1.1.tar.gz) = 5601
28
SHA256 (cabal/Only-0.1/Only-0.1.tar.gz) = ab7aa193e8c257d3bda6b0b3c1cbcf74cdaa85ab08cb20c2dd62ba248c1ab265
29
SIZE (cabal/Only-0.1/Only-0.1.tar.gz) = 1960
30
SHA256 (cabal/Only-0.1/revision/1.cabal) = f92f5da97e647451f1ee7f5bf44914fb75062d08ccd3f36b2000d649c63d13aa
31
SIZE (cabal/Only-0.1/revision/1.cabal) = 1373
32
SHA256 (cabal/QuickCheck-2.14.3/QuickCheck-2.14.3.tar.gz) = 5c0f22b36b28a1a8fa110b3819818d3f29494a3b0dedbae299f064123ca70501
33
SIZE (cabal/QuickCheck-2.14.3/QuickCheck-2.14.3.tar.gz) = 76849
34
SHA256 (cabal/SHA-1.6.4.4/SHA-1.6.4.4.tar.gz) = 6bd950df6b11a3998bb1452d875d2da043ee43385459afc5f16d471d25178b44
35
SIZE (cabal/SHA-1.6.4.4/SHA-1.6.4.4.tar.gz) = 2715144
36
SHA256 (cabal/StateVar-1.2.2/StateVar-1.2.2.tar.gz) = 5e4b39da395656a59827b0280508aafdc70335798b50e5d6fd52596026251825
37
SIZE (cabal/StateVar-1.2.2/StateVar-1.2.2.tar.gz) = 5048
38
SHA256 (cabal/aeson-2.1.2.1/aeson-2.1.2.1.tar.gz) = 5d4042b903ce181ee023bbf908f37a3f55e820c5f0df102683b87f963e3522c6
39
SIZE (cabal/aeson-2.1.2.1/aeson-2.1.2.1.tar.gz) = 335908
40
SHA256 (cabal/aeson-2.1.2.1/revision/3.cabal) = 5b8d62a60963a925c4d123a46e42a8e235a32188522c9f119f64ac228c2612a7
41
SIZE (cabal/aeson-2.1.2.1/revision/3.cabal) = 6359
42
SHA256 (cabal/aeson-pretty-0.8.10/aeson-pretty-0.8.10.tar.gz) = 2a21f2cd78adcb149ceba770239ed664519552911e7680172b18ff695cfa7ae5
43
SIZE (cabal/aeson-pretty-0.8.10/aeson-pretty-0.8.10.tar.gz) = 5894
44
SHA256 (cabal/ansi-terminal-1.0/ansi-terminal-1.0.tar.gz) = 0798a98f79189e62b5ff0aa247ba95fc3845f0f6f1e14ecceb37facfbdd5cfc9
45
SIZE (cabal/ansi-terminal-1.0/ansi-terminal-1.0.tar.gz) = 31745
46
SHA256 (cabal/ansi-terminal-types-0.11.5/ansi-terminal-types-0.11.5.tar.gz) = bf7b230389f43105100a6d5740822598a88b38eaaf7d042de595ccf72db4fdd1
47
SIZE (cabal/ansi-terminal-types-0.11.5/ansi-terminal-types-0.11.5.tar.gz) = 4660
48
SHA256 (cabal/ansi-terminal-types-0.11.5/revision/1.cabal) = f78440dfd95c4509e88855ac7cc2d9566ddf956a92c1290404cac93ad1a1b00a
49
SIZE (cabal/ansi-terminal-types-0.11.5/revision/1.cabal) = 1482
50
SHA256 (cabal/appar-0.1.8/appar-0.1.8.tar.gz) = c4ceeddc26525b58d82c41b6d3e32141371a200a6794aae185b6266ccc81631f
51
SIZE (cabal/appar-0.1.8/appar-0.1.8.tar.gz) = 4037
52
SHA256 (cabal/asn1-encoding-0.9.6/asn1-encoding-0.9.6.tar.gz) = d9f8deabd3b908e5cf83c0d813c08dc0143b3ec1c0d97f660d2cfa02c1c8da0a
53
SIZE (cabal/asn1-encoding-0.9.6/asn1-encoding-0.9.6.tar.gz) = 17343
54
SHA256 (cabal/asn1-encoding-0.9.6/revision/2.cabal) = 27ed8f6043aed79630313bb931f7c8e2b510f0b4586cd55c16ae040c7d1ea098
55
SIZE (cabal/asn1-encoding-0.9.6/revision/2.cabal) = 2060
56
SHA256 (cabal/asn1-parse-0.9.5/asn1-parse-0.9.5.tar.gz) = 8f1fe1344d30b39dc594d74df2c55209577722af1497204b4c2b6d6e8747f39e
57
SIZE (cabal/asn1-parse-0.9.5/asn1-parse-0.9.5.tar.gz) = 2951
58
SHA256 (cabal/asn1-types-0.3.4/asn1-types-0.3.4.tar.gz) = 78ee92a251379298ca820fa53edbf4b33c539b9fcd887c86f520c30e3b4e21a8
59
SIZE (cabal/asn1-types-0.3.4/asn1-types-0.3.4.tar.gz) = 6472
60
SHA256 (cabal/assoc-1.1/assoc-1.1.tar.gz) = 7aa2e6548b3d9d49a286ac20639479aaf6c47a1446113ed784d98737c5f60df4
61
SIZE (cabal/assoc-1.1/assoc-1.1.tar.gz) = 3193
62
SHA256 (cabal/async-2.2.4/async-2.2.4.tar.gz) = 484df85be0e76c4fed9376451e48e1d0c6e97952ce79735b72d54297e7e0a725
63
SIZE (cabal/async-2.2.4/async-2.2.4.tar.gz) = 14148
64
SHA256 (cabal/async-2.2.4/revision/3.cabal) = 46367dc0c8326dcbeb7b93f200b567491c2f6029bccf822b8bb26ee660397e08
65
SIZE (cabal/async-2.2.4/revision/3.cabal) = 3112
66
SHA256 (cabal/attoparsec-0.14.4/attoparsec-0.14.4.tar.gz) = 3f337fe58624565de12426f607c23e60c7b09c86b4e3adfc827ca188c9979e6c
67
SIZE (cabal/attoparsec-0.14.4/attoparsec-0.14.4.tar.gz) = 160701
68
SHA256 (cabal/attoparsec-0.14.4/revision/3.cabal) = 50475b722305175f57a3ee3dbaee10aa4b91f61c9717b85b718a7df37c223fb2
69
SIZE (cabal/attoparsec-0.14.4/revision/3.cabal) = 5679
70
SHA256 (cabal/base-compat-0.12.2/base-compat-0.12.2.tar.gz) = a62adc883a5ac436f80e4ae02c3c56111cf1007492f267c291139a668d2150bd
71
SIZE (cabal/base-compat-0.12.2/base-compat-0.12.2.tar.gz) = 36393
72
SHA256 (cabal/base-compat-batteries-0.12.2/base-compat-batteries-0.12.2.tar.gz) = ede9092e07f904e0759160bf1ecd3fb7eb043bae6dc89a37c3dc94829ec5eb99
73
SIZE (cabal/base-compat-batteries-0.12.2/base-compat-batteries-0.12.2.tar.gz) = 17645
74
SHA256 (cabal/base-orphans-0.9.0/base-orphans-0.9.0.tar.gz) = 613ed4d8241ed5a648a59ae6569a6962990bb545711d020d49fb83fa12d16e62
75
SIZE (cabal/base-orphans-0.9.0/base-orphans-0.9.0.tar.gz) = 26025
76
SHA256 (cabal/base16-bytestring-1.0.2.0/base16-bytestring-1.0.2.0.tar.gz) = 1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784
77
SIZE (cabal/base16-bytestring-1.0.2.0/base16-bytestring-1.0.2.0.tar.gz) = 7219
78
SHA256 (cabal/base64-0.4.2.4/base64-0.4.2.4.tar.gz) = 640a2d0afcb07e1de2e0a13a5e942b0265781c5942bd642a8793e7b019be3585
79
SIZE (cabal/base64-0.4.2.4/base64-0.4.2.4.tar.gz) = 22065
80
SHA256 (cabal/base64-0.4.2.4/revision/3.cabal) = 10103a0b30d5028b8e1ee9811b76b946ca7713bf8234549191b69f55ee0599d5
81
SIZE (cabal/base64-0.4.2.4/revision/3.cabal) = 2862
82
SHA256 (cabal/base64-bytestring-1.2.1.0/base64-bytestring-1.2.1.0.tar.gz) = fbf8ed30edde271eb605352021431d8f1b055f95a56af31fe2eacf6bdfdc49c9
83
SIZE (cabal/base64-bytestring-1.2.1.0/base64-bytestring-1.2.1.0.tar.gz) = 13743
84
SHA256 (cabal/basement-0.0.16/basement-0.0.16.tar.gz) = 7fb77e249aef76ba5aed3059d556800ce02b614597c488ba01f0a16449146300
85
SIZE (cabal/basement-0.0.16/basement-0.0.16.tar.gz) = 134837
86
SHA256 (cabal/bifunctors-5.6.1/bifunctors-5.6.1.tar.gz) = 06381471b5be16516a1b2c4b21a5101a3d991038bface8e0cad144c0044d57fc
87
SIZE (cabal/bifunctors-5.6.1/bifunctors-5.6.1.tar.gz) = 38170
88
SHA256 (cabal/bitvec-1.1.4.0/bitvec-1.1.4.0.tar.gz) = 68f0b1e01604ca8bdeaef47b3621faec456d6f76d6820a321eccd4d3749454a8
89
SIZE (cabal/bitvec-1.1.4.0/bitvec-1.1.4.0.tar.gz) = 35559
90
SHA256 (cabal/blaze-builder-0.4.2.2/blaze-builder-0.4.2.2.tar.gz) = 2cdc998c021d3a5f2a66a95138b93386271c26a117e7676d78264a90e536af67
91
SIZE (cabal/blaze-builder-0.4.2.2/blaze-builder-0.4.2.2.tar.gz) = 60707
92
SHA256 (cabal/blaze-builder-0.4.2.2/revision/1.cabal) = f0017df374c330de0ebe0eb15eae8c48427bddefa1d81a3cb31c0a4812ecdb08
93
SIZE (cabal/blaze-builder-0.4.2.2/revision/1.cabal) = 3685
94
SHA256 (cabal/blaze-html-0.9.1.2/blaze-html-0.9.1.2.tar.gz) = 60503f42546c6c1b954014d188ea137e43d74dcffd2bf6157c113fd91a0c394c
95
SIZE (cabal/blaze-html-0.9.1.2/blaze-html-0.9.1.2.tar.gz) = 81617
96
SHA256 (cabal/blaze-html-0.9.1.2/revision/2.cabal) = 74b89ffa665891f528f571ce9e3c2dce24f698563f14b6f5e9e0512eccdf5dc2
97
SIZE (cabal/blaze-html-0.9.1.2/revision/2.cabal) = 3062
98
SHA256 (cabal/blaze-markup-0.8.2.8/blaze-markup-0.8.2.8.tar.gz) = 43fc3f6872dc8d1be8d0fe091bd4775139b42179987f33d6490a7c5f1e07a349
99
SIZE (cabal/blaze-markup-0.8.2.8/blaze-markup-0.8.2.8.tar.gz) = 14519
100
SHA256 (cabal/blaze-markup-0.8.2.8/revision/4.cabal) = a8fe050fb93397df36c3f5b19c22628e0e54446382e0f6775e2b45c1ad999eee
101
SIZE (cabal/blaze-markup-0.8.2.8/revision/4.cabal) = 2271
102
SHA256 (cabal/byteorder-1.0.4/byteorder-1.0.4.tar.gz) = bd20bbb586947f99c38a4c93d9d0266f49f6fc581767b51ba568f6d5d52d2919
103
SIZE (cabal/byteorder-1.0.4/byteorder-1.0.4.tar.gz) = 2030
104
SHA256 (cabal/cabal-doctest-1.0.9/cabal-doctest-1.0.9.tar.gz) = 5556088496111d33810c4ae6c4a065bb37fa3315e9e8891e8000b1ab6707ba73
105
SIZE (cabal/cabal-doctest-1.0.9/cabal-doctest-1.0.9.tar.gz) = 10770
106
SHA256 (cabal/cabal-doctest-1.0.9/revision/3.cabal) = 6dea0dbd1457f43d96ce1cfb1bab8b9f55d4fb82940e2bfa5aad78e6e2260656
107
SIZE (cabal/cabal-doctest-1.0.9/revision/3.cabal) = 1517
108
SHA256 (cabal/case-insensitive-1.2.1.0/case-insensitive-1.2.1.0.tar.gz) = 296dc17e0c5f3dfb3d82ced83e4c9c44c338ecde749b278b6eae512f1d04e406
109
SIZE (cabal/case-insensitive-1.2.1.0/case-insensitive-1.2.1.0.tar.gz) = 53609
110
SHA256 (cabal/cassava-0.5.3.0/cassava-0.5.3.0.tar.gz) = b4c8451f433ad7725cb8b9f7a7efe598ba103b16584713c91f48ae023829e9be
111
SIZE (cabal/cassava-0.5.3.0/cassava-0.5.3.0.tar.gz) = 38224
112
SHA256 (cabal/cassava-0.5.3.0/revision/1.cabal) = 3e5a702f0194968ddf2ef38343318334e7c7de44b90c7822e9e20a7e98685bd1
113
SIZE (cabal/cassava-0.5.3.0/revision/1.cabal) = 6121
114
SHA256 (cabal/cereal-0.5.8.3/cereal-0.5.8.3.tar.gz) = 99905220661b26e5bd91130bd9772554938608a5b1d717240a6eb331121e0f6a
115
SIZE (cabal/cereal-0.5.8.3/cereal-0.5.8.3.tar.gz) = 20166
116
SHA256 (cabal/citeproc-0.8.1/citeproc-0.8.1.tar.gz) = 33523bbd8c38f72c6d606e02d11b93254171f801be4f2a0cb4d34d6626426400
117
SIZE (cabal/citeproc-0.8.1/citeproc-0.8.1.tar.gz) = 549947
118
SHA256 (cabal/colour-2.3.6/colour-2.3.6.tar.gz) = 2cd35dcd6944a5abc9f108a5eb5ee564b6b1fa98a9ec79cefcc20b588991f871
119
SIZE (cabal/colour-2.3.6/colour-2.3.6.tar.gz) = 20675
120
SHA256 (cabal/commonmark-0.2.3/commonmark-0.2.3.tar.gz) = 745ade908c7cd8a61538d9c3e60363d5e1175fd7f544f557ff52517c8408d905
121
SIZE (cabal/commonmark-0.2.3/commonmark-0.2.3.tar.gz) = 102342
122
SHA256 (cabal/commonmark-extensions-0.2.3.4/commonmark-extensions-0.2.3.4.tar.gz) = a084efe90311f8a0d83d8622ef76f17dfdb974a84b74df454cf906b0ee64665e
123
SIZE (cabal/commonmark-extensions-0.2.3.4/commonmark-extensions-0.2.3.4.tar.gz) = 37768
124
SHA256 (cabal/commonmark-pandoc-0.2.1.3/commonmark-pandoc-0.2.1.3.tar.gz) = 77adcf9074299a5b318901d057ebf49a7f032245f2aee783ef475539b0897f21
125
SIZE (cabal/commonmark-pandoc-0.2.1.3/commonmark-pandoc-0.2.1.3.tar.gz) = 4907
126
SHA256 (cabal/comonad-5.0.8/comonad-5.0.8.tar.gz) = ef6cdf2cc292cc43ee6aa96c581b235fdea8ab44a0bffb24dc79ae2b2ef33d13
127
SIZE (cabal/comonad-5.0.8/comonad-5.0.8.tar.gz) = 15227
128
SHA256 (cabal/comonad-5.0.8/revision/1.cabal) = 1f1aabd73ec7f80f20cf078a748a60cd48d8e57277802fdf6a9ab3601a9b8f7e
129
SIZE (cabal/comonad-5.0.8/revision/1.cabal) = 3631
130
SHA256 (cabal/conduit-1.3.5/conduit-1.3.5.tar.gz) = 2bb0d3e0eecc43e3d1d8cfc2125914f9175cde752be2d5908a1e120f321c782d
131
SIZE (cabal/conduit-1.3.5/conduit-1.3.5.tar.gz) = 88893
132
SHA256 (cabal/conduit-extra-1.3.6/conduit-extra-1.3.6.tar.gz) = 8950c38049d892c38590d389bed49ecf880671f58ec63dd4709d9fe3d4b8f153
133
SIZE (cabal/conduit-extra-1.3.6/conduit-extra-1.3.6.tar.gz) = 33321
134
SHA256 (cabal/contravariant-1.5.5/contravariant-1.5.5.tar.gz) = 062fd66580d7aad0b5ba93e644ffa7feee69276ef50f20d4ed9f1deb7642dffa
135
SIZE (cabal/contravariant-1.5.5/contravariant-1.5.5.tar.gz) = 13815
136
SHA256 (cabal/cookie-0.4.6/cookie-0.4.6.tar.gz) = 8c41a956c32b9733d525a53d43b0338a236a34d36658ecc4364c8249a6664baa
137
SIZE (cabal/cookie-0.4.6/cookie-0.4.6.tar.gz) = 6219
138
SHA256 (cabal/cryptohash-md5-0.11.101.0/cryptohash-md5-0.11.101.0.tar.gz) = 3b08db0ae39df2b44e83053ad30d7546a4c6200a852c22a240a7e03ae1080f05
139
SIZE (cabal/cryptohash-md5-0.11.101.0/cryptohash-md5-0.11.101.0.tar.gz) = 11872
140
SHA256 (cabal/cryptohash-md5-0.11.101.0/revision/2.cabal) = 8d8172dfca073406d6d50a122a8a8caa53a0ea8f3827232a40b3fd7c4de85484
141
SIZE (cabal/cryptohash-md5-0.11.101.0/revision/2.cabal) = 3104
142
SHA256 (cabal/cryptohash-sha1-0.11.101.0/cryptohash-sha1-0.11.101.0.tar.gz) = a4042c97ad02eb68e766577ca35c01970c33e96cfd74ccb4dd403e3476a23241
143
SIZE (cabal/cryptohash-sha1-0.11.101.0/cryptohash-sha1-0.11.101.0.tar.gz) = 11563
144
SHA256 (cabal/cryptohash-sha1-0.11.101.0/revision/2.cabal) = 25be9e5bb979c1b96d7695d9cbb6a40ec345025e7a100b2d71d499812c2e89ec
145
SIZE (cabal/cryptohash-sha1-0.11.101.0/revision/2.cabal) = 3094
146
SHA256 (cabal/crypton-0.33/crypton-0.33.tar.gz) = e66fa0a75c2afe149205df9f496f05d31fa94d8116551632d39e37e58fe60520
147
SIZE (cabal/crypton-0.33/crypton-0.33.tar.gz) = 618064
148
SHA256 (cabal/crypton-connection-0.3.1/crypton-connection-0.3.1.tar.gz) = 03073694f6525f975db78dbc67c34e89bb27b95cf863d4a3a77dc6ef49d81dcc
149
SIZE (cabal/crypton-connection-0.3.1/crypton-connection-0.3.1.tar.gz) = 9112
150
SHA256 (cabal/crypton-x509-1.7.6/crypton-x509-1.7.6.tar.gz) = ebb74aca2d00261e2fb4927d211ba1a174e190e5257f309e190f019727f8caff
151
SIZE (cabal/crypton-x509-1.7.6/crypton-x509-1.7.6.tar.gz) = 21557
152
SHA256 (cabal/crypton-x509-1.7.6/revision/1.cabal) = c567657a705b6d6521f9dd2de999bf530d618ec00f3b939df76a41fb0fe94281
153
SIZE (cabal/crypton-x509-1.7.6/revision/1.cabal) = 2339
154
SHA256 (cabal/crypton-x509-store-1.6.9/crypton-x509-store-1.6.9.tar.gz) = 3e6218af12e039cc291d19792db044df1647b5cf0bbc60b909a027e7595a256f
155
SIZE (cabal/crypton-x509-store-1.6.9/crypton-x509-store-1.6.9.tar.gz) = 12735
156
SHA256 (cabal/crypton-x509-system-1.6.7/crypton-x509-system-1.6.7.tar.gz) = a436261e5f5e83d85080f57a5509c8224c9e75a6e56d0c43a7d2967052b634ca
157
SIZE (cabal/crypton-x509-system-1.6.7/crypton-x509-system-1.6.7.tar.gz) = 3496
158
SHA256 (cabal/crypton-x509-validation-1.6.12/crypton-x509-validation-1.6.12.tar.gz) = 0e60b7e237a4fd5e7e6e7200018c7947314292ef63751cbb51877836ebe650f6
159
SIZE (cabal/crypton-x509-validation-1.6.12/crypton-x509-validation-1.6.12.tar.gz) = 19573
160
SHA256 (cabal/cryptonite-0.30/cryptonite-0.30.tar.gz) = 56099c8a8aa01d2ee914b670c97c1f818186dbb886e2025b73d9c2afe3496b1d
161
SIZE (cabal/cryptonite-0.30/cryptonite-0.30.tar.gz) = 621062
162
SHA256 (cabal/css-text-0.1.3.0/css-text-0.1.3.0.tar.gz) = 5ff507bf3863219f41e7f2d215e5511fe15ee13d1e28bd3ee64e0b0b894bcd7a
163
SIZE (cabal/css-text-0.1.3.0/css-text-0.1.3.0.tar.gz) = 4594
164
SHA256 (cabal/data-default-0.7.1.1/data-default-0.7.1.1.tar.gz) = b0f95d279cd75cacaa8152a01590dc3460f7134f6840b37052abb3ba3cb2a511
165
SIZE (cabal/data-default-0.7.1.1/data-default-0.7.1.1.tar.gz) = 1627
166
SHA256 (cabal/data-default-class-0.1.2.0/data-default-class-0.1.2.0.tar.gz) = 4f01b423f000c3e069aaf52a348564a6536797f31498bb85c3db4bd2d0973e56
167
SIZE (cabal/data-default-class-0.1.2.0/data-default-class-0.1.2.0.tar.gz) = 2522
168
SHA256 (cabal/data-default-instances-containers-0.0.1/data-default-instances-containers-0.0.1.tar.gz) = a55e07af005c9815d82f3fc95e125db82994377c9f4a769428878701d4ec081a
169
SIZE (cabal/data-default-instances-containers-0.0.1/data-default-instances-containers-0.0.1.tar.gz) = 1659
170
SHA256 (cabal/data-default-instances-dlist-0.0.1/data-default-instances-dlist-0.0.1.tar.gz) = 7d683711cbf08abd7adcd5ac2be825381308d220397315a5570fe61b719b5959
171
SIZE (cabal/data-default-instances-dlist-0.0.1/data-default-instances-dlist-0.0.1.tar.gz) = 1503
172
SHA256 (cabal/data-default-instances-old-locale-0.0.1/data-default-instances-old-locale-0.0.1.tar.gz) = 60d3b02922958c4908d7bf2b24ddf61511665745f784227d206745784b0c0802
173
SIZE (cabal/data-default-instances-old-locale-0.0.1/data-default-instances-old-locale-0.0.1.tar.gz) = 1519
174
SHA256 (cabal/data-fix-0.3.2/data-fix-0.3.2.tar.gz) = 3a172d3bc0639c327345e965f9d9023e099425814b28dcdb7b60ff66d66219cc
175
SIZE (cabal/data-fix-0.3.2/data-fix-0.3.2.tar.gz) = 5842
176
SHA256 (cabal/data-fix-0.3.2/revision/4.cabal) = c27b354476175581925217323e0f559d35ceff26907ceaa03cb65c6df38e3de9
177
SIZE (cabal/data-fix-0.3.2/revision/4.cabal) = 1720
178
SHA256 (cabal/digest-0.0.1.7/digest-0.0.1.7.tar.gz) = b23d6c804e6fed0ac9bb0d35b7aed5785330d63efebe296cf0073dab17e05f0a
179
SIZE (cabal/digest-0.0.1.7/digest-0.0.1.7.tar.gz) = 4067
180
SHA256 (cabal/distributive-0.6.2.1/distributive-0.6.2.1.tar.gz) = d7351392e078f58caa46630a4b9c643e1e2e9dddee45848c5c8358e7b1316b91
181
SIZE (cabal/distributive-0.6.2.1/distributive-0.6.2.1.tar.gz) = 8140
182
SHA256 (cabal/distributive-0.6.2.1/revision/1.cabal) = 0f99f5541cca04acf89b64432b03422b6408e830a8dff30e6c4334ef1a48680c
183
SIZE (cabal/distributive-0.6.2.1/revision/1.cabal) = 2996
184
SHA256 (cabal/dlist-1.0/dlist-1.0.tar.gz) = 173d637328bb173fcc365f30d29ff4a94292a1e0e5558aeb3dfc11de81510115
185
SIZE (cabal/dlist-1.0/dlist-1.0.tar.gz) = 18667
186
SHA256 (cabal/doclayout-0.4.0.1/doclayout-0.4.0.1.tar.gz) = f7d3515d41abdfd7a5b69f28bf9520f591881364262698fd49686506b570b30b
187
SIZE (cabal/doclayout-0.4.0.1/doclayout-0.4.0.1.tar.gz) = 38465
188
SHA256 (cabal/doctemplates-0.11/doctemplates-0.11.tar.gz) = e0080c7f030e98ce6156fd31e77df4c83b8f3ee049beee5006ce923a0169546b
189
SIZE (cabal/doctemplates-0.11/doctemplates-0.11.tar.gz) = 25255
190
SHA256 (cabal/emojis-0.1.2/emojis-0.1.2.tar.gz) = 3cfe9c2ea3efbbdb9b7fc24ee6707a839d272c1deee7e39319f17a7e6feea227
191
SIZE (cabal/emojis-0.1.2/emojis-0.1.2.tar.gz) = 49333
192
SHA256 (cabal/entropy-0.4.1.10/entropy-0.4.1.10.tar.gz) = 85ac1d53f1d1c095aedd23fdb20c8e3ada04a7fd8aa6d7e6445ae6a59a277de5
193
SIZE (cabal/entropy-0.4.1.10/entropy-0.4.1.10.tar.gz) = 9060
194
SHA256 (cabal/entropy-0.4.1.10/revision/1.cabal) = 82bd7b600fb8df540dd292ed91dc781f4523eecef3bb588b14787b4851722cb1
195
SIZE (cabal/entropy-0.4.1.10/revision/1.cabal) = 2952
196
SHA256 (cabal/extensible-exceptions-0.1.1.4/extensible-exceptions-0.1.1.4.tar.gz) = 6ce5e8801760385a408dab71b53550f87629e661b260bdc2cd41c6a439b6e388
197
SIZE (cabal/extensible-exceptions-0.1.1.4/extensible-exceptions-0.1.1.4.tar.gz) = 8531
198
SHA256 (cabal/feed-1.3.2.1/feed-1.3.2.1.tar.gz) = a8f54072edaaf7e978062b9de94733e8cc43e31b2dda3446f901bf57f1815955
199
SIZE (cabal/feed-1.3.2.1/feed-1.3.2.1.tar.gz) = 107015
200
SHA256 (cabal/feed-1.3.2.1/revision/1.cabal) = 193ed27062b2fd9bc0c9967748b9dd1e657196f922d955573cecd086193a450c
201
SIZE (cabal/feed-1.3.2.1/revision/1.cabal) = 4651
202
SHA256 (cabal/file-embed-0.0.15.0/file-embed-0.0.15.0.tar.gz) = f066b85d537a20252faa59489f6a854e4e8f39080f08730c9e195e418cec5bdd
203
SIZE (cabal/file-embed-0.0.15.0/file-embed-0.0.15.0.tar.gz) = 7119
204
SHA256 (cabal/filestore-0.6.5/filestore-0.6.5.tar.gz) = b0052e1149e582d55078f8fd84ffb4e97111dab90ff8b589cc5ae2b6c711497c
205
SIZE (cabal/filestore-0.6.5/filestore-0.6.5.tar.gz) = 32338
206
SHA256 (cabal/filestore-0.6.5/revision/1.cabal) = c7926f679e7f31af247f52c13e2060b9d94641180e17a0bed9768a1040c53ded
207
SIZE (cabal/filestore-0.6.5/revision/1.cabal) = 3247
208
SHA256 (cabal/foldable1-classes-compat-0.1/foldable1-classes-compat-0.1.tar.gz) = d057c3f358e1a6b72c73519bc64ba6aa959f066c08fed69f73258555ef95ff12
209
SIZE (cabal/foldable1-classes-compat-0.1/foldable1-classes-compat-0.1.tar.gz) = 10484
210
SHA256 (cabal/foldable1-classes-compat-0.1/revision/2.cabal) = 851225c0d4ccf6ca5e4df17347490945c9928548e431f15e7e7d80c240bc4d17
211
SIZE (cabal/foldable1-classes-compat-0.1/revision/2.cabal) = 3782
212
SHA256 (cabal/generically-0.1.1/generically-0.1.1.tar.gz) = 04c5a436bec4b041f71a733f56a1bd7f435f63dde8d3eb5c1f48d55b4dbc43cf
213
SIZE (cabal/generically-0.1.1/generically-0.1.1.tar.gz) = 2870
214
SHA256 (cabal/generically-0.1.1/revision/1.cabal) = 2b9b5efb6eea2fb65377565d53d85b0ccc5b37404fba4bef1d60277caa877e5e
215
SIZE (cabal/generically-0.1.1/revision/1.cabal) = 1155
216
SHA256 (cabal/ghc-paths-0.1.0.12/ghc-paths-0.1.0.12.tar.gz) = 6ecbe676d073cb07989c61ce4c5709c4e67cbefdd2d55a4095f9388b6fe2c484
217
SIZE (cabal/ghc-paths-0.1.0.12/ghc-paths-0.1.0.12.tar.gz) = 2565
218
SHA256 (cabal/ghc-paths-0.1.0.12/revision/5.cabal) = 2cedd51fe0e85bd7c7edee768c229db74e071a15a1dfb9bf94bd4b0f3a0ec78b
219
SIZE (cabal/ghc-paths-0.1.0.12/revision/5.cabal) = 699
220
SHA256 (cabal/gridtables-0.1.0.0/gridtables-0.1.0.0.tar.gz) = d6ac341bc7997d39a3b1f6cd811f70ab69689d9c3117ce3bc44bfb2ec55ab0ea
221
SIZE (cabal/gridtables-0.1.0.0/gridtables-0.1.0.0.tar.gz) = 12279
222
SHA256 (cabal/haddock-library-1.11.0/haddock-library-1.11.0.tar.gz) = 7c075ec9a378b0a2d9d605e72135201e6c7ff316564f2c974113582f43bea20a
223
SIZE (cabal/haddock-library-1.11.0/haddock-library-1.11.0.tar.gz) = 32833
224
SHA256 (cabal/haddock-library-1.11.0/revision/2.cabal) = debbb2e62f4af08a116e6f95497a478bc3034c50ddd9e9c32f47a22e70991b12
225
SIZE (cabal/haddock-library-1.11.0/revision/2.cabal) = 4023
226
SHA256 (cabal/happstack-server-7.8.0.2/happstack-server-7.8.0.2.tar.gz) = 3a5653b2e2fea383eb3c3bfecbd60348a0913c682eec9c9e133b17d80b379795
227
SIZE (cabal/happstack-server-7.8.0.2/happstack-server-7.8.0.2.tar.gz) = 86256
228
SHA256 (cabal/happy-1.20.1.1/happy-1.20.1.1.tar.gz) = 8b4e7dc5a6c5fd666f8f7163232931ab28746d0d17da8fa1cbd68be9e878881b
229
SIZE (cabal/happy-1.20.1.1/happy-1.20.1.1.tar.gz) = 183409
230
SHA256 (cabal/hashable-1.4.2.0/hashable-1.4.2.0.tar.gz) = 1b4000ea82b81f69d46d0af4152c10c6303873510738e24cfc4767760d30e3f8
231
SIZE (cabal/hashable-1.4.2.0/hashable-1.4.2.0.tar.gz) = 25094
232
SHA256 (cabal/hashable-1.4.2.0/revision/1.cabal) = 585792335d5541dba78fa8dfcb291a89cd5812a281825ff7a44afa296ab5d58a
233
SIZE (cabal/hashable-1.4.2.0/revision/1.cabal) = 4520
234
SHA256 (cabal/haskell-lexer-1.1.1/haskell-lexer-1.1.1.tar.gz) = c8eeda569a30f115244c17920247ba2c45d11b3e30805f648a878f7855d8f349
235
SIZE (cabal/haskell-lexer-1.1.1/haskell-lexer-1.1.1.tar.gz) = 14499
236
SHA256 (cabal/hoauth2-2.8.0/hoauth2-2.8.0.tar.gz) = f73ad909ea4571f5958cee5cfb1ff87427ed333b37cb4751b035484059a2cdf6
237
SIZE (cabal/hoauth2-2.8.0/hoauth2-2.8.0.tar.gz) = 16225
238
SHA256 (cabal/hourglass-0.2.12/hourglass-0.2.12.tar.gz) = 44335b5c402e80c60f1db6a74462be4ea29d1a9043aa994334ffee1164f1ca4a
239
SIZE (cabal/hourglass-0.2.12/hourglass-0.2.12.tar.gz) = 25797
240
SHA256 (cabal/hsc2hs-0.68.9/hsc2hs-0.68.9.tar.gz) = c95b10ce0b2c881480e35118d738dcc9cefc435ec72baa0031af81d0d4d3bc0a
241
SIZE (cabal/hsc2hs-0.68.9/hsc2hs-0.68.9.tar.gz) = 40442
242
SHA256 (cabal/hslogger-1.3.1.0/hslogger-1.3.1.0.tar.gz) = 7f2364f6c0b9c5b85a257267a335816126ef2471c817a42797a5d3c57acaca5b
243
SIZE (cabal/hslogger-1.3.1.0/hslogger-1.3.1.0.tar.gz) = 37468
244
SHA256 (cabal/hslogger-1.3.1.0/revision/7.cabal) = 53e421418634df83ac5a0143b8d7da0fa865875b09df55d039c40a05f43f70cb
245
SIZE (cabal/hslogger-1.3.1.0/revision/7.cabal) = 2978
246
SHA256 (cabal/html-1.0.1.2/html-1.0.1.2.tar.gz) = 0c35495ea33d65e69c69bc7441ec8e1af69fbb43433c2aa3406c0a13a3ab3061
247
SIZE (cabal/html-1.0.1.2/html-1.0.1.2.tar.gz) = 11021
248
SHA256 (cabal/http-client-0.7.13.1/http-client-0.7.13.1.tar.gz) = c98e86a0382fa877e320d83dbbd173c41c966a60a32c9bc597058929a7aa0e27
249
SIZE (cabal/http-client-0.7.13.1/http-client-0.7.13.1.tar.gz) = 95306
250
SHA256 (cabal/http-client-0.7.13.1/revision/1.cabal) = 6480749144f27919547733262f06a6ae3c759b57b692af53f9beb309d05a1699
251
SIZE (cabal/http-client-0.7.13.1/revision/1.cabal) = 5777
252
SHA256 (cabal/http-client-tls-0.3.6.2/http-client-tls-0.3.6.2.tar.gz) = 28438ebeee2b97b2354c9cf6d3cb1fb73ac7ebc6cb1f4d54aedf10980394aba6
253
SIZE (cabal/http-client-tls-0.3.6.2/http-client-tls-0.3.6.2.tar.gz) = 7852
254
SHA256 (cabal/http-conduit-2.3.8.2/http-conduit-2.3.8.2.tar.gz) = ed457713884ced61a905b48db29f73f710ae894cb8060a07d3736ac20aa23a05
255
SIZE (cabal/http-conduit-2.3.8.2/http-conduit-2.3.8.2.tar.gz) = 29007
256
SHA256 (cabal/http-types-0.12.3/http-types-0.12.3.tar.gz) = 4e8a4a66477459fa436a331c75e46857ec8026283df984d54f90576cd3024016
257
SIZE (cabal/http-types-0.12.3/http-types-0.12.3.tar.gz) = 13547
258
SHA256 (cabal/indexed-traversable-0.1.2.1/indexed-traversable-0.1.2.1.tar.gz) = fe854c10285debc7d6fe3e09da0928a740ebc091ad2911ae695bb007e6f746a4
259
SIZE (cabal/indexed-traversable-0.1.2.1/indexed-traversable-0.1.2.1.tar.gz) = 8905
260
SHA256 (cabal/indexed-traversable-instances-0.1.1.2/indexed-traversable-instances-0.1.1.2.tar.gz) = 0f9b4e895ccc819f74d15f913c93613cc74cab74dbb05d7e305aa387bdbe374a
261
SIZE (cabal/indexed-traversable-instances-0.1.1.2/indexed-traversable-instances-0.1.1.2.tar.gz) = 3769
262
SHA256 (cabal/indexed-traversable-instances-0.1.1.2/revision/1.cabal) = b493ed83623a7cba498d31a9d36beec233406f20377f1be3bb51d4ce3bd2ceef
263
SIZE (cabal/indexed-traversable-instances-0.1.1.2/revision/1.cabal) = 2536
264
SHA256 (cabal/integer-logarithms-1.0.3.1/integer-logarithms-1.0.3.1.tar.gz) = 9b0a9f9fab609b15cd015865721fb05f744a1bc77ae92fd133872de528bbea7f
265
SIZE (cabal/integer-logarithms-1.0.3.1/integer-logarithms-1.0.3.1.tar.gz) = 9023
266
SHA256 (cabal/integer-logarithms-1.0.3.1/revision/4.cabal) = 336fb40c3af19a59dbeb4e5b7bffe4b4c7fa04ab06006a8d4b70b1febc1bb4ca
267
SIZE (cabal/integer-logarithms-1.0.3.1/revision/4.cabal) = 3262
268
SHA256 (cabal/iproute-1.7.12/iproute-1.7.12.tar.gz) = f1751d1579fcbc1d9f86d9d1c9ede48cb71cbeb1d7b2043491c6216e4f236b63
269
SIZE (cabal/iproute-1.7.12/iproute-1.7.12.tar.gz) = 17864
270
SHA256 (cabal/ipynb-0.2/ipynb-0.2.tar.gz) = 9a743d74e95ccccfadca4a734f44c7b3e2a5b838da3f9044231590d7355191c7
271
SIZE (cabal/ipynb-0.2/ipynb-0.2.tar.gz) = 632962
272
SHA256 (cabal/ipynb-0.2/revision/1.cabal) = d3ec93f44fac7ddeb06e5419d0577321831cc903ecb176ca6be5015c55e9893a
273
SIZE (cabal/ipynb-0.2/revision/1.cabal) = 1906
274
SHA256 (cabal/jira-wiki-markup-1.5.1/jira-wiki-markup-1.5.1.tar.gz) = 9ca23d369c3ccf1b3ffb209dda8e6288a5f5901fb8235113825fa48d3ae8e520
275
SIZE (cabal/jira-wiki-markup-1.5.1/jira-wiki-markup-1.5.1.tar.gz) = 25459
276
SHA256 (cabal/json-0.10/json-0.10.tar.gz) = 0c046a3c03c9332816d3c9e50319b1d1eb3c2c1baba1123a7650d047b26856ba
277
SIZE (cabal/json-0.10/json-0.10.tar.gz) = 22622
278
SHA256 (cabal/json-0.10/revision/1.cabal) = d9fc6b07ce92b8894825a17d2cf14799856767eb30c8bf55962baa579207d799
279
SIZE (cabal/json-0.10/revision/1.cabal) = 3210
280
SHA256 (cabal/libyaml-0.1.2/libyaml-0.1.2.tar.gz) = 8f42d66f199fcaee255326f8f770d88b0670df56b5eb78002d6058f3a45e97b5
281
SIZE (cabal/libyaml-0.1.2/libyaml-0.1.2.tar.gz) = 63635
282
SHA256 (cabal/libyaml-0.1.2/revision/1.cabal) = 7fb663b11fcdb86503c14aa81763106ea79b1048fc29a1fe44ec346d9ecac101
283
SIZE (cabal/libyaml-0.1.2/revision/1.cabal) = 2222
284
SHA256 (cabal/memory-0.18.0/memory-0.18.0.tar.gz) = fd4eb6f638e24b81b4e6cdd68772a531726f2f67686c8969d3407d82f7862e3e
285
SIZE (cabal/memory-0.18.0/memory-0.18.0.tar.gz) = 41957
286
SHA256 (cabal/microlens-0.4.13.1/microlens-0.4.13.1.tar.gz) = 0a54abee8ff4f6aeb4bea0783409a3dbd28a4e7a892bac916b0fb6a71382d7fc
287
SIZE (cabal/microlens-0.4.13.1/microlens-0.4.13.1.tar.gz) = 27436
288
SHA256 (cabal/mime-types-0.1.1.0/mime-types-0.1.1.0.tar.gz) = ebd01ed4e37142cb3233d4ffe55fe879b64d4a0b5802c8bc6afa1c7670f9e11b
289
SIZE (cabal/mime-types-0.1.1.0/mime-types-0.1.1.0.tar.gz) = 11818
290
SHA256 (cabal/monad-control-1.0.3.1/monad-control-1.0.3.1.tar.gz) = ae0baea04d99375ef788140367179994a7178d400a8ce0d9026846546772713c
291
SIZE (cabal/monad-control-1.0.3.1/monad-control-1.0.3.1.tar.gz) = 13985
292
SHA256 (cabal/mono-traversable-1.0.15.3/mono-traversable-1.0.15.3.tar.gz) = 98b220f3313d74227a4249210c8818e839678343e62b3ebb1b8c867cf2b974b7
293
SIZE (cabal/mono-traversable-1.0.15.3/mono-traversable-1.0.15.3.tar.gz) = 40461
294
SHA256 (cabal/network-3.1.4.0/network-3.1.4.0.tar.gz) = b452a2afac95d9207357eb3820c719c7c7d27871ef4b6ed7bfcd03a036b9158e
295
SIZE (cabal/network-3.1.4.0/network-3.1.4.0.tar.gz) = 139988
296
SHA256 (cabal/network-bsd-2.8.1.0/network-bsd-2.8.1.0.tar.gz) = d94961ca15c42c798d19cde540ec12b25cc43435fb95e682399d6c1a02022d4e
297
SIZE (cabal/network-bsd-2.8.1.0/network-bsd-2.8.1.0.tar.gz) = 8584
298
SHA256 (cabal/network-bsd-2.8.1.0/revision/4.cabal) = cd945ea08818281e4a8fa6f0a0640a1502aad3748546a3c197e071772452a9bd
299
SIZE (cabal/network-bsd-2.8.1.0/revision/4.cabal) = 3738
300
SHA256 (cabal/network-info-0.2.1/network-info-0.2.1.tar.gz) = 9b2d88312fc8280351d5003200cc07decbb865f85d3aa7b1094b238bd6a8b404
301
SIZE (cabal/network-info-0.2.1/network-info-0.2.1.tar.gz) = 6387
302
SHA256 (cabal/network-uri-2.6.4.2/network-uri-2.6.4.2.tar.gz) = 9c188973126e893250b881f20e8811dca06c223c23402b06f7a1f2e995797228
303
SIZE (cabal/network-uri-2.6.4.2/network-uri-2.6.4.2.tar.gz) = 31309
304
SHA256 (cabal/old-locale-1.0.0.7/old-locale-1.0.0.7.tar.gz) = dbaf8bf6b888fb98845705079296a23c3f40ee2f449df7312f7f7f1de18d7b50
305
SIZE (cabal/old-locale-1.0.0.7/old-locale-1.0.0.7.tar.gz) = 3384
306
SHA256 (cabal/old-locale-1.0.0.7/revision/2.cabal) = fa998be2c7e00cd26a6e9075bea790caaf3932caa3e9497ad69bc20380dd6911
307
SIZE (cabal/old-locale-1.0.0.7/revision/2.cabal) = 1071
308
SHA256 (cabal/old-time-1.1.0.3/old-time-1.1.0.3.tar.gz) = 1ccb158b0f7851715d36b757c523b026ca1541e2030d02239802ba39b4112bc1
309
SIZE (cabal/old-time-1.1.0.3/old-time-1.1.0.3.tar.gz) = 74219
310
SHA256 (cabal/old-time-1.1.0.3/revision/2.cabal) = c91fbb3ee73d20ccd015842b30f1f29a304893ebe0ae3128b7bbc13d5bb0d4c8
311
SIZE (cabal/old-time-1.1.0.3/revision/2.cabal) = 1328
312
SHA256 (cabal/ordered-containers-0.2.3/ordered-containers-0.2.3.tar.gz) = 36849705752f3bc367fa1d172e1ec57375418341e9d74de572ae1b6fb56a81a3
313
SIZE (cabal/ordered-containers-0.2.3/ordered-containers-0.2.3.tar.gz) = 7404
314
SHA256 (cabal/pandoc-3.1.4/pandoc-3.1.4.tar.gz) = 15b67fad7e7b9bf72b1c9dfea0010326cf8b115c009783b406db954fdb0b7997
315
SIZE (cabal/pandoc-3.1.4/pandoc-3.1.4.tar.gz) = 7266894
316
SHA256 (cabal/pandoc-types-1.23/pandoc-types-1.23.tar.gz) = 5e6721410219c0a39b05fc732de9864745592fffa8287ad6e87c66138a51162d
317
SIZE (cabal/pandoc-types-1.23/pandoc-types-1.23.tar.gz) = 35901
318
SHA256 (cabal/pem-0.2.4/pem-0.2.4.tar.gz) = 770c4c1b9cd24b3db7f511f8a48404a0d098999e28573c3743a8a296bb96f8d4
319
SIZE (cabal/pem-0.2.4/pem-0.2.4.tar.gz) = 4717
320
SHA256 (cabal/pretty-show-1.10/pretty-show-1.10.tar.gz) = 307f9086e0b063d439dc4f513e36a145e8a57f23de448aefae2a6c00f6da6fd2
321
SIZE (cabal/pretty-show-1.10/pretty-show-1.10.tar.gz) = 42233
322
SHA256 (cabal/primitive-0.8.0.0/primitive-0.8.0.0.tar.gz) = 5553c21b4a789f9b591eed69e598cc58484c274af29250e517b5a8bcc62b995f
323
SIZE (cabal/primitive-0.8.0.0/primitive-0.8.0.0.tar.gz) = 57222
324
SHA256 (cabal/random-1.2.1.1/random-1.2.1.1.tar.gz) = 3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76
325
SIZE (cabal/random-1.2.1.1/random-1.2.1.1.tar.gz) = 47109
326
SHA256 (cabal/recaptcha-0.1.0.4/recaptcha-0.1.0.4.tar.gz) = a26172c3f5797e402de95b92edcb56a828cb791849b92b4238683446c970430d
327
SIZE (cabal/recaptcha-0.1.0.4/recaptcha-0.1.0.4.tar.gz) = 2724
328
SHA256 (cabal/regex-base-0.94.0.2/regex-base-0.94.0.2.tar.gz) = 7b99408f580f5bb67a1c413e0bc735886608251331ad36322020f2169aea2ef1
329
SIZE (cabal/regex-base-0.94.0.2/regex-base-0.94.0.2.tar.gz) = 10488
330
SHA256 (cabal/regex-base-0.94.0.2/revision/1.cabal) = 4ff4425c710cddf440dfbac6cd52310bb6b23e17902390ff71c9fc7eaafc4fcc
331
SIZE (cabal/regex-base-0.94.0.2/revision/1.cabal) = 2643
332
SHA256 (cabal/regex-compat-0.95.2.1/regex-compat-0.95.2.1.tar.gz) = 8f7b386c72fd605a292edfb809b8620245b4a3ab7af192ad79e36778596e7947
333
SIZE (cabal/regex-compat-0.95.2.1/regex-compat-0.95.2.1.tar.gz) = 4285
334
SHA256 (cabal/regex-compat-0.95.2.1/revision/2.cabal) = 96c83b06280ebfb6fef01864b2af9eb9e136a9832c563773f327d4197bbbb851
335
SIZE (cabal/regex-compat-0.95.2.1/revision/2.cabal) = 1705
336
SHA256 (cabal/regex-posix-0.96.0.1/regex-posix-0.96.0.1.tar.gz) = c7827c391919227711e1cff0a762b1678fd8739f9c902fc183041ff34f59259c
337
SIZE (cabal/regex-posix-0.96.0.1/regex-posix-0.96.0.1.tar.gz) = 12853
338
SHA256 (cabal/regex-posix-0.96.0.1/revision/1.cabal) = 9dbba4b65a3bb6975d9740814be5593c6b2d2d6a0b3febc8ec940edb9a9bbdf4
339
SIZE (cabal/regex-posix-0.96.0.1/revision/1.cabal) = 2954
340
SHA256 (cabal/regex-tdfa-1.3.2.1/regex-tdfa-1.3.2.1.tar.gz) = 5c8bf8b5274dd45a9afa72bb4f51602df429b4dfd2a05275da5d78c00e7b8295
341
SIZE (cabal/regex-tdfa-1.3.2.1/regex-tdfa-1.3.2.1.tar.gz) = 82890
342
SHA256 (cabal/resourcet-1.3.0/resourcet-1.3.0.tar.gz) = ec601785ee42a201f32adb205b8685c983f18757b1bd33d2e806d571e0f9996b
343
SIZE (cabal/resourcet-1.3.0/resourcet-1.3.0.tar.gz) = 17620
344
SHA256 (cabal/safe-0.3.19/safe-0.3.19.tar.gz) = 25043442c8f8aa95955bb17467d023630632b961aaa61e807e325d9b2c33f7a2
345
SIZE (cabal/safe-0.3.19/safe-0.3.19.tar.gz) = 11267
346
SHA256 (cabal/scientific-0.3.7.0/scientific-0.3.7.0.tar.gz) = a3a121c4b3d68fb8b9f8c709ab012e48f090ed553609247a805ad070d6b343a9
347
SIZE (cabal/scientific-0.3.7.0/scientific-0.3.7.0.tar.gz) = 24723
348
SHA256 (cabal/scientific-0.3.7.0/revision/5.cabal) = 26d8109106963a345368011081453d25ee1dfa6afae2b1f57b426b4bcd392d91
349
SIZE (cabal/scientific-0.3.7.0/revision/5.cabal) = 4854
350
SHA256 (cabal/semialign-1.3/semialign-1.3.tar.gz) = 628e43319f584a8dd46c124ee0685cac586e0f6f877c5ceff37c3dbb2e3cc56c
351
SIZE (cabal/semialign-1.3/semialign-1.3.tar.gz) = 10543
352
SHA256 (cabal/semigroupoids-6.0.0.1/semigroupoids-6.0.0.1.tar.gz) = 7da38a9891bdf8205fd6522cdb712956b8c0bf5c52983da60295c8e057d77934
353
SIZE (cabal/semigroupoids-6.0.0.1/semigroupoids-6.0.0.1.tar.gz) = 36222
354
SHA256 (cabal/semigroups-0.20/semigroups-0.20.tar.gz) = 902d2e33c96b40a89de5957f2a9e097197afcc35e257e45b32ebe770993673e1
355
SIZE (cabal/semigroups-0.20/semigroups-0.20.tar.gz) = 18788
356
SHA256 (cabal/sendfile-0.7.11.4/sendfile-0.7.11.4.tar.gz) = 73b0be7cd6e29e859ffae741cb398eb129e0bf1c6953ef5755da0b8a020751c4
357
SIZE (cabal/sendfile-0.7.11.4/sendfile-0.7.11.4.tar.gz) = 10721
358
SHA256 (cabal/skylighting-0.13.3/skylighting-0.13.3.tar.gz) = b25c63cf342aff3c00742e08f4c80d641ebe5fd20eb7a4970450b8e0576e9b95
359
SIZE (cabal/skylighting-0.13.3/skylighting-0.13.3.tar.gz) = 1367538
360
SHA256 (cabal/skylighting-core-0.13.3/skylighting-core-0.13.3.tar.gz) = 6c6d0fae4aaa80f4dfca2b516ad8a864a6e8b5be7fdba039bd6fb00cb68c63d5
361
SIZE (cabal/skylighting-core-0.13.3/skylighting-core-0.13.3.tar.gz) = 854171
362
SHA256 (cabal/skylighting-format-ansi-0.1/skylighting-format-ansi-0.1.tar.gz) = 23dfa86c2ecd2601a2efed4967eb2ec0505a52c14776054ce4d89707c2de0a9b
363
SIZE (cabal/skylighting-format-ansi-0.1/skylighting-format-ansi-0.1.tar.gz) = 5350
364
SHA256 (cabal/skylighting-format-blaze-html-0.1.1/skylighting-format-blaze-html-0.1.1.tar.gz) = b1139b4df369de93d1ec6d8a2ed02bf11d559f9eaf71c31434fb5b19ba48ef13
365
SIZE (cabal/skylighting-format-blaze-html-0.1.1/skylighting-format-blaze-html-0.1.1.tar.gz) = 4769
366
SHA256 (cabal/skylighting-format-context-0.1.0.2/skylighting-format-context-0.1.0.2.tar.gz) = 004213e13d89b692ea0912d7ffa6ee98c93146d1a7962a849ad7860697bc88bd
367
SIZE (cabal/skylighting-format-context-0.1.0.2/skylighting-format-context-0.1.0.2.tar.gz) = 3249
368
SHA256 (cabal/skylighting-format-latex-0.1/skylighting-format-latex-0.1.tar.gz) = 97b66c9ab60451e41a94aa80a684e792fbe69816835f735224222beea22afb78
369
SIZE (cabal/skylighting-format-latex-0.1/skylighting-format-latex-0.1.tar.gz) = 3777
370
SHA256 (cabal/socks-0.6.1/socks-0.6.1.tar.gz) = 734447558bb061ce768f53a0df1f2401902c6bee396cc96ce627edd986ef6a73
371
SIZE (cabal/socks-0.6.1/socks-0.6.1.tar.gz) = 9759
372
SHA256 (cabal/split-0.2.3.5/split-0.2.3.5.tar.gz) = bf8aa8d610354a2b576946a6c838251ec5988c8374100638e6b2604513b93159
373
SIZE (cabal/split-0.2.3.5/split-0.2.3.5.tar.gz) = 15746
374
SHA256 (cabal/splitmix-0.1.0.4/splitmix-0.1.0.4.tar.gz) = 6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa
375
SIZE (cabal/splitmix-0.1.0.4/splitmix-0.1.0.4.tar.gz) = 22382
376
SHA256 (cabal/splitmix-0.1.0.4/revision/2.cabal) = db25c2e17967aa6b6046ab8b1b96ba3f344ca59a62b60fb6113d51ea305a3d8e
377
SIZE (cabal/splitmix-0.1.0.4/revision/2.cabal) = 6537
378
SHA256 (cabal/streaming-commons-0.2.2.6/streaming-commons-0.2.2.6.tar.gz) = 0180958a882eb0f6262b812fe886c2b1b8285474b5b958f814ae4f05409fbf79
379
SIZE (cabal/streaming-commons-0.2.2.6/streaming-commons-0.2.2.6.tar.gz) = 37959
380
SHA256 (cabal/strict-0.5/strict-0.5.tar.gz) = 3f4f0995dec2d520d0e321542f71412dac023658fdab603db04364d75269a0fd
381
SIZE (cabal/strict-0.5/strict-0.5.tar.gz) = 12564
382
SHA256 (cabal/syb-0.7.2.3/syb-0.7.2.3.tar.gz) = d0b72daf16a947c4d9cb2d5774072f2153433224a04fd60fad60be9ffac8d91a
383
SIZE (cabal/syb-0.7.2.3/syb-0.7.2.3.tar.gz) = 40018
384
SHA256 (cabal/system-filepath-0.4.14/system-filepath-0.4.14.tar.gz) = 1656ce3c0d585650784ceb3f794748286e19fb635f557e7b29b0897f8956d993
385
SIZE (cabal/system-filepath-0.4.14/system-filepath-0.4.14.tar.gz) = 16663
386
SHA256 (cabal/system-filepath-0.4.14/revision/1.cabal) = e8ce7d24d7008a825e5d03aa672950a0e8178ac54c3de7134f36c3a7e37694a2
387
SIZE (cabal/system-filepath-0.4.14/revision/1.cabal) = 1631
388
SHA256 (cabal/tagged-0.8.7/tagged-0.8.7.tar.gz) = 6414eeac27a1633f49e2f78199ced99ce8ce3d70b658cf6d55b1d81ff60cb961
389
SIZE (cabal/tagged-0.8.7/tagged-0.8.7.tar.gz) = 10082
390
SHA256 (cabal/tagsoup-0.14.8/tagsoup-0.14.8.tar.gz) = ba7e5500d853d29f0675b90655b7fdd032a4a7eee82a56e7ee3ef9949fe93ad5
391
SIZE (cabal/tagsoup-0.14.8/tagsoup-0.14.8.tar.gz) = 43894
392
SHA256 (cabal/temporary-1.3/temporary-1.3.tar.gz) = 8c442993694b5ffca823ce864af95bd2841fb5264ee511c61cf48cc71d879890
393
SIZE (cabal/temporary-1.3/temporary-1.3.tar.gz) = 5686
394
SHA256 (cabal/texmath-0.12.8/texmath-0.12.8.tar.gz) = 034ff00671d9b8ac4c983df59ccfb4f39fc7d8c2d19f1f39cc00ac5d3f8625c4
395
SIZE (cabal/texmath-0.12.8/texmath-0.12.8.tar.gz) = 1479868
396
SHA256 (cabal/text-conversions-0.3.1.1/text-conversions-0.3.1.1.tar.gz) = c8770fba789ce80334cae628285103c49abec0fa074773cbb5a88e26f5a7725d
397
SIZE (cabal/text-conversions-0.3.1.1/text-conversions-0.3.1.1.tar.gz) = 5258
398
SHA256 (cabal/text-short-0.1.5/text-short-0.1.5.tar.gz) = a35ec6cde2ada084c1a050dc5885be5ab01f851b93d744cf0facbc1c18002dda
399
SIZE (cabal/text-short-0.1.5/text-short-0.1.5.tar.gz) = 25113
400
SHA256 (cabal/text-short-0.1.5/revision/2.cabal) = c296eb2289dc5bf39912989c295cb82ef05ae5f84ee83ea5dc21f48da80e7052
401
SIZE (cabal/text-short-0.1.5/revision/2.cabal) = 3202
402
SHA256 (cabal/th-abstraction-0.5.0.0/th-abstraction-0.5.0.0.tar.gz) = 8258dc3ab7188af5826e2467032b52a931a3af4d8a93d4a094210e240a8a9964
403
SIZE (cabal/th-abstraction-0.5.0.0/th-abstraction-0.5.0.0.tar.gz) = 40093
404
SHA256 (cabal/th-compat-0.1.4/th-compat-0.1.4.tar.gz) = d8f97ac14ab47b6b8a7b0fdb4ff95426322ec56badd01652ac15da4a44d4bab8
405
SIZE (cabal/th-compat-0.1.4/th-compat-0.1.4.tar.gz) = 14838
406
SHA256 (cabal/th-compat-0.1.4/revision/2.cabal) = e5ae7c083ef3a22248558f8451669bb1c55ea8090f5908b86b9033743c161730
407
SIZE (cabal/th-compat-0.1.4/revision/2.cabal) = 3224
408
SHA256 (cabal/th-lift-0.8.3/th-lift-0.8.3.tar.gz) = 25d57bf5f8e7deefeb4ace0539805ae1e90b1ba5a034ebcc36141846408c6b75
409
SIZE (cabal/th-lift-0.8.3/th-lift-0.8.3.tar.gz) = 14643
410
SHA256 (cabal/th-lift-instances-0.1.20/th-lift-instances-0.1.20.tar.gz) = f533c3f95addcca461a0ccd1aafef75dd801bfa6599c0d1184d54bfffb61d870
411
SIZE (cabal/th-lift-instances-0.1.20/th-lift-instances-0.1.20.tar.gz) = 6721
412
SHA256 (cabal/these-1.2/these-1.2.tar.gz) = a8ed7174b7f790764360f48aab72fea382a6093ed369c7bc6881fae1abacd4b8
413
SIZE (cabal/these-1.2/these-1.2.tar.gz) = 10606
414
SHA256 (cabal/threads-0.5.1.7/threads-0.5.1.7.tar.gz) = e0f6fea09b99a2f84c98089c27c011077bf43f1e1977a5c43997e226d23142d0
415
SIZE (cabal/threads-0.5.1.7/threads-0.5.1.7.tar.gz) = 7459
416
SHA256 (cabal/threads-0.5.1.7/revision/1.cabal) = 97132b14f194d7ce0b15e25498545462a42ad1017b072641622653d4c1aabda3
417
SIZE (cabal/threads-0.5.1.7/revision/1.cabal) = 2877
418
SHA256 (cabal/time-compat-1.9.6.1/time-compat-1.9.6.1.tar.gz) = ad07bb00eb9678c2136d3680752b00acc4cbc522654bb3199bf31c61ef1e6b80
419
SIZE (cabal/time-compat-1.9.6.1/time-compat-1.9.6.1.tar.gz) = 59964
420
SHA256 (cabal/time-compat-1.9.6.1/revision/5.cabal) = dd4de1fa0d6b7108982efc7ac41938569e4c9b06230bb87d34aae007c52ddb67
421
SIZE (cabal/time-compat-1.9.6.1/revision/5.cabal) = 5062
422
SHA256 (cabal/time-locale-compat-0.1.1.5/time-locale-compat-0.1.1.5.tar.gz) = 07ff1566de7d851423a843b2de385442319348c621d4f779b3d365ce91ac502c
423
SIZE (cabal/time-locale-compat-0.1.1.5/time-locale-compat-0.1.1.5.tar.gz) = 1956
424
SHA256 (cabal/tls-1.7.0/tls-1.7.0.tar.gz) = 3c2a50c902d26864f6af113e59045f049f6c54fb46239ed2d1d4a82bc8524078
425
SIZE (cabal/tls-1.7.0/tls-1.7.0.tar.gz) = 158630
426
SHA256 (cabal/transformers-base-0.4.6/transformers-base-0.4.6.tar.gz) = 323bf8689eb691b122661cffa41a25e00fea7a768433fe2dde35d3da7d32cf90
427
SIZE (cabal/transformers-base-0.4.6/transformers-base-0.4.6.tar.gz) = 2902
428
SHA256 (cabal/transformers-compat-0.7.2/transformers-compat-0.7.2.tar.gz) = b62c7304c9f3cbc9463d0739aa85cb9489f217ea092b9d625d417514fbcc9d6a
429
SIZE (cabal/transformers-compat-0.7.2/transformers-compat-0.7.2.tar.gz) = 46485
430
SHA256 (cabal/typed-process-0.2.11.0/typed-process-0.2.11.0.tar.gz) = 948c59540675d85f35c99e285cdb8686713ec1689f530d5d21813239ea91f625
431
SIZE (cabal/typed-process-0.2.11.0/typed-process-0.2.11.0.tar.gz) = 18309
432
SHA256 (cabal/typst-0.1.0.0/typst-0.1.0.0.tar.gz) = a40a94476357580cd5197e1a2cd65bfdd29d8bad293667beca01741969a24eef
433
SIZE (cabal/typst-0.1.0.0/typst-0.1.0.0.tar.gz) = 6402077
434
SHA256 (cabal/typst-symbols-0.1.2/typst-symbols-0.1.2.tar.gz) = c2e6c71e71cff33d464d6dc50276886d616626772d5f57260b2f668c4bcba0ab
435
SIZE (cabal/typst-symbols-0.1.2/typst-symbols-0.1.2.tar.gz) = 18076
436
SHA256 (cabal/unicode-collation-0.1.3.4/unicode-collation-0.1.3.4.tar.gz) = b08dbe9bb269d6eda2639cdfc63caee136794f46c16a1ad51b5305dd2ea6d429
437
SIZE (cabal/unicode-collation-0.1.3.4/unicode-collation-0.1.3.4.tar.gz) = 2056084
438
SHA256 (cabal/unicode-data-0.4.0.1/unicode-data-0.4.0.1.tar.gz) = 37a5dea6801940beb65c4ac4b9d0f7e653a686cf773507f0ca61c210e0b06080
439
SIZE (cabal/unicode-data-0.4.0.1/unicode-data-0.4.0.1.tar.gz) = 187381
440
SHA256 (cabal/unicode-data-0.4.0.1/revision/1.cabal) = 081e269b48f2d8511579a6dd1aa5f5c2f940e63d9bafec5fb911c11e32b27ad3
441
SIZE (cabal/unicode-data-0.4.0.1/revision/1.cabal) = 5624
442
SHA256 (cabal/unicode-transforms-0.4.0.1/unicode-transforms-0.4.0.1.tar.gz) = 3278e1e1d648da4bcd7368658ae091a89080e88a2f44db9df5136711e99649fc
443
SIZE (cabal/unicode-transforms-0.4.0.1/unicode-transforms-0.4.0.1.tar.gz) = 648836
444
SHA256 (cabal/unicode-transforms-0.4.0.1/revision/3.cabal) = adffd08a043cbf633e9574c35e206315bb07e73ed3886a91472d3cf208d8a6c3
445
SIZE (cabal/unicode-transforms-0.4.0.1/revision/3.cabal) = 5923
446
SHA256 (cabal/uniplate-1.6.13/uniplate-1.6.13.tar.gz) = e777c94628445556a71f135a42cf72d2cfbaccba5849cc42fbfec8b2182e3ad2
447
SIZE (cabal/uniplate-1.6.13/uniplate-1.6.13.tar.gz) = 29787
448
SHA256 (cabal/uniplate-1.6.13/revision/1.cabal) = c8b715570d0b4baa72512e677552dd3f98372a64bf9de000e779bd4162fd7be7
449
SIZE (cabal/uniplate-1.6.13/revision/1.cabal) = 3320
450
SHA256 (cabal/unix-time-0.4.10/unix-time-0.4.10.tar.gz) = 7e4a4bf8cba87bc7b1e3a1a7c68a44d7780360d6f52628cd84154829a03629bc
451
SIZE (cabal/unix-time-0.4.10/unix-time-0.4.10.tar.gz) = 52393
452
SHA256 (cabal/unliftio-core-0.2.1.0/unliftio-core-0.2.1.0.tar.gz) = 99384cba8d56d9d61b85e38a313a93ebcdb78be6566367f0930ef580597fe3e3
453
SIZE (cabal/unliftio-core-0.2.1.0/unliftio-core-0.2.1.0.tar.gz) = 3865
454
SHA256 (cabal/unliftio-core-0.2.1.0/revision/2.cabal) = cb78a95718f9cb2579a8a1208d4a148ea358f0774321c8cb905bfb0b96a2813c
455
SIZE (cabal/unliftio-core-0.2.1.0/revision/2.cabal) = 1004
456
SHA256 (cabal/unordered-containers-0.2.19.1/unordered-containers-0.2.19.1.tar.gz) = 1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2
457
SIZE (cabal/unordered-containers-0.2.19.1/unordered-containers-0.2.19.1.tar.gz) = 58030
458
SHA256 (cabal/unordered-containers-0.2.19.1/revision/2.cabal) = 9ad8972c2e913c37b1d4f0e1261517fd7a1b8c8a58077e057be69837e3dbaa00
459
SIZE (cabal/unordered-containers-0.2.19.1/revision/2.cabal) = 3822
460
SHA256 (cabal/uri-bytestring-0.3.3.1/uri-bytestring-0.3.3.1.tar.gz) = f3e7a0ac26111c426727fed11624efe9ce36ee2e74ca79570ec0985eb6111368
461
SIZE (cabal/uri-bytestring-0.3.3.1/uri-bytestring-0.3.3.1.tar.gz) = 23052
462
SHA256 (cabal/uri-bytestring-aeson-0.1.0.8/uri-bytestring-aeson-0.1.0.8.tar.gz) = 612accdae921dd7a5d00fedaa377d994be5ab585ae75b1f9f0dcaa10412e7509
463
SIZE (cabal/uri-bytestring-aeson-0.1.0.8/uri-bytestring-aeson-0.1.0.8.tar.gz) = 2047
464
SHA256 (cabal/url-2.1.3/url-2.1.3.tar.gz) = 5af27e3f8c0a27e52d0dcb98ef06a0fdd01efe8bb21242c29432e1bc380a4f61
465
SIZE (cabal/url-2.1.3/url-2.1.3.tar.gz) = 4180
466
SHA256 (cabal/utf8-string-1.0.2/utf8-string-1.0.2.tar.gz) = ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a
467
SIZE (cabal/utf8-string-1.0.2/utf8-string-1.0.2.tar.gz) = 10726
468
SHA256 (cabal/uuid-1.3.15/uuid-1.3.15.tar.gz) = f885958d8934930b7c0f9b91f980722f7f992c9383fc98f075cf9df64c800564
469
SIZE (cabal/uuid-1.3.15/uuid-1.3.15.tar.gz) = 8815
470
SHA256 (cabal/uuid-1.3.15/revision/2.cabal) = a3d79c5a5e58035e7dc5a08c5910c44a6719aaa38697b249e3f67aaac884411a
471
SIZE (cabal/uuid-1.3.15/revision/2.cabal) = 2642
472
SHA256 (cabal/uuid-types-1.0.5/uuid-types-1.0.5.tar.gz) = ad68b89b7a64c07dd5c250a11be2033ee929318ff51ec7b4e4b54e1b4deba7dd
473
SIZE (cabal/uuid-types-1.0.5/uuid-types-1.0.5.tar.gz) = 11922
474
SHA256 (cabal/uuid-types-1.0.5/revision/4.cabal) = e4662609522f093b86c5ae86aa9781afc69338cf102d42e5b5c196c320d95621
475
SIZE (cabal/uuid-types-1.0.5/revision/4.cabal) = 2636
476
SHA256 (cabal/vector-0.13.0.0/vector-0.13.0.0.tar.gz) = c5d3167d15e12f52e00879ddf304a591672a74e369cc47bc5c7fa1d5a8d15b4f
477
SIZE (cabal/vector-0.13.0.0/vector-0.13.0.0.tar.gz) = 154509
478
SHA256 (cabal/vector-0.13.0.0/revision/3.cabal) = fa5cac81a17a5af388716792e8b99c24b3b66770086756d0d8b23f8272a0244c
479
SIZE (cabal/vector-0.13.0.0/revision/3.cabal) = 9112
480
SHA256 (cabal/vector-algorithms-0.9.0.1/vector-algorithms-0.9.0.1.tar.gz) = 2ba7c0d3a8f26ef3ada24ff4abe81609225ecbab3b5754f048f8a0a3ecc33841
481
SIZE (cabal/vector-algorithms-0.9.0.1/vector-algorithms-0.9.0.1.tar.gz) = 29149
482
SHA256 (cabal/vector-algorithms-0.9.0.1/revision/2.cabal) = f3e5c6695529a94edf762117cafd91c989cb642ad3f8ca4014dbb13c8f6c2a20
483
SIZE (cabal/vector-algorithms-0.9.0.1/revision/2.cabal) = 3826
484
SHA256 (cabal/vector-stream-0.1.0.0/vector-stream-0.1.0.0.tar.gz) = a888210f6467f155090653734be5cc920406a07227e0d3adb59096716fdb806c
485
SIZE (cabal/vector-stream-0.1.0.0/vector-stream-0.1.0.0.tar.gz) = 12377
486
SHA256 (cabal/vector-stream-0.1.0.0/revision/2.cabal) = f5d6d5291cd1b5f2f063403593f1f5c8127d692c888eedeb3e1eb40497a88dca
487
SIZE (cabal/vector-stream-0.1.0.0/revision/2.cabal) = 1404
488
SHA256 (cabal/void-0.7.3/void-0.7.3.tar.gz) = 53af758ddc37dc63981671e503438d02c6f64a2d8744e9bec557a894431f7317
489
SIZE (cabal/void-0.7.3/void-0.7.3.tar.gz) = 6741
490
SHA256 (cabal/witherable-0.4.2/witherable-0.4.2.tar.gz) = 790d2bb274283419173bd89104439860675a9410f70f21912973ecd9098b4104
491
SIZE (cabal/witherable-0.4.2/witherable-0.4.2.tar.gz) = 11876
492
SHA256 (cabal/witherable-0.4.2/revision/4.cabal) = cec516b35df0ff53ab0068e70a912a0ba7b65c672fbc554727183faa195ad3b8
493
SIZE (cabal/witherable-0.4.2/revision/4.cabal) = 2342
494
SHA256 (cabal/xml-1.3.14/xml-1.3.14.tar.gz) = 32d1a1a9f21a59176d84697f96ae3a13a0198420e3e4f1c48abbab7d2425013d
495
SIZE (cabal/xml-1.3.14/xml-1.3.14.tar.gz) = 12048
496
SHA256 (cabal/xml-1.3.14/revision/2.cabal) = c7a33d37c968c769723931a33e4e795f0aadda6cb62e7073ded8a2db52509d95
497
SIZE (cabal/xml-1.3.14/revision/2.cabal) = 952
498
SHA256 (cabal/xml-conduit-1.9.1.3/xml-conduit-1.9.1.3.tar.gz) = d8e9169562c71c9e6bc616f15832f521a68c362aa4fc03682748a809755f1bf4
499
SIZE (cabal/xml-conduit-1.9.1.3/xml-conduit-1.9.1.3.tar.gz) = 44653
500
SHA256 (cabal/xml-types-0.3.8/xml-types-0.3.8.tar.gz) = dad5e4ce602b7d1f4be37c0cfd99a261a4573746bfd80d917dc955b72da84c80
501
SIZE (cabal/xml-types-0.3.8/xml-types-0.3.8.tar.gz) = 4054
502
SHA256 (cabal/xss-sanitize-0.3.7.2/xss-sanitize-0.3.7.2.tar.gz) = 1bbb7f5be1f4590124c76458fb798bfd9bf8114dce338d5881ad89188a9dc946
503
SIZE (cabal/xss-sanitize-0.3.7.2/xss-sanitize-0.3.7.2.tar.gz) = 12002
504
SHA256 (cabal/yaml-0.11.11.2/yaml-0.11.11.2.tar.gz) = ee74923ee5b0fef74413c58aaa20ea59baf5d29d256a62fb47cc279570d9dc2f
505
SIZE (cabal/yaml-0.11.11.2/yaml-0.11.11.2.tar.gz) = 31926
506
SHA256 (cabal/yaml-0.11.11.2/revision/2.cabal) = 6f0a1859e0fb3068e50dbc7fe9bf9a26847741bc24344e35e16a03711a18f88d
507
SIZE (cabal/yaml-0.11.11.2/revision/2.cabal) = 5178
508
SHA256 (cabal/zip-archive-0.4.3/zip-archive-0.4.3.tar.gz) = 68050fa0f139848db0ea422ea9af1a65b652abf5168db7dafaf1bded5b045d05
509
SIZE (cabal/zip-archive-0.4.3/zip-archive-0.4.3.tar.gz) = 22161
510
SHA256 (cabal/zlib-0.6.3.0/zlib-0.6.3.0.tar.gz) = 9eaa989ad4534438b5beb51c1d3a4c8f6a088fdff0b259a5394fbf39aaee04da
511
SIZE (cabal/zlib-0.6.3.0/zlib-0.6.3.0.tar.gz) = 369595
512
SHA256 (cabal/zlib-0.6.3.0/revision/1.cabal) = 9adce39e4ca0b7a87d45df0a243134816c57059a08e28cff5469c98ae1f54dfc
513
SIZE (cabal/zlib-0.6.3.0/revision/1.cabal) = 5367
(-)b/www/hs-gitit/files/extra-patch-data_default.conf (+22 lines)
Added Link Here
1
--- data/default.conf.orig	2023-07-10 14:38:47 UTC
2
+++ data/default.conf
3
@@ -266,10 +266,19 @@ feed-days: 14
4
 feed-refresh-time: 60
5
 # number of minutes to cache feeds before refreshing
6
 
7
+exports: no
8
+# if yes, export options will be enabled. Beware, this might disclose
9
+# any file contents readable by the gitit process by maliciously 
10
+# crafting pages that include files!
11
+
12
 pdf-export: no
13
 # if yes, PDF will appear in export options. PDF will be created using
14
 # pdflatex, which must be installed and in the path. Note that PDF
15
 # exports create significant additional server load.
16
+
17
+pdf-engine: pdflatex
18
+# change this to have pandoc use a different engine for PDF creation,
19
+# like xelatex, wkhtmltopdf, pdfroff, etc.
20
 
21
 pandoc-user-data:
22
 # if a directory is specified, this will be searched for pandoc
(-)b/www/hs-gitit/files/extra-patch-exports (+612 lines)
Added Link Here
1
diff --git README.markdown README.markdown
2
index d49e0cc..c5a4ada 100644
3
--- README.markdown
4
+++ README.markdown
5
@@ -7,9 +7,10 @@ files are stored in a [git], [darcs], or [mercurial] repository
6
 and may be modified either by using the VCS's command-line tools or
7
 through the wiki's web interface. By default, pandoc's extended version
8
 of markdown is used as a markup language, but reStructuredText, LaTeX, HTML,
9
-DocBook, or Emacs Org-mode markup can also be used.  Gitit can
10
-be configured to display TeX math (using [texmath]) and
11
-highlighted source code (using [highlighting-kate]).
12
+DocBook, or Emacs Org-mode markup can also be used. Pages can be exported in a
13
+number of different formats, including LaTeX, RTF, OpenOffice ODT, and
14
+MediaWiki markup.  Gitit can be configured to display TeX math (using
15
+[texmath]) and highlighted source code (using [highlighting-kate]).
16
 
17
 Other features include
18
 
19
@@ -410,7 +411,7 @@ Caching
20
 By default, gitit does not cache content.  If your wiki receives a lot of
21
 traffic or contains pages that are slow to render, you may want to activate
22
 caching.  To do this, set the configuration option `use-cache` to `yes`.
23
-By default, rendered pages, and highlighted source files
24
+By default, rendered pages, highlighted source files, and exported PDFs
25
 will be cached in the `cache` directory. (Another directory can be
26
 specified by setting the `cache-dir` configuration option.)
27
 
28
diff --git data/default.conf data/default.conf
29
index cd528f9..567bf8f 100644
30
--- data/default.conf
31
+++ data/default.conf
32
@@ -266,9 +266,16 @@ feed-days: 14
33
 feed-refresh-time: 60
34
 # number of minutes to cache feeds before refreshing
35
 
36
+pdf-export: no
37
+# if yes, PDF will appear in export options. PDF will be created using
38
+# pdflatex, which must be installed and in the path. Note that PDF
39
+# exports create significant additional server load.
40
+
41
 pandoc-user-data:
42
 # if a directory is specified, this will be searched for pandoc
43
-# customizations.  If no directory is
44
+# customizations. These can include a templates/ directory for custom
45
+# templates for various export formats, an S5 directory for custom
46
+# S5 styles, and a reference.odt for ODT exports. If no directory is
47
 # specified, $HOME/.pandoc will be searched. See pandoc's README for
48
 # more information.
49
 
50
diff --git data/templates/pagetools.st data/templates/pagetools.st
51
index a5178f4..2d01dfa 100644
52
--- data/templates/pagetools.st
53
+++ data/templates/pagetools.st
54
@@ -9,5 +9,6 @@
55
       <li><a href="$base$/_feed$pageUrl$" type="application/atom+xml" rel="alternate" title="This page's ATOM Feed">Atom feed</a> <img alt="feed icon" src="$base$/img/icons/feed.png"/></li>
56
       $endif$
57
     </ul>
58
+    $exportbox$
59
   </fieldset>
60
 </div>
61
diff --git gitit.cabal gitit.cabal
62
index 3d0d695..361415d 100644
63
--- gitit.cabal
64
+++ gitit.cabal
65
@@ -115,6 +115,7 @@ Library
66
                      Network.Gitit.Authentication.Github,
67
                      Network.Gitit.Util, Network.Gitit.Server
68
                      Network.Gitit.Cache, Network.Gitit.State,
69
+                     Network.Gitit.Export,
70
                      Network.Gitit.Handlers,
71
                      Network.Gitit.Plugins, Network.Gitit.Rpxnow,
72
                      Network.Gitit.Page, Network.Gitit.Feed,
73
diff --git src/Network/Gitit.hs src/Network/Gitit.hs
74
index 3ad25f8..032cc9d 100644
75
--- src/Network/Gitit.hs
76
+++ src/Network/Gitit.hs
77
@@ -199,6 +199,7 @@ wikiHandlers =
78
           authenticate ForModify (unlessNoDelete deletePage showPage) ]
79
   , dir "_preview" preview
80
   , guardIndex >> indexPage
81
+  , guardCommand "export" >> exportPage
82
   , method POST >> guardCommand "cancel" >> showPage
83
   , method POST >> guardCommand "update" >>
84
       authenticate ForModify (unlessNoEdit updatePage showPage)
85
diff --git src/Network/Gitit/Cache.hs src/Network/Gitit/Cache.hs
86
index 3334d07..91b6c0a 100644
87
--- src/Network/Gitit/Cache.hs
88
+++ src/Network/Gitit/Cache.hs
89
@@ -41,13 +41,23 @@ import Control.Monad.Trans (liftIO)
90
 import Text.Pandoc.UTF8 (encodePath)
91
 
92
 -- | Expire a cached file, identified by its filename in the filestore.
93
+-- If there is an associated exported PDF, expire it too.
94
 -- Returns () after deleting a file from the cache, fails if no cached file.
95
 expireCachedFile :: String -> GititServerPart ()
96
 expireCachedFile file = do
97
   cfg <- getConfig
98
   let target = encodePath $ cacheDir cfg </> file
99
   exists <- liftIO $ doesFileExist target
100
-  when exists $ liftIO $ liftIO $ removeFile target
101
+  when exists $ liftIO $ do
102
+    liftIO $ removeFile target
103
+    expireCachedPDF target (defaultExtension cfg)
104
+
105
+expireCachedPDF :: String -> String -> IO ()
106
+expireCachedPDF file ext = 
107
+  when (takeExtension file == "." ++ ext) $ do
108
+    let pdfname = file ++ ".export.pdf"
109
+    exists <- doesFileExist pdfname
110
+    when exists $ removeFile pdfname
111
 
112
 lookupCache :: String -> GititServerPart (Maybe (UTCTime, B.ByteString))
113
 lookupCache file = do
114
@@ -74,3 +84,4 @@ cacheContents file contents = do
115
   liftIO $ do
116
     createDirectoryIfMissing True targetDir
117
     B.writeFile target contents
118
+    expireCachedPDF target (defaultExtension cfg)
119
diff --git src/Network/Gitit/Config.hs src/Network/Gitit/Config.hs
120
index d39d8cf..1bfbc47 100644
121
--- src/Network/Gitit/Config.hs
122
+++ src/Network/Gitit/Config.hs
123
@@ -130,6 +130,7 @@ extractConfig cp = do
124
       cfWikiTitle <- get cp "DEFAULT" "wiki-title"
125
       cfFeedDays <- get cp "DEFAULT" "feed-days"
126
       cfFeedRefreshTime <- get cp "DEFAULT" "feed-refresh-time"
127
+      cfPDFExport <- get cp "DEFAULT" "pdf-export"
128
       cfPandocUserData <- get cp "DEFAULT" "pandoc-user-data"
129
       cfXssSanitize <- get cp "DEFAULT" "xss-sanitize"
130
       cfRecentActivityDays <- get cp "DEFAULT" "recent-activity-days"
131
@@ -231,6 +232,7 @@ extractConfig cp = do
132
         , wikiTitle            = cfWikiTitle
133
         , feedDays             = readNumber "feed-days" cfFeedDays
134
         , feedRefreshTime      = readNumber "feed-refresh-time" cfFeedRefreshTime
135
+        , pdfExport            = cfPDFExport
136
         , pandocUserData       = if null cfPandocUserData
137
                                     then Nothing
138
                                     else Just cfPandocUserData
139
diff --git src/Network/Gitit/ContentTransformer.hs src/Network/Gitit/ContentTransformer.hs
140
index 12e450a..fa82604 100644
141
--- src/Network/Gitit/ContentTransformer.hs
142
+++ src/Network/Gitit/ContentTransformer.hs
143
@@ -31,6 +31,7 @@ module Network.Gitit.ContentTransformer
144
   , showRawPage
145
   , showFileAsText
146
   , showPage
147
+  , exportPage
148
   , showHighlightedSource
149
   , showFile
150
   , preview
151
@@ -44,6 +45,7 @@ module Network.Gitit.ContentTransformer
152
   , textResponse
153
   , mimeFileResponse
154
   , mimeResponse
155
+  , exportPandoc
156
   , applyWikiTemplate
157
   -- * Content-type transformation combinators
158
   , pageToWikiPandoc
159
@@ -77,6 +79,7 @@ import Data.List (stripPrefix)
160
 import Data.Maybe (isNothing, mapMaybe)
161
 import Data.Semigroup ((<>))
162
 import Network.Gitit.Cache (lookupCache, cacheContents)
163
+import Network.Gitit.Export (exportFormats)
164
 import Network.Gitit.Framework hiding (uriPath)
165
 import Network.Gitit.Layout
166
 import Network.Gitit.Page (stringToPage)
167
@@ -183,6 +186,10 @@ showFileAsText = runFileTransformer rawTextResponse
168
 showPage :: Handler
169
 showPage = runPageTransformer htmlViaPandoc
170
 
171
+-- | Responds with page exported into selected format.
172
+exportPage :: Handler
173
+exportPage = runPageTransformer exportViaPandoc
174
+
175
 -- | Responds with highlighted source code.
176
 showHighlightedSource :: Handler
177
 showHighlightedSource = runFileTransformer highlightRawSource
178
@@ -213,6 +220,15 @@ applyPreCommitPlugins = runPageTransformer . applyPreCommitTransforms
179
 rawTextResponse :: ContentTransformer Response
180
 rawTextResponse = rawContents >>= textResponse
181
 
182
+-- | Responds with a wiki page in the format specified
183
+-- by the @format@ parameter.
184
+exportViaPandoc :: ContentTransformer Response
185
+exportViaPandoc = rawContents >>=
186
+                  maybe mzero return >>=
187
+                  contentsToPage >>=
188
+                  pageToWikiPandoc >>=
189
+                  exportPandoc
190
+
191
 -- | Responds with a wiki page. Uses the cache when
192
 -- possible and caches the rendered page when appropriate.
193
 htmlViaPandoc :: ContentTransformer Response
194
@@ -306,6 +322,17 @@ mimeResponse :: Monad m
195
 mimeResponse c mimeType =
196
   return . setContentType mimeType . toResponse $ c
197
 
198
+-- | Converts Pandoc to response using format specified in parameters.
199
+exportPandoc :: Pandoc -> ContentTransformer Response
200
+exportPandoc doc = do
201
+  params <- getParams
202
+  page <- getPageName
203
+  cfg <- lift getConfig
204
+  let format = pFormat params
205
+  case lookup format (exportFormats cfg) of
206
+       Nothing     -> error $ "Unknown export format: " ++ format
207
+       Just writer -> lift (writer page doc)
208
+
209
 -- | Adds the sidebar, page tabs, and other elements of the wiki page
210
 -- layout to the raw content.
211
 applyWikiTemplate :: Html -> ContentTransformer Response
212
diff --git src/Network/Gitit/Export.hs src/Network/Gitit/Export.hs
213
new file mode 100644
214
index 0000000..0842a8c
215
--- /dev/null
216
+++ src/Network/Gitit/Export.hs
217
@@ -0,0 +1,307 @@
218
+{-# LANGUAGE OverloadedStrings #-}
219
+{-# LANGUAGE FlexibleContexts #-}
220
+{-
221
+Copyright (C) 2009 John MacFarlane <jgm@berkeley.edu>
222
+
223
+This program is free software; you can redistribute it and/or modify
224
+it under the terms of the GNU General Public License as published by
225
+the Free Software Foundation; either version 2 of the License, or
226
+(at your option) any later version.
227
+
228
+This program is distributed in the hope that it will be useful,
229
+but WITHOUT ANY WARRANTY; without even the implied warranty of
230
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
231
+GNU General Public License for more details.
232
+
233
+You should have received a copy of the GNU General Public License
234
+along with this program; if not, write to the Free Software
235
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
236
+-}
237
+
238
+{- Functions for exporting wiki pages in various formats.
239
+-}
240
+
241
+module Network.Gitit.Export ( exportFormats ) where
242
+import Control.Exception (throwIO)
243
+import Text.Pandoc hiding (HTMLMathMethod(..), getDataFileName)
244
+import qualified Text.Pandoc as Pandoc
245
+import Text.Pandoc.PDF (makePDF)
246
+import Text.Pandoc.SelfContained as SelfContained
247
+import qualified Text.Pandoc.UTF8 as UTF8
248
+import qualified Data.Map as M
249
+import Network.Gitit.Server
250
+import Network.Gitit.Framework (pathForPage)
251
+import Network.Gitit.State (getConfig)
252
+import Network.Gitit.Types
253
+import Network.Gitit.Cache (cacheContents, lookupCache)
254
+import Text.DocTemplates as DT
255
+import Control.Monad.Trans (liftIO)
256
+import Control.Monad (unless)
257
+import Text.XHtml (noHtml)
258
+import qualified Data.ByteString as B
259
+import qualified Data.ByteString.Lazy as L
260
+import System.FilePath ((</>), takeDirectory)
261
+import System.Environment (setEnv)
262
+import System.Directory (doesFileExist)
263
+import Text.HTML.SanitizeXSS
264
+import Data.ByteString.Lazy (fromStrict)
265
+import Data.Text (Text)
266
+import qualified Data.Text as T
267
+import Data.Text.Encoding (encodeUtf8)
268
+import Data.List (isPrefixOf)
269
+import Skylighting (styleToCss, pygments)
270
+import System.IO.Temp (withSystemTempDirectory)
271
+import Paths_gitit (getDataFileName)
272
+
273
+defaultRespOptions :: WriterOptions
274
+defaultRespOptions = def { writerHighlightStyle = Just pygments }
275
+
276
+respondX :: String -> String -> String
277
+          -> (WriterOptions -> Pandoc -> PandocIO L.ByteString)
278
+          -> WriterOptions -> String -> Pandoc -> Handler
279
+respondX templ mimetype ext fn opts page doc = do
280
+  cfg <- getConfig
281
+  doc' <- if ext `elem` ["odt","pdf","beamer","epub","docx","rtf"]
282
+             then fixURLs page doc
283
+             else return doc
284
+  doc'' <- liftIO $ runIO $ do
285
+        setUserDataDir $ pandocUserData cfg
286
+        compiledTemplate <- compileDefaultTemplate (T.pack templ)
287
+        fn opts{ writerTemplate = Just compiledTemplate } doc'
288
+  either (liftIO . throwIO)
289
+         (ok . setContentType mimetype .
290
+           (if null ext then id else setFilename (page ++ "." ++ ext)) .
291
+            toResponseBS B.empty)
292
+         doc''
293
+
294
+respondS :: String -> String -> String -> (WriterOptions -> Pandoc -> PandocIO Text)
295
+          -> WriterOptions -> String -> Pandoc -> Handler
296
+respondS templ mimetype ext fn =
297
+  respondX templ mimetype ext (\o d -> fromStrict . encodeUtf8 <$> fn o d)
298
+
299
+respondSlides :: String -> (WriterOptions -> Pandoc -> PandocIO Text) -> String -> Pandoc -> Handler
300
+respondSlides templ fn page doc = do
301
+    cfg <- getConfig
302
+    let math = case mathMethod cfg of
303
+                   MathML       -> Pandoc.MathML
304
+                   WebTeX u     -> Pandoc.WebTeX $ T.pack u
305
+                   _            -> Pandoc.PlainMath
306
+    let opts' = defaultRespOptions { writerIncremental = True
307
+                                   , writerHTMLMathMethod = math}
308
+    -- We sanitize the body only, to protect against XSS attacks.
309
+    -- (Sanitizing the whole HTML page would strip out javascript
310
+    -- needed for the slides.)  We then pass the body into the
311
+    -- slide template using the 'body' variable.
312
+    Pandoc meta blocks <- fixURLs page doc
313
+    docOrError <- liftIO $ runIO $ do
314
+          setUserDataDir $ pandocUserData cfg
315
+          body' <- writeHtml5String opts' (Pandoc meta blocks) -- just body
316
+          let body'' = T.unpack
317
+                       $ (if xssSanitize cfg then sanitizeBalance else id)
318
+                       $ body'
319
+          let setVariable key val (DT.Context ctx) =
320
+                DT.Context $ M.insert (T.pack key) (toVal (T.pack val)) ctx
321
+          variables' <- if mathMethod cfg == MathML
322
+                          then do
323
+                              s <- readDataFile "MathMLinHTML.js"
324
+                              return $ setVariable "mathml-script"
325
+                                         (UTF8.toString s) mempty
326
+                          else return mempty
327
+          compiledTemplate <- compileDefaultTemplate (T.pack templ)
328
+          dzcore <- if templ == "dzslides"
329
+                      then do
330
+                        dztempl <- readDataFile $ "dzslides" </> "template.html"
331
+                        return $ unlines
332
+                            $ dropWhile (not . isPrefixOf "<!-- {{{{ dzslides core")
333
+                            $ lines $ UTF8.toString dztempl
334
+                      else return ""
335
+          let opts'' = opts'{
336
+                             writerVariables =
337
+                               setVariable "body" body'' $
338
+                               setVariable "dzslides-core" dzcore $
339
+                               setVariable "highlighting-css" pygmentsCss
340
+                               $ variables'
341
+                            ,writerTemplate = Just compiledTemplate }
342
+          h <- fn opts'' (Pandoc meta [])
343
+          makeSelfContained h
344
+    either (liftIO . throwIO)
345
+           (ok . setContentType "text/html;charset=UTF-8" .
346
+             (setFilename (page ++ ".html")) .
347
+             toResponseBS B.empty . L.fromStrict . UTF8.fromText)
348
+           docOrError
349
+
350
+respondLaTeX :: String -> Pandoc -> Handler
351
+respondLaTeX = respondS "latex" "application/x-latex" "tex"
352
+  writeLaTeX defaultRespOptions
353
+
354
+respondConTeXt :: String -> Pandoc -> Handler
355
+respondConTeXt = respondS "context" "application/x-context" "tex"
356
+  writeConTeXt defaultRespOptions
357
+
358
+
359
+respondRTF :: String -> Pandoc -> Handler
360
+respondRTF = respondX "rtf" "application/rtf" "rtf"
361
+  (\o d -> L.fromStrict . UTF8.fromText <$> writeRTF o d) defaultRespOptions
362
+
363
+respondRST :: String -> Pandoc -> Handler
364
+respondRST = respondS "rst" "text/plain; charset=utf-8" ""
365
+  writeRST defaultRespOptions{writerReferenceLinks = True}
366
+
367
+respondMarkdown :: String -> Pandoc -> Handler
368
+respondMarkdown = respondS "markdown" "text/plain; charset=utf-8" ""
369
+  writeMarkdown defaultRespOptions{writerReferenceLinks = True}
370
+
371
+respondCommonMark :: String -> Pandoc -> Handler
372
+respondCommonMark = respondS "commonmark" "text/plain; charset=utf-8" ""
373
+  writeCommonMark defaultRespOptions{writerReferenceLinks = True}
374
+
375
+respondPlain :: String -> Pandoc -> Handler
376
+respondPlain = respondS "plain" "text/plain; charset=utf-8" ""
377
+  writePlain defaultRespOptions
378
+
379
+respondMan :: String -> Pandoc -> Handler
380
+respondMan = respondS "man" "text/plain; charset=utf-8" ""
381
+  writeMan defaultRespOptions
382
+
383
+respondTexinfo :: String -> Pandoc -> Handler
384
+respondTexinfo = respondS "texinfo" "application/x-texinfo" "texi"
385
+  writeTexinfo defaultRespOptions
386
+
387
+respondDocbook :: String -> Pandoc -> Handler
388
+respondDocbook = respondS "docbook" "application/docbook+xml" "xml"
389
+  writeDocbook5 defaultRespOptions
390
+
391
+respondOrg :: String -> Pandoc -> Handler
392
+respondOrg = respondS "org" "text/plain; charset=utf-8" ""
393
+  writeOrg defaultRespOptions
394
+
395
+respondICML :: String -> Pandoc -> Handler
396
+respondICML = respondX "icml" "application/xml; charset=utf-8" ""
397
+              (\o d -> L.fromStrict . UTF8.fromText <$> writeICML o d)
398
+                         defaultRespOptions
399
+
400
+respondTextile :: String -> Pandoc -> Handler
401
+respondTextile = respondS "textile" "text/plain; charset=utf-8" ""
402
+  writeTextile defaultRespOptions
403
+
404
+respondAsciiDoc :: String -> Pandoc -> Handler
405
+respondAsciiDoc = respondS "asciidoc" "text/plain; charset=utf-8" ""
406
+  writeAsciiDoc defaultRespOptions
407
+
408
+respondMediaWiki :: String -> Pandoc -> Handler
409
+respondMediaWiki = respondS "mediawiki" "text/plain; charset=utf-8" ""
410
+  writeMediaWiki defaultRespOptions
411
+
412
+respondODT :: String -> Pandoc -> Handler
413
+respondODT = respondX "opendocument" "application/vnd.oasis.opendocument.text"
414
+              "odt" writeODT defaultRespOptions
415
+
416
+respondEPUB :: String -> Pandoc -> Handler
417
+respondEPUB = respondX "html" "application/epub+zip" "epub" writeEPUB3
418
+               defaultRespOptions
419
+
420
+respondDocx :: String -> Pandoc -> Handler
421
+respondDocx = respondX "native"
422
+  "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
423
+  "docx" writeDocx defaultRespOptions
424
+
425
+respondPDF :: Bool -> String -> Pandoc -> Handler
426
+respondPDF useBeamer page old_pndc = fixURLs page old_pndc >>= \pndc -> do
427
+  cfg <- getConfig
428
+  unless (pdfExport cfg) $ error "PDF export disabled"
429
+  let cacheName = pathForPage page (defaultExtension cfg) ++ ".export.pdf"
430
+  cached <- if useCache cfg
431
+               then lookupCache cacheName
432
+               else return Nothing
433
+  pdf' <- case cached of
434
+            Just (_modtime, bs) -> return $ Right $ L.fromChunks [bs]
435
+            Nothing -> liftIO $
436
+                withSystemTempDirectory "gitit" $ \tmpdir -> do
437
+              let toc = tableOfContents cfg
438
+              -- ensure that LaTeX \include commands can't include
439
+              -- files outside the working directory, e.g. /etc/passwd:
440
+              writeFile (tmpdir </> "texmf.cnf")
441
+                "openout_any = p\nopenin_any = p\n"
442
+              setEnv "TEXMFCNF" (tmpdir ++ ":")
443
+              res <- runIO $ do
444
+                setUserDataDir $ pandocUserData cfg
445
+                setInputFiles [baseUrl cfg]
446
+                let templ = if useBeamer then "beamer" else "latex"
447
+                compiledTemplate <- compileDefaultTemplate templ
448
+                makePDF "pdflatex" [] (if useBeamer then writeBeamer else writeLaTeX)
449
+                  defaultRespOptions{ writerTemplate = Just compiledTemplate
450
+                                    , writerTableOfContents = toc } pndc
451
+              either (liftIO . throwIO) return res
452
+
453
+  case pdf' of
454
+       Left logOutput' -> simpleErrorHandler ("PDF creation failed:\n"
455
+                           ++ UTF8.toStringLazy logOutput')
456
+       Right pdfBS -> do
457
+              case cached of
458
+                Nothing ->
459
+                     cacheContents cacheName $ B.concat . L.toChunks $ pdfBS
460
+                _ -> return ()
461
+              ok $ setContentType "application/pdf" $ setFilename (page ++ ".pdf") $
462
+                        (toResponse noHtml) {rsBody = pdfBS}
463
+
464
+-- | When we create a PDF or ODT from a Gitit page, we need to fix the URLs of any
465
+-- images on the page. Those URLs will often be relative to the staticDir, but the
466
+-- PDF or ODT processor only understands paths relative to the working directory.
467
+--
468
+-- Because the working directory will not in general be the root of the gitit instance
469
+-- at the time the Pandoc is fed to e.g. pdflatex, this function replaces the URLs of
470
+-- images in the staticDir with their correct absolute file path.
471
+fixURLs :: String -> Pandoc -> GititServerPart Pandoc
472
+fixURLs page pndc = do
473
+    cfg <- getConfig
474
+    defaultStatic <- liftIO $ getDataFileName $ "data" </> "static"
475
+
476
+    let static = staticDir cfg
477
+    let repoPath = repositoryPath cfg
478
+
479
+    let go (Image attr ils (url, title)) = do
480
+           fixedURL <- fixURL $ T.unpack url
481
+           return $ Image attr ils (T.pack fixedURL, title)
482
+        go x                        = return x
483
+
484
+        fixURL ('/':url) = resolve url
485
+        fixURL url       = resolve $ takeDirectory page </> url
486
+
487
+        resolve p = do
488
+           sp <- doesFileExist $ static </> p
489
+           dsp <- doesFileExist $ defaultStatic </> p
490
+           return (if sp then static </> p
491
+                   else (if dsp then defaultStatic </> p
492
+                         else repoPath </> p))
493
+    liftIO $ bottomUpM go pndc
494
+
495
+exportFormats :: Config -> [(String, String -> Pandoc -> Handler)]
496
+exportFormats cfg = if pdfExport cfg
497
+                       then ("PDF", respondPDF False) :
498
+                            ("Beamer", respondPDF True) :
499
+                            rest
500
+                       else rest
501
+   where rest = [ ("LaTeX",     respondLaTeX)     -- (description, writer)
502
+                , ("ConTeXt",   respondConTeXt)
503
+                , ("Texinfo",   respondTexinfo)
504
+                , ("reST",      respondRST)
505
+                , ("Markdown",  respondMarkdown)
506
+                , ("CommonMark",respondCommonMark)
507
+                , ("Plain text",respondPlain)
508
+                , ("MediaWiki", respondMediaWiki)
509
+                , ("Org-mode",  respondOrg)
510
+                , ("ICML",      respondICML)
511
+                , ("Textile",   respondTextile)
512
+                , ("AsciiDoc",  respondAsciiDoc)
513
+                , ("Man page",  respondMan)
514
+                , ("DocBook",   respondDocbook)
515
+                , ("DZSlides",  respondSlides "dzslides" writeDZSlides)
516
+                , ("Slidy",     respondSlides "slidy" writeSlidy)
517
+                , ("S5",        respondSlides "s5" writeS5)
518
+                , ("EPUB",      respondEPUB)
519
+                , ("ODT",       respondODT)
520
+                , ("DOCX",      respondDocx)
521
+                , ("RTF",       respondRTF) ]
522
+
523
+pygmentsCss :: String
524
+pygmentsCss = styleToCss pygments
525
diff --git src/Network/Gitit/Handlers.hs src/Network/Gitit/Handlers.hs
526
index 44b19fe..d9f894f 100644
527
--- src/Network/Gitit/Handlers.hs
528
+++ src/Network/Gitit/Handlers.hs
529
@@ -42,6 +42,7 @@ module Network.Gitit.Handlers (
530
                       , showPage
531
                       , showPageDiff
532
                       , showFileDiff
533
+                      , exportPage
534
                       , updatePage
535
                       , editPage
536
                       , deletePage
537
@@ -60,7 +61,7 @@ import Network.Gitit.Feed (filestoreToXmlFeed, FeedConfig(..))
538
 import Network.Gitit.Util (orIfNull)
539
 import Network.Gitit.Cache (expireCachedFile, lookupCache, cacheContents)
540
 import Network.Gitit.ContentTransformer (showRawPage, showFileAsText, showPage,
541
-        showHighlightedSource, preview, applyPreCommitPlugins)
542
+        exportPage, showHighlightedSource, preview, applyPreCommitPlugins)
543
 import Network.Gitit.Page (readCategories)
544
 import qualified Control.Exception as E
545
 import System.FilePath
546
diff --git src/Network/Gitit/Layout.hs src/Network/Gitit/Layout.hs
547
index f835d42..fd307c7 100644
548
--- src/Network/Gitit/Layout.hs
549
+++ src/Network/Gitit/Layout.hs
550
@@ -31,11 +31,12 @@ import Network.Gitit.Server
551
 import Network.Gitit.Framework
552
 import Network.Gitit.State
553
 import Network.Gitit.Types
554
+import Network.Gitit.Export (exportFormats)
555
 import Network.HTTP (urlEncodeVars)
556
 import qualified Text.StringTemplate as T
557
 import Text.XHtml hiding ( (</>), dir, method, password, rev )
558
 import Text.XHtml.Strict ( stringToHtmlString )
559
-import Data.Maybe (isNothing)
560
+import Data.Maybe (isNothing, isJust, fromJust)
561
 
562
 defaultPageLayout :: PageLayout
563
 defaultPageLayout = PageLayout
564
@@ -110,6 +111,8 @@ filledPageTemplate base' cfg layout htmlContents templ =
565
                    maybe id (T.setAttribute "markuphelp") (pgMarkupHelp layout) .
566
                    setBoolAttr "printable" (pgPrintable layout) .
567
                    maybe id (T.setAttribute "revision") rev .
568
+                   T.setAttribute "exportbox"
569
+                       (renderHtmlFragment $  exportBox base' cfg page rev) .
570
                    (if null (pgTabs layout) then id else T.setAttribute "tabs"
571
                        (renderHtmlFragment tabs)) .
572
                    (\f x xs -> if null xs then x else f xs) (T.setAttribute "messages") id (pgMessages layout) .
573
@@ -119,6 +122,17 @@ filledPageTemplate base' cfg layout htmlContents templ =
574
                    templ
575
 
576
 
577
+exportBox :: String -> Config -> String -> Maybe String -> Html
578
+exportBox base' cfg page rev | not (isSourceCode page) =
579
+  gui (base' ++ urlForPage page) ! [identifier "exportbox"] <<
580
+    ([ textfield "revision" ! [thestyle "display: none;",
581
+         value (fromJust rev)] | isJust rev ] ++
582
+     [ select ! [name "format"] <<
583
+         map ((\f -> option ! [value f] << f) . fst) (exportFormats cfg)
584
+     , primHtmlChar "nbsp"
585
+     , submit "export" "Export" ])
586
+exportBox _ _ _ _ = noHtml
587
+
588
 -- auxiliary functions:
589
 
590
 linkForTab :: (Tab -> Html -> Html) -> String -> String -> Maybe String -> Tab -> Html
591
diff --git src/Network/Gitit/Types.hs src/Network/Gitit/Types.hs
592
index aa23ec1..8f037b9 100644
593
--- src/Network/Gitit/Types.hs
594
+++ src/Network/Gitit/Types.hs
595
@@ -204,6 +204,8 @@ data Config = Config {
596
   feedDays             :: Integer,
597
   -- | Number of minutes to cache feeds before refreshing
598
   feedRefreshTime      :: Integer,
599
+  -- | Allow PDF export?
600
+  pdfExport            :: Bool,
601
   -- | Directory to search for pandoc customizations
602
   pandocUserData       :: Maybe FilePath,
603
   -- | Filter HTML through xss-sanitize
604
@@ -465,7 +467,7 @@ instance FromData Command where
605
        return $ case map fst pairs `intersect` commandList of
606
                  []          -> Command Nothing
607
                  (c:_)       -> Command $ Just c
608
-               where commandList = ["update", "cancel"]
609
+               where commandList = ["update", "cancel", "export"]
610
 
611
 -- | State for a single wiki.
612
 data WikiState = WikiState {
(-)b/www/hs-gitit/files/extra-patch-src_Network_Gitit_Config.hs (+22 lines)
Added Link Here
1
--- src/Network/Gitit/Config.hs.orig	2023-07-10 14:38:47 UTC
2
+++ src/Network/Gitit/Config.hs
3
@@ -130,7 +130,9 @@ extractConfig cp = do
4
       cfWikiTitle <- get cp "DEFAULT" "wiki-title"
5
       cfFeedDays <- get cp "DEFAULT" "feed-days"
6
       cfFeedRefreshTime <- get cp "DEFAULT" "feed-refresh-time"
7
+      cfExports <- get cp "DEFAULT" "exports"
8
       cfPDFExport <- get cp "DEFAULT" "pdf-export"
9
+      cfPDFEngine <- get cp "DEFAULT" "pdf-engine"
10
       cfPandocUserData <- get cp "DEFAULT" "pandoc-user-data"
11
       cfXssSanitize <- get cp "DEFAULT" "xss-sanitize"
12
       cfRecentActivityDays <- get cp "DEFAULT" "recent-activity-days"
13
@@ -232,7 +234,9 @@ extractConfig cp = do
14
         , wikiTitle            = cfWikiTitle
15
         , feedDays             = readNumber "feed-days" cfFeedDays
16
         , feedRefreshTime      = readNumber "feed-refresh-time" cfFeedRefreshTime
17
+        , exports              = cfExports
18
         , pdfExport            = cfPDFExport
19
+        , pdfEngine            = cfPDFEngine
20
         , pandocUserData       = if null cfPandocUserData
21
                                     then Nothing
22
                                     else Just cfPandocUserData
(-)b/www/hs-gitit/files/extra-patch-src_Network_Gitit_Export.hs (+31 lines)
Added Link Here
1
--- src/Network/Gitit/Export.hs.orig	2023-07-10 14:38:47 UTC
2
+++ src/Network/Gitit/Export.hs
3
@@ -61,6 +61,7 @@ respondX :: String -> String -> String
4
           -> WriterOptions -> String -> Pandoc -> Handler
5
 respondX templ mimetype ext fn opts page doc = do
6
   cfg <- getConfig
7
+  unless (exports cfg) $ error "exports are disabled"
8
   doc' <- if ext `elem` ["odt","pdf","beamer","epub","docx","rtf"]
9
              then fixURLs page doc
10
              else return doc
11
@@ -169,7 +170,11 @@ respondTexinfo = respondS "texinfo" "application/x-tex
12
 
13
 respondDocbook :: String -> Pandoc -> Handler
14
 respondDocbook = respondS "docbook" "application/docbook+xml" "xml"
15
+#if MIN_VERSION_pandoc(3,0,0)
16
+  writeDocBook5 defaultRespOptions
17
+#else
18
   writeDocbook5 defaultRespOptions
19
+#endif
20
 
21
 respondOrg :: String -> Pandoc -> Handler
22
 respondOrg = respondS "org" "text/plain; charset=utf-8" ""
23
@@ -228,7 +233,7 @@ respondPDF useBeamer page old_pndc = fixURLs page old_
24
                 setInputFiles [baseUrl cfg]
25
                 let templ = if useBeamer then "beamer" else "latex"
26
                 compiledTemplate <- compileDefaultTemplate templ
27
-                makePDF "pdflatex" [] (if useBeamer then writeBeamer else writeLaTeX)
28
+                makePDF (pdfEngine cfg) [] (if useBeamer then writeBeamer else writeLaTeX)
29
                   defaultRespOptions{ writerTemplate = Just compiledTemplate
30
                                     , writerTableOfContents = toc } pndc
31
               either (liftIO . throwIO) return res
(-)b/www/hs-gitit/files/extra-patch-src_Network_Gitit_Layout.hs (+11 lines)
Added Link Here
1
--- src/Network/Gitit/Layout.hs.orig	2023-07-10 14:38:47 UTC
2
+++ src/Network/Gitit/Layout.hs
3
@@ -123,7 +123,7 @@ filledPageTemplate base' cfg layout htmlContents templ
4
 
5
 
6
 exportBox :: String -> Config -> String -> Maybe String -> Html
7
-exportBox base' cfg page rev | not (isSourceCode page) =
8
+exportBox base' cfg page rev | exports cfg && not (isSourceCode page) =
9
   gui (base' ++ urlForPage page) ! [identifier "exportbox"] <<
10
     ([ textfield "revision" ! [thestyle "display: none;",
11
          value (fromJust rev)] | isJust rev ] ++
(-)b/www/hs-gitit/files/extra-patch-src_Network_Gitit_Types.hs (+15 lines)
Added Link Here
1
--- src/Network/Gitit/Types.hs.orig	2023-07-10 14:38:47 UTC
2
+++ src/Network/Gitit/Types.hs
3
@@ -204,8 +204,12 @@ data Config = Config {
4
   feedDays             :: Integer,
5
   -- | Number of minutes to cache feeds before refreshing
6
   feedRefreshTime      :: Integer,
7
+  -- | Allow exports?
8
+  exports              :: Bool,
9
   -- | Allow PDF export?
10
   pdfExport            :: Bool,
11
+  -- | Which PDF engine to use?
12
+  pdfEngine            :: String,
13
   -- | Directory to search for pandoc customizations
14
   pandocUserData       :: Maybe FilePath,
15
   -- | Filter HTML through xss-sanitize
(-)b/www/hs-gitit/files/gitit.in (+236 lines)
Added Link Here
1
#!/bin/sh
2
# 
3
# $FreeBSD$
4
#
5
# PROVIDE: gitit
6
# REQUIRE: LOGIN
7
# KEYWORD: shutdown
8
#
9
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
10
# to enable this service:
11
#
12
# gitit_enable (bool):	Set to NO by default.
13
# 			Set it to YES to enable gitit.
14
# gitit_cfg (str):	Set this to the list of all gitit instance
15
#			names, if you want to run more than one.
16
#			If set, then the gitit_* variables are used as
17
#			defaults for the corresponding instance
18
#			specific variables gitit_<instance>_*.
19
# gitit_chdir (path):	Directory in which to start gitit.
20
# gitit_dir (path):	Directory in which to start gitit. When set and
21
#			when multiple gitit instances are used via
22
#			gitit_cfg, then their default gitit_..._chdir
23
#			is $gitit_dir/<instance>.
24
# gitit_supervise (bool):
25
#			Whether daemon process should restart
26
#			gitit on exit. (Might cause looping restarts!)
27
# gitit_runuser (user):	User id that runs this gitit instance.
28
# gitit_config (path):	Config file (possibly relative to gitit_chdir).
29
# gitit_port (number):	TCP port number to listen for HTTP requests.
30
# gitit_flags (str):	Defaults to "+RTS -I0 -RTS". That avoids CPU
31
#			usage by ghc's idle garbage collector, but
32
#			only if the gitit port was built using
33
#			CONFIGURE_ARGS+= "--ghc-option=-rtsopts".
34
# gitit_locale (str):	UTF-8 required!
35
# gitit_timezone (str):	gitit 0.11.1 requires UTC
36
#
37
38
. /etc/rc.subr
39
40
name=gitit
41
desc="run gitit Wiki webserver process(es)"
42
rcvar=gitit_enable
43
44
load_rc_config $name
45
46
: ${gitit_enable:=NO}
47
: ${gitit_program=%%PREFIX%%/bin/gitit}
48
: ${gitit_pidfile=/var/run/${name}.pid}
49
: ${gitit_dir=/var/gitit}
50
: ${gitit_supervise=NO}
51
: ${gitit_runuser=gitit}
52
: ${gitit_config=${name}.conf}
53
: ${gitit_port=5001}
54
: ${gitit_flags="+RTS -I0 -RTS"}
55
: ${gitit_locale=en_US.UTF-8}
56
: ${gitit_timezone=UTC}
57
58
start_cmd="gitit_start $*"
59
stop_cmd="gitit_stop $*"
60
restart_cmd="gitit_restart $*"
61
status_cmd="gitit_status $*"
62
cmd=$1
63
64
gitit_setdefaults()
65
{
66
	[ -n "${gitit_cfg}" ] || return
67
	eval gitit_enable_default=\$${name}_enable
68
	#eval gitit_chdir_default=\$${name}_chdir
69
	eval gitit_supervise_default=\$${name}_supervise
70
	eval gitit_runuser_default=\$${name}_runuser
71
	eval gitit_config_default=\$${name}_config
72
	eval gitit_port_default=\$${name}_port
73
	eval gitit_flags_default=\$${name}_flags
74
	eval gitit_locale_default=\$${name}_locale
75
	eval gitit_timezone_default=\$${name}_timezone
76
}
77
78
gitit_setinstancevars()
79
{
80
	local instance gitit_supervise_instance gitit_config_instance gitit_runuser_instance gitit_port_instance gitit_flags_instance gitit_locale_instance gitit_timezone_instance
81
	instance=$1
82
	eval gitit_enable_instance=\$${name}_${instance}_enable
83
	[ -z "${gitit_enable_instance}" ] || gitit_enable="${gitit_enable_instance}"
84
	[ -n "${gitit_enable_instance}" ] || gitit_enable="${gitit_enable_default}"
85
	eval gitit_chdir=\$${name}_${instance}_chdir
86
	[ -n "${gitit_chdir}" ] || [ -z "${gitit_dir} " ] || gitit_chdir="${gitit_dir}/${instance}"
87
	eval gitit_supervise_instance=\$${name}_${instance}_supervise
88
	[ -z "${gitit_supervise_instance}" ] || gitit_supervise="${gitit_supervise_instance}"
89
	[ -n "${gitit_supervise_instance}" ] || gitit_supervise="${gitit_supervise_default}"
90
	eval gitit_runuser_instance=\$${name}_${instance}_runuser
91
	[ -z "${gitit_runuser_instance}" ] || gitit_runuser="${gitit_runuser_instance}"
92
	[ -n "${gitit_runuser_instance}" ] || gitit_runuser="${gitit_runuser_default}"
93
	eval gitit_config_instance=\$${name}_${instance}_config
94
	[ -z "${gitit_config_instance}" ] || gitit_config="${gitit_config_instance}"
95
	[ -n "${gitit_config_instance}" ] || gitit_config="${gitit_config_default}"
96
	eval gitit_port_instance=\$${name}_${instance}_port
97
	[ -z "${gitit_port_instance}" ] || gitit_port="${gitit_port_instance}"
98
	[ -n "${gitit_port_instance}" ] || gitit_port="${gitit_port_default}"
99
	eval gitit_flags_instance=\$${name}_${instance}_flags
100
	[ -z "${gitit_flags_instance}" ] || gitit_flags="${gitit_flags_instance}"
101
	[ -n "${gitit_flags_instance}" ] || gitit_flags="${gitit_flags_default}"
102
	eval gitit_locale_instance=\$${name}_${instance}_locale
103
	[ -z "${gitit_locale_instance}" ] || gitit_locale="${gitit_locale_instance}"
104
	[ -n "${gitit_locale_instance}" ] || gitit_locale="${gitit_locale_default}"
105
	eval gitit_timezone_instance=\$${name}_${instance}_timezone
106
	[ -z "${gitit_timezone_instance}" ] || gitit_timezone="${gitit_timezone_instance}"
107
108
	gitit_pidfile=/var/run/${name}-${instance}.pid
109
	pidfile=`if checkyesno gitit_supervise ; then echo /var/run/${name}-${instance}-daemon.pid ; else echo ${gitit_pidfile} ; fi`
110
}
111
112
gitit_runonecmd()
113
{
114
	local real_gitit_program
115
	command_args=
116
	[ -z "$gitit_config" ] || command_args="$command_args -f $gitit_config"
117
	[ -z "$gitit_port" ] || command_args="$command_args -p $gitit_port"
118
	[ -z "$gitit_flags" ] || command_args="$command_args $gitit_flags"
119
	[ -z "$gitit_locale" ] || export LANG=$gitit_locale
120
	[ -z "$gitit_locale" ] || export LC_ALL=$gitit_locale
121
	[ -z "$gitit_timezone" ] || export TZ=$gitit_timezone
122
	daemonflags=
123
	if checkyesno gitit_supervise
124
	then
125
		daemonflags="-r -P $pidfile "
126
	fi
127
	daemonflags="$daemonflags-p $gitit_pidfile"
128
129
	command=/usr/sbin/daemon
130
	command_args="-f $daemonflags -u $gitit_runuser $gitit_program $command_args"
131
	real_gitit_program=${gitit_program}
132
	gitit_program=${command}
133
	gitit_flags=
134
	rc_flags=
135
136
	run_rc_command "${cmd}"
137
138
	case ${cmd} in
139
	*start)
140
		# make pidfile readable for $gitit_runuser
141
		chgrp $gitit_runuser $gitit_pidfile && \
142
		chmod 640 $gitit_pidfile
143
		;;
144
	esac
145
146
	gitit_program=${real_gitit_program}
147
	unset LANG LC_ALL
148
}
149
150
gitit_cmd()
151
{
152
	local instance prefixchar runinstances i argi
153
	if [ -z "${gitit_cfg}" ]
154
	then
155
		gitit_pidfile=/var/run/${name}.pid
156
		pidfile=`if checkyesno gitit_supervise ; then echo /var/run/${name}-daemon.pid ; else echo ${gitit_pidfile} ; fi`
157
		gitit_runonecmd
158
	else
159
		case $cmd in
160
			*restart)
161
				prefixchar="-+"
162
				;;
163
			*start)
164
				prefixchar="+"
165
				;;
166
			*stop)
167
				prefixchar="-"
168
				;;
169
			*status)
170
				prefixchar="?"
171
				;;
172
		esac
173
		# rc_extra_args is always empty at this point, so we
174
		# extract additional parameters from $*. Positional
175
		# parameters have to be passed down to this function.
176
		runinstances=
177
		i=2
178
		if [ $# -ge 2 ]
179
		then
180
			while [ $i -le $# ]
181
			do
182
				eval argi=\$$i
183
				if echo "${gitit_cfg}" | grep -q -w "${argi}"
184
				then
185
					runinstances="${runinstances} ${argi}"
186
				else
187
					echo "Skipping ${argi}"' - not in ${gitit_cfg}.'
188
				fi
189
				i=$(($i + 1))
190
			done
191
		else
192
			runinstances=${gitit_cfg}
193
		fi
194
		for instance in ${runinstances}
195
		do
196
			echo -n "${prefixchar}${instance}: "
197
			gitit_setinstancevars ${instance}
198
			gitit_runonecmd
199
		done
200
	fi
201
}
202
203
gitit_start()
204
{
205
	unset start_cmd
206
	gitit_setdefaults
207
	gitit_cmd $*
208
}
209
210
gitit_stop()
211
{
212
	unset stop_cmd
213
	gitit_setdefaults
214
	gitit_cmd $*
215
}
216
217
gitit_restart()
218
{
219
	unset restart_cmd
220
	unset stop_cmd
221
	unset start_cmd
222
	gitit_setdefaults
223
	cmd=stop
224
	gitit_cmd $*
225
	cmd=start
226
	gitit_cmd $*
227
}
228
229
gitit_status()
230
{
231
	unset status_cmd
232
	gitit_setdefaults
233
	gitit_cmd $*
234
}
235
236
run_rc_command "$1"
(-)b/www/hs-gitit/files/patch-__cabal__deps_filestore-0.6.5_Data_FileStore_Darcs.hs (+22 lines)
Added Link Here
1
--- _cabal_deps/filestore-0.6.5/Data/FileStore/Darcs.hs.orig	2001-09-09 01:46:40 UTC
2
+++ _cabal_deps/filestore-0.6.5/Data/FileStore/Darcs.hs
3
@@ -205,7 +205,7 @@ getNames = map (drop 2) . lines . toString
4
 -- | Get a list of all known files inside and managed by a repository.
5
 darcsIndex :: FilePath ->IO [FilePath]
6
 darcsIndex repo = withVerifyDir repo $ do
7
-  (status, _errOutput, output) <- runDarcsCommand repo "query"  ["files","--no-directories"]
8
+  (status, _errOutput, output) <- runDarcsCommand repo "show"  ["files","--no-directories"]
9
   if status == ExitSuccess
10
      then return . getNames $ output
11
      else return []   -- return empty list if invalid path (see gitIndex)
12
@@ -214,8 +214,8 @@ darcsIndex repo = withVerifyDir repo $ do
13
 darcsDirectory :: FilePath -> FilePath -> IO [Resource]
14
 darcsDirectory repo dir = withVerifyDir (repo </> dir) $ do
15
   let dir' = if null dir then "" else addTrailingPathSeparator dir
16
-  (status1, _errOutput1, output1) <- runDarcsCommand repo "query"  ["files","--no-directories"]
17
-  (status2, _errOutput2, output2) <- runDarcsCommand repo "query" ["files","--no-files"]
18
+  (status1, _errOutput1, output1) <- runDarcsCommand repo "show"  ["files","--no-directories"]
19
+  (status2, _errOutput2, output2) <- runDarcsCommand repo "show" ["files","--no-files"]
20
   if status1 == ExitSuccess && status2 == ExitSuccess
21
      then do
22
        let files = adhocParsing dir' . lines . toString $ output1
(-)b/www/hs-gitit/files/patch-__cabal__deps_pandoc-3.1.4_pandoc.cabal (+11 lines)
Added Link Here
1
--- _cabal_deps/pandoc-3.1.4/pandoc.cabal.orig	2001-09-09 01:46:40 UTC
2
+++ _cabal_deps/pandoc-3.1.4/pandoc.cabal
3
@@ -415,7 +415,7 @@ source-repository head
4
 
5
 flag embed_data_files
6
   Description:   Embed data files in binary for relocatable executable.
7
-  Default:       False
8
+  Default:       True
9
 
10
 common common-options
11
   default-language: Haskell2010
(-)b/www/hs-gitit/files/patch-data_markup.DocBook (+748 lines)
Added Link Here
1
--- data/markup.DocBook.orig	2001-09-09 01:46:40 UTC
2
+++ data/markup.DocBook
3
@@ -1,347 +1,411 @@
4
-<sect1 id="markdown">
5
-  <title>Markdown</title>
6
+# Markdown
7
+
8
+The usual way to write pages for this wiki is [pandoc]'s extended form
9
+of [markdown]. You can start using markdown and later switch to
10
+DocBook by using `pandoc` to convert your markdown page to DocBook for
11
+more sophisticated formatting. To do so use the wiki's export option
12
+(if enabled) or `pandoc -f markdown -t docbook -o page.xml page.md`.
13
+Further down on this page there is some information about the DocBook
14
+format. Here we continue with an introduction to markdown.
15
+If you're not familiar with markdown, you should start by looking
16
+at the [markdown "basics" page] and the [markdown syntax description].
17
+Consult the [pandoc User's Guide] for information about pandoc's syntax
18
+for footnotes, tables, description lists, and other elements not present
19
+in standard markdown.
20
+
21
+[pandoc]: http://pandoc.org
22
+[pandoc User's Guide]: http://pandoc.org/README.html
23
+[markdown]: http://daringfireball.net/projects/markdown
24
+[markdown "basics" page]: http://daringfireball.net/projects/markdown/basics
25
+[markdown syntax description]: http://daringfireball.net/projects/markdown/syntax 
26
+
27
+Markdown is pretty intuitive, since it is based on email conventions.
28
+Here are some examples to get you started:
29
+
30
++--------------------------------------------------------+------------------------------------------------------------+
31
+| Markdown code                                          | Result                                                     |
32
++========================================================+============================================================+
33
+| `*emphasized text*`                                    | *emphasized text*                                          |
34
++--------------------------------------------------------+------------------------------------------------------------+
35
+| `**strong emphasis**`                                  | **strong emphasis**                                        |
36
++--------------------------------------------------------+------------------------------------------------------------+
37
+| `` `literal text` ``                                   | `literal text`                                             |
38
++--------------------------------------------------------+------------------------------------------------------------+
39
+| `\*escaped special characters\*`                       | \*escaped special characters\*                             |
40
++--------------------------------------------------------+------------------------------------------------------------+
41
+| `[external link](http://google.com)`                   | [external link](http://google.com)                         |
42
++--------------------------------------------------------+------------------------------------------------------------+
43
+| `![folder](/img/icons/folder.png)`                     | ![folder](/img/icons/folder.png)                           |
44
++--------------------------------------------------------+------------------------------------------------------------+
45
+| Wikilink: `[Front Page]()`                             | Wikilink: [Front Page]()                                   |
46
++--------------------------------------------------------+------------------------------------------------------------+
47
+| `H~2~O`                                                | H~2~O                                                      |
48
++--------------------------------------------------------+------------------------------------------------------------+
49
+| `10^100^`                                              | 10^100^                                                    |
50
++--------------------------------------------------------+------------------------------------------------------------+
51
+| `~~strikeout~~`                                        | ~~strikeout~~                                              |
52
++--------------------------------------------------------+------------------------------------------------------------+
53
+| `$x = \frac{{ - b \pm \sqrt {b^2 - 4ac} }}{{2a}}$`     | $x = \frac{{ - b \pm \sqrt {b^2 - 4ac} }}{{2a}}$[^1]       |
54
+|                                                        |                                                            |
55
+|                                                        | [^1]: If this looks like code, it\'s because MathJax is    |
56
+|                                                        | not installed on your system. Contact your administrator   |
57
+|                                                        | to request it.                                             |
58
++--------------------------------------------------------+------------------------------------------------------------+
59
+| `A simple footnote.^[Or is it so simple?]`             | A simple footnote.^[Or is it so simple?]                   |
60
++--------------------------------------------------------+------------------------------------------------------------+
61
+| \> an indented paragraph\ \                            | > an indented paragraph, usually used for quotations       |
62
+| \> usually used for quotations                         |                                                            |
63
++--------------------------------------------------------+------------------------------------------------------------+
64
+|         #!/bin/sh -e                                   |     #!/bin/sh -e                                           |
65
+|         # code, indented four spaces                   |     # code, indented four spaces                           |
66
+|         echo "Hello world"                             |     echo "Hello world"                                     |
67
++--------------------------------------------------------+------------------------------------------------------------+
68
+|     * a bulleted list                                  | - a bulleted list                                          |
69
+|     * second item                                      | - second item                                              |
70
+|         - sublist                                      |     - sublist                                              |
71
+|         - and more                                     |     - and more                                             |
72
+|     * back to main list                                | - back to main list                                        |
73
+|         1. this item has an ordered                    |     1. this item has an ordered                            |
74
+|         2. sublist                                     |     2. sublist                                             |
75
+|                 a) you can also use letters            |         a. you can also use letters                        |
76
+|                 b) another item                        |         b. another item                                    |
77
++--------------------------------------------------------+------------------------------------------------------------+
78
+|      Fruit    Quantity                                 | Fruit     Quantity                                         |
79
+|      ------- ---------                                 | ------- ----------                                         |
80
+|      apples     30,200                                 | apples      30,200                                         |
81
+|      oranges     1,998                                 | oranges      1,998                                         |
82
+|      pears          42                                 | pears           42                                         |
83
+|                                                        |                                                            |
84
+|      Table: Our fruit inventory                        | : Our fruit inventory                                      |
85
++--------------------------------------------------------+------------------------------------------------------------+
86
+
87
+## Headings
88
+
89
+For headings, prefix a line with one or more `#` signs:  one for a major heading,
90
+two for a subheading, three for a subsubheading.  Be sure to leave space before
91
+and after the heading.
92
+
93
+    # Markdown
94
+
95
+    Text...
96
+ 
97
+    ## Some examples...
98
+   
99
+    Text...
100
+
101
+## Wiki links
102
+
103
+Links to other wiki pages are formed this way:  `[Page Name]()`.
104
+(Gitit converts markdown links with empty targets into wikilinks.)
105
+
106
+To link to a wiki page using something else as the link text:
107
+`[something else](Page Name)`.
108
+
109
+Note that page names may contain spaces and some special characters.
110
+They need not be CamelCase.  CamelCase words are *not* automatically
111
+converted to wiki links.
112
+
113
+Wiki pages may be organized into directories.  So, if you have
114
+several pages on wine, you may wish to organize them like so:
115
+
116
+    Wine/Pinot Noir
117
+    Wine/Burgundy
118
+    Wine/Cabernet Sauvignon
119
+
120
+Note that a wiki link `[Burgundy]()` that occurs inside the `Wine`
121
+directory will link to `Wine/Burgundy`, and not to `Burgundy`.
122
+To link to a top-level page called `Burgundy`, you'd have to use
123
+`[Burgundy](/Burgundy)`.
124
+
125
+To link to a directory listing for a subdirectory, use a trailing
126
+slash: `[Wine/]()` will link to a listing of the `Wine` subdirectory.
127
+
128
+# DocBook
129
+
130
+As DocBook is an XML format, opening and closing tags must match
131
+(`<tag>...</tag>`).
132
+
133
++--------------------------------------------------------+------------------------------------------------------------+
134
+| DocBook code                                           | Result                                                     |
135
++========================================================+============================================================+
136
+| `<emphasis>emphasized text</emphasis>`                 | *emphasized text*                                          |
137
++--------------------------------------------------------+------------------------------------------------------------+
138
+| `<emphasis role="strong">strong emphasis</emphasis>`   | **strong emphasis**                                        |
139
++--------------------------------------------------------+------------------------------------------------------------+
140
+| `<literal>literal text</literal>`                      | `literal text`                                             |
141
++--------------------------------------------------------+------------------------------------------------------------+
142
+| XML character entities: `&lt; &gt; &quot;`             | `< > "`                                                    |
143
++--------------------------------------------------------+------------------------------------------------------------+
144
+| `<ulink url="https://en.wikipedia.org/wiki/DocBook">   | [external link](https://en.wikipedia.org/wikiDocBook)      |
145
+| external link</ulink>`                                 |                                                            |
146
++--------------------------------------------------------+------------------------------------------------------------+
147
+| Inserting an image:                                    | ![folder](/img/icons/folder.png)                           |
148
+|                                                        |                                                            |
149
+|     <inlinemediaobject>                                |                                                            |
150
+|      <alt>folder</alt>                                 |                                                            |
151
+|      <imageobject>                                     |                                                            |
152
+|       <imagedata fileref="/img/icons/folder.png" />    |                                                            |
153
+|      </imageobject>                                    |                                                            |
154
+|     </inlinemediaobject>                               |                                                            |
155
++--------------------------------------------------------+------------------------------------------------------------+
156
+| Wikilink: `<ulink url="Front Page">Front Page</ulink>` | Wikilink: [Front Page]()                                   |
157
++--------------------------------------------------------+------------------------------------------------------------+
158
+| `H<subscript>2</subscript>O`                           | H~2~O                                                      |
159
++--------------------------------------------------------+------------------------------------------------------------+
160
+| `10<superscript>100</superscript>`                     | 10^100^                                                    |
161
++--------------------------------------------------------+------------------------------------------------------------+
162
+| `<emphasis role="strikethrough">strikeout</emphasis>`  | ~~strikeout~~                                              |
163
++--------------------------------------------------------+------------------------------------------------------------+
164
+| `$x = \frac{{ - b \pm \sqrt {b^2 - 4ac} }}{{2a}}$`     | $x = \frac{{ - b \pm \sqrt {b^2 - 4ac} }}{{2a}}$[^1]       |
165
+|                                                        |                                                            |
166
+|                                                        | (Use pandoc's `--mathml` option to convert TeX math code.) |
167
++--------------------------------------------------------+------------------------------------------------------------+
168
+| `A simple footnote.<footnote>Or                        | A simple footnote.^[Or is it so simple?]                   |
169
+| is it so simple?</footnote>`                           |                                                            |
170
++--------------------------------------------------------+------------------------------------------------------------+
171
+| `<blockquote>an indented paragraph, usually used       | > an indented paragraph, usually used for quotations       |
172
+| for quotations</blockquote>`                           |                                                            |
173
++--------------------------------------------------------+------------------------------------------------------------+
174
+|     <programlisting>                                   |     #!/bin/sh -e                                           |
175
+|     #!/bin/sh -e`                                      |     echo "Hello world"                                     |
176
+|     echo "Hello world"                                 |                                                            |
177
+|     </programlisting>                                  |                                                            |
178
++--------------------------------------------------------+------------------------------------------------------------+
179
+|     <itemizedlist spacing="compact">                   | - a bulleted list                                          |
180
+|      <listitem>                                        | - second item                                              |
181
+|       <simpara>a bulleted list</simpara>               |     - sublist                                              |
182
+|      </listitem>                                       |     - and more                                             |
183
+|      <listitem>                                        | - back to main list                                        |
184
+|       <simpara>second item</simpara>                   |     1. this item has an ordered                            |
185
+|       <itemizedlist spacing="compact">                 |     2. sublist                                             |
186
+|        <listitem>                                      |         a. you can also use letters                        |
187
+|         <simpara>sublist</simpara>                     |         b. another item                                    |
188
+|        </listitem>                                     |                                                            |
189
+|        <listitem>                                      |                                                            |
190
+|         <simpara>and more</simpara>                    |                                                            |
191
+|        </listitem>                                     |                                                            |
192
+|       </itemizedlist>                                  |                                                            |
193
+|      </listitem>                                       |                                                            |
194
+|      <listitem>                                        |                                                            |
195
+|       <simpara>back to main list</simpara>             |                                                            |
196
+|       <orderedlist spacing="compact">                  |                                                            |
197
+|        <listitem>                                      |                                                            |
198
+|         <simpara>this item has an ordered</simpara>    |                                                            |
199
+|        </listitem>                                     |                                                            |
200
+|        <listitem>                                      |                                                            |
201
+|         <simpara>sublist</simpara>                     |                                                            |
202
+|        <orderedlist spacing="compact"                  |                                                            |
203
+|                     numeration="loweralpha">           |                                                            |
204
+|          <listitem>                                    |                                                            |
205
+|           <simpara>you can also use letters</simpara>  |                                                            |
206
+|          </listitem>                                   |                                                            |
207
+|          <listitem>                                    |                                                            |
208
+|           <simpara>another item</simpara>              |                                                            |
209
+|          </listitem>                                   |                                                            |
210
+|         </orderedlist>                                 |                                                            |
211
+|        </listitem>                                     |                                                            |
212
+|       </orderedlist>                                   |                                                            |
213
+|      </listitem>                                       |                                                            |
214
+|     </itemizedlist>                                    |                                                            |
215
++--------------------------------------------------------+------------------------------------------------------------+
216
+|     <table>                                            | Fruit     Quantity                                         |
217
+|      <title>Our fruit inventory</title>                | ------- ----------                                         |
218
+|      <tgroup cols="2">                                 | apples      30,200                                         |
219
+|       <colspec align="left" />                         | oranges      1,998                                         |
220
+|       <colspec align="right" />                        | pears           42                                         |
221
+|       <thead>                                          |                                                            |
222
+|        <row>                                           | : Our fruit inventory                                      |
223
+|         <entry>Fruit</entry>                           |                                                            |
224
+|         <entry>Quantity</entry>                        |                                                            |
225
+|        </row>                                          |                                                            |
226
+|       </thead>                                         |                                                            |
227
+|       <tbody>                                          |                                                            |
228
+|        <row>                                           |                                                            |
229
+|         <entry>apples</entry>                          |                                                            |
230
+|         <entry>30,200</entry>                          |                                                            |
231
+|       </row>                                           |                                                            |
232
+|        <row>                                           |                                                            |
233
+|         <entry>oranges</entry>                         |                                                            |
234
+|         <entry>1,998</entry>                           |                                                            |
235
+|        </row>                                          |                                                            |
236
+|        <row>                                           |                                                            |
237
+|         <entry>pears</entry>                           |                                                            |
238
+|         <entry>42</entry>                              |                                                            |
239
+|        </row>                                          |                                                            |
240
+|      </tbody>                                          |                                                            |
241
+|      </tgroup>                                         |                                                            |
242
+|     </table>                                           |                                                            |
243
++--------------------------------------------------------+------------------------------------------------------------+
244
+
245
+## Headings
246
+
247
+A heading is given as the `<title>` element of a `<section>`:
248
+
249
+<pre>
250
+&lt;section&gt;
251
+ &lt;title&gt;Heading&lt;/title&gt;
252
+ &lt;simpara&gt;This is a top level section.&lt;/simpara&gt;
253
+ &lt;section&gt;
254
+  &lt;title&gt;Subheading&lt;/title&gt;
255
+  &lt;simpara&gt;This is a second level section.&lt;/simpara&gt;
256
+ &lt;/section&gt;
257
+&lt;/section&gt;
258
+</pre>
259
+
260
+## Wiki links
261
+
262
+Links to other wiki pages are formed this way:
263
+`<ulink url="Page Name">Page Name</ulink>`
264
+
265
+To link to a wiki page using something else as the link text:
266
+`<ulink url="Page Name">something else</ulink>`.
267
+
268
+Note that page names may contain spaces and some special characters.
269
+They need not be CamelCase.  CamelCase words are *not* automatically
270
+converted to wiki links.
271
+
272
+Wiki pages may be organized into directories.  So, if you have
273
+several pages on wine, you may wish to organize them like so:
274
+
275
+    Wine/Pinot Noir
276
+    Wine/Burgundy
277
+    Wine/Cabernet Sauvignon
278
+
279
+Note that a wiki link `<ulink url="Burgundy">Burgundy</ulink>`
280
+that occurs inside the `Wine` directory will link to `Wine/Burgundy`,
281
+and not to `Burgundy`. To link to a top-level page called `Burgundy`,
282
+you'd have to use `<ulink url="/Burgundy">Burgundy</ulink>`.
283
+
284
+To link to a directory listing for a subdirectory, use a trailing
285
+slash: `<ulink url="Wine/">Wine</ulink>` will link to a listing of
286
+the `Wine` subdirectory.
287
+
288
+## Reference material
289
+
290
+Further reading: [DocBook 5: The Definitive Guide], which includes the
291
+[List of DocBook elements].
292
+
293
+[DocBook 5: The Definitive Guide]: https://tdg.docbook.org/tdg/5.0/docbook.html
294
+[List of DocBook elements]: https://tdg.docbook.org/tdg/5.0/chunk-part-d64e8789.html
295
+
296
+## A sample document
297
+
298
+You might want to use the following document as a resource of DocBook
299
+snippets (copy/paste).
300
+
301
+~~~~~~~~
302
+
303
+<section id="docbook">
304
+ <title>Using DocBook</title>
305
+ <simpara>
306
+  As DocBook is an XML format, opening and closing tags
307
+  must match (&lt;tag&gt;...&lt;/tag&gt;).
308
+ </simpara>
309
+ <section id="inline">
310
+  <title>Text Formatting</title>
311
+  <simpara>
312
+   A simple paragraph.
313
+  </simpara>
314
   <para>
315
-    This wiki's pages are written in
316
-    <ulink url="http://pandoc.org">pandoc</ulink>'s
317
-    extended form of
318
-    <ulink url="http://daringfireball.net/projects/markdown">markdown</ulink>.
319
-    If you're not familiar with markdown, you should start by looking at
320
-    the
321
-    <ulink url="http://daringfireball.net/projects/markdown/basics">markdown
322
-    &quot;basics&quot; page</ulink> and the
323
-    <ulink url="http://daringfireball.net/projects/markdown/syntax">markdown
324
-    syntax description</ulink>. Consult the
325
-    <ulink url="http://pandoc.org/README.html">pandoc
326
-    User's Guide</ulink> for information about pandoc's syntax for
327
-    footnotes, tables, description lists, and other elements not present
328
-    in standard markdown.
329
+   A complex paragraph may contain blocks.
330
   </para>
331
-  <para>
332
-    Markdown is pretty intuitive, since it is based on email
333
-    conventions. Here are some examples to get you started:
334
-  </para>
335
-  <table>
336
-  <tr>
337
-  <td>
338
-  <literal>*emphasized text*</literal>
339
-  </td>
340
-  <td>
341
-  <emphasis>emphasized text</emphasis>
342
-  </td>
343
-  </tr>
344
-  <tr>
345
-  <td>
346
-  <literal>**strong emphasis**</literal>
347
-  </td>
348
-  <td>
349
-  <emphasis role="strong">strong emphasis</emphasis>
350
-  </td>
351
-  </tr>
352
-  <tr>
353
-  <td>
354
-  <literal>`literal text`</literal>
355
-  </td>
356
-  <td>
357
-  <literal>literal text</literal>
358
-  </td>
359
-  </tr>
360
-  <tr>
361
-  <td>
362
-  <literal>\*escaped special characters\*</literal>
363
-  </td>
364
-  <td>
365
-  *escaped special characters*
366
-  </td>
367
-  </tr>
368
-  <tr>
369
-  <td>
370
-  <literal>[external link](http://google.com)</literal>
371
-  </td>
372
-  <td>
373
-  <ulink url="http://google.com">external link</ulink>
374
-  </td>
375
-  </tr>
376
-  <tr>
377
-  <td>
378
-  <literal>![folder](/img/icons/folder.png)</literal>
379
-  </td>
380
-  <td>
381
-  <inlinemediaobject>
382
+  <simpara>
383
+   italics: <emphasis>italics</emphasis>,
384
+   bold: <emphasis role="strong">bold</emphasis>,
385
+   strikeout: <emphasis role="strikethrough">strikeout</emphasis>,
386
+   inline code snippets: <literal>inline code</literal>.
387
+  </simpara>
388
+  <simpara>
389
+   Links:
390
+   <ulink url="http://foo.bar/baz">external</ulink>,
391
+   <ulink url="Pagename">internal Wiki Link</ulink>.
392
+  </simpara>
393
+  <simpara>
394
+   Inserting an image:
395
+   <inlinemediaobject>
396
     <imageobject>
397
-      <imagedata fileref="/img/icons/folder.png" />
398
+     <imagedata fileref="/img/icons/folder.png" />
399
     </imageobject>
400
-  </inlinemediaobject>
401
-  </td>
402
-  </tr>
403
-  <tr>
404
-  <td>
405
-  Wikilink: <literal>[Front Page]()</literal>
406
-  </td>
407
-  <td>
408
-  Wikilink: <ulink url="">Front Page</ulink>
409
-  </td>
410
-  </tr>
411
-  <tr>
412
-  <td>
413
-  <literal>H~2~O</literal>
414
-  </td>
415
-  <td>
416
-  H<subscript>2</subscript>O
417
-  </td>
418
-  </tr>
419
-  <tr>
420
-  <td>
421
-  <literal>10^100^</literal>
422
-  </td>
423
-  <td>
424
-  10<superscript>100</superscript>
425
-  </td>
426
-  </tr>
427
-  <tr>
428
-  <td>
429
-  <literal>~~strikeout~~</literal>
430
-  </td>
431
-  <td>
432
-  <emphasis role="strikethrough">strikeout</emphasis>
433
-  </td>
434
-  </tr>
435
-  <tr>
436
-  <td>
437
-  <literal>$x = \frac{{ - b \pm \sqrt {b^2 - 4ac} }}{{2a}}$</literal>
438
-  </td>
439
-  <td>
440
-  $x = \frac{{ - b \pm \sqrt {b^2 - 4ac} }}{{2a}}$<footnote>
441
-    <para>
442
-      If this looks like code, it's because MathJax is not installed on
443
-      your system. Contact your administrator to request it.
444
-    </para>
445
-  </footnote>
446
-  </td>
447
-  </tr>
448
-  <tr>
449
-  <td>
450
-  <literal>A simple footnote.^[Or is it so simple?]</literal>
451
-  </td>
452
-  <td>
453
-  A simple footnote.<footnote>
454
-    <para>
455
-      Or is it so simple?
456
-    </para>
457
-  </footnote>
458
-  </td>
459
-  </tr>
460
-  <tr>
461
-  <td>
462
-  <pre>
463
-  > an indented paragraph,
464
-  > usually used for quotations
465
-  </pre>
466
-  </td>
467
-  <td>
468
-  <blockquote>
469
-    <para>
470
-      an indented paragraph, usually used for quotations
471
-    </para>
472
-  </blockquote>
473
-  </td>
474
-  <tr>
475
-  <td>
476
-  <pre>
477
-      #!/bin/sh -e
478
-      # code, indented four spaces
479
-      echo "Hello world"
480
-  </pre>
481
-  </td>
482
-  <td>
483
-  <programlisting>
484
+   </inlinemediaobject>
485
+  </simpara>
486
+ </section>
487
+ <section id="blocks">
488
+  <title>Text Blocks</title>
489
+  <para>
490
+   Quotation:
491
+   <blockquote>
492
+    <simpara>
493
+     A quotation set off from the main text.
494
+    </simpara>
495
+   </blockquote>
496
+  </para>
497
+  <para>
498
+   Code listing:
499
+   <programlisting>
500
 #!/bin/sh -e
501
-# code, indented four spaces
502
 echo &quot;Hello world&quot;
503
-</programlisting>
504
-  </td>
505
-  </tr>
506
-  <tr>
507
-  <td>
508
-  <pre>
509
-  * a bulleted list
510
-  * second item
511
-      - sublist
512
-      - and more
513
-  * back to main list
514
-      1. this item has an ordered
515
-      2. sublist
516
-          a) you can also use letters
517
-          b) another item
518
-  </pre>
519
-  </td>
520
-  <td>
521
-  <itemizedlist spacing="compact">
522
+   </programlisting>
523
+  </para>
524
+ </section>
525
+ <section id="lists">
526
+  <title>Lists</title>
527
+  <para>
528
+   Simple list:
529
+   <itemizedlist spacing="compact">
530
     <listitem>
531
-      <para>
532
-        a bulleted list
533
-      </para>
534
+     <simpara>
535
+      first
536
+     </simpara>
537
     </listitem>
538
     <listitem>
539
-      <para>
540
-        second item
541
-      </para>
542
-      <itemizedlist spacing="compact">
543
-        <listitem>
544
-          <para>
545
-            sublist
546
-          </para>
547
-        </listitem>
548
-        <listitem>
549
-          <para>
550
-            and more
551
-          </para>
552
-        </listitem>
553
-      </itemizedlist>
554
-    </listitem>
555
+     <simpara>
556
+      second
557
+     </simpara>
558
+    </listitem> 
559
+   </itemizedlist>
560
+   Numbered list:
561
+   <orderedlist spacing="compact">
562
     <listitem>
563
-      <para>
564
-        back to main list
565
-      </para>
566
-      <orderedlist numeration="arabic" spacing="compact">
567
-        <listitem>
568
-          <para>
569
-            this item has an ordered
570
-          </para>
571
-        </listitem>
572
-        <listitem>
573
-          <para>
574
-            sublist
575
-          </para>
576
-          <orderedlist numeration="loweralpha" spacing="compact">
577
-            <listitem>
578
-              <para>
579
-                you can also use letters
580
-              </para>
581
-            </listitem>
582
-            <listitem>
583
-              <para>
584
-                another item
585
-              </para>
586
-            </listitem>
587
-          </orderedlist>
588
-        </listitem>
589
-      </orderedlist>
590
+     <simpara>
591
+      first
592
+     </simpara>
593
     </listitem>
594
-  </itemizedlist>
595
-  </td>
596
-  </tr>
597
-  <tr>
598
-  <td>
599
-  <pre>
600
-  Fruit        Quantity
601
-  --------  -----------
602
-  apples         30,200
603
-  oranges         1,998
604
-  pears              42
605
-
606
-  Table:  Our fruit inventory
607
-  </pre>
608
-  </td>
609
-  <td>
610
-  <table>
611
-    <title>
612
-      Our fruit inventory
613
-    </title>
614
-    <tgroup cols="2">
615
-      <colspec align="left" />
616
-      <colspec align="right" />
617
-      <thead>
618
-        <row>
619
-          <entry>
620
-            Fruit
621
-          </entry>
622
-          <entry>
623
-            Quantity
624
-          </entry>
625
-        </row>
626
-      </thead>
627
-      <tbody>
628
-        <row>
629
-          <entry>
630
-            apples
631
-          </entry>
632
-          <entry>
633
-            30,200
634
-          </entry>
635
-        </row>
636
-        <row>
637
-          <entry>
638
-            oranges
639
-          </entry>
640
-          <entry>
641
-            1,998
642
-          </entry>
643
-        </row>
644
-        <row>
645
-          <entry>
646
-            pears
647
-          </entry>
648
-          <entry>
649
-            42
650
-          </entry>
651
-        </row>
652
-      </tbody>
653
-    </tgroup>
654
-  </table>
655
-  </td>
656
-  </tr>
657
-  </table>
658
-  <para>
659
-    For headings, prefix a line with one or more <literal>#</literal>
660
-    signs: one for a major heading, two for a subheading, three for a
661
-    subsubheading. Be sure to leave space before and after the heading.
662
+    <listitem>
663
+     <simpara>
664
+      second
665
+     </simpara>
666
+    </listitem> 
667
+   </orderedlist>
668
+   Definition list:
669
+   <variablelist>
670
+    <varlistentry>
671
+     <term>
672
+      DocBook
673
+     </term>
674
+     <listitem>
675
+      <simpara>
676
+       A sophisticated XML format.
677
+      </simpara>
678
+     </listitem>
679
+    </varlistentry>
680
+    <varlistentry>
681
+     <term>
682
+      orange
683
+     </term>
684
+     <listitem>
685
+      <simpara>
686
+       A healthy fruit.
687
+      </simpara>
688
+     </listitem>
689
+     <listitem>
690
+      <simpara>
691
+       A warm colour.
692
+      </simpara>
693
+     </listitem>
694
+    </varlistentry>
695
+   </variablelist>
696
   </para>
697
-  <programlisting>
698
-# Markdown
699
+ </section>
700
+</section>
701
 
702
-Text...
703
-
704
-## Some examples...
705
-
706
-Text...
707
-</programlisting>
708
-  <sect2 id="wiki-links">
709
-    <title>Wiki links</title>
710
-    <para>
711
-      Links to other wiki pages are formed this way:
712
-      <literal>[Page Name]()</literal>. (Gitit converts markdown links
713
-      with empty targets into wikilinks.)
714
-    </para>
715
-    <para>
716
-      To link to a wiki page using something else as the link text:
717
-      <literal>[something else](Page Name)</literal>.
718
-    </para>
719
-    <para>
720
-      Note that page names may contain spaces and some special
721
-      characters. They need not be CamelCase. CamelCase words are
722
-      <emphasis>not</emphasis> automatically converted to wiki links.
723
-    </para>
724
-    <para>
725
-      Wiki pages may be organized into directories. So, if you have
726
-      several pages on wine, you may wish to organize them like so:
727
-    </para>
728
-    <programlisting>
729
-Wine/Pinot Noir
730
-Wine/Burgundy
731
-Wine/Cabernet Sauvignon
732
-</programlisting>
733
-    <para>
734
-      Note that a wiki link <literal>[Burgundy]()</literal> that occurs
735
-      inside the <literal>Wine</literal> directory will link to
736
-      <literal>Wine/Burgundy</literal>, and not to
737
-      <literal>Burgundy</literal>. To link to a top-level page called
738
-      <literal>Burgundy</literal>, you'd have to use
739
-      <literal>[Burgundy](/Burgundy)</literal>.
740
-    </para>
741
-    <para>
742
-      To link to a directory listing for a subdirectory, use a trailing
743
-      slash: <literal>[Wine/]()</literal> will link to a listing of the
744
-      <literal>Wine</literal> subdirectory.
745
-    </para>
746
-  </sect2>
747
-</sect1>
748
+~~~~~~~~
(-)b/www/hs-gitit/files/patch-data_markupHelp_DocBook (+125 lines)
Added Link Here
1
--- data/markupHelp/DocBook.orig	2023-07-10 15:44:20 UTC
2
+++ data/markupHelp/DocBook
3
@@ -0,0 +1,122 @@
4
+~~~~~~~~
5
+
6
+<section id="docbook">
7
+ <title>Using DocBook</title>
8
+ <simpara>
9
+  As DocBook is an XML format, opening and closing tags
10
+  must match (&lt;tag&gt;...&lt;/tag&gt;).
11
+ </simpara>
12
+ <section id="inline">
13
+  <title>Text Formatting</title>
14
+  <simpara>
15
+   A simple paragraph.
16
+  </simpara>
17
+  <para>
18
+   A complex paragraph may contain blocks.
19
+  </para>
20
+  <simpara>
21
+   italics: <emphasis>italics</emphasis>,
22
+   bold: <emphasis role="strong">bold</emphasis>,
23
+   strikeout: <emphasis role="strikethrough">strikeout</emphasis>,
24
+   inline code snippets: <literal>inline code</literal>.
25
+  </simpara>
26
+  <simpara>
27
+   Links:
28
+   <ulink url="http://foo.bar/baz">external</ulink>,
29
+   <ulink url="Pagename">internal Wiki Link</ulink>.
30
+  </simpara>
31
+  <simpara>
32
+   Inserting an image:
33
+   <inlinemediaobject>
34
+    <alt>folder</alt>
35
+    <imageobject>
36
+     <imagedata fileref="/img/icons/folder.png" />
37
+    </imageobject>
38
+   </inlinemediaobject>
39
+  </simpara>
40
+ </section>
41
+ <section id="blocks">
42
+  <title>Text Blocks</title>
43
+  <para>
44
+   Quotation:
45
+   <blockquote>
46
+    <simpara>
47
+     A quotation set off from the main text.
48
+    </simpara>
49
+   </blockquote>
50
+  </para>
51
+  <para>
52
+   Code listing:
53
+   <programlisting>
54
+#!/bin/sh -e
55
+echo &quot;Hello world&quot;
56
+   </programlisting>
57
+  </para>
58
+ </section>
59
+ <section id="lists">
60
+  <title>Lists</title>
61
+  <para>
62
+   Simple list:
63
+   <itemizedlist spacing="compact">
64
+    <listitem>
65
+     <simpara>
66
+      first
67
+     </simpara>
68
+    </listitem>
69
+    <listitem>
70
+     <simpara>
71
+      second
72
+     </simpara>
73
+    </listitem> 
74
+   </itemizedlist>
75
+   Numbered list:
76
+   <orderedlist spacing="compact">
77
+    <listitem>
78
+     <simpara>
79
+      first
80
+     </simpara>
81
+    </listitem>
82
+    <listitem>
83
+     <simpara>
84
+      second
85
+     </simpara>
86
+    </listitem> 
87
+   </orderedlist>
88
+   Definition list:
89
+   <variablelist>
90
+    <varlistentry>
91
+     <term>
92
+      DocBook
93
+     </term>
94
+     <listitem>
95
+      <simpara>
96
+       A sophisticated XML format.
97
+      </simpara>
98
+     </listitem>
99
+    </varlistentry>
100
+    <varlistentry>
101
+     <term>
102
+      orange
103
+     </term>
104
+     <listitem>
105
+      <simpara>
106
+       A healthy fruit.
107
+      </simpara>
108
+     </listitem>
109
+     <listitem>
110
+      <simpara>
111
+       A warm colour.
112
+      </simpara>
113
+     </listitem>
114
+    </varlistentry>
115
+   </variablelist>
116
+  </para>
117
+ </section>
118
+</section>
119
+ 
120
+~~~~~~~~
121
+
122
+Further reading:
123
+[DocBook 5: The Definitive Guide](https://tdg.docbook.org/tdg/5.0/docbook.html),
124
+which includes the
125
+[List of DocBook elements](https://tdg.docbook.org/tdg/5.0/chunk-part-d64e8789.html).
(-)b/www/hs-gitit/files/patch-gitit.cabal (+31 lines)
Added Link Here
1
--- gitit.cabal.orig	2001-09-09 01:46:40 UTC
2
+++ gitit.cabal
3
@@ -104,6 +104,10 @@ Flag plugins
4
                      plugins should disable this flag.
5
   default:           True
6
 
7
+Flag with_rtsopts
8
+  description:       Use -with-rtsopts=-I0 to avoid idle GC.
9
+  default:           True
10
+
11
 Library
12
   hs-source-dirs:    src
13
   exposed-modules:   Network.Gitit, Network.Gitit.ContentTransformer,
14
@@ -176,6 +180,8 @@ Library
15
     exposed-modules: Network.Gitit.Interface
16
     build-depends:   ghc, ghc-paths
17
     cpp-options:     -D_PLUGINS
18
+  if flag(with_rtsopts)
19
+    cpp-options:     -DRTSOPTS
20
   default-extensions: CPP
21
   default-language:  Haskell2010
22
   ghc-options:       -Wall -fno-warn-unused-do-bind
23
@@ -198,6 +204,8 @@ Executable           gitit
24
   default-extensions: CPP
25
   default-language:  Haskell2010
26
   ghc-options:       -Wall -threaded -fno-warn-unused-do-bind
27
+  if flag(with_rtsopts)
28
+    ghc-options:     -rtsopts=all -with-rtsopts=-I0
29
   ghc-prof-options:  -fprof-auto-exported -rtsopts
30
 
31
 Executable           expireGititCache
(-)b/www/hs-gitit/files/patch-src_Network_Gitit_Initialize.hs (+14 lines)
Added Link Here
1
--- src/Network/Gitit/Initialize.hs.orig	2001-09-09 01:46:40 UTC
2
+++ src/Network/Gitit/Initialize.hs
3
@@ -123,7 +123,10 @@ createDefaultPages :: Config -> IO ()
4
 createDefaultPages conf = do
5
     let fs = filestoreFromConfig conf
6
         pt = defaultPageType conf
7
-        toPandoc = readMarkdown def{ readerExtensions = enableExtension Ext_smart (readerExtensions def) }
8
+        rOpts = def{ readerExtensions = getDefaultExtensions "markdown"
9
+                                        <> extensionsFromList [Ext_smart]
10
+                                        <> readerExtensions def }
11
+        toPandoc = readMarkdown rOpts
12
         defOpts = def{ writerExtensions = if showLHSBirdTracks conf
13
                                              then enableExtension
14
                                                   Ext_literate_haskell
(-)b/www/hs-gitit/files/patch-src_Network_Gitit_Util.hs (+10 lines)
Added Link Here
1
--- src/Network/Gitit/Util.hs.orig	2001-09-09 01:46:40 UTC
2
+++ src/Network/Gitit/Util.hs
3
@@ -115,6 +115,7 @@ parsePageType s =
4
        "latex"        -> (LaTeX,False)
5
        "latex+lhs"    -> (LaTeX,True)
6
        "org"          -> (Org,False)
7
+       "docbook"      -> (DocBook,False)
8
        "mediawiki"    -> (MediaWiki,False)
9
        x              -> error $ "Unknown page type: " ++ x
10
 
(-)b/www/hs-gitit/pkg-descr (+19 lines)
Added Link Here
1
Gitit is a wiki program written in Haskell. It uses Happstack for the
2
web server and pandoc for markup processing. Pages and uploaded files
3
are stored in a git, darcs, or mercurial repository and may be
4
modified either by using the VCS's command-line tools or through
5
the wiki's web interface. By default, pandoc's extended version of
6
markdown is used as a markup language, but reStructuredText, LaTeX,
7
HTML, DocBook, or Emacs Org-mode markup can also be used. Gitit can
8
be configured to display TeX math (using texmath) and highlighted
9
source code (using highlighting-kate).
10
11
Other features include
12
13
 * plugins: dynamically loaded page transformations written in
14
   Haskell (see "Network.Gitit.Interface")
15
 * categories
16
 * caching
17
 * Atom feeds (site-wide and per-page)
18
 * a library, "Network.Gitit", that makes it simple to include
19
   a gitit wiki in any happstack application
(-)b/www/hs-gitit/pkg-plist (-1 / +71 lines)
Added Link Here
0
- 
1
%%DATADIR%%/README.markdown
2
%%DATADIR%%/data/default.conf
3
%%DATADIR%%/data/FrontPage.page
4
%%DATADIR%%/data/Help.page
5
%%DATADIR%%/data/markup.DocBook
6
%%DATADIR%%/data/markup.HTML
7
%%DATADIR%%/data/markup.LaTeX
8
%%DATADIR%%/data/markup.Markdown
9
%%DATADIR%%/data/markup.Org
10
%%DATADIR%%/data/markup.RST
11
%%DATADIR%%/data/markup.Textile
12
%%DATADIR%%/data/markupHelp/DocBook
13
%%DATADIR%%/data/markupHelp/HTML
14
%%DATADIR%%/data/markupHelp/LaTeX
15
%%DATADIR%%/data/markupHelp/LaTeX+LHS
16
%%DATADIR%%/data/markupHelp/Markdown
17
%%DATADIR%%/data/markupHelp/Markdown+LHS
18
%%DATADIR%%/data/markupHelp/Org
19
%%DATADIR%%/data/markupHelp/RST
20
%%DATADIR%%/data/markupHelp/RST+LHS
21
%%DATADIR%%/data/post-update
22
%%DATADIR%%/data/s5/default/blank.gif
23
%%DATADIR%%/data/s5/default/bodybg.gif
24
%%DATADIR%%/data/s5/default/framing.css
25
%%DATADIR%%/data/s5/default/iepngfix.htc
26
%%DATADIR%%/data/s5/default/opera.css
27
%%DATADIR%%/data/s5/default/outline.css
28
%%DATADIR%%/data/s5/default/pretty.css
29
%%DATADIR%%/data/s5/default/print.css
30
%%DATADIR%%/data/s5/default/s5-core.css
31
%%DATADIR%%/data/s5/default/slides.css
32
%%DATADIR%%/data/s5/default/slides.js
33
%%DATADIR%%/data/s5/default/slides.min.js
34
%%DATADIR%%/data/static/css/custom.css
35
%%DATADIR%%/data/static/css/highlighting.css
36
%%DATADIR%%/data/static/css/ie.css
37
%%DATADIR%%/data/static/css/print.css
38
%%DATADIR%%/data/static/css/reset-fonts-grids.css
39
%%DATADIR%%/data/static/css/screen.css
40
%%DATADIR%%/data/static/img/icons/feed.png
41
%%DATADIR%%/data/static/img/icons/folder.png
42
%%DATADIR%%/data/static/img/icons/page.png
43
%%DATADIR%%/data/static/img/logo.png
44
%%DATADIR%%/data/static/js/dragdiff.js
45
%%DATADIR%%/data/static/js/footnotes.js
46
%%DATADIR%%/data/static/js/jquery-1.2.6.js
47
%%DATADIR%%/data/static/js/jquery-1.2.6.min.js
48
%%DATADIR%%/data/static/js/jquery-ui-combined-1.6rc2.min.js
49
%%DATADIR%%/data/static/js/jquery-ui.core-1.6rc2.js
50
%%DATADIR%%/data/static/js/jquery-ui.draggable-1.6rc2.js
51
%%DATADIR%%/data/static/js/jquery-ui.droppable-1.6rc2.js
52
%%DATADIR%%/data/static/js/jquery-ui.tabs-1.6rc2.js
53
%%DATADIR%%/data/static/js/jquery.hotkeys-0.7.9.js
54
%%DATADIR%%/data/static/js/jquery.hotkeys-0.7.9.min.js
55
%%DATADIR%%/data/static/js/MathMLinHTML.js
56
%%DATADIR%%/data/static/js/preview.js
57
%%DATADIR%%/data/static/js/search.js
58
%%DATADIR%%/data/static/js/uploadForm.js
59
%%DATADIR%%/data/static/robots.txt
60
%%DATADIR%%/data/templates/content.st
61
%%DATADIR%%/data/templates/expire.st
62
%%DATADIR%%/data/templates/footer.st
63
%%DATADIR%%/data/templates/getuser.st
64
%%DATADIR%%/data/templates/listitem.st
65
%%DATADIR%%/data/templates/logo.st
66
%%DATADIR%%/data/templates/markuphelp.st
67
%%DATADIR%%/data/templates/messages.st
68
%%DATADIR%%/data/templates/page.st
69
%%DATADIR%%/data/templates/pagetools.st
70
%%DATADIR%%/data/templates/sitenav.st
71
%%DATADIR%%/data/templates/userbox.st

Return to bug 273260