Use type narrowing for extract-strings and transform-string

Fixes mypy errors in latest version
This commit is contained in:
Damien Elmes 2023-03-31 14:02:12 +10:00
parent 1f347d09d5
commit 066db4bae8
2 changed files with 9 additions and 8 deletions

View file

@ -11,7 +11,7 @@ import json
import os import os
from fluent.syntax import parse from fluent.syntax import parse
from fluent.syntax.ast import Junk from fluent.syntax.ast import Junk, Message
from fluent.syntax.serializer import serialize_element from fluent.syntax.serializer import serialize_element
root = ".." root = ".."
@ -23,7 +23,7 @@ for path in ftl_files:
for ent in obj.body: for ent in obj.body:
if isinstance(ent, Junk): if isinstance(ent, Junk):
raise Exception(f"file had junk! {path} {ent}") raise Exception(f"file had junk! {path} {ent}")
if getattr(ent, "id", None): if isinstance(ent, Message):
key = ent.id.name key = ent.id.name
val = "".join(serialize_element(elem) for elem in ent.value.elements) val = "".join(serialize_element(elem) for elem in ent.value.elements)
if val in keys_by_value: if val in keys_by_value:

View file

@ -10,7 +10,7 @@ import glob
import os import os
from fluent.syntax import parse, serialize from fluent.syntax import parse, serialize
from fluent.syntax.ast import Junk from fluent.syntax.ast import Junk, Message, TextElement
template_root = ".." template_root = ".."
template_files = glob.glob( template_files = glob.glob(
@ -32,15 +32,16 @@ def transform_string_in_file(path):
for ent in obj.body: for ent in obj.body:
if isinstance(ent, Junk): if isinstance(ent, Junk):
raise Exception(f"file had junk! {path} {ent}") raise Exception(f"file had junk! {path} {ent}")
if getattr(ent, "id", None): if isinstance(ent, Message):
key = ent.id.name key = ent.id.name
for target_key, src, dst in target_repls: for target_key, src, dst in target_repls:
if key == target_key: if key == target_key:
for elem in ent.value.elements: for elem in ent.value.elements:
newval = elem.value.replace(src, dst) if isinstance(elem, TextElement):
if newval != elem.value: newval = elem.value.replace(src, dst)
elem.value = newval if newval != elem.value:
changed = True elem.value = newval
changed = True
if changed: if changed:
open(path, "w", encoding="utf8").write(serialize(obj)) open(path, "w", encoding="utf8").write(serialize(obj))