import datetime , os , re
from bottle import error , route , run , static_file , template
# make article-to-html work with entries
# make index work with entries - later, they can be differentiated into features and weeklies with tags or title or whatever
# write diary
def build_nav ( ) :
nav = " nav "
return nav
#function build_nav($page, $total) {
# echo '<div class="diary-dir">';
# $limit = 4;
# $min = max($page - $limit, 0);
#$max = min($page + $limit, $total);
# if($min > 0) {
# echo "<a href=diary.php?page=0>first</a>";
# }
# for($i = $min; $i < $max; $i++) {
# if ($i == $page) {
# echo "<strong>$i</strong>";
# } else {
# echo "<a href=diary.php?page=$i>$i</a>";
#}
# }
# if($max < $total) {
# $t = $total - 1;
# echo "<a href=diary.php?page=$t>last</a>";
#}
# echo '</div>';
#}
def make_latest ( ) :
# for article in array (just 5 or something)
# link to webpage
return " latest "
def list_snippets ( articles ) :
# take articles between 0-4, 5-8, 9-13,...) based on current page
# for each one of those articles,
# snip_article(article)
limit = 4
total = len ( articles )
head = count_lines ( ' entries/raw/res/head.txt ' )
tail = count_lines ( ' entries/raw/res/tail.txt ' )
result = [ ]
for article in articles :
path = ' entries/ ' + article
text = [ ]
a = [ ]
length = 0
with open ( ' entries/ ' + article ) as f :
text = f . readlines ( )
length = len ( text )
a . append ( text [ head ] )
content = snip_article ( find_content ( article , length , head , tail ) , path )
if content . count ( ' <ul> ' ) > content . count ( ' </ul> ' ) :
content + = ' </ul> '
a . append ( content )
a . append ( text [ head + 1 ] . replace ( ' <br> ' , ' ' ) )
a . append ( " social " )
a . append ( path )
result . append ( a )
return result
def count_lines ( fname ) :
with open ( fname ) as f :
for linenum , line in enumerate ( f , 1 ) :
pass
return linenum
def find_content ( article , length , head , tail ) :
content = " "
with open ( ' entries/ ' + article ) as f :
for pos , line in enumerate ( f ) :
if pos > head + 1 and pos < length - tail :
content + = line
return content
def clean ( result , path ) :
result = result . replace ( ' <br> ' , ' ' )
result = re . sub ( r ' <a href=.*?> ' , ' ' , result )
result = result . replace ( ' </a> ' , ' ' )
result = re . sub ( r ' <h \ d> ' , ' ' , result )
result = re . sub ( r ' </h \ d> ' , ' ' , result )
return result
def snip_article ( article , path ) :
article = clean ( article , path )
limit = 300
result = article [ 0 : min ( len ( article ) , limit ) ]
result = result . rsplit ( ' ' , 1 ) [ 0 ]
# cut off after 5 lines, too?
return result + " ... "
def sort_files ( files ) :
files . sort ( reverse = True )
return files #list(reversed(files))
def gather_files ( ) :
files = os . listdir ( ' entries/ ' )
files . remove ( ' raw ' )
return files
# Static
@route ( ' /static/css/<filename:path> ' )
def serve_css ( filename ) :
return static_file ( filename , root = ' static/css ' )
@route ( ' /static/img/<filename:path> ' )
def serve_css ( filename ) :
return static_file ( filename , root = ' static/img ' )
# Routes
@error ( 404 )
def error404 ( error ) :
return " unfortunately, a 404 error "
@route ( ' / ' )
def index ( ) :
""" home page """
info = { ' css ' : ' index ' , ' news ' : ' News goes here ' , ' title ' : ' chimchooree \' s dev space - blessfrey ' , ' year ' : datetime . datetime . now ( ) }
return template ( ' index.tpl ' , info )
@route ( ' /game ' )
def game ( ) :
""" game page """
info = { ' css ' : ' game ' , ' title ' : ' blessfrey - about the game ' , ' year ' : datetime . datetime . now ( ) }
return template ( ' game.tpl ' , info )
@route ( ' /presskit ' )
def presskit ( ) :
""" press page """
info = { ' css ' : ' presskit ' , ' title ' : ' blessfrey - presskit ' , ' year ' : datetime . datetime . now ( ) }
return template ( ' presskit.tpl ' , info )
@route ( ' /diary ' )
def diary ( ) :
""" diary page """
info = { ' css ' : ' diary ' , ' title ' : ' blessfrey - about the game ' , ' year ' : datetime . datetime . now ( ) , ' snippets ' : list_snippets ( sort_files ( gather_files ( ) ) ) , ' latest ' : make_latest ( ) , ' nav ' : build_nav ( ) }
return template ( ' diary.tpl ' , info )
if __name__ == ' __main__ ' :
run ( )