Implemented generation of sponsors page + missing assets.
This commit is contained in:
parent
1d44fee399
commit
cf70fe629a
7 changed files with 124 additions and 2 deletions
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
BIN
web/assets/bountysource/bountysource.png
Normal file
BIN
web/assets/bountysource/bountysource.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
BIN
web/assets/bountysource/secondspectrum.png
Normal file
BIN
web/assets/bountysource/secondspectrum.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 52 KiB |
BIN
web/assets/niminaction/banner.jpg
Normal file
BIN
web/assets/niminaction/banner.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 85 KiB |
|
|
@ -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
22
web/sponsors.csv
Normal 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
|
||||||
|
Loading…
Add table
Add a link
Reference in a new issue