mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-19 05:50:30 +00:00
Implemented generation of sponsors page + missing assets.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
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 {
|
||||
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
|
||||
|
Reference in New Issue
Block a user