summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Heinlein <sebi@glatzor.de>2008-08-30 10:35:36 +0200
committerSebastian Heinlein <sebi@glatzor.de>2008-08-30 10:35:36 +0200
commit4d6968553b8d7ac4faa436736a1846406fa4ec8f (patch)
treebbd3f240d17263baa3a12d0da21b1b6e42a8c828
parent12a80ede382e83bec4ebc7ff22aa25c97f809dd2 (diff)
downloadpython-apt-4d6968553b8d7ac4faa436736a1846406fa4ec8f.tar.gz
Reformat the package description according to the Debian Policy
-rw-r--r--apt/package.py40
1 files changed, 28 insertions, 12 deletions
diff --git a/apt/package.py b/apt/package.py
index f63c13de..01e6057b 100644
--- a/apt/package.py
+++ b/apt/package.py
@@ -245,7 +245,10 @@ class Package(object):
def description(self, format=True):
"""
- Return the formated long description
+ Return the formated long description according to the Debian policy
+ (Chapter 5.6.13).
+ See http://www.debian.org/doc/debian-policy/ch-controlfields.html
+ for more information.
"""
if not self._lookupRecord():
return ""
@@ -263,19 +266,32 @@ class Package(object):
for i in range(len(lines)):
# Skip the first line, since its a duplication of the summary
if i == 0: continue
- line = lines[i].strip()
- # Replace all empty lines by line breaks
- if line == ".":
- desc += "\n"
+ raw_line = lines[i]
+ if raw_line.strip() == ".":
+ # The line is just line break
+ if not desc.endswith("\n"):
+ desc += "\n"
continue
- # Use dots for lists
- p = re.compile(r'^(\s|\t)*(\*|0|-)',re.MULTILINE)
- line = p.sub(ur'\n\u2022', line)
- # Use line breaks only for abstracts
- if desc == "" or desc[-1] == "\n":
- desc += line
+ elif raw_line.startswith(" "):
+ # The line should be displayed verbatim without word wrapping
+ if not desc.endswith("\n"):
+ line = "\n%s\n" % raw_line[2:]
+ else:
+ line = "%s\n" % raw_line[2:]
+ elif raw_line.startswith(" "):
+ # The line is part of a paragraph.
+ if desc.endswith("\n") or desc == "":
+ # Skip the leading white space
+ line = raw_line[1:]
+ else:
+ line = raw_line
else:
- desc += " " + line
+ pkglog.debug("invalid line %s in description for %s:\n%s" % \
+ (i, self.name, self.rawDescription))
+ # Use dots for lists
+ line = re.sub(r"^(\s*)(\*|0|o|-) ", ur"\1\u2022 ", line, 1)
+ # Add current line to the description
+ desc += line
return desc
description = property(description)