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 <[email protected]>
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()));

Reply via email to