Implemented generation of sponsors page + missing assets.

This commit is contained in:
Dominik Picheta
2016-06-04 17:16:20 +01:00
parent 1d44fee399
commit cf70fe629a
7 changed files with 124 additions and 2 deletions

View File

@@ -9,7 +9,7 @@
import
os, strutils, times, parseopt, parsecfg, streams, strtabs, tables,
re, htmlgen, macros, md5, osproc
re, htmlgen, macros, md5, osproc, parsecsv
type
TKeyValPair = tuple[key, id, val: string]
@@ -29,6 +29,15 @@ type
TAction = enum
actAll, actOnlyWebsite, actPdf
Sponsor = object
logo: string
name: string
url: string
thisMonth: int
allTime: int
since: string
level: int
var action: TAction
proc initConfigData(c: var TConfigData) =
@@ -83,6 +92,7 @@ Compile_options:
rYearMonthDayTitle = r"(\d{4})-(\d{2})-(\d{2})\s+(.*)"
rssUrl = "http://nim-lang.org/news.xml"
rssNewsUrl = "http://nim-lang.org/news.html"
sponsors = "web/sponsors.csv"
validAnchorCharacters = Letters + Digits
@@ -407,6 +417,30 @@ proc buildJS(destPath: string) =
exec("nim js -d:release --out:$1 web/nimblepkglist.nim" %
[destPath / "nimblepkglist.js"])
proc readSponsors(sponsorsFile: string): seq[Sponsor] =
result = @[]
var fileStream = newFileStream(sponsorsFile, fmRead)
if fileStream == nil: quit("Cannot open sponsors.csv file: " & sponsorsFile)
var parser: CsvParser
open(parser, fileStream, sponsorsFile)
discard readRow(parser) # Skip the header row.
while readRow(parser):
result.add(Sponsor(logo: parser.row[0], name: parser.row[1],
url: parser.row[2], thisMonth: parser.row[3].parseInt,
allTime: parser.row[4].parseInt,
since: parser.row[5], level: parser.row[6].parseInt))
parser.close()
proc buildSponsors(c: var TConfigData, sponsorsFile: string, outputDir: string) =
let sponsors = generateSponsors(readSponsors(sponsorsFile))
let outFile = outputDir / "sponsors.html"
var f: File
if open(f, outFile, fmWrite):
writeLine(f, generateHtmlPage(c, "Our Sponsors", sponsors, ""))
close(f)
else:
quit("[Error] Cannot write file: " & outFile)
proc buildWebsite(c: var TConfigData) =
const
cmd = "nim rst2html --compileonly $1 -o:web/$2.temp web/$2.txt"
@@ -438,6 +472,7 @@ proc buildWebsite(c: var TConfigData) =
removeFile(temp)
copyDir("web/assets", "web/upload/assets")
buildNewsRss(c, "web/upload")
buildSponsors(c, sponsors, "web/upload")
proc main(c: var TConfigData) =
buildWebsite(c)

View File

@@ -209,3 +209,37 @@ runForever()
# end if
</body>
</html>
#end proc
#
#proc generateSponsors(sponsors: seq[Sponsor]): string =
#result = ""
<h1 id="our-current-sponsors">Our Current Sponsors</h1>
<p>This page lists the companies and individuals that are, very kindly, contributing a
monthly amount to help sustain Nim's development. For more details take a
look at the <a href="https://salt.bountysource.com/teams/nim">Bountysource campaign</a>.</p>
<dl>
#for sponsor in sponsors:
<dt class="level-${sponsor.level}">
#if sponsor.url.len > 0:
<a href="${sponsor.url}" target="_blank">${sponsor.name}</a>
#else:
${sponsor.name}
#end if
</dt>
<dd class="logo">
#if sponsor.logo.len > 0:
<a href="${sponsor.url}" target="_blank">
<img alt="${sponsor.name}'s logo" src="${sponsor.logo}"/>
</a>
#end if
</dd>
<dd class="this_month">
Donated <b>$$${sponsor.thisMonth}</b> this month
</dd>
<dd class="legend">
Donated $$${sponsor.allTime} in total since ${sponsor.since}
</dd>
#end for
</dl>
#
#end proc

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

View File

@@ -572,5 +572,36 @@ pre .end { background:url("images/tabEnd.png") no-repeat left bottom; }
#bountysource a, #bountysource a:visited, #bountysource a:hover {
color: #1a1a1a;
}
/* Current sponsors page */
dt {
font-size: 20pt;
clear: both;
margin-bottom: 10pt;
}
dd.logo {
width: 200px;
min-height: 50px;
margin-bottom: 10pt;
margin-right: 20pt;
float: left;
}
dd.logo img {
max-height: 200px;
}
dd.this_month {
font-size: 20pt;
}
dt a, dt a:visited, dt a:hover {
color: #1d1d1d !important;
}
dt.level-1 {
color: #2f2f2f !important;
}

22
web/sponsors.csv Normal file
View File

@@ -0,0 +1,22 @@
logo,name,url,this_month,all_time,since,level
assets/bountysource/secondspectrum.png,Second Spectrum,http://www.secondspectrum.com/,250,250,"May 5, 2016",250
,flyx,http://flyx.org,35,70,"Apr 7, 2016",25
,Adrian Veith,https://github.com/AdrianV,25,50,"Apr 20, 2016",25
,Federico Ceratto,http://firelet.net,25,50,"Apr 7, 2016",25
,Lloyd Moore,https://github.com/iolloyd,25,50,"Apr 29, 2016",25
,Ruslan Mustakov,https://github.com/endragor,25,50,"Apr 7, 2016",25
,Yuriy Glukhov,https://github.com/yglukhov/,25,50,"Apr 6, 2016",25
,TedSinger,https://github.com/TedSinger,15,30,"Apr 9, 2016",10
,Pradeep Gowda,https://www.btbytes.com/,10,20,"Apr 6, 2016",10
,Jonathan Arnett,http://j3rn.com,10,10,"May 20, 2016",10
,niebaopeng,https://github.com/niebaopeng,10,10,"Apr 15, 2016",10
,Handojo Goenadi,,5,10,"Apr 19, 2016",5
,John Novak,http://www.johnnovak.net/,5,10,"Apr 29, 2016",5
,Matthew Newton,,5,10,"Apr 20, 2016",5
,McSpiros,https://github.com/SpirosMakris,5,10,"Apr 6, 2016",5
,Mirek Rusin,http://quartzcomposer.com,5,10,"Apr 9, 2016",5
,pyloor,https://github.com/pyloor,5,10,"May 16, 2016",5
,Sokolov Yura,https://github.com/funny-falcon,5,10,"Apr 7, 2016",5
,Ivan Florentin,https://github.com/ivanflorentin,5,5,"May 2, 2016",5
,Michael D. Sklaroff,,1,2,"Apr 27, 2016",1
,Svend Knudsen,,1,2,"Apr 11, 2016",1
1 logo name url this_month all_time since level
2 assets/bountysource/secondspectrum.png Second Spectrum http://www.secondspectrum.com/ 250 250 May 5, 2016 250
3 flyx http://flyx.org 35 70 Apr 7, 2016 25
4 Adrian Veith https://github.com/AdrianV 25 50 Apr 20, 2016 25
5 Federico Ceratto http://firelet.net 25 50 Apr 7, 2016 25
6 Lloyd Moore https://github.com/iolloyd 25 50 Apr 29, 2016 25
7 Ruslan Mustakov https://github.com/endragor 25 50 Apr 7, 2016 25
8 Yuriy Glukhov https://github.com/yglukhov/ 25 50 Apr 6, 2016 25
9 TedSinger https://github.com/TedSinger 15 30 Apr 9, 2016 10
10 Pradeep Gowda https://www.btbytes.com/ 10 20 Apr 6, 2016 10
11 Jonathan Arnett http://j3rn.com 10 10 May 20, 2016 10
12 niebaopeng https://github.com/niebaopeng 10 10 Apr 15, 2016 10
13 Handojo Goenadi 5 10 Apr 19, 2016 5
14 John Novak http://www.johnnovak.net/ 5 10 Apr 29, 2016 5
15 Matthew Newton 5 10 Apr 20, 2016 5
16 McSpiros https://github.com/SpirosMakris 5 10 Apr 6, 2016 5
17 Mirek Rusin http://quartzcomposer.com 5 10 Apr 9, 2016 5
18 pyloor https://github.com/pyloor 5 10 May 16, 2016 5
19 Sokolov Yura https://github.com/funny-falcon 5 10 Apr 7, 2016 5
20 Ivan Florentin https://github.com/ivanflorentin 5 5 May 2, 2016 5
21 Michael D. Sklaroff 1 2 Apr 27, 2016 1
22 Svend Knudsen 1 2 Apr 11, 2016 1