projects
/
python-bulletml.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
BulletML: FromDocument for parity with FromElement.
[python-bulletml.git]
/
bulletml
/
parser.py
diff --git
a/bulletml/parser.py
b/bulletml/parser.py
index
bf850a7
..
edb9d29
100644
(file)
--- a/
bulletml/parser.py
+++ b/
bulletml/parser.py
@@
-5,6
+5,8
@@
http://www.asahi-net.or.jp/~cs8k-cyu/bulletml/index_e.html
from __future__ import division
from __future__ import division
+import math
+
from xml.etree.ElementTree import ElementTree
try:
from xml.etree.ElementTree import ElementTree
try:
@@
-61,7
+63,7
@@
class Direction(object):
return cls(element.get("type", default), NumberDef(element.text))
def __call__(self, params, rank):
return cls(element.get("type", default), NumberDef(element.text))
def __call__(self, params, rank):
- return (
self.value(params, rank
), self.type)
+ return (
math.radians(self.value(params, rank)
), self.type)
def __repr__(self):
return "%s(%r, type=%r)" % (
def __repr__(self):
return "%s(%r, type=%r)" % (
@@
-185,6
+187,7
@@
class Repeat(object):
@classmethod
def FromElement(cls, doc, element):
@classmethod
def FromElement(cls, doc, element):
+ """Construct using an ElementTree-style element."""
for subelem in element.getchildren():
tag = realtag(subelem)
if tag == "times":
for subelem in element.getchildren():
tag = realtag(subelem)
if tag == "times":
@@
-440,22
+443,25
@@
class BulletML(object):
fire=FireDef,
)
fire=FireDef,
)
- def __init__(self, source):
+ def __init__(self, type="none", bullets={}, fires={}, actions={}):
+ self.type = type
self.bullets = {}
self.actions = {}
self.fires = {}
self.bullets = {}
self.actions = {}
self.fires = {}
- self._bullet_refs = []
- self._action_refs = []
- self._fire_refs = []
-
+ @classmethod
+ def FromDocument(cls, source):
if isinstance(source, (str, unicode)):
source = StringIO(source)
tree = ElementTree()
root = tree.parse(source)
if isinstance(source, (str, unicode)):
source = StringIO(source)
tree = ElementTree()
root = tree.parse(source)
- self.type = root.get("type", "none")
+ self = cls(type=root.get("type", "none"))
+
+ self._bullet_refs = []
+ self._action_refs = []
+ self._fire_refs = []
for element in root.getchildren():
tag = realtag(element)
for element in root.getchildren():
tag = realtag(element)
@@
-480,6
+486,8
@@
class BulletML(object):
self.actions.pop(None, None)
self.fires.pop(None, None)
self.actions.pop(None, None)
self.fires.pop(None, None)
+ return self
+
@property
def top(self):
"""Get a list of all top-level actions."""
@property
def top(self):
"""Get a list of all top-level actions."""