diff --git a/claat/parser/gdoc/parse.go b/claat/parser/gdoc/parse.go
index 14c8b5d2a..faa564a1c 100644
--- a/claat/parser/gdoc/parse.go
+++ b/claat/parser/gdoc/parse.go
@@ -32,6 +32,7 @@ import (
"github.com/googlecodelabs/tools/claat/parser"
"github.com/googlecodelabs/tools/claat/types"
"github.com/googlecodelabs/tools/claat/util"
+ "github.com/stoewer/go-strcase"
)
func init() {
@@ -390,7 +391,7 @@ func metaTable(ds *docState) {
continue
}
s := stringifyNode(tr.FirstChild.NextSibling, true, false)
- fieldName := strings.ToLower(stringifyNode(tr.FirstChild, true, false))
+ fieldName := strcase.SnakeCase(stringifyNode(tr.FirstChild, true, false))
switch fieldName {
case "id", "url":
ds.clab.ID = s
@@ -407,9 +408,9 @@ func metaTable(ds *docState) {
v := util.NormalizedSplit(s)
sv := types.LegacyStatus(v)
ds.clab.Status = &sv
- case "feedback", "feedback link":
+ case "feedback", "feedback_link":
ds.clab.Feedback = s
- case "analytics", "analytics account", "google analytics":
+ case "analytics", "analytics_account", "google_analytics":
ds.clab.GA = s
default:
// If not explicitly parsed, it might be a pass_metadata value.
diff --git a/claat/parser/gdoc/parse_test.go b/claat/parser/gdoc/parse_test.go
index dc0ab7083..6a0ca2363 100644
--- a/claat/parser/gdoc/parse_test.go
+++ b/claat/parser/gdoc/parse_test.go
@@ -214,7 +214,7 @@ func TestMetaTablePassMetadata(t *testing.T) {
Final |
- | Feedback |
+ Feedback Link |
https://example.com/issues |
@@ -237,7 +237,7 @@ func TestMetaTablePassMetadata(t *testing.T) {
p := &Parser{}
opts := *parser.NewOptions()
opts.PassMetadata = map[string]bool{
- "extrafieldone": true,
+ "extra_field_one": true,
}
clab, err := p.Parse(markupReader(markup), opts)
@@ -256,7 +256,7 @@ func TestMetaTablePassMetadata(t *testing.T) {
// TODO: move sorting to Parse of the parser package
Tags: []string{"kiosk", "web"},
Extra: map[string]string{
- "extrafieldone": "11111",
+ "extra_field_one": "11111",
},
}
if !reflect.DeepEqual(clab.Meta, meta) {
diff --git a/claat/parser/md/parse.go b/claat/parser/md/parse.go
index 84a5adc3b..63090be53 100644
--- a/claat/parser/md/parse.go
+++ b/claat/parser/md/parse.go
@@ -32,6 +32,7 @@ import (
"golang.org/x/net/html"
"golang.org/x/net/html/atom"
+ "github.com/stoewer/go-strcase"
"github.com/googlecodelabs/tools/claat/nodes"
"github.com/googlecodelabs/tools/claat/parser"
@@ -50,8 +51,8 @@ const (
MetaCategories = "categories"
MetaEnvironments = "environments"
MetaStatus = "status"
- MetaFeedbackLink = "feedback link"
- MetaAnalyticsAccount = "analytics account"
+ MetaFeedbackLink = "feedback_link"
+ MetaAnalyticsAccount = "analytics_account"
MetaTags = "tags"
MetaSource = "source"
MetaDuration = "duration"
@@ -411,7 +412,7 @@ func parseMetadata(ds *docState, opts parser.Options) error {
// and assigns the values to any keys that match a codelab metadata field as defined by the meta* constants.
func addMetadataToCodelab(m map[string]string, c *types.Codelab, opts parser.Options) error {
for k, v := range m {
- switch k {
+ switch strcase.SnakeCase(k) {
case MetaAuthors:
// Directly assign the summary to the codelab field.
c.Authors = v
diff --git a/claat/parser/md/parse_test.go b/claat/parser/md/parse_test.go
index 0399ccb67..e0ef8dd93 100644
--- a/claat/parser/md/parse_test.go
+++ b/claat/parser/md/parse_test.go
@@ -180,8 +180,8 @@ authors: john smith
summary: abcdefghij
categories: not, really
environments: kiosk, web
-analytics account: 12345
-feedback link: https://www.google.com
+analytics_account: 12345
+feedback_link: https://www.google.com
---
`
@@ -205,7 +205,7 @@ func TestParseMetadataPassMetadata(t *testing.T) {
Feedback: "https://www.google.com",
GA: "12345",
Extra: map[string]string{
- "extrafieldtwo": "bbbbb",
+ "extra_field_two": "bbbbb",
},
}
@@ -215,10 +215,10 @@ authors: john smith
summary: abcdefghij
categories: not, really
environments: kiosk, web
-analytics account: 12345
-feedback link: https://www.google.com
-extrafieldone: aaaaa
-extrafieldtwo: bbbbb
+analytics_account: 12345
+feedback_link: https://www.google.com
+extra_field_one: aaaaa
+extra_field_two: bbbbb
---
`
@@ -226,7 +226,7 @@ extrafieldtwo: bbbbb
opts := *parser.NewOptions()
opts.PassMetadata = map[string]bool{
- "extrafieldtwo": true,
+ "extra_field_two": true,
}
c := mustParseCodelab(content, opts)
@@ -277,8 +277,8 @@ authors: john smith
summary: abcdefghij
categories: not, really
environments: kiosk, web
-analytics account: 12345
-feedback link: https://www.google.com
+analytics_account: 12345
+feedback_link: https://www.google.com
extrafieldone: aaaaa
extrafieldtwo: bbbbb