KG updates plus GwR epub description tweak

This commit is contained in:
GRiker 2010-02-16 06:54:18 -07:00
commit 6b0f45c9f4
6 changed files with 64 additions and 9 deletions

View File

@ -378,10 +378,11 @@ def strftime(fmt, t=None):
t = time.localtime()
early_year = t[0] < 1900
if early_year:
replacement = 1900 if t[0]%4 == 0 else 1901
fmt = fmt.replace('%Y', '_early year hack##')
t = list(t)
orig_year = t[0]
t[0] = 1900
t[0] = replacement
ans = None
if iswindows:
if isinstance(fmt, unicode):

View File

@ -2235,7 +2235,7 @@ class EPUB_MOBI(CatalogPlugin):
cmTag['name'] = "author"
navStr = '%s | %s' % (self.formatNCXText(book['author'], dest='author'),
book['date'].split()[1])
if 'tags' in book:
if 'tags' in book and len(book['tags']):
navStr = self.formatNCXText(navStr + ' | ' + ' &middot; '.join(sorted(book['tags'])), dest='author')
cmTag.insert(0, NavigableString(navStr))
navPointVolumeTag.insert(2, cmTag)
@ -3298,10 +3298,10 @@ class EPUB_MOBI(CatalogPlugin):
Deprecated HTML returns as HTML via BeautifulSoup()
'''
# Explode lost CRs to \n\n
# Hackish - ignoring sentences ending or beginning in numbers to avoid
# confusion with decimal points.
# Explode lost CRs to \n\n
for lost_cr in re.finditer('([a-z])([\.\?!])([A-Z])',comments):
comments = comments.replace(lost_cr.group(),
'%s%s\n\n%s' % (lost_cr.group(1),
@ -3323,6 +3323,8 @@ class EPUB_MOBI(CatalogPlugin):
# Convert solo returns to <br />
comments = re.sub('[\r\n]','<br />', comments)
# Convert two hypens to emdash
comments = re.sub('--','&mdash;',comments)
soup = BeautifulSoup(comments)
result = BeautifulSoup()

View File

@ -11,8 +11,21 @@ from datetime import datetime
from dateutil.parser import parse
from dateutil.tz import tzlocal, tzutc
class SafeLocalTimeZone(tzlocal):
'''
Assume DST was not in effect for historical dates, if DST
data for the local timezone is not present in the operating system.
'''
def _isdst(self, dt):
try:
return tzlocal._isdst(self, dt)
except ValueError:
pass
return False
utc_tz = _utc_tz = tzutc()
local_tz = _local_tz = tzlocal()
local_tz = _local_tz = SafeLocalTimeZone()
def parse_date(date_string, assume_utc=False, as_utc=True, default=None):
'''

View File

@ -165,6 +165,18 @@ class Node(xml.dom.Node):
oldChild.parentNode = None
return oldChild
def __str__(self):
val = []
for c in self.childNodes:
val.append(str(c))
return ''.join(val)
def __unicode__(self):
val = []
for c in self.childNodes:
val.append(unicode(c))
return u''.join(val)
defproperty(Node, "firstChild", doc="First child node, or None.")
defproperty(Node, "lastChild", doc="Last child node, or None.")
@ -221,6 +233,9 @@ class Text(Childless, Node):
self.data = data
def __str__(self):
return self.data.encode()
def __unicode__(self):
return self.data
def toXml(self,level,f):
@ -452,3 +467,9 @@ class Element(Node):
obj = element(check_grammar=False)
return self._getElementsByObj(obj,[])
def isInstanceOf(self, element):
""" This is a check to see if the object is an instance of a type """
obj = element(check_grammar=False)
return self.qname == obj.qname

View File

@ -4670,6 +4670,7 @@ allowed_attributes = {
(NUMBERNS,u'boolean-style'):(
(NUMBERNS,u'transliteration-language'),
(STYLENS,u'name'),
(STYLENS,u'display-name'),
(NUMBERNS,u'language'),
(NUMBERNS,u'title'),
(NUMBERNS,u'country'),
@ -4681,6 +4682,7 @@ allowed_attributes = {
(NUMBERNS,u'currency-style'):(
(NUMBERNS,u'transliteration-language'),
(STYLENS,u'name'),
(STYLENS,u'display-name'),
(NUMBERNS,u'language'),
(NUMBERNS,u'title'),
(NUMBERNS,u'country'),
@ -4698,6 +4700,7 @@ allowed_attributes = {
(NUMBERNS,u'date-style'):(
(NUMBERNS,u'transliteration-language'),
(STYLENS,u'name'),
(STYLENS,u'display-name'),
(NUMBERNS,u'language'),
(NUMBERNS,u'title'),
(NUMBERNS,u'country'),
@ -4753,6 +4756,7 @@ allowed_attributes = {
(NUMBERNS,u'number-style'):(
(NUMBERNS,u'transliteration-language'),
(STYLENS,u'name'),
(STYLENS,u'display-name'),
(NUMBERNS,u'language'),
(NUMBERNS,u'title'),
(NUMBERNS,u'country'),
@ -4765,6 +4769,7 @@ allowed_attributes = {
(NUMBERNS,u'percentage-style'):(
(NUMBERNS,u'transliteration-language'),
(STYLENS,u'name'),
(STYLENS,u'display-name'),
(NUMBERNS,u'language'),
(NUMBERNS,u'title'),
(NUMBERNS,u'country'),
@ -4794,6 +4799,7 @@ allowed_attributes = {
(NUMBERNS,u'text-style'):(
(NUMBERNS,u'transliteration-language'),
(STYLENS,u'name'),
(STYLENS,u'display-name'),
(NUMBERNS,u'language'),
(NUMBERNS,u'title'),
(NUMBERNS,u'country'),
@ -4806,6 +4812,7 @@ allowed_attributes = {
(NUMBERNS,u'transliteration-language'),
(NUMBERNS,u'transliteration-format'),
(STYLENS,u'name'),
(STYLENS,u'display-name'),
(NUMBERNS,u'language'),
(NUMBERNS,u'title'),
(NUMBERNS,u'country'),

View File

@ -376,6 +376,8 @@ class ODF2XHTML(handler.ContentHandler):
(OFFICENS, "text"):(self.s_office_text, self.e_office_text),
(OFFICENS, "scripts"):(self.s_ignorexml, None),
(PRESENTATIONNS, "notes"):(self.s_ignorexml, None),
# (STYLENS, "default-page-layout"):(self.s_style_default_page_layout, self.e_style_page_layout),
(STYLENS, "default-page-layout"):(self.s_ignorexml, None),
(STYLENS, "default-style"):(self.s_style_default_style, self.e_style_default_style),
(STYLENS, "drawing-page-properties"):(self.s_style_handle_properties, None),
(STYLENS, "font-face"):(self.s_style_font_face, None),
@ -834,8 +836,17 @@ class ODF2XHTML(handler.ContentHandler):
self.stylestack.append(self.currentstyle)
self.styledict[self.currentstyle] = {}
def s_style_default_page_layout(self, tag, attrs):
""" Collect the formatting for the default page layout style.
"""
self.currentstyle = "@page"
self.stylestack.append(self.currentstyle)
self.styledict[self.currentstyle] = {}
def s_style_page_layout(self, tag, attrs):
""" Collect the formatting for the page layout style.
This won't work in CSS 2.1, as page identifiers are not allowed.
It is legal in CSS3, but the rest of the application doesn't specify when to use what page layout
"""
name = attrs[(STYLENS,'name')]
name = name.replace(".","_")