Source code
Revision control
Copy as Markdown
Other Tools
# Any copyright is dedicated to the Public Domain.
import fluent.syntax.ast as FTL
from fluent.migrate.helpers import VARIABLE_REFERENCE
from fluent.migrate.transforms import COPY, REPLACE
def migrate(ctx):
xslt_source = "dom/chrome/xslt/xslt.properties"
global_strres_source = "dom/chrome/global-strres.properties"
target = "dom/dom/xslt.ftl"
xslt_errors = {
"xslt-parse-failure": "1",
"xpath-parse-failure": "2",
# 3 (NS_ERROR_XSLT_ALREADY_SET) is empty in xslt.properties.
# It seems it is always replaced with NS_ERROR_XSLT_VAR_ALREADY_SET.
"xslt-execution-failure": "4",
"xpath-unknown-function": "5",
"xslt-bad-recursion": "6",
"xslt-bad-value": "7",
"xslt-nodeset-expected": "8",
"xslt-aborted": "9",
"xslt-network-error": "10",
"xslt-wrong-mime-type": "11",
"xslt-load-recursion": "12",
"xpath-bad-argument-count": "13",
"xpath-bad-extension-function": "14",
"xpath-paren-expected": "15",
"xpath-invalid-axis": "16",
"xpath-no-node-type-test": "17",
"xpath-bracket-expected": "18",
"xpath-invalid-var-name": "19",
"xpath-unexpected-end": "20",
"xpath-operator-expected": "21",
"xpath-unclosed-literal": "22",
"xpath-bad-colon": "23",
"xpath-bad-bang": "24",
"xpath-illegal-char": "25",
"xpath-binary-expected": "26",
"xslt-load-blocked-error": "27",
"xpath-invalid-expression-evaluated": "28",
"xpath-unbalanced-curly-brace": "29",
"xslt-bad-node-name": "30",
"xslt-var-already-set": "31",
"xslt-call-to-key-not-allowed": "32",
}
ctx.add_transforms(
target,
target,
[
FTL.Message(id=FTL.Identifier(ftl_id), value=COPY(xslt_source, prop_id))
for ftl_id, prop_id in xslt_errors.items()
],
)
ctx.add_transforms(
target,
target,
[
FTL.Message(
id=FTL.Identifier("xslt-unknown-error"),
value=REPLACE(
global_strres_source,
"16389",
{"%1$S": VARIABLE_REFERENCE("errorCode")},
),
),
FTL.Message(
id=FTL.Identifier("xslt-loading-error"),
value=REPLACE(
xslt_source, "LoadingError", {"%1$S": VARIABLE_REFERENCE("error")}
),
),
FTL.Message(
id=FTL.Identifier("xslt-transform-error"),
value=REPLACE(
xslt_source, "TransformError", {"%1$S": VARIABLE_REFERENCE("error")}
),
),
],
)