# -*- coding: utf-8 -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
import ulib.base.i_need_py23
__all__ = ('CssTempl',
'JsTempl',
'HtmlTempl', 'OverviewHtmlTempl', 'PackageHtmlTempl',
'PHPTempl',
)
from ulib.base.uio import _u
from ulib.base.lines import Lines
from ulib.base.input import is_yes
from base import FileTempl, register_templates
class CssTempl(FileTempl):
TEMPLATE = ('css file', 'css')
EXT = '.css'
#MODE = u"css"
MODELINE_PREFIX = u"/* "
MODELINE_SUFFIX = u"\n*/"
def get_lines(self):
lines = Lines()
self.appendtext(lines, self.modeline)
self.appendtext(lines, u"""@CHARSET "%(encoding)s";""")
return lines
class JsTempl(FileTempl):
TEMPLATE = ('javascript file', 'js file', 'js')
EXT = '.js'
#MODE = u"javascript"
MODELINE_PREFIX = u"/* "
MODELINE_SUFFIX = u"\n*/"
def get_lines(self):
return self.appendtext(None, self.modeline)
class HtmlTempl(FileTempl):
TEMPLATE = ('html4 file', 'html file', 'html4', 'html')
EXT = ('.html', '.htm')
VPS, ACPS, NCPS, ICPS = FileTempl.PS('titlehl', 'head_title', 'base', 'bpurl',
ncps=dict(title=None),
icps=dict(bp=is_yes))
titlehl = 'h1'
head_title = None
title = None
baseurl = ''
bp = True
bpurl = '/blueprint'
def fix_properties(self):
FileTempl.fix_properties(self)
if self.head_title is None:
self.head_title = self.title
MODE = u"html"
MODELINE_PREFIX = u""
DOCTYPE = u""""""
PROLOG0 = u"""\
"""
BLUEPRINT = u"""\
"""
PROLOG1 = u"""\
%(head_title)s
"""
BP_PROLOG = u""""""
BP_EPILOG = u"""
"""
EPILOG = u"""
"""
def get_lines(self):
lines = Lines()
self.appendtext(lines, self.DOCTYPE)
self.appendtext(lines, self.get_modeline(nl=False))
self.appendtext(lines, self.PROLOG0)
if self.bp: self.appendtext(lines, self.BLUEPRINT)
self.appendtext(lines, self.PROLOG1)
if self.bp: self.appendtext(lines, self.BP_PROLOG)
if self.title is not None:
self.appendtext(lines, u"<%(titlehl)s>%(title)s%(titlehl)s>")
if self.bp: self.appendtext(lines, self.BP_EPILOG)
self.appendtext(lines, self.EPILOG)
return lines
class JavadocHtmlTempl(HtmlTempl):
def fix_properties(self):
HtmlTempl.fix_properties(self)
if self.title and not self.title.endswith('.'):
# S'assurer que le titre se termine par un point
self.title += u'.'
class OverviewHtmlTempl(JavadocHtmlTempl):
TEMPLATE = ('javadoc overview file', 'overview.html')
FILENAME = 'overview.html'
VPS, ACPS, NCPS, ICPS = JavadocHtmlTempl.PS(ncps=dict(project=None))
titlehl = 'h2'
project = None
def fix_properties(self):
JavadocHtmlTempl.fix_properties(self)
if self.title is None and self.project is not None:
self.title = u"Projet: %s" % _u(self.project)
class PackageHtmlTempl(JavadocHtmlTempl):
TEMPLATE = ('javadoc package file', 'package.html')
FILENAME = 'package.html'
VPS, ACPS, NCPS, ICPS = JavadocHtmlTempl.PS(ncps=dict(package=None))
titlehl = 'h2'
package = None
def fix_properties(self):
JavadocHtmlTempl.fix_properties(self)
if self.title is None and self.package is not None:
self.title = u"Package: %s" % _u(self.package)
class PHPTempl(HtmlTempl):
TEMPLATE = ('php file', 'php')
EXT = ('.php', '.phps')
MODE = 'php'
MODELINE_PREFIX = u""
def get_lines(self):
lines = Lines()
self.appendtext(lines, self.get_modeline(nl=False) + self.DOCTYPE)
self.appendtext(lines, self.PROLOG0)
if self.bp: self.appendtext(lines, self.BLUEPRINT)
self.appendtext(lines, self.PROLOG1)
if self.bp: self.appendtext(lines, self.BP_PROLOG)
if self.title is not None:
self.appendtext(lines, u"<%(titlehl)s>%(title)s%(titlehl)s>")
if self.bp: self.appendtext(lines, self.BP_EPILOG)
self.appendtext(lines, self.EPILOG)
return lines
register_templates(CssTempl, JsTempl, HtmlTempl, OverviewHtmlTempl, PackageHtmlTempl, PHPTempl)