Repository: camel
Updated Branches:
  refs/heads/master e378f76f3 -> 284296813


Make heading in adoc files sane again.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/11dfcc00
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/11dfcc00
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/11dfcc00

Branch: refs/heads/master
Commit: 11dfcc00b44070f07c3dc0d2c06daf56d6afe191
Parents: e378f76
Author: Claus Ibsen <davscl...@apache.org>
Authored: Wed Jan 11 18:30:25 2017 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Wed Jan 11 19:26:15 2017 +0100

----------------------------------------------------------------------
 .../maven/packaging/ReadmeComponentMojo.java    | 97 ++++++++++----------
 1 file changed, 48 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/11dfcc00/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java
----------------------------------------------------------------------
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java
index 8393470..3725acf 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ReadmeComponentMojo.java
@@ -24,6 +24,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
+import java.util.stream.Collectors;
 
 import org.apache.camel.maven.packaging.model.ComponentModel;
 import org.apache.camel.maven.packaging.model.ComponentOptionModel;
@@ -131,7 +132,7 @@ public class ReadmeComponentMojo extends AbstractMojo {
                     boolean exists = file.exists();
                     boolean updated = false;
 
-                    updated |= updateTitle(file, model.getTitle() + " 
Component");
+                    updated |= updateTitles(file, model.getTitle() + " 
Component");
 
                     if (model.getComponentOptions() != null) {
                         String options = templateComponentOptions(model);
@@ -182,7 +183,7 @@ public class ReadmeComponentMojo extends AbstractMojo {
                     boolean exists = file.exists();
                     boolean updated = false;
 
-                    updated |= updateTitle(file, model.getTitle() + " 
DataFormat");
+                    updated |= updateTitles(file, model.getTitle() + " 
DataFormat");
 
                     if (model.getDataFormatOptions() != null) {
                         String options = templateDataFormatOptions(model);
@@ -260,7 +261,7 @@ public class ReadmeComponentMojo extends AbstractMojo {
                     boolean exists = file.exists();
                     boolean updated = false;
 
-                    updated |= updateTitle(file, model.getTitle() + " 
Language");
+                    updated |= updateTitles(file, model.getTitle() + " 
Language");
 
                     if (model.getLanguageOptions() != null) {
                         String options = templateLanguageOptions(model);
@@ -282,71 +283,69 @@ public class ReadmeComponentMojo extends AbstractMojo {
         }
     }
 
-    private boolean updateTitle(File file, String title) throws 
MojoExecutionException {
+    private boolean updateTitles(File file, String title) throws 
MojoExecutionException {
         if (!file.exists()) {
             return false;
         }
 
-        // they may be in old title format which we want to avoid
-        // [[Bean-BeanComponent]]
-        // Bean Component
-        // ~~~~~~~~~~~~~~
+        boolean updated = false;
 
         try {
             String text = loadText(new FileInputStream(file));
 
-            // grab the first 3 lines which can have old legacy format
-            String before = StringHelper.before(text, "\n");
-            text = StringHelper.after(text, "\n");
-            String before2 = StringHelper.before(text, "\n");
-            text = StringHelper.after(text, "\n");
-            String before3 = StringHelper.before(text, "\n");
-            text = StringHelper.after(text, "\n");
-
-            // skip old title format
-            if (before3 != null && before3.startsWith("~~~")) {
-                before = null;
-                before2 = null;
-                before3 = null;
-            }
-            if (before2 != null && before2.startsWith("~~~")) {
-                before = null;
-                before2 = null;
-            }
+            List<String> newLines = new ArrayList<>();
 
-            String oldTitle = before;
-            if (oldTitle == null) {
-                oldTitle = before2;
-            }
-            if (oldTitle == null) {
-                oldTitle = before3;
-            }
+            String[] lines = text.split("\n");
+            for (int i = 0; i < lines.length; i++) {
+                String line = lines[i];
 
-            String changed = "# " + title;
-            if (!changed.equals(oldTitle)) {
-                // insert title in top of file
-                String newText = changed + "\n";
-                // keep the before lines that was okay to keep
-                if (before != null) {
-                    newText += before + "\n";
+                if (i == 0) {
+                    // first line is the title to make the text less noisy we 
use level 2
+                    String newLine = "## " + title;
+                    newLines.add(newLine);
+                    updated = !line.equals(newLine);
+                    continue;
                 }
-                if (before2 != null) {
-                    newText += before2 + "\n";
-                }
-                if (before3 != null) {
-                    newText += before3 + "\n";
+
+                // use single line headers with # as level instead of the 
cumbersome adoc weird style
+                if (line.startsWith("^^^") || line.startsWith("~~~") || 
line.startsWith("+++") ) {
+                    String level = line.startsWith("+++") ? "####" : "###";
+
+                    // transform legacy heading into new style
+                    int idx = newLines.size() - 1;
+                    String prev = newLines.get(idx);
+
+                    newLines.set(idx, level + " " + prev);
+
+                    // okay if 2nd-prev line is a [[title]] we need to remove 
that too
+                    // so we have nice clean sub titles
+                    idx = newLines.size() - 2;
+                    if (idx >= 0) {
+                        prev = newLines.get(idx);
+                        if (prev.startsWith("[[")) {
+                            // remove
+                            newLines.remove(idx);
+                        }
+                    }
+
+                    updated = true;
+                } else {
+                    // okay normal text so just add it
+                    newLines.add(line);
                 }
-                // and remember the doc body
-                newText += text;
+            }
+
 
+            if (updated) {
+                // build the new updated text
+                String newText = 
newLines.stream().collect(Collectors.joining("\n"));
                 writeText(file, newText);
-                return true;
             }
         } catch (Exception e) {
             throw new MojoExecutionException("Error reading file " + file + " 
Reason: " + e, e);
         }
 
-        return false;
+        return updated;
     }
 
     private boolean updateComponentOptions(File file, String changed) throws 
MojoExecutionException {

Reply via email to