Implemented generation of sponsors page + missing assets.

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

View file

@ -9,7 +9,7 @@
import import
os, strutils, times, parseopt, parsecfg, streams, strtabs, tables, os, strutils, times, parseopt, parsecfg, streams, strtabs, tables,
re, htmlgen, macros, md5, osproc re, htmlgen, macros, md5, osproc, parsecsv
type type
TKeyValPair = tuple[key, id, val: string] TKeyValPair = tuple[key, id, val: string]
@ -29,6 +29,15 @@ type
TAction = enum TAction = enum
actAll, actOnlyWebsite, actPdf actAll, actOnlyWebsite, actPdf
Sponsor = object
logo: string
name: string
url: string
thisMonth: int
allTime: int
since: string
level: int
var action: TAction var action: TAction
proc initConfigData(c: var TConfigData) = proc initConfigData(c: var TConfigData) =
@ -83,6 +92,7 @@ Compile_options:
rYearMonthDayTitle = r"(\d{4})-(\d{2})-(\d{2})\s+(.*)" rYearMonthDayTitle = r"(\d{4})-(\d{2})-(\d{2})\s+(.*)"
rssUrl = "http://nim-lang.org/news.xml" rssUrl = "http://nim-lang.org/news.xml"
rssNewsUrl = "http://nim-lang.org/news.html" rssNewsUrl = "http://nim-lang.org/news.html"
sponsors = "web/sponsors.csv"
validAnchorCharacters = Letters + Digits validAnchorCharacters = Letters + Digits
@ -407,6 +417,30 @@ proc buildJS(destPath: string) =
exec("nim js -d:release --out:$1 web/nimblepkglist.nim" % exec("nim js -d:release --out:$1 web/nimblepkglist.nim" %
[destPath / "nimblepkglist.js"]) [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) = proc buildWebsite(c: var TConfigData) =
const const
cmd = "nim rst2html --compileonly $1 -o:web/$2.temp web/$2.txt" cmd = "nim rst2html --compileonly $1 -o:web/$2.temp web/$2.txt"
@ -438,6 +472,7 @@ proc buildWebsite(c: var TConfigData) =
removeFile(temp) removeFile(temp)
copyDir("web/assets", "web/upload/assets") copyDir("web/assets", "web/upload/assets")
buildNewsRss(c, "web/upload") buildNewsRss(c, "web/upload")
buildSponsors(c, sponsors, "web/upload")
proc main(c: var TConfigData) = proc main(c: var TConfigData) =
buildWebsite(c) buildWebsite(c)

View file

@ -209,3 +209,37 @@ runForever()
# end if # end if
</body> </body>
</html> </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 { #bountysource a, #bountysource a:visited, #bountysource a:hover {
color: #1a1a1a; 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