summaryrefslogtreecommitdiff
path: root/caddyconfig/json5
diff options
context:
space:
mode:
Diffstat (limited to 'caddyconfig/json5')
-rw-r--r--caddyconfig/json5/json5.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/caddyconfig/json5/json5.go b/caddyconfig/json5/json5.go
new file mode 100644
index 0000000..2c86301
--- /dev/null
+++ b/caddyconfig/json5/json5.go
@@ -0,0 +1,43 @@
+// Copyright 2015 Matthew Holt and The Caddy Authors
+//
+// Licensed 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 json5adapter
+
+import (
+ "encoding/json"
+
+ "github.com/caddyserver/caddy/v2/caddyconfig"
+ "github.com/ilibs/json5"
+)
+
+func init() {
+ caddyconfig.RegisterAdapter("json5", Adapter{})
+}
+
+// Adapter adapts JSON5 to Caddy JSON.
+type Adapter struct{}
+
+// Adapt converts the JSON5 config in body to Caddy JSON.
+func (a Adapter) Adapt(body []byte, options map[string]interface{}) (result []byte, warnings []caddyconfig.Warning, err error) {
+ var decoded interface{}
+ err = json5.Unmarshal(body, &decoded)
+ if err != nil {
+ return
+ }
+ result, err = json.Marshal(decoded)
+ return
+}
+
+// Interface guard
+var _ caddyconfig.Adapter = (*Adapter)(nil)