[rig3] r444 committed - Experimental old izu blog reader, continued.

2 views
Skip to first unread message

ri...@googlecode.com

unread,
Aug 29, 2010, 6:06:13 AM8/29/10
to rig3-d...@googlegroups.com
Revision: 444
Author: ralfoide
Date: Sun Aug 29 03:05:15 2010
Log: Experimental old izu blog reader, continued.
http://code.google.com/p/rig3/source/detail?r=444

Modified:
/trunk/rig3serv/src/rig/site/site_default.py
/trunk/rig3serv/src/rig/source_item.py
/trunk/rig3serv/src/rig/source_reader.py

=======================================
--- /trunk/rig3serv/src/rig/site/site_default.py Sat Aug 28 00:01:31 2010
+++ /trunk/rig3serv/src/rig/site/site_default.py Sun Aug 29 03:05:15 2010
@@ -35,7 +35,7 @@
from rig.parser.izu_parser import IzuParser
from rig.site_base import SiteBase, SiteItem
from rig.template.template import Template
-from rig.source_item import SourceDir, SourceFile
+from rig.source_item import SourceDir, SourceFile, SourceContent
from rig.parser.dir_parser import RelPath, PathTimestamp
from rig.version import Version
from rig.sites_settings import DEFAULT_ITEMS_PER_PAGE
@@ -723,6 +723,7 @@
izu_file = None
html_file = None
rel_dir = None
+ title = None

if isinstance(source_item, SourceDir):
rel_dir = source_item.rel_dir
@@ -744,6 +745,11 @@
html_file = rel_file
title = title[:-1 * len(self.EXT_HTML)] # remove ext from
title

+ elif isinstance(source_item, SourceContent):
+ title = source_item.title
+ izu_file = source_item.rel_file
+ html_file = "@content"
+
else:
raise NotImplementedError("TODO support %s" %
repr(source_item))

@@ -767,7 +773,11 @@
p = IzuParser(self._log,
keywords["rig_base"],
keywords["img_gen_script"])
- tags, sections = p.RenderFileToHtml(izu_file)
+ if html_file == "@content":
+ tags = source_item.tags
+ _, sections = p.RenderStringToHtml(source_item.content)
+ else:
+ tags, sections = p.RenderFileToHtml(izu_file)

for k, v in sections.iteritems():
if isinstance(v, (str, unicode)):
=======================================
--- /trunk/rig3serv/src/rig/source_item.py Sat Aug 28 00:01:31 2010
+++ /trunk/rig3serv/src/rig/source_item.py Sun Aug 29 03:05:15 2010
@@ -238,8 +238,9 @@
- rel_file (RelFile): absolute+relative source file
- source_settings (not optional)
"""
- def __init__(self, date, title, content, tags, source_settings):
+ def __init__(self, date, rel_file, title, content, tags,
source_settings):
super(SourceContent, self).__init__(date, source_settings)
+ self.rel_file = rel_file
self.tags = tags
self.title = title
self.content = content
@@ -250,7 +251,8 @@
return (isinstance(rhs, SourceContent) and
self.tags == rhs.tags and
self.title == rhs.title and
- self.content == rhs.content)
+ self.content == rhs.content and
+ self.rel_file == rhs.rel_file)

def RigHash(self, md=None):
"""
@@ -267,22 +269,26 @@
Computes a hash that only depends on the real path of the file.
"""
md = super(SourceContent, self).ContentHash(md)
+ md = self.UpdateHash(md, self.tags)
+ md = self.UpdateHash(md, self.title)
+ md = self.UpdateHash(md, self.content)
md = self.UpdateHash(md, self.rel_file.realpath())
return md

def __repr__(self):
- return "<%s (%s) %s, %s, %s>" % (self.__class__.__name__,
+ return "<%s (%s) %s, %s, %s, %s>" % (self.__class__.__name__,
self.date,
- self.rel_file,
- self.categories,
+ self.title,
+ self.tags,
+ self.content,
self.source_settings)

def PrettyRepr(self):
"""
Returns a "pretty representation" of the item as a string,
- suitable for Log.Info, namely the file relative path.
+ suitable for Log.Info.
"""
- return self.rel_file.rel_curr
+ return "%s:%s" % (self.date, self.title)

=======================================
--- /trunk/rig3serv/src/rig/source_reader.py Sat Aug 28 00:01:31 2010
+++ /trunk/rig3serv/src/rig/source_reader.py Sun Aug 29 03:05:15 2010
@@ -91,6 +91,7 @@
DIR_PATTERN = re.compile(r"^(\d{4}[-]?\d{2}(?:[-]?\d{2})?)[ _-]
*(?P<name>.*) *$")
DIR_VALID_FILES = re.compile(r"\.(?:izu|jpe?g|html)$")
FILE_PATTERN = re.compile(r"^(\d{4}[-]?\d{2}(?:[-]?\d{2})?)[ _-]
*(?P<name>.*) *\.(?P<ext>izu|html)$")
+ OLD_IZU_PATTERN = re.compile(r"^.+?\.old\.izu$")

def __init__(self, log, site_settings, source_settings, path):
"""
@@ -152,45 +153,55 @@
# Not a directory entry, so check individual files to see
if they
# qualify as individual entries
for f in all_files:
- if not file_pattern.search(f):
- continue
- rel_file = RelFile(source_dir.abs_base,
- os.path.join(source_dir.rel_curr,
f))
- if f.endswith(".old.izu"):
- self._ParseOldIzu(rel_file.abs_path, items)
- else:
+ if self.OLD_IZU_PATTERN.search(f):
+ rel_file = RelFile(source_dir.abs_base,
+
os.path.join(source_dir.rel_curr, f))
+ self._ParseOldIzu(rel_file, items)
+
+ elif file_pattern.search(f):
+ rel_file = RelFile(source_dir.abs_base,
+
os.path.join(source_dir.rel_curr, f))
date =
datetime.fromtimestamp(self._FileTimeStamp(rel_file.abs_path))
item = SourceFile(date, rel_file,
self._source_settings)
items.append(item)
+ self._log.Debug("[%s] Append item '%s'", item)

return items


OLD_IZU_HEADER =
re.compile(r"^\[s:(?P<year>\d{4})(?P<month>\d{2})(?P<day>\d{2}):(?P<title>[^\]]*).*$")

- def _ParseOldIzu(self, abs_path, items):
+ def _ParseOldIzu(self, rel_file, items):
"""
"""
- f = file(abs_path)
+ f = file(rel_file.abs_path)

SEP = "----"

# First line must have some izu tags
- line = None
tags = None
- while line != SEP:
- line = f.readline()
+ for line in f:
+ if line.strip() == SEP:
+ break
if not tags and line:
tags = IzuParser(self._log, None,
None).ParseFirstLine(line)

content = None
date = None
title = None
- for line in f.readlines():
- if line.startswith("[s:"):
+ for line in f:
+ if line.strip() == SEP:
+ continue
+
+ elif line.startswith("[s:"):
# Flush content
- item = SourceContent(date, title, content, tags,
self._source_settings)
- items.append(item)
+ if content:
+ # Inject date in tags
+ tags = dict(tags)
+ tags["date"] = date
+ item = SourceContent(date, rel_file, title, content,
tags, self._source_settings)
+ items.append(item)
+ self._log.Debug("[%s] Append item '%s'", item)

content = ""
date = None
@@ -198,19 +209,23 @@

m = self.OLD_IZU_HEADER.match(line)
if m:
- date = datetime.datetime(
- int(m.groups("year")),
- int(m.groups("month")),
- int(m.groups("day")))
- title = m.groups("title")
+ date = datetime(
+ int(m.group("year")),
+ int(m.group("month")),
+ int(m.group("day")))
+ title = m.group("title")

elif date and title:
content += line

if content:
+ # Inject date in tags
+ tags = dict(tags)
+ tags["date"] = date
# Flush content
- item = SourceContent(date, title, content)
+ item = SourceContent(date, rel_file, title, content, tags,
self._source_settings)
items.append(item)
+ self._log.Debug("[%s] Append item '%s'", item)

f.close()

Reply all
Reply to author
Forward
0 new messages