Updated Caper to v0.2.9
This commit is contained in:
+30
-10
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user