Repository: kovetskiy/mark
Pull request #172 (2022-04-02 23:18:46)

fix the README
this change allows the `box` macro to have http link inside


Patch:
diff --git a/README.md b/README.md
index b45a3ed..ecd06a3 100644
--- a/README.md
+++ b/README.md
@@ -304,7 +304,7 @@ This is my article.
 <!-- Space: TEST -->
 <!-- Title: Announcement -->
 
-<!-- Macro: :box:(.+):(.*):(.+):
+<!-- Macro: :box:([^:]+):([^:]*):(.+):
      Template: ac:box
      Icon: true
      Name: ${1}
diff --git a/main.go b/main.go
index 2194ef5..9e92167 100644
--- a/main.go
+++ b/main.go
@@ -6,6 +6,7 @@ import (
 	"io/ioutil"
 	"os"
 	"path/filepath"
+	"time"
 
 	"github.com/docopt/docopt-go"
 	"github.com/kovetskiy/lorg"
@@ -306,6 +307,10 @@ func processFile(
 					meta.Title,
 				)
 			}
+			// (issues/139): A delay between the create and update call
+			// helps mitigate a 409 conflict that can occur when attempting
+			// to update a page just after it was created.
+			time.Sleep(1 * time.Second)
 		}
 
 		target = page
diff --git a/pkg/confluence/api.go b/pkg/confluence/api.go
index 2930851..40455ed 100644
--- a/pkg/confluence/api.go
+++ b/pkg/confluence/api.go
@@ -552,6 +552,16 @@ func (api *API) UpdatePage(
 		},
 		"metadata": map[string]interface{}{
 			"labels": labels,
+			// The Confluence API randomly sets page width for some reason:
+			// https://community.developer.atlassian.com/t/confluence-rest-api-create-content-at-random-width/57001
+
+			// This is a workaround to compensate for that bug. It forces the page to be created
+			// with the default appearance, which is "fixed" (not full-width).
+			"properties": map[string]interface{}{
+				"content-appearance-published": map[string]interface{}{
+					"value": "default",
+				},
+			},
 		},
 	}
 
diff --git a/pkg/mark/stdlib/stdlib.go b/pkg/mark/stdlib/stdlib.go
index 463d638..f1bc132 100644
--- a/pkg/mark/stdlib/stdlib.go
+++ b/pkg/mark/stdlib/stdlib.go
@@ -106,10 +106,6 @@ func templates(api *confluence.API) (*template.Template, error) {
 
 		// This template is used for rendering code in ```
 		`ac:code`: text(
-			`{{ if .Collapse }}<ac:structured-macro ac:name="expand">{{printf "\n"}}`,
-			`{{ if .Title }}<ac:parameter ac:name="title">{{ .Title }}</ac:parameter>{{printf "\n"}}{{ end }}`,
-			`<ac:rich-text-body>{{printf "\n"}}{{ end }}`,
-
 			`<ac:structured-macro ac:name="{{ if eq .Language "mermaid" }}cloudscript-confluence-mermaid{{ else }}code{{ end }}">{{printf "\n"}}`,
 			/**/ `{{ if eq .Language "mermaid" }}<ac:parameter ac:name="showSource">true</ac:parameter>{{printf "\n"}}{{ else }}`,
 			/**/ `<ac:parameter ac:name="language">{{ .Language }}</ac:parameter>{{printf "\n"}}{{ end }}`,
@@ -117,9 +113,6 @@ func templates(api *confluence.API) (*template.Template, error) {
 			/**/ `{{ if .Title }}<ac:parameter ac:name="title">{{ .Title }}</ac:parameter>{{printf "\n"}}{{ end }}`,
 			/**/ `<ac:plain-text-body><![CDATA[{{ .Text | cdata }}]]></ac:plain-text-body>{{printf "\n"}}`,
 			`</ac:structured-macro>{{printf "\n"}}`,
-
-			`{{ if .Collapse }}</ac:rich-text-body>{{printf "\n"}}`,
-			`</ac:structured-macro>{{printf "\n"}}{{ end }}`,
 		),
 
 		`ac:status`: text(


Test patch:
diff --git a/pkg/mark/testdata/codes.html b/pkg/mark/testdata/codes.html
index 4a1f879..ef0f80c 100644
--- a/pkg/mark/testdata/codes.html
+++ b/pkg/mark/testdata/codes.html
@@ -34,26 +34,17 @@ text 2</p>
 <ac:parameter ac:name="title">A b c</ac:parameter>
 <ac:plain-text-body><![CDATA[no-collapse-title]]></ac:plain-text-body>
 </ac:structured-macro>
-<ac:structured-macro ac:name="expand">
-<ac:parameter ac:name="title">A b c</ac:parameter>
-<ac:rich-text-body>
 <ac:structured-macro ac:name="code">
 <ac:parameter ac:name="language">bash</ac:parameter>
 <ac:parameter ac:name="collapse">true</ac:parameter>
 <ac:parameter ac:name="title">A b c</ac:parameter>
 <ac:plain-text-body><![CDATA[collapse-and-title]]></ac:plain-text-body>
 </ac:structured-macro>
-</ac:rich-text-body>
-</ac:structured-macro>
-<ac:structured-macro ac:name="expand">
-<ac:rich-text-body>
 <ac:structured-macro ac:name="code">
 <ac:parameter ac:name="language">c</ac:parameter>
 <ac:parameter ac:name="collapse">true</ac:parameter>
 <ac:plain-text-body><![CDATA[collapse-no-title]]></ac:plain-text-body>
 </ac:structured-macro>
-</ac:rich-text-body>
-</ac:structured-macro>
 <ac:structured-macro ac:name="cloudscript-confluence-mermaid">
 <ac:parameter ac:name="showSource">true</ac:parameter>
 <ac:parameter ac:name="collapse">false</ac:parameter>
@@ -63,9 +54,6 @@ text 2</p>
     B-->D;
     C-->D;]]></ac:plain-text-body>
 </ac:structured-macro>
-<ac:structured-macro ac:name="expand">
-<ac:parameter ac:name="title">my mermaid graph</ac:parameter>
-<ac:rich-text-body>
 <ac:structured-macro ac:name="cloudscript-confluence-mermaid">
 <ac:parameter ac:name="showSource">true</ac:parameter>
 <ac:parameter ac:name="collapse">true</ac:parameter>
@@ -76,8 +64,6 @@ text 2</p>
     B-->D;
     C-->D;]]></ac:plain-text-body>
 </ac:structured-macro>
-</ac:rich-text-body>
-</ac:structured-macro>
 <ac:structured-macro ac:name="cloudscript-confluence-mermaid">
 <ac:parameter ac:name="showSource">true</ac:parameter>
 <ac:parameter ac:name="collapse">false</ac:parameter>