Updated Caper to v0.2.9

This commit is contained in:
Dean Gardiner
2013-12-09 11:23:57 +13:00
parent f648af66a6
commit 93aa5b1920
6 changed files with 84 additions and 30 deletions
+30 -10
View File
@@ -19,7 +19,7 @@ from caper.parsers.anime import AnimeParser
from caper.parsers.scene import SceneParser
__version_info__ = ('0', '2', '6')
__version_info__ = ('0', '2', '9')
__version_branch__ = 'master'
__version__ = "%s%s" % (
@@ -44,9 +44,11 @@ CL_END = 1
class Caper(object):
def __init__(self, debug=False):
self.debug = debug
self.parsers = {
'scene': SceneParser(debug),
'anime': AnimeParser(debug)
'scene': SceneParser,
'anime': AnimeParser
}
def _closure_split(self, name):
@@ -63,7 +65,7 @@ class Caper(object):
if len(buf) < 1:
return
cur = CaperClosure(buf)
cur = CaperClosure(len(closures), buf)
cur.left = closures[len(closures) - 1] if len(closures) > 0 else None
if cur.left:
@@ -109,7 +111,7 @@ class Caper(object):
"""
cur_position = 0
cur = CaperFragment()
cur = None
def end_fragment(fragments, cur, cur_position):
cur.position = cur_position
@@ -126,23 +128,41 @@ class Caper(object):
for closure in closures:
closure.fragments = []
separator_buffer = ""
for x, ch in enumerate(self._clean_closure(closure.value)):
if not cur:
cur = CaperFragment(closure)
if ch in FRAGMENT_SEPARATORS:
end_fragment(closure.fragments, cur, cur_position)
if cur.value:
separator_buffer = ""
separator_buffer += ch
if cur.value or not closure.fragments:
end_fragment(closure.fragments, cur, cur_position)
elif len(separator_buffer) > 1:
cur.value = separator_buffer.strip()
if cur.value:
end_fragment(closure.fragments, cur, cur_position)
separator_buffer = ""
# Reset
cur = CaperFragment()
cur = None
cur_position += 1
else:
cur.value += ch
# Finish parsing the last fragment
if cur.value != "":
if cur and cur.value:
end_fragment(closure.fragments, cur, cur_position)
# Reset
cur_position = 0
cur = CaperFragment()
cur = None
return closures
@@ -158,4 +178,4 @@ class Caper(object):
raise ValueError("Unknown parser")
# TODO autodetect the parser type
return self.parsers[parser].run(closures)
return self.parsers[parser](self.debug).run(closures)