# -*- coding: iso-8859-1 -*- import sys import os import re import datetime import locale import shutil import cStringIO from HTMLTags import * langs = {'en':{'rep':'en','title':'Karrigell manual','release':'Release'}, #'fr':{'rep':r'fr','title':"Manuel Karrigell",'release':"Version"} } version = "3.0" dico = {"version":version} head = open("head.html").read() previous = """Previous Page.0""" previous1 = '
  • ' next = """Next Page""" next1 = '
  • ' up2 = 'Up:' up2 += 'Contents' next2 = 'Next:' next2 += '' content_page_header = """ """ page_header = """ """ def _make_menu(lang): rep = REL(langs[lang]['rep']) num = [0] cur_nb = 0 res = '
    \n' res += '
    \n' res += content_page_header res += '
    ' res += '

    ' chapters = [] for num_line,line in enumerate(open(os.path.join(rep,"chapitres.txt"))): nb = 0 while line[0]==" ": nb += 1 line = line[1:] if nb == cur_nb: num[cur_nb] += 1 elif nb > cur_nb: if len(num)<=nb: num.append(1) res +="

      \n" elif nb < cur_nb: num[nb] += 1 num = num[:nb+1] res += "
    \n" cur_nb = nb ref = ".".join([str(x) for x in num[:cur_nb+1]]) name,title = line.strip().split("#") res += '
  • %s. %s\n' \ %(num_line,ref,lang,ref,title) chapters.append((ref,name,title)) res += '' return res,chapters def index(lang='en'): if not lang in langs: lang = 'en' rep = REL(langs[lang]['rep']) chapters = open(os.path.join(rep,"chapitres.txt")).readlines() out = cStringIO.StringIO() first = """""" %(langs[lang]["title"],langs[lang]["release"], version,datetime.date.today().strftime("%x")) navig = open(os.path.join(rep,"navig.html")).read() dico_navig={"previous1":previous,"previous2":"","next2":"","up2":""} anchor = up1 %("Home","/") dico_navig["up1"] = anchor+up+"" href_next,title_next = chapters[0].strip().split('#') anchor = next1 %(title_next,href_next+".html") dico_navig["next1"] = anchor+next+"" for key in dico_navig: navig = navig.replace("[[%s]]" %key,dico_navig[key]) dico_head={"title":langs[lang]["title"]} this_head = head %dico_head body,chapters = _make_menu(lang) res = this_head+""+body+"\n" out.write(res) print out.getvalue() def _page(page_num,ref,lang): rep = REL(langs[lang]['rep']) menu,chapters = _make_menu(lang) num = int(page_num) ref,name,title = chapters[num] if not name: # generate list of subsections content = TEXT('') snum = num while snum.*?",re.S) content = head_ptn.sub("",content) content = re.sub("<.*html>","",content) content = re.sub("<.*body>","",content) navig = open(os.path.join(rep,"navig.html")).read() dico_navig = {"up1":up1%("Contents","../reference.ks")+up+'', "up2":up2} if num>0: ref_prev,href_prev,title_prev = chapters[num-1] href_prev = "show?page_num=%s&ref=%s&lang=%s" %(num-1,ref_prev,lang) anchor = previous1 %(title_prev,href_prev) dico_navig["previous1"] = anchor+previous+"" dico_navig["previous2"] = previous2 %(href_prev,ref_prev,title_prev) else: dico_navig["previous1"] = previous dico_navig["previous2"] = "" if num" dico_navig["next2"] = next2 %(href_next,ref_next,title_next) else: dico_navig["next1"] = next dico_navig["next2"] = "" for key in dico_navig: navig = navig.replace("[[%s]]" %key,dico_navig[key]) top = '\n
    \n' top += '
    \n'+page_header+navig top += '' ct_hdr = '
    ' ct_hdr += '

    ' content = ct_hdr + content + '

    ' res = top+content+"
    "+navig+"
    \n" dico_head={"title":title,"prev":"prev","parent":"parent","next":"next"} this_head = head %dico_head res = this_head+res+"" out = cStringIO.StringIO() out.write(res) return out.getvalue() def show(page_num,ref,lang): pih_code = _page(page_num,ref,lang) import python_code src,line_mapping = python_code.get_py_code_from_string(pih_code,".pih") THIS.namespace.update({"chapter":ref,"make_link":make_link}) exec src in THIS.namespace Session().lang = lang def make_link(text,page_name): so = Session() if not hasattr(so,'lang'): so.lang = 'en' lang = so.lang rep = REL(langs[lang]['rep']) menu,chapters = _make_menu(lang) page_num = None num = 0 while num