Doc Scilab image gen: when localized='false' in locale other than en_US and when... 18/13318/2
Calixte DENIZET [Thu, 5 Dec 2013 13:30:25 +0000 (14:30 +0100)]
Change-Id: I49b3b0dc375d71c0ac15d29e67c6627e16622ae8

scilab/modules/helptools/src/java/org/scilab/modules/helptools/external/ExternalXMLHandler.java
scilab/modules/helptools/src/java/org/scilab/modules/helptools/external/HTMLMathMLHandler.java
scilab/modules/helptools/src/java/org/scilab/modules/helptools/external/HTMLSVGHandler.java
scilab/modules/helptools/src/java/org/scilab/modules/helptools/external/HTMLScilabHandler.java
scilab/modules/helptools/src/java/org/scilab/modules/helptools/image/ImageConverter.java

index fd783ff..b9bbee8 100644 (file)
@@ -65,4 +65,17 @@ public abstract class ExternalXMLHandler {
 
         buf.append(">");
     }
+
+    protected static final Boolean getLocalized(final String URI, final Attributes attributes) {
+        String v = URI == null ? attributes.getValue("localized") : attributes.getValue(URI, "localized");
+        if (v == null || v.isEmpty()) {
+            return Boolean.FALSE;
+        } else if ("true".equalsIgnoreCase(v)) {
+            return Boolean.TRUE;
+        } else if ("false".equalsIgnoreCase(v)) {
+            return null;
+        } else {
+            return Boolean.FALSE;
+        }
+    }
 }
\ No newline at end of file
index 2666aea..1049019 100644 (file)
@@ -33,7 +33,7 @@ public class HTMLMathMLHandler extends ExternalXMLHandler {
     private StringBuilder buffer = new StringBuilder(8192);
     private String baseDir;
     private String outputDir;
-    private boolean isLocalized;
+    private Boolean isLocalized;
     private int line;
 
     /**
@@ -57,8 +57,7 @@ public class HTMLMathMLHandler extends ExternalXMLHandler {
      */
     public StringBuilder startExternalXML(String localName, Attributes attributes, Locator locator) {
         if (MATH.equals(localName)) {
-            String v = attributes.getValue(getScilabURI(), "localized");
-            isLocalized = "true".equalsIgnoreCase(v);
+            isLocalized = getLocalized(getScilabURI(), attributes);
             line = locator.getLineNumber();
         }
 
@@ -78,7 +77,7 @@ public class HTMLMathMLHandler extends ExternalXMLHandler {
             recreateTag(buffer, localName, null);
             File f;
             String language = ((HTMLDocbookTagConverter) getConverter()).getLanguage();
-            if (isLocalized) {
+            if (isLocalized != null && isLocalized.booleanValue()) {
                 f = new File(outputDir, BASENAME + getConverter().getCurrentBaseName() + "_" + language + "_" + (compt++) + ".png");
             } else {
                 if ("ru_RU".equals(language) && HTMLDocbookTagConverter.containsCyrillic(buffer)) {
index ecb0b55..63ff657 100644 (file)
@@ -33,7 +33,7 @@ public class HTMLSVGHandler extends ExternalXMLHandler {
     private StringBuilder buffer = new StringBuilder(8192);
     private String baseDir;
     private String outputDir;
-    private boolean isLocalized;
+    private Boolean isLocalized;
     private int line;
 
     /**
@@ -57,8 +57,7 @@ public class HTMLSVGHandler extends ExternalXMLHandler {
      */
     public StringBuilder startExternalXML(String localName, Attributes attributes, Locator locator) {
         if (SVG.equals(localName)) {
-            String v = attributes.getValue(getScilabURI(), "localized");
-            isLocalized = "true".equalsIgnoreCase(v);
+            isLocalized = getLocalized(getScilabURI(), attributes);
             line = locator.getLineNumber();
         }
 
@@ -78,7 +77,7 @@ public class HTMLSVGHandler extends ExternalXMLHandler {
             recreateTag(buffer, localName, null);
             File f;
             String language = ((HTMLDocbookTagConverter) getConverter()).getLanguage();
-            if (isLocalized) {
+            if (isLocalized != null && isLocalized.booleanValue()) {
                 f = new File(outputDir, BASENAME + getConverter().getCurrentBaseName() + "_" + language + "_" + (compt++) + ".png");
             } else {
                 if ("ru_RU".equals(language) && HTMLDocbookTagConverter.containsCyrillic(buffer)) {
index 1b9be6b..81a70e4 100644 (file)
@@ -35,7 +35,7 @@ public class HTMLScilabHandler extends ExternalXMLHandler {
     private StringBuilder buffer = new StringBuilder(8192);
     private String baseDir;
     private String outputDir;
-    private boolean isLocalized;
+    private Boolean isLocalized;
     private int line;
 
     /**
@@ -59,8 +59,7 @@ public class HTMLScilabHandler extends ExternalXMLHandler {
      */
     public StringBuilder startExternalXML(String localName, Attributes attributes, Locator locator) {
         if (localName.equals("image")) {
-            String v = attributes.getValue("localized");
-            isLocalized = "true".equalsIgnoreCase(v);
+            isLocalized = getLocalized(null, attributes);
             line = locator.getLineNumber();
         }
 
@@ -86,7 +85,7 @@ public class HTMLScilabHandler extends ExternalXMLHandler {
             }
             String language = ((HTMLDocbookTagConverter) getConverter()).getLanguage();
             String fileName;
-            if (isLocalized) {
+            if (isLocalized != null && isLocalized.booleanValue()) {
                 fileName = baseName + BASENAME + language + BASENAME + (compt++) + ".png";
             } else {
                 fileName = baseName + BASENAME + (compt++) + ".png";
@@ -101,7 +100,7 @@ public class HTMLScilabHandler extends ExternalXMLHandler {
             if (getConverter() instanceof HTMLDocbookTagConverter) {
                 baseImagePath = ((HTMLDocbookTagConverter) getConverter()).getBaseImagePath();
             }
-            if (isLocalized || (existing = getExistingFile(outputDir, fileName)) == null) {
+            if ((isLocalized != null && isLocalized.booleanValue()) || (existing = getExistingFile(outputDir, fileName)) == null) {
                 ret = getConverter().getImageConverter().getImageByCode(currentFileName, buffer.toString(), attributes, "image/scilab", f, baseDir + f.getName(), baseImagePath, line, language, isLocalized);
             } else {
                 ret = getConverter().getImageConverter().getImageByFile(attributes, null, existing.getAbsolutePath(), outputDir, ".", baseImagePath);
index 819f93f..c92c081 100644 (file)
@@ -226,7 +226,7 @@ public final class ImageConverter {
      * @param imageFile the filename
      * @return true if the code has been rendered into {@code imageFile}
      */
-    public String getImageByCode(String currentFile, String code, Map<String, String> attrs, String mime, File imageFile, String imageName, String baseImagePath, int lineNumber, String language, boolean isLocalized) {
+    public String getImageByCode(String currentFile, String code, Map<String, String> attrs, String mime, File imageFile, String imageName, String baseImagePath, int lineNumber, String language, Boolean isLocalized) {
         ExternalImageConverter imgConv = externalConverters.get(mime);
         if (imgConv == null) {
             System.err.println("In file " + currentFile + " at line " + lineNumber + ": invalid code:\n" + code);
@@ -238,8 +238,9 @@ public final class ImageConverter {
         }
 
         File current = new File(currentFile);
-        if (!compareMD5(code, imageFile.getName())) {
-            if (isLocalized || language.equals("en_US")) {
+
+        if ((language.equals("en_US") || !imageFile.exists() || isLocalized != null) && !compareMD5(code, imageFile.getName())) {
+            if ((isLocalized != null && isLocalized.booleanValue()) || language.equals("en_US")) {
                 System.err.println("Info: Create image " + imageFile.getName() + " from line " + lineNumber + " in " + current.getName());
             } else if (!language.equals("en_US") && imageFile.exists()) {
                 System.err.println("Warning: Overwrite image " + imageFile.getName() + " from line " + lineNumber + " in " + current.getName() + ". Check the code or use scilab:localized=\"true\" attribute.");