Adding support for ratio operations
This commit is contained in:
@ -481,13 +481,14 @@ class ZiffersTransformer(Transformer):
|
||||
)
|
||||
|
||||
|
||||
# pylint: disable=locally-disabled, unused-argument, too-many-public-methods, invalid-name
|
||||
# pylint: disable=locally-disabled, unused-argument, too-many-public-methods, invalid-name, eval-used
|
||||
class ScalaTransformer(Transformer):
|
||||
def lines(self, items):
|
||||
cents = [ratio_to_cents(item) if isinstance(item,int) else item for item in items]
|
||||
return cents_to_semitones(cents)
|
||||
|
||||
def operation(self, items):
|
||||
# Safe eval. Items are pre-parsed.
|
||||
val = eval("".join(str(item) for item in items))
|
||||
return val
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
lines: (number | operation | ratio | edo_ratio | edji_ratio)+
|
||||
|
||||
operation: number (operator (number | sub_operations | operation))+
|
||||
operation: (number | ratio) (operator ((number | ratio) | sub_operations | operation))+
|
||||
ratio: (int | random_int) "/" (int | random_int)
|
||||
edo_ratio: (int | random_int) "\\" (int | random_int)
|
||||
edji_ratio: (int | random_int) "\\" (int | random_int) "<" (int | random_int) "/"? (int | random_int)? ">"
|
||||
|
||||
Reference in New Issue
Block a user