Skip to content

Commit 78cc3da

Browse files
authored
(fluent.syntax) Remove FluentSerializer.serialize_expression (#114)
1 parent 9673bf1 commit 78cc3da

File tree

2 files changed

+47
-11
lines changed

2 files changed

+47
-11
lines changed

fluent.syntax/fluent/syntax/serializer.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,6 @@ def serialize_entry(self, entry, state=0):
6060
return serialize_junk(entry)
6161
raise Exception('Unknown entry type: {}'.format(type(entry)))
6262

63-
def serialize_expression(self, expr):
64-
return serialize_expression(expr)
65-
6663

6764
def serialize_comment(comment, prefix="#"):
6865
prefixed = "\n".join([
@@ -252,5 +249,6 @@ def serialize_named_argument(arg):
252249
def serialize_variant_key(key):
253250
if isinstance(key, ast.Identifier):
254251
return key.name
255-
else:
256-
return serialize_expression(key)
252+
if isinstance(key, ast.NumberLiteral):
253+
return key.value
254+
raise Exception('Unknown variant key type: {}'.format(type(key)))

fluent.syntax/tests/syntax/test_serializer.py

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
from tests.syntax import dedent_ftl
88
from fluent.syntax import FluentParser, FluentSerializer
9+
from fluent.syntax.serializer import serialize_expression, serialize_variant_key
910

1011

1112
class TestSerializeResource(unittest.TestCase):
@@ -434,19 +435,16 @@ class TestSerializeExpression(unittest.TestCase):
434435
@staticmethod
435436
def pretty_expr(text):
436437
parser = FluentParser()
437-
serializer = FluentSerializer(with_junk=False)
438438
entry = parser.parse_entry(dedent_ftl(text))
439439
expr = entry.value.elements[0].expression
440-
return serializer.serialize_expression(expr)
440+
return serialize_expression(expr)
441441

442442
def test_invalid_expression(self):
443-
serializer = FluentSerializer()
444-
445443
with self.assertRaisesRegexp(Exception, 'Unknown expression type'):
446-
serializer.serialize_expression(None)
444+
serialize_expression(None)
447445

448446
with self.assertRaisesRegexp(Exception, 'Unknown expression type'):
449-
serializer.serialize_expression(object())
447+
serialize_expression(object())
450448

451449
def test_string_expression(self):
452450
input = """\
@@ -498,3 +496,43 @@ def test_select_expression(self):
498496
}
499497
"""
500498
self.assertEqual(self.pretty_expr(input), '$num ->\n *[one] One\n')
499+
500+
501+
class TestSerializeVariantKey(unittest.TestCase):
502+
@staticmethod
503+
def pretty_variant_key(text, index):
504+
parser = FluentParser()
505+
entry = parser.parse_entry(dedent_ftl(text))
506+
variants = entry.value.elements[0].expression.variants
507+
return serialize_variant_key(variants[index].key)
508+
509+
def test_invalid_expression(self):
510+
with self.assertRaisesRegexp(Exception, 'Unknown variant key type'):
511+
serialize_variant_key(None)
512+
513+
with self.assertRaisesRegexp(Exception, 'Unknown variant key type'):
514+
serialize_variant_key(object())
515+
516+
def test_identifiers(self):
517+
input = """\
518+
foo = { $num ->
519+
[one] One
520+
*[other] Other
521+
}
522+
"""
523+
self.assertEqual(self.pretty_variant_key(input, 0), 'one')
524+
self.assertEqual(self.pretty_variant_key(input, 1), 'other')
525+
526+
def test_number_literals(self):
527+
input = """\
528+
foo = { $num ->
529+
[-123456789] Minus a lot
530+
[0] Zero
531+
*[3.14] Pi
532+
[007] James
533+
}
534+
"""
535+
self.assertEqual(self.pretty_variant_key(input, 0), '-123456789')
536+
self.assertEqual(self.pretty_variant_key(input, 1), '0')
537+
self.assertEqual(self.pretty_variant_key(input, 2), '3.14')
538+
self.assertEqual(self.pretty_variant_key(input, 3), '007')

0 commit comments

Comments
 (0)