You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by jo...@apache.org on 2023/04/06 19:46:29 UTC
[royale-compiler] 02/02: Allow [Embed] to specify charset for mimeType text/plain
This is an automated email from the ASF dual-hosted git repository.
joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
commit 6654842e26de390ab89710c2422dea753962bf66
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Thu Apr 6 12:46:14 2023 -0700
Allow [Embed] to specify charset for mimeType text/plain
Defaults to UTF-8
---
.../java/org/apache/royale/compiler/embedding/EmbedAttribute.java | 1 +
.../compiler/internal/codegen/js/royale/JSRoyaleEmitter.java | 7 ++++++-
.../org/apache/royale/compiler/internal/embedding/EmbedData.java | 4 ++++
.../org/apache/royale/compiler/internal/tree/as/EmbedNode.java | 7 ++++++-
4 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/compiler-common/src/main/java/org/apache/royale/compiler/embedding/EmbedAttribute.java b/compiler-common/src/main/java/org/apache/royale/compiler/embedding/EmbedAttribute.java
index 87f623e1d..dcbc35541 100644
--- a/compiler-common/src/main/java/org/apache/royale/compiler/embedding/EmbedAttribute.java
+++ b/compiler-common/src/main/java/org/apache/royale/compiler/embedding/EmbedAttribute.java
@@ -39,6 +39,7 @@ public enum EmbedAttribute
SKIN_CLASS("skinClass"),
SMOOTHING("smoothing"),
SYMBOL("symbol"),
+ CHARSET("charset"),
// obsolete font related attributes, which are kept
// here so we don't report problems on them, and instead
// report one problem that font embeddeding is not supported.
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitter.java
index 2f67e14f5..ae930927a 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitter.java
@@ -1092,12 +1092,17 @@ public class JSRoyaleEmitter extends JSGoogEmitter implements IJSRoyaleEmitter
}
String source = (String) data.getAttribute(EmbedAttribute.SOURCE);
EmbedMIMEType mimeType = (EmbedMIMEType) data.getAttribute(EmbedAttribute.MIME_TYPE);
+ String charset = (String) data.getAttribute(EmbedAttribute.CHARSET);
+ if (charset == null)
+ {
+ charset = "UTF-8";
+ }
if (mimeType != null && mimeType.toString().equals(EmbedMIMEType.TEXT.toString()) && source != null)
{
File file = new File(FilenameNormalization.normalize(source));
try {
String newlineReplacement = "\\\\n";
- String s = FileUtils.readFileToString(file, "UTF-8");
+ String s = FileUtils.readFileToString(file, charset);
s = s.replaceAll("\n", "__NEWLINE_PLACEHOLDER__");
s = s.replaceAll("\r", "__CR_PLACEHOLDER__");
s = s.replaceAll("\t", "__TAB_PLACEHOLDER__");
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/embedding/EmbedData.java b/compiler/src/main/java/org/apache/royale/compiler/internal/embedding/EmbedData.java
index 544133ca1..9aa27e9c2 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/embedding/EmbedData.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/embedding/EmbedData.java
@@ -346,6 +346,10 @@ public class EmbedData implements IEmbedData
{
attributes.put(EmbedAttribute.SYMBOL, value);
}
+ else if (EmbedAttribute.CHARSET.equals(key))
+ {
+ attributes.put(EmbedAttribute.CHARSET, value);
+ }
else if (EmbedAttribute.ADV_ANTI_ALIASING.equals(key) ||
EmbedAttribute.EMBED_AS_CFF.equals(key) ||
EmbedAttribute.UNICODE_RANGE.equals(key) ||
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/EmbedNode.java b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/EmbedNode.java
index a57150186..5f834a8c2 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/EmbedNode.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/EmbedNode.java
@@ -156,11 +156,16 @@ public class EmbedNode extends ExpressionNodeBase implements IEmbedNode, IEmbedR
return new String();
String source = (String) data.getAttribute(EmbedAttribute.SOURCE);
EmbedMIMEType mimeType = (EmbedMIMEType) data.getAttribute(EmbedAttribute.MIME_TYPE);
+ String charset = (String) data.getAttribute(EmbedAttribute.CHARSET);
+ if (charset == null)
+ {
+ charset = "UTF-8";
+ }
if (mimeType != null && mimeType.toString().equals(EmbedMIMEType.TEXT.toString()) && source != null)
{
File file = new File(FilenameNormalization.normalize(source));
try {
- String string = FileUtils.readFileToString(file, "UTF-8");
+ String string = FileUtils.readFileToString(file, charset);
return string;
} catch (IOException e) {
problems.add(new EmbedUnableToReadSourceProblem(e, file.getPath()));