diff options
author | Till Maas <opensource@till.name> | 2010-03-06 18:58:57 +0100 |
---|---|---|
committer | Till Maas <opensource@till.name> | 2010-03-06 18:58:57 +0100 |
commit | 9b8740373f6308cd929ba039bfda4a3f6cf8a6ee (patch) | |
tree | f3ae87a00dab295c881281692348385d217d64e1 /cnucnu | |
parent | fac98a9662153d47b4d9fb2e971d6ebd6768cc51 (diff) | |
download | cnucnu-9b8740373f6308cd929ba039bfda4a3f6cf8a6ee.tar.gz cnucnu-9b8740373f6308cd929ba039bfda4a3f6cf8a6ee.tar.xz cnucnu-9b8740373f6308cd929ba039bfda4a3f6cf8a6ee.zip |
move some code to helper function match_interval
Diffstat (limited to 'cnucnu')
-rw-r--r-- | cnucnu/helper.py | 18 | ||||
-rwxr-xr-x | cnucnu/package_list.py | 17 |
2 files changed, 22 insertions, 13 deletions
diff --git a/cnucnu/helper.py b/cnucnu/helper.py index 12de55d..05a719d 100644 --- a/cnucnu/helper.py +++ b/cnucnu/helper.py @@ -213,3 +213,21 @@ def secure_download(url, cainfo=""): return data +def match_interval(text, regex, begin_marker, end_marker): + """ returns a list of match.groups() for all lines after a line + like begin_marker and before a line like end_marker + """ + + res = [] + inside = False + for line in text.splitlines(): + if not inside: + if line == begin_marker: + inside = True + else: + match = regex.match(line) + if match: + yield match.groups() + elif line == end_marker: + inside = False + break diff --git a/cnucnu/package_list.py b/cnucnu/package_list.py index 7f048af..5396b5d 100755 --- a/cnucnu/package_list.py +++ b/cnucnu/package_list.py @@ -28,6 +28,7 @@ import re import errors as cc_errors import pycurl import urllib +import helper from helper import upstream_cmp, cmp_upstream_repo from config import global_config from cvs import CVS @@ -306,19 +307,9 @@ class PackageList: packages = [] repo.package_list = self - inside_package_list = False - for line in page_text.splitlines(): - if not inside_package_list: - if line == "== List Of Packages ==": - inside_package_list = True - else: - match = package_line.match(line) - if match: - (name, regex, url) = match.groups() - packages.append(Package(name, regex, url, repo, cvs, br)) - elif line == "<!-- END LIST OF PACKAGES -->": - inside_package_list = False - break + for package_data in helper.match_interval(page_text, package_line, "== List Of Packages ==", "<!-- END LIST OF PACKAGES -->"): + (name, regex, url) = package_data + packages.append(Package(name, regex, url, repo, cvs, br)) self.packages = packages self.append = self.packages.append |