From 1ffdb48e696d2bceb52ad36b952393bfba410e42 Mon Sep 17 00:00:00 2001 From: mariusor Date: Thu, 3 Nov 2022 14:54:37 +0100 Subject: [PATCH] Add some convenience functions to initialize NaturalLanguageValues properties --- natural_language_values.go | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/natural_language_values.go b/natural_language_values.go index defe0e0..6a0c17d 100644 --- a/natural_language_values.go +++ b/natural_language_values.go @@ -15,6 +15,9 @@ import ( // It is used for LangRefValue objects without an explicit language key. const NilLangRef LangRef = "-" +// DefaultLang represents the default language reference used when using the convenience content generation. +var DefaultLang = NilLangRef + type ( // LangRef is the type for a language reference code, should be an ISO639-1 language specifier. LangRef string @@ -29,8 +32,16 @@ type ( NaturalLanguageValues []LangRefValue ) -func NaturalLanguageValuesNew() NaturalLanguageValues { - return make(NaturalLanguageValues, 0) +func NaturalLanguageValuesNew(values ...LangRefValue) NaturalLanguageValues { + n := make(NaturalLanguageValues, len(values)) + for i, val := range values { + n[i] = val + } + return n +} + +func DefaultNaturalLanguageValue(content string) NaturalLanguageValues { + return NaturalLanguageValuesNew(DefaultLangRef(content)) } func (n NaturalLanguageValues) String() string { @@ -74,6 +85,10 @@ func (n *NaturalLanguageValues) Set(ref LangRef, v Content) error { return nil } +func (n *NaturalLanguageValues) Add(ref LangRefValue) { + *n = append(*n, ref) +} + // MarshalJSON encodes the receiver object to a JSON document. func (n NaturalLanguageValues) MarshalJSON() ([]byte, error) { l := len(n) @@ -183,6 +198,14 @@ func (l LangRefValue) String() string { return fmt.Sprintf("%s[%s]", l.Value, l.Ref) } +func DefaultLangRef(value string) LangRefValue { + return LangRefValue{Ref: DefaultLang, Value: Content(value)} +} + +func LangRefValueNew(lang LangRef, value string) LangRefValue { + return LangRefValue{Ref: lang, Value: Content(value)} +} + func (l LangRefValue) Format(s fmt.State, verb rune) { switch verb { case 's', 'q':