def dict2links(d): rs = [] for k in sorted(d.keys()): if k.isupper() or k in ('name', 'authored', 'roles'): continue v = d[k] if k == 'g': rs.append(\ (makeimg('ico-g', 'Google'),\ '<a href="https://www.google.com/search?q={}">{}</a>'.format(escape(v), v))) elif k.endswith('.wp'): lang = k.split('.')[0] # Using ISO 639-1 language names ico = makeimg('ico-wp', 'Wikipedia') + makeimg('ico-'+lang, ISONames[lang]) lang = k.split('.')[0] r = '<a href="https://{}.wikipedia.org/wiki/{}">{}</a>'.format(\ lang, \ escape(v).replace('%20', '_'), \ v) rs.append((ico, r)) elif k == 'wd': rs.append(\ (makeimg('ico-wd', 'Wikidata'),\ '<a href="https://www.wikidata.org/wiki/{0}">{0}</a>'.format(v))) elif k == 'dblp': # http://dblp.uni-trier.de/pers/hd/m/Major:Elaine if not isinstance(v, str): print('Strange DBLP: “{}”'.format(v)) rs.append(\ (makeimg('ico-dblp', 'DBLP'),\ '<a href="http://dblp.uni-trier.de/pers/hd/{}/{}">DBLP: {}</a>'.format(\ v[0].lower(), escape(v).replace('-', '='), v))) elif k == 'www': if not v.startswith('http'): w = v v = 'http://'+v else: w = v.replace('http://', '').replace('https://', '') rs.append(('', '<a href="{0}">{1}</a>'.format(v, w))) elif k == 'sex': ico = '' rs.append(('', 'Gender: ' + v)) elif k == 'roles': for role in v: ico = makeimg(role[0].lower(), role[0], 30) # if os.path.exists(outputdir + '/stuff/' + role[0].lower() + '.png'): # else: # ico = '' if os.path.exists(outputdir + '/' + role[0] + '-' + role[1] + '.html'): r = '<a href="../{0}-{1}.html">{0}-{1}</a>'.format(role[0], role[1]) else: r = '{0}-{1}'.format(role[0], role[1]) rs.append((ico, r + ' ' + role[2])) else: rs.append(('', '{}: {}'.format(k, v))) # print(rs) return '\n'.join(['<h3>{} {}</h3>'.format(r[0], r[1]) for r in rs])
def kv2link(k, v): if k == 'g': ico = makeimg('g', 'Google') r = '<a href="https://www.google.com/search?q={}">{}</a>'.format( escape(v), v) elif k.endswith('.wp'): lang = k.split('.')[0] # Using ISO 639-1 language names ico = makeimg('wp', 'Wikipedia') + makeimg(lang, ISONames[lang]) lang = k.split('.')[0] r = '<a href="https://{}.wikipedia.org/wiki/{}">{}</a>'.format(\ lang, \ escape(v).replace('%20', '_'), \ v) elif k.endswith('.wb'): lang = k.split('.')[0] # Using ISO 639-1 language names ico = makeimg('wb', 'Wikibooks') + makeimg(lang, ISONames[lang]) lang = k.split('.')[0] r = '<a href="https://{}.wikibooks.org/wiki/{}">{}</a>'.format(\ lang, \ escape(v).replace('%20', '_'), \ v) elif k == 'wd': ico = makeimg('wd', 'Wikidata') r = '<a href="https://www.wikidata.org/wiki/{0}">{0}</a>'.format(v) elif k == 'hwiki': ico = makeimg('h', 'Haskell Wiki') r = '<a href="https://wiki.haskell.org/{}">{}</a>'.format(escape(v), v) elif k == 'so': ico = makeimg('so', 'Stack Overflow') r = '<a href="http://stackoverflow.com/questions/tagged?tagnames={0}">{0}</a>'.format( v) elif k == 'www': ico = '' #makeimg('www', 'Homepage') if not v.startswith('http'): y = v v = 'http://' + v else: y = v.replace('http://', '').replace('https://', '') r = '<a href="{0}">{1}</a>'.format(v, y) elif k == 'aka': ico = '' r = '<br/>'.join(['a.k.a.: “{}”'.format(z) for z in listify(v)]) else: ico = '' r = '?{}?{}?'.format(k, v) return ico + ' ' + r + '<br/>'
def kv2link(k, v): if k == 'g': ico = makeimg('g', 'Google') r = '<a href="https://www.google.com/search?q={}">{}</a>'.format(escape(v), v) elif k.endswith('.wp'): lang = k.split('.')[0] # Using ISO 639-1 language names ico = makeimg('wp', 'Wikipedia') + makeimg(lang, ISONames[lang]) lang = k.split('.')[0] r = '<a href="https://{}.wikipedia.org/wiki/{}">{}</a>'.format(\ lang, \ escape(v).replace('%20', '_'), \ v) elif k.endswith('.wb'): lang = k.split('.')[0] # Using ISO 639-1 language names ico = makeimg('wb', 'Wikibooks') + makeimg(lang, ISONames[lang]) lang = k.split('.')[0] r = '<a href="https://{}.wikibooks.org/wiki/{}">{}</a>'.format(\ lang, \ escape(v).replace('%20', '_'), \ v) elif k == 'wd': ico = makeimg('wd', 'Wikidata') r = '<a href="https://www.wikidata.org/wiki/{0}">{0}</a>'.format(v) elif k == 'hwiki': ico = makeimg('h', 'Haskell Wiki') r = '<a href="https://wiki.haskell.org/{}">{}</a>'.format(escape(v), v) elif k == 'so': ico = makeimg('so', 'Stack Overflow') r = '<a href="http://stackoverflow.com/questions/tagged?tagnames={0}">{0}</a>'.format(v) elif k == 'www': ico = ''#makeimg('www', 'Homepage') if not v.startswith('http'): y = v v = 'http://'+v else: y = v.replace('http://', '').replace('https://', '') r = '<a href="{0}">{1}</a>'.format(v, y) elif k == 'aka': ico = '' r = '<br/>'.join(['a.k.a.: “{}”'.format(z) for z in listify(v)]) else: ico = '' r = '?{}?{}?'.format(k, v) return ico + ' ' + r + '<br/>'
siblings.update([s for s in x.getBareStems() if s != k and ifApproved(s)]) box = '<code>Used together with:</code><hr/>' + \ '\n<br/>'.join(['<span class="tag"><a href="{0}.html">{0}</a></span> ({1})'.format(\ *sn) for sn in siblings.most_common(5)]) f.write(wordHTML.format(\ stem=k, inthebox=box, listname='{} papers'.format(len(lst)), dl='<dl class="toc">' + '\n'.join(lst).replace('href="', 'href="../') + '</dl>')) f.close() print('Word pages:', C.yellow('{}'.format(len(stems))), C.blue('generated')) # stem index f = open(outputdir+'/words.html', 'w', encoding='utf-8') keyz = [k for k in stems.keys() if len(stems[k]) > 100 and ifApproved(k)] keyz.sort(key=lambda t: -len(t), reverse=True) lst = ['<li><a href="word/{}.html">{}</a>$ ({})</li>'.format(\ escape(t), t, len(stems[t])) for t in keyz] ul = '<ul class="tri">' + '\n'.join(lst) + '</ul>' CX = sum([len(stems[t]) for t in stems.keys()]) f.write(wordlistHTML.format(\ title='All known stems', listname='{} stems known and {} shown from {} notable words'.format(len(stems), len(keyz), CX), ul=ul)) f.close() print('Stem index:', C.blue('created')) print('{}\nDone with {} venues, {} papers, {} tags.'.format(\ C.purple('='*42), C.red(len(sleigh.venues)), C.red(sleigh.numOfPapers()), C.red(sleigh.numOfTags())))
def dict2links(d): rs = [] for k in sorted(d.keys()): if k.isupper() or k in ('name', 'authored', 'roles'): continue v = d[k] if k == 'g': rs.append(\ (makeimg('ico-g', 'Google'),\ '<a href="https://www.google.com/search?q={}">{}</a>'.format(escape(v), v))) elif k.endswith('.wp'): lang = k.split('.')[0] # Using ISO 639-1 language names ico = makeimg('ico-wp', 'Wikipedia') + makeimg( 'ico-' + lang, ISONames[lang]) lang = k.split('.')[0] r = '<a href="https://{}.wikipedia.org/wiki/{}">{}</a>'.format(\ lang, \ escape(v).replace('%20', '_'), \ v) rs.append((ico, r)) elif k == 'wd': rs.append(\ (makeimg('ico-wd', 'Wikidata'),\ '<a href="https://www.wikidata.org/wiki/{0}">{0}</a>'.format(v))) elif k == 'dblp': # http://dblp.uni-trier.de/pers/hd/m/Major:Elaine if not isinstance(v, str): print('Strange DBLP: “{}”'.format(v)) rs.append(\ (makeimg('ico-dblp', 'DBLP'),\ '<a href="http://dblp.uni-trier.de/pers/hd/{}/{}">DBLP: {}</a>'.format(\ v[0].lower(), escape(v).replace('-', '='), v))) elif k == 'www': if not v.startswith('http'): w = v v = 'http://' + v else: w = v.replace('http://', '').replace('https://', '') rs.append(('', '<a href="{0}">{1}</a>'.format(v, w))) elif k == 'sex': ico = '' rs.append(('', 'Gender: ' + v)) elif k == 'roles': for role in v: ico = makeimg(role[0].lower(), role[0], 30) # if os.path.exists(outputdir + '/stuff/' + role[0].lower() + '.png'): # else: # ico = '' if os.path.exists(outputdir + '/' + role[0] + '-' + role[1] + '.html'): r = '<a href="../{0}-{1}.html">{0}-{1}</a>'.format( role[0], role[1]) else: r = '{0}-{1}'.format(role[0], role[1]) rs.append((ico, r + ' ' + role[2])) else: rs.append(('', '{}: {}'.format(k, v))) # print(rs) return '\n'.join(['<h3>{} {}</h3>'.format(r[0], r[1]) for r in rs])
} stemkeys = sorted(stems.keys(), key=lambda Z: pad(stems[Z]) + pad(len(Z)) + Z, reverse=True) adds = '<hr/><code>Talks about:</code><hr/>' \ + ' \n'.join(['<span class="tag"><a href="../word/{0}.html">{0}</a></span> ({1})'.format(S, stems[S]) \ for S in stemkeys[:10]]) boxlinks += adds # combine boxlinks if boxlinks: boxlinks = '<div class="tbox">' + boxlinks + '</div>' f.write(personHTML.format(\ title=k, gender=gender, boxlinks=boxlinks, eperson=escape(k), person=persondef['name'], # boxlinks=links namedlists=dls)) f.close() print('Person pages:', C.yellow('{}'.format(len(ps))), C.blue('generated')) # person index # keyz = [k for k in ps.keys() if len(ts[k]) > 2] # keyz = sorted(keyz, key=lambda t:len(ts[t]), reverse=True) keyz = ps #sorted(ps.keys()) letters = [chr(x) for x in range(ord('a'), ord('z') + 1)] indices = {x: [] for x in letters} for t in keyz: ws = t.split('_') i = -1 if ws[i] == 'Jr':
print('{}: {} venues, {} papers\n{}'.format(\ C.purple('BibSLEIGH'), C.red(len(sleigh.venues)), C.red(sleigh.numOfPapers()), C.purple('='*42))) bundles = {} for b in glob.glob(ienputdir + '/bundles/*.json'): purename = b.split('/')[-1][:-5] bun = json.load(open(b, 'r')) prevcx = pcx uberlist = '<h2>{1} papers</h2>{0}'.format(processSortedRel(bun['contents']), pcx-prevcx) f = open(outputdir + '/bundle/' + purename + '.html', 'w') f.write(bunHTML.format(\ title=purename+' bundle', bundle=bun['name'], ebundle=escape(purename), dl=uberlist.replace('href="', 'href="../').replace('../mailto', 'mailto'))) f.close() bundles[purename] = pcx-prevcx print('Bundle pages:', C.yellow('{}'.format(len(bundles))), C.blue('generated')) # now for the index f = open(outputdir+'/bundle/index.html', 'w') lst = ['<li><a href="{}.html">{}</a> ({})</li>'.format(\ escape(b), b, bundles[b]) for b in sorted(bundles.keys())] ul = '<ul class="tri">' + '\n'.join(lst) + '</ul>' f.write(bunListHTML.format(\ title='All specified bundles', listname='{} bundles known with {} papers'.format(len(bundles), sum(bundles.values())), ul='<ul class="tri">' + '\n'.join(lst) + '</ul>'))
for pk in persondef['authored']: allstems += bykey[pk].getBareStems() stems = {stem:allstems.count(stem) for stem in allstems if not ifIgnored(stem)} stemkeys = sorted(stems.keys(), key=lambda Z: pad(stems[Z])+pad(len(Z))+Z, reverse=True) adds = '<hr/><code>Talks about:</code><hr/>' \ + ' \n'.join(['<span class="tag"><a href="../word/{0}.html">{0}</a></span> ({1})'.format(S, stems[S]) \ for S in stemkeys[:10]]) boxlinks += adds # combine boxlinks if boxlinks: boxlinks = '<div class="tbox">' + boxlinks + '</div>' f.write(personHTML.format(\ title=k, gender=gender, boxlinks=boxlinks, eperson=escape(k), person=persondef['name'], # boxlinks=links namedlists=dls)) f.close() print('Person pages:', C.yellow('{}'.format(len(ps))), C.blue('generated')) # person index # keyz = [k for k in ps.keys() if len(ts[k]) > 2] # keyz = sorted(keyz, key=lambda t:len(ts[t]), reverse=True) keyz = ps#sorted(ps.keys()) letters = [chr(x) for x in range(ord('a'), ord('z')+1)] indices = {x:[] for x in letters} for t in keyz: ws = t.split('_') i = -1 if ws[i] == 'Jr':
if 'g' not in tagdef.keys(): links.append(kv2link('g', tagdef['namefull'] if 'namefull' in tagdef.keys() else key)) links.extend([kv2link(jk, tagdef[jk]) for jk in tagdef.keys()\ if not jk.isupper() \ and not jk.startswith('match') \ and not jk.startswith('name') \ and jk != 'relieves']) title = tagdef['namefull'] if 'namefull' in tagdef.keys() else tagdef['name'] subt = ('<br/><em>'+tagdef['namelong']+'</em>') if 'namelong' in tagdef.keys() else '' links = '<strong>{}</strong>{}<hr/>'.format(title, subt) + '\n'.join(sorted(links)) dl = '<dl class="toc">' + '\n'.join(lst) + '</dl>' # hack to get from tags to papers dl = dl.replace('href="', 'href="../') f.write(tagHTML.format(\ title=key+' tag', etag=escape(key), tag=key, above='', boxlinks=links, listname='{} papers'.format(len(lst)), dl=dl)) f.close() print('Tag pages:', C.yellow('{}'.format(len(ts))), C.blue('generated')) # tag index f = open(outputdir+'/tag/index.html', 'w') keyz = [q for q in ts.keys() if len(ts[q]) > 2] keyz.sort(key=lambda t: len(ts[t]), reverse=True) lst = ['<li>#<a href="{}.html">{}</a> ({})</li>'.format(escape(t), t, len(ts[t])) for t in keyz] ul = '<ul class="tri mul">' + '\n'.join(lst) + '</ul>' CX = sum([len(ts[t]) for t in ts.keys()]) f.write(taglistHTML.format(\
siblings.update([s for s in x.getBareStems() if s != k and ifApproved(s)]) box = '<code>Used together with:</code><hr/>' + \ '\n<br/>'.join(['<span class="tag"><a href="{0}.html">{0}</a></span> ({1})'.format(\ *sn) for sn in siblings.most_common(5)]) f.write(wordHTML.format(\ stem=k, inthebox=box, listname='{} papers'.format(len(lst)), dl='<dl class="toc">' + '\n'.join(lst).replace('href="', 'href="../') + '</dl>')) f.close() print('Word pages:', C.yellow('{}'.format(len(stems))), C.blue('generated')) # stem index f = open(outputdir+'/words.html', 'w') keyz = [k for k in stems.keys() if len(stems[k]) > 100 and ifApproved(k)] keyz.sort(key=lambda t: -len(t), reverse=True) lst = ['<li><a href="word/{}.html">{}</a>$ ({})</li>'.format(\ escape(t), t, len(stems[t])) for t in keyz] ul = '<ul class="tri">' + '\n'.join(lst) + '</ul>' CX = sum([len(stems[t]) for t in stems.keys()]) f.write(wordlistHTML.format(\ title='All known stems', listname='{} stems known and {} shown from {} notable words'.format(len(stems), len(keyz), CX), ul=ul)) f.close() print('Stem index:', C.blue('created')) print('{}\nDone with {} venues, {} papers, {} tags.'.format(\ C.purple('='*42), C.red(len(sleigh.venues)), C.red(sleigh.numOfPapers()), C.red(sleigh.numOfTags())))
if not jk.isupper() \ and not jk.startswith('match') \ and not jk.startswith('name') \ and jk != 'relieves']) title = tagdef['namefull'] if 'namefull' in tagdef.keys( ) else tagdef['name'] subt = ('<br/><em>' + tagdef['namelong'] + '</em>') if 'namelong' in tagdef.keys() else '' links = '<strong>{}</strong>{}<hr/>'.format(title, subt) + '\n'.join( sorted(links)) dl = '<dl class="toc">' + '\n'.join(lst) + '</dl>' # hack to get from tags to papers dl = dl.replace('href="', 'href="../') f.write(tagHTML.format(\ title=key+' tag', etag=escape(key), tag=key, above='', boxlinks=links, listname='{} papers'.format(len(lst)), dl=dl)) f.close() print('Tag pages:', C.yellow('{}'.format(len(ts))), C.blue('generated')) # tag index f = open(outputdir + '/tag/index.html', 'w', encoding='utf-8') keyz = [q for q in ts.keys() if len(ts[q]) > 2] keyz.sort(key=lambda t: len(ts[t]), reverse=True) lst = [ '<li>#<a href="{}.html">{}</a> ({})</li>'.format( escape(t), t, len(ts[t])) for t in keyz ]