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