This is an automated email from the ASF dual-hosted git repository.

dwysakowicz pushed a commit to branch release-1.6
in repository https://gitbox.apache.org/repos/asf/flink.git

commit 3dccd071f31320110a720bdca05d1a974d37376c
Author: Dawid Wysakowicz <[email protected]>
AuthorDate: Thu Aug 9 17:10:38 2018 +0200

    [FLINK-9013] Allow formatting text as code in option description
---
 .../configuration/description/Description.java     | 11 +++++++++
 .../flink/configuration/description/Formatter.java | 10 ++++++--
 .../configuration/description/HtmlFormatter.java   | 17 +++++++++++++-
 .../configuration/description/TextElement.java     | 27 +++++++++++++++++++++-
 4 files changed, 61 insertions(+), 4 deletions(-)

diff --git 
a/flink-core/src/main/java/org/apache/flink/configuration/description/Description.java
 
b/flink-core/src/main/java/org/apache/flink/configuration/description/Description.java
index 25a6a64..c00890d 100644
--- 
a/flink-core/src/main/java/org/apache/flink/configuration/description/Description.java
+++ 
b/flink-core/src/main/java/org/apache/flink/configuration/description/Description.java
@@ -79,6 +79,17 @@ public class Description {
                }
 
                /**
+                * Block of description add.
+                *
+                * @param block block of description to add
+                * @return block of description
+                */
+               public DescriptionBuilder add(BlockElement block) {
+                       blocks.add(block);
+                       return this;
+               }
+
+               /**
                 * Creates a line break in the description.
                 */
                public DescriptionBuilder linebreak() {
diff --git 
a/flink-core/src/main/java/org/apache/flink/configuration/description/Formatter.java
 
b/flink-core/src/main/java/org/apache/flink/configuration/description/Formatter.java
index d3fcf40..fdf7db6 100644
--- 
a/flink-core/src/main/java/org/apache/flink/configuration/description/Formatter.java
+++ 
b/flink-core/src/main/java/org/apache/flink/configuration/description/Formatter.java
@@ -18,6 +18,8 @@
 
 package org.apache.flink.configuration.description;
 
+import java.util.EnumSet;
+
 /**
  * Allows providing multiple formatters for the description. E.g. Html 
formatter, Markdown formatter etc.
  */
@@ -49,7 +51,7 @@ public abstract class Formatter {
                                return formatter.finalizeFormatting();
                        }
                ).toArray(String[]::new);
-               formatText(state, escapeFormatPlaceholder(element.getFormat()), 
inlineElements);
+               formatText(state, escapeFormatPlaceholder(element.getFormat()), 
inlineElements, element.getStyles());
        }
 
        public void format(LineBreakElement element) {
@@ -76,7 +78,11 @@ public abstract class Formatter {
 
        protected abstract void formatLineBreak(StringBuilder state);
 
-       protected abstract void formatText(StringBuilder state, String format, 
String[] elements);
+       protected abstract void formatText(
+               StringBuilder state,
+               String format,
+               String[] elements,
+               EnumSet<TextElement.TextStyle> styles);
 
        protected abstract void formatList(StringBuilder state, String[] 
entries);
 
diff --git 
a/flink-core/src/main/java/org/apache/flink/configuration/description/HtmlFormatter.java
 
b/flink-core/src/main/java/org/apache/flink/configuration/description/HtmlFormatter.java
index 72531ab..a475303 100644
--- 
a/flink-core/src/main/java/org/apache/flink/configuration/description/HtmlFormatter.java
+++ 
b/flink-core/src/main/java/org/apache/flink/configuration/description/HtmlFormatter.java
@@ -18,6 +18,8 @@
 
 package org.apache.flink.configuration.description;
 
+import java.util.EnumSet;
+
 /**
  * Formatter that transforms {@link Description} into Html representation.
  */
@@ -34,9 +36,22 @@ public class HtmlFormatter extends Formatter {
        }
 
        @Override
-       protected void formatText(StringBuilder state, String format, String[] 
elements) {
+       protected void formatText(
+                       StringBuilder state,
+                       String format,
+                       String[] elements,
+                       EnumSet<TextElement.TextStyle> styles) {
                String escapedFormat = escapeCharacters(format);
+
+               String prefix = "";
+               String suffix = "";
+               if (styles.contains(TextElement.TextStyle.CODE)) {
+                       prefix = "<span markdown=\"span\">`";
+                       suffix = "`</span>";
+               }
+               state.append(prefix);
                state.append(String.format(escapedFormat, elements));
+               state.append(suffix);
        }
 
        @Override
diff --git 
a/flink-core/src/main/java/org/apache/flink/configuration/description/TextElement.java
 
b/flink-core/src/main/java/org/apache/flink/configuration/description/TextElement.java
index aeb1d7a..80bdfcf 100644
--- 
a/flink-core/src/main/java/org/apache/flink/configuration/description/TextElement.java
+++ 
b/flink-core/src/main/java/org/apache/flink/configuration/description/TextElement.java
@@ -20,6 +20,7 @@ package org.apache.flink.configuration.description;
 
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.EnumSet;
 import java.util.List;
 
 /**
@@ -28,6 +29,7 @@ import java.util.List;
 public class TextElement implements BlockElement, InlineElement {
        private final String format;
        private final List<InlineElement> elements;
+       private final EnumSet<TextStyle> textStyles = 
EnumSet.noneOf(TextStyle.class);
 
        /**
         * Creates a block of text with placeholders ("%s") that will be 
replaced with proper string representation of
@@ -35,7 +37,7 @@ public class TextElement implements BlockElement, 
InlineElement {
         *
         * <p>{@code text("This is a text with a link %s", 
link("https://somepage";, "to here"))}
         *
-        * @param format   text with placeholders for elements
+        * @param format text with placeholders for elements
         * @param elements elements to be put in the text
         * @return block of text
         */
@@ -53,6 +55,18 @@ public class TextElement implements BlockElement, 
InlineElement {
                return new TextElement(text, Collections.emptyList());
        }
 
+       /**
+        * Creates a block of text formatted as code.
+        *
+        * @param text a block of text that will be formatted as code
+        * @return block of text formatted as code
+        */
+       public static TextElement code(String text) {
+               TextElement element = text(text);
+               element.textStyles.add(TextStyle.CODE);
+               return element;
+       }
+
        public String getFormat() {
                return format;
        }
@@ -61,6 +75,10 @@ public class TextElement implements BlockElement, 
InlineElement {
                return elements;
        }
 
+       public EnumSet<TextStyle> getStyles() {
+               return textStyles;
+       }
+
        private TextElement(String format, List<InlineElement> elements) {
                this.format = format;
                this.elements = elements;
@@ -70,4 +88,11 @@ public class TextElement implements BlockElement, 
InlineElement {
        public void format(Formatter formatter) {
                formatter.format(this);
        }
+
+       /**
+        * Styles that can be applied to {@link TextElement} e.g. code, bold 
etc.
+        */
+       public enum TextStyle {
+               CODE
+       }
 }

Reply via email to