[
https://issues.apache.org/jira/browse/FLINK-5781?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16006311#comment-16006311
]
ASF GitHub Bot commented on FLINK-5781:
---------------------------------------
Github user zentol commented on a diff in the pull request:
https://github.com/apache/flink/pull/3495#discussion_r115972689
--- Diff:
flink-core/src/main/java/org/apache/flink/configuration/ConfigOptionsDocGenerator.java
---
@@ -0,0 +1,279 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.flink.configuration;
+
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.apache.flink.api.java.tuple.Tuple2;
+
+/**
+ * Class used for generating code based documentation of configuration
parameters.
+ */
+public class ConfigOptionsDocGenerator {
+
+ /**
+ * Transforms this configuration group into HTML formatted table.
+ * Options are sorted alphabetically by key.
+ *
+ * @param options list of options to include in this group
+ * @return string containing HTML formatted table
+ */
+ private static String toHTMLTable(final List<ConfigOption> options) {
+ final StringBuilder htmlTable = new StringBuilder(
+ "<table class=\"table table-bordered\"><thead><tr><th
class=\"text-left\" style=\"width: 20%\">Key</th>" +
+ "<th class=\"text-left\" style=\"width: 15%\">Default
Value</th><th class=\"text-left\" " +
+ "style=\"width:
65%\">Description</th></tr></thead><tbody>");
+
+ for (ConfigOption option : options) {
+ htmlTable.append(toHTMLString(option));
+ }
+
+ htmlTable.append("</tbody></table>");
+
+ return htmlTable.toString();
+ }
+
+ /**
+ * Transforms this configuration group into HTML formatted table.
+ * Options are sorted alphabetically by key.
+ *
+ * @param clazzz a class that contains options to be converted int
documentation
+ * @return string containing HTML formatted table
+ */
+ static String create(Class<?> clazzz) {
+ final List<ConfigOption> configOptions =
extractConfigOptions(clazzz);
+
+ return toHTMLTable(configOptions);
+ }
+
+ private static List<ConfigOption> extractConfigOptions(Class<?> clazzz)
{
+ try {
+ final List<ConfigOption> configOptions = new
ArrayList<>();
+ final Field[] fields = clazzz.getFields();
+ for (Field field : fields) {
+ if (field.getType().equals(ConfigOption.class)
&& field.getAnnotation(Deprecated.class) == null) {
+ configOptions.add((ConfigOption)
field.get(null));
+ }
+ }
+
+ return configOptions;
+ } catch (Exception e) {
+ throw new RuntimeException("Could not retrieve all
options.", e);
+ }
+ }
+
+ /**
+ * Transforms option to table row.
+ *
+ * @param option option to transform
+ * @return row with the option description
+ */
+ private static String toHTMLString(final ConfigOption<?> option) {
+ return "<tr>" +
+ "<td>" + option.key() + "</td>" +
+ "<td>" +
defaultValueToHtml(option.defaultValue()) + "</td>" +
+ "<td>" + option.description() + "</td>" +
+ "</tr>";
+ }
+
+ private static String defaultValueToHtml(Object value) {
--- End diff --
the naming is inconsistent in regards to whether "Html" is upper-case or
not. I have no preference for either though.
> Generation HTML from ConfigOption
> ---------------------------------
>
> Key: FLINK-5781
> URL: https://issues.apache.org/jira/browse/FLINK-5781
> Project: Flink
> Issue Type: Sub-task
> Components: Documentation
> Reporter: Ufuk Celebi
> Assignee: Dawid Wysakowicz
>
> Use the ConfigOption instances to generate a HTML page that we can use to
> include in the docs configuration page.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)