Created
May 24, 2023 01:06
-
-
Save bdarcus/7688fa75f848f49e95118a1234c3647f to your computer and use it in GitHub Desktop.
Revisions
-
bdarcus created this gist
May 24, 2023 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,2380 @@ // This file was generated from JSON Schema using quicktype, do not modify it directly. // To parse and unparse this JSON data, add this code to your project and do: // // localizationTerms, err := UnmarshalLocalizationTerms(bytes) // bytes, err = localizationTerms.Marshal() // // lang, err := UnmarshalLang(bytes) // bytes, err = lang.Marshal() // // localizedTermName, err := UnmarshalLocalizedTermName(bytes) // bytes, err = localizedTermName.Marshal() // // localizedTermNameMisc, err := UnmarshalLocalizedTermNameMisc(bytes) // bytes, err = localizedTermNameMisc.Marshal() // // localizedTermNameLocator, err := UnmarshalLocalizedTermNameLocator(bytes) // bytes, err = localizedTermNameLocator.Marshal() // // localizedTermNameLocatorNumber, err := UnmarshalLocalizedTermNameLocatorNumber(bytes) // bytes, err = localizedTermNameLocatorNumber.Marshal() // // localizedTermFormat, err := UnmarshalLocalizedTermFormat(bytes) // bytes, err = localizedTermFormat.Marshal() // // standaloneLocalize, err := UnmarshalStandaloneLocalize(bytes) // bytes, err = standaloneLocalize.Marshal() // // localizedTerm, err := UnmarshalLocalizedTerm(bytes) // bytes, err = localizedTerm.Marshal() // // optionsFile, err := UnmarshalOptionsFile(bytes) // bytes, err = optionsFile.Marshal() // // sortRules, err := UnmarshalSortRules(bytes) // bytes, err = sortRules.Marshal() // // groupSortKeys, err := UnmarshalGroupSortKeys(bytes) // bytes, err = groupSortKeys.Marshal() // // substitute, err := UnmarshalSubstitute(bytes) // bytes, err = substitute.Marshal() // // options, err := UnmarshalOptions(bytes) // bytes, err = options.Marshal() // // optionGroup, err := UnmarshalOptionGroup(bytes) // bytes, err = optionGroup.Marshal() // // localization, err := UnmarshalLocalization(bytes) // bytes, err = localization.Marshal() // // sortGroup, err := UnmarshalSortGroup(bytes) // bytes, err = sortGroup.Marshal() // // sortConfig, err := UnmarshalSortConfig(bytes) // bytes, err = sortConfig.Marshal() // // group, err := UnmarshalGroup(bytes) // bytes, err = group.Marshal() // // disambiguation, err := UnmarshalDisambiguation(bytes) // bytes, err = disambiguation.Marshal() // // substitution, err := UnmarshalSubstitution(bytes) // bytes, err = substitution.Marshal() // // dateFormatting, err := UnmarshalDateFormatting(bytes) // bytes, err = dateFormatting.Marshal() // // dateStyle, err := UnmarshalDateStyle(bytes) // bytes, err = dateStyle.Marshal() // // yearStyle, err := UnmarshalYearStyle(bytes) // bytes, err = yearStyle.Marshal() // // timeStyle, err := UnmarshalTimeStyle(bytes) // bytes, err = timeStyle.Marshal() // // monthStyle, err := UnmarshalMonthStyle(bytes) // bytes, err = monthStyle.Marshal() // // andAsString, err := UnmarshalAndAsString(bytes) // bytes, err = andAsString.Marshal() // // contributorScope, err := UnmarshalContributorScope(bytes) // bytes, err = contributorScope.Marshal() // // roleOption, err := UnmarshalRoleOption(bytes) // bytes, err = roleOption.Marshal() // // contributorListShortening, err := UnmarshalContributorListShortening(bytes) // bytes, err = contributorListShortening.Marshal() // // contributorListFormatting, err := UnmarshalContributorListFormatting(bytes) // bytes, err = contributorListFormatting.Marshal() // // dateFormat, err := UnmarshalDateFormat(bytes) // bytes, err = dateFormat.Marshal() // // wrapPunctuation, err := UnmarshalWrapPunctuation(bytes) // bytes, err = wrapPunctuation.Marshal() // // delimiterPunctuation, err := UnmarshalDelimiterPunctuation(bytes) // bytes, err = delimiterPunctuation.Marshal() // // matchWhich, err := UnmarshalMatchWhich(bytes) // bytes, err = matchWhich.Marshal() // // templateComponent, err := UnmarshalTemplateComponent(bytes) // bytes, err = templateComponent.Marshal() // // template, err := UnmarshalTemplate(bytes) // bytes, err = template.Marshal() // // templateKey, err := UnmarshalTemplateKey(bytes) // bytes, err = templateKey.Marshal() // // namedTemplate, err := UnmarshalNamedTemplate(bytes) // bytes, err = namedTemplate.Marshal() // // topLevelTemplate, err := UnmarshalTopLevelTemplate(bytes) // bytes, err = topLevelTemplate.Marshal() // // templateFile, err := UnmarshalTemplateFile(bytes) // bytes, err = templateFile.Marshal() // // calledTemplate, err := UnmarshalCalledTemplate(bytes) // bytes, err = calledTemplate.Marshal() // // inlineTemplate, err := UnmarshalInlineTemplate(bytes) // bytes, err = inlineTemplate.Marshal() // // cond, err := UnmarshalCond(bytes) // bytes, err = cond.Marshal() // // match, err := UnmarshalMatch(bytes) // bytes, err = match.Marshal() // // isNumber, err := UnmarshalIsNumber(bytes) // bytes, err = isNumber.Marshal() // // isEDTFDate, err := UnmarshalIsEDTFDate(bytes) // bytes, err = isEDTFDate.Marshal() // // isRefType, err := UnmarshalIsRefType(bytes) // bytes, err = isRefType.Marshal() // // hasVariable, err := UnmarshalHasVariable(bytes) // bytes, err = hasVariable.Marshal() // // dataMatch, err := UnmarshalDataMatch(bytes) // bytes, err = dataMatch.Marshal() // // condition, err := UnmarshalCondition(bytes) // bytes, err = condition.Marshal() // // locale, err := UnmarshalLocale(bytes) // bytes, err = locale.Marshal() // // renderList, err := UnmarshalRenderList(bytes) // bytes, err = renderList.Marshal() // // renderListBlock, err := UnmarshalRenderListBlock(bytes) // bytes, err = renderListBlock.Marshal() // // renderSimple, err := UnmarshalRenderSimple(bytes) // bytes, err = renderSimple.Marshal() // // renderText, err := UnmarshalRenderText(bytes) // bytes, err = renderText.Marshal() // // renderTerm, err := UnmarshalRenderTerm(bytes) // bytes, err = renderTerm.Marshal() // // renderDate, err := UnmarshalRenderDate(bytes) // bytes, err = renderDate.Marshal() // // renderTitle, err := UnmarshalRenderTitle(bytes) // bytes, err = renderTitle.Marshal() // // renderContributors, err := UnmarshalRenderContributors(bytes) // bytes, err = renderContributors.Marshal() // // renderLocators, err := UnmarshalRenderLocators(bytes) // bytes, err = renderLocators.Marshal() // // csl, err := UnmarshalCsl(bytes) // bytes, err = csl.Marshal() // // referenceTypes, err := UnmarshalReferenceTypes(bytes) // bytes, err = referenceTypes.Marshal() // // contributorRoles, err := UnmarshalContributorRoles(bytes) // bytes, err = contributorRoles.Marshal() // // dates, err := UnmarshalDates(bytes) // bytes, err = dates.Marshal() // // titles, err := UnmarshalTitles(bytes) // bytes, err = titles.Marshal() // // locators, err := UnmarshalLocators(bytes) // bytes, err = locators.Marshal() // // simpleTypes, err := UnmarshalSimpleTypes(bytes) // bytes, err = simpleTypes.Marshal() // // variables, err := UnmarshalVariables(bytes) // bytes, err = variables.Marshal() // // styleCategory, err := UnmarshalStyleCategory(bytes) // bytes, err = styleCategory.Marshal() // // style, err := UnmarshalStyle(bytes) // bytes, err = style.Marshal() // // styleMetadata, err := UnmarshalStyleMetadata(bytes) // bytes, err = styleMetadata.Marshal() // // hasFormatting, err := UnmarshalHasFormatting(bytes) // bytes, err = hasFormatting.Marshal() // // citationStyle, err := UnmarshalCitationStyle(bytes) // bytes, err = citationStyle.Marshal() // // bibliographyStyle, err := UnmarshalBibliographyStyle(bytes) // bytes, err = bibliographyStyle.Marshal() // // recordLocalizedTermNameLocalizedTerm, err := UnmarshalRecordLocalizedTermNameLocalizedTerm(bytes) // bytes, err = recordLocalizedTermNameLocalizedTerm.Marshal() package main import "bytes" import "errors" import "encoding/json" func UnmarshalLocalizationTerms(data []byte) (LocalizationTerms, error) { var r LocalizationTerms err := json.Unmarshal(data, &r) return r, err } func (r *LocalizationTerms) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalLang(data []byte) (Lang, error) { var r Lang err := json.Unmarshal(data, &r) return r, err } func (r *Lang) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalLocalizedTermName(data []byte) (LocalizedTermName, error) { var r LocalizedTermName err := json.Unmarshal(data, &r) return r, err } func (r *LocalizedTermName) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalLocalizedTermNameMisc(data []byte) (LocalizedTermNameMisc, error) { var r LocalizedTermNameMisc err := json.Unmarshal(data, &r) return r, err } func (r *LocalizedTermNameMisc) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalLocalizedTermNameLocator(data []byte) (LocalizedTermNameLocator, error) { var r LocalizedTermNameLocator err := json.Unmarshal(data, &r) return r, err } func (r *LocalizedTermNameLocator) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalLocalizedTermNameLocatorNumber(data []byte) (LocalizedTermNameLocatorNumber, error) { var r LocalizedTermNameLocatorNumber err := json.Unmarshal(data, &r) return r, err } func (r *LocalizedTermNameLocatorNumber) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalLocalizedTermFormat(data []byte) (LocalizedTermFormat, error) { var r LocalizedTermFormat err := json.Unmarshal(data, &r) return r, err } func (r *LocalizedTermFormat) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalStandaloneLocalize(data []byte) (StandaloneLocalize, error) { var r StandaloneLocalize err := json.Unmarshal(data, &r) return r, err } func (r *StandaloneLocalize) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalLocalizedTerm(data []byte) (LocalizedTerm, error) { var r LocalizedTerm err := json.Unmarshal(data, &r) return r, err } func (r *LocalizedTerm) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalOptionsFile(data []byte) (OptionsFile, error) { var r OptionsFile err := json.Unmarshal(data, &r) return r, err } func (r *OptionsFile) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalSortRules(data []byte) (SortRules, error) { var r SortRules err := json.Unmarshal(data, &r) return r, err } func (r *SortRules) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalGroupSortKeys(data []byte) (GroupSortKeys, error) { var r GroupSortKeys err := json.Unmarshal(data, &r) return r, err } func (r *GroupSortKeys) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalSubstitute(data []byte) (Substitute, error) { var r Substitute err := json.Unmarshal(data, &r) return r, err } func (r *Substitute) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalOptions(data []byte) (Options, error) { var r Options err := json.Unmarshal(data, &r) return r, err } func (r *Options) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalOptionGroup(data []byte) (OptionGroup, error) { var r OptionGroup err := json.Unmarshal(data, &r) return r, err } func (r *OptionGroup) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalLocalization(data []byte) (Localization, error) { var r Localization err := json.Unmarshal(data, &r) return r, err } func (r *Localization) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalSortGroup(data []byte) (SortGroup, error) { var r SortGroup err := json.Unmarshal(data, &r) return r, err } func (r *SortGroup) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalSortConfig(data []byte) (SortConfig, error) { var r SortConfig err := json.Unmarshal(data, &r) return r, err } func (r *SortConfig) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalGroup(data []byte) (Group, error) { var r Group err := json.Unmarshal(data, &r) return r, err } func (r *Group) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalDisambiguation(data []byte) (Disambiguation, error) { var r Disambiguation err := json.Unmarshal(data, &r) return r, err } func (r *Disambiguation) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalSubstitution(data []byte) (Substitution, error) { var r Substitution err := json.Unmarshal(data, &r) return r, err } func (r *Substitution) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalDateFormatting(data []byte) (DateFormatting, error) { var r DateFormatting err := json.Unmarshal(data, &r) return r, err } func (r *DateFormatting) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalDateStyle(data []byte) (DateStyle, error) { var r DateStyle err := json.Unmarshal(data, &r) return r, err } func (r *DateStyle) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalYearStyle(data []byte) (YearStyle, error) { var r YearStyle err := json.Unmarshal(data, &r) return r, err } func (r *YearStyle) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalTimeStyle(data []byte) (TimeStyle, error) { var r TimeStyle err := json.Unmarshal(data, &r) return r, err } func (r *TimeStyle) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalMonthStyle(data []byte) (MonthStyle, error) { var r MonthStyle err := json.Unmarshal(data, &r) return r, err } func (r *MonthStyle) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalAndAsString(data []byte) (AndAsString, error) { var r AndAsString err := json.Unmarshal(data, &r) return r, err } func (r *AndAsString) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalContributorScope(data []byte) (ContributorScope, error) { var r ContributorScope err := json.Unmarshal(data, &r) return r, err } func (r *ContributorScope) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalRoleOption(data []byte) (RoleOption, error) { var r RoleOption err := json.Unmarshal(data, &r) return r, err } func (r *RoleOption) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalContributorListShortening(data []byte) (ContributorListShortening, error) { var r ContributorListShortening err := json.Unmarshal(data, &r) return r, err } func (r *ContributorListShortening) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalContributorListFormatting(data []byte) (ContributorListFormatting, error) { var r ContributorListFormatting err := json.Unmarshal(data, &r) return r, err } func (r *ContributorListFormatting) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalDateFormat(data []byte) (DateFormat, error) { var r DateFormat err := json.Unmarshal(data, &r) return r, err } func (r *DateFormat) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalWrapPunctuation(data []byte) (WrapPunctuation, error) { var r WrapPunctuation err := json.Unmarshal(data, &r) return r, err } func (r *WrapPunctuation) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalDelimiterPunctuation(data []byte) (DelimiterPunctuation, error) { var r DelimiterPunctuation err := json.Unmarshal(data, &r) return r, err } func (r *DelimiterPunctuation) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalMatchWhich(data []byte) (MatchWhich, error) { var r MatchWhich err := json.Unmarshal(data, &r) return r, err } func (r *MatchWhich) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalTemplateComponent(data []byte) (TemplateComponent, error) { var r TemplateComponent err := json.Unmarshal(data, &r) return r, err } func (r *TemplateComponent) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalTemplate(data []byte) (Template, error) { var r Template err := json.Unmarshal(data, &r) return r, err } func (r *Template) Marshal() ([]byte, error) { return json.Marshal(r) } type TemplateKey string func UnmarshalTemplateKey(data []byte) (TemplateKey, error) { var r TemplateKey err := json.Unmarshal(data, &r) return r, err } func (r *TemplateKey) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalNamedTemplate(data []byte) (NamedTemplate, error) { var r NamedTemplate err := json.Unmarshal(data, &r) return r, err } func (r *NamedTemplate) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalTopLevelTemplate(data []byte) (TopLevelTemplate, error) { var r TopLevelTemplate err := json.Unmarshal(data, &r) return r, err } func (r *TopLevelTemplate) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalTemplateFile(data []byte) (TemplateFile, error) { var r TemplateFile err := json.Unmarshal(data, &r) return r, err } func (r *TemplateFile) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalCalledTemplate(data []byte) (CalledTemplate, error) { var r CalledTemplate err := json.Unmarshal(data, &r) return r, err } func (r *CalledTemplate) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalInlineTemplate(data []byte) (InlineTemplate, error) { var r InlineTemplate err := json.Unmarshal(data, &r) return r, err } func (r *InlineTemplate) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalCond(data []byte) (Cond, error) { var r Cond err := json.Unmarshal(data, &r) return r, err } func (r *Cond) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalMatch(data []byte) (Match, error) { var r Match err := json.Unmarshal(data, &r) return r, err } func (r *Match) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalIsNumber(data []byte) (IsNumber, error) { var r IsNumber err := json.Unmarshal(data, &r) return r, err } func (r *IsNumber) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalIsEDTFDate(data []byte) (IsEDTFDate, error) { var r IsEDTFDate err := json.Unmarshal(data, &r) return r, err } func (r *IsEDTFDate) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalIsRefType(data []byte) (IsRefType, error) { var r IsRefType err := json.Unmarshal(data, &r) return r, err } func (r *IsRefType) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalHasVariable(data []byte) (HasVariable, error) { var r HasVariable err := json.Unmarshal(data, &r) return r, err } func (r *HasVariable) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalDataMatch(data []byte) (DataMatch, error) { var r DataMatch err := json.Unmarshal(data, &r) return r, err } func (r *DataMatch) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalCondition(data []byte) (Condition, error) { var r Condition err := json.Unmarshal(data, &r) return r, err } func (r *Condition) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalLocale(data []byte) (Locale, error) { var r Locale err := json.Unmarshal(data, &r) return r, err } func (r *Locale) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalRenderList(data []byte) (RenderList, error) { var r RenderList err := json.Unmarshal(data, &r) return r, err } func (r *RenderList) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalRenderListBlock(data []byte) (RenderListBlock, error) { var r RenderListBlock err := json.Unmarshal(data, &r) return r, err } func (r *RenderListBlock) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalRenderSimple(data []byte) (RenderSimple, error) { var r RenderSimple err := json.Unmarshal(data, &r) return r, err } func (r *RenderSimple) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalRenderText(data []byte) (RenderText, error) { var r RenderText err := json.Unmarshal(data, &r) return r, err } func (r *RenderText) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalRenderTerm(data []byte) (RenderTerm, error) { var r RenderTerm err := json.Unmarshal(data, &r) return r, err } func (r *RenderTerm) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalRenderDate(data []byte) (RenderDate, error) { var r RenderDate err := json.Unmarshal(data, &r) return r, err } func (r *RenderDate) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalRenderTitle(data []byte) (RenderTitle, error) { var r RenderTitle err := json.Unmarshal(data, &r) return r, err } func (r *RenderTitle) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalRenderContributors(data []byte) (RenderContributors, error) { var r RenderContributors err := json.Unmarshal(data, &r) return r, err } func (r *RenderContributors) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalRenderLocators(data []byte) (RenderLocators, error) { var r RenderLocators err := json.Unmarshal(data, &r) return r, err } func (r *RenderLocators) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalCsl(data []byte) (Csl, error) { var r Csl err := json.Unmarshal(data, &r) return r, err } func (r *Csl) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalReferenceTypes(data []byte) (ReferenceTypes, error) { var r ReferenceTypes err := json.Unmarshal(data, &r) return r, err } func (r *ReferenceTypes) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalContributorRoles(data []byte) (ContributorRoles, error) { var r ContributorRoles err := json.Unmarshal(data, &r) return r, err } func (r *ContributorRoles) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalDates(data []byte) (Dates, error) { var r Dates err := json.Unmarshal(data, &r) return r, err } func (r *Dates) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalTitles(data []byte) (Titles, error) { var r Titles err := json.Unmarshal(data, &r) return r, err } func (r *Titles) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalLocators(data []byte) (Locators, error) { var r Locators err := json.Unmarshal(data, &r) return r, err } func (r *Locators) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalSimpleTypes(data []byte) (SimpleTypes, error) { var r SimpleTypes err := json.Unmarshal(data, &r) return r, err } func (r *SimpleTypes) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalVariables(data []byte) (Variables, error) { var r Variables err := json.Unmarshal(data, &r) return r, err } func (r *Variables) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalStyleCategory(data []byte) (StyleCategory, error) { var r StyleCategory err := json.Unmarshal(data, &r) return r, err } func (r *StyleCategory) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalStyle(data []byte) (Style, error) { var r Style err := json.Unmarshal(data, &r) return r, err } func (r *Style) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalStyleMetadata(data []byte) (StyleMetadata, error) { var r StyleMetadata err := json.Unmarshal(data, &r) return r, err } func (r *StyleMetadata) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalHasFormatting(data []byte) (HasFormatting, error) { var r HasFormatting err := json.Unmarshal(data, &r) return r, err } func (r *HasFormatting) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalCitationStyle(data []byte) (CitationStyle, error) { var r CitationStyle err := json.Unmarshal(data, &r) return r, err } func (r *CitationStyle) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalBibliographyStyle(data []byte) (BibliographyStyle, error) { var r BibliographyStyle err := json.Unmarshal(data, &r) return r, err } func (r *BibliographyStyle) Marshal() ([]byte, error) { return json.Marshal(r) } func UnmarshalRecordLocalizedTermNameLocalizedTerm(data []byte) (RecordLocalizedTermNameLocalizedTerm, error) { var r RecordLocalizedTermNameLocalizedTerm err := json.Unmarshal(data, &r) return r, err } func (r *RecordLocalizedTermNameLocalizedTerm) Marshal() ([]byte, error) { return json.Marshal(r) } type LocalizationTerms struct { Description *string `json:"description,omitempty"` Locale Lang `json:"locale"` PunctuationInQuote *bool `json:"punctuationInQuote,omitempty"` Terms RecordLocalizedTermNameLocalizedTerm `json:"terms"` Title *string `json:"title,omitempty"` } type RecordLocalizedTermNameLocalizedTerm struct { Accessed LocalizedTerm `json:"accessed"` Act LocalizedTerm `json:"act"` Ad LocalizedTerm `json:"ad"` AdvanceOnlinePublication LocalizedTerm `json:"advance-online-publication"` Album LocalizedTerm `json:"album"` And LocalizedTerm `json:"and"` AndOthers LocalizedTerm `json:"and-others"` Anonymous LocalizedTerm `json:"anonymous"` Appendix LocalizedTerm `json:"appendix"` ArticleLocator LocalizedTerm `json:"article-locator"` At LocalizedTerm `json:"at"` AudioRecording LocalizedTerm `json:"audio-recording"` AvailableAt LocalizedTerm `json:"available-at"` Bc LocalizedTerm `json:"bc"` Bce LocalizedTerm `json:"bce"` Book LocalizedTerm `json:"book"` By LocalizedTerm `json:"by"` Canon LocalizedTerm `json:"canon"` Ce LocalizedTerm `json:"ce"` Chapter LocalizedTerm `json:"chapter"` Circa LocalizedTerm `json:"circa"` Cited LocalizedTerm `json:"cited"` Column LocalizedTerm `json:"column"` Elocation LocalizedTerm `json:"elocation"` Equation LocalizedTerm `json:"equation"` EtAl LocalizedTerm `json:"et-al"` Figure LocalizedTerm `json:"figure"` Film LocalizedTerm `json:"film"` Folio LocalizedTerm `json:"folio"` Forthcoming LocalizedTerm `json:"forthcoming"` From LocalizedTerm `json:"from"` Henceforth LocalizedTerm `json:"henceforth"` Ibid LocalizedTerm `json:"ibid"` In LocalizedTerm `json:"in"` InPress LocalizedTerm `json:"in-press"` Internet LocalizedTerm `json:"internet"` Interview LocalizedTerm `json:"interview"` Issue LocalizedTerm `json:"issue"` Letter LocalizedTerm `json:"letter"` Line LocalizedTerm `json:"line"` LOCCit LocalizedTerm `json:"loc-cit"` NoDate LocalizedTerm `json:"no date"` NoPlace LocalizedTerm `json:"no-place"` NoPublisher LocalizedTerm `json:"no-publisher"` Note LocalizedTerm `json:"note"` On LocalizedTerm `json:"on"` Online LocalizedTerm `json:"online"` OpCit LocalizedTerm `json:"op-cit"` Opus LocalizedTerm `json:"opus"` OriginalWorkPublished LocalizedTerm `json:"original-work-published"` Page LocalizedTerm `json:"page"` Paragraph LocalizedTerm `json:"paragraph"` Part LocalizedTerm `json:"part"` PersonalCommunication LocalizedTerm `json:"personal-communication"` Podcast LocalizedTerm `json:"podcast"` PodcastEpisode LocalizedTerm `json:"podcast-episode"` Preprint LocalizedTerm `json:"preprint"` PresentedAt LocalizedTerm `json:"presented-at"` RadioBroadcast LocalizedTerm `json:"radio-broadcast"` RadioSeries LocalizedTerm `json:"radio-series"` RadioSeriesEpisode LocalizedTerm `json:"radio-series-episode"` Reference LocalizedTerm `json:"reference"` Retrieved LocalizedTerm `json:"retrieved"` ReviewOf LocalizedTerm `json:"review-of"` Rule LocalizedTerm `json:"rule"` Scale LocalizedTerm `json:"scale"` Scene LocalizedTerm `json:"scene"` Section LocalizedTerm `json:"section"` SpecialIssue LocalizedTerm `json:"special-issue"` SpecialSection LocalizedTerm `json:"special-section"` SubVerbo LocalizedTerm `json:"sub-verbo"` Supplement LocalizedTerm `json:"supplement"` Table LocalizedTerm `json:"table"` TelevisionBroadcast LocalizedTerm `json:"television-broadcast"` TelevisionSeries LocalizedTerm `json:"television-series"` TelevisionSeriesEpisode LocalizedTerm `json:"television-series-episode"` Timestamp LocalizedTerm `json:"timestamp"` TitleLocator LocalizedTerm `json:"title-locator"` Verse LocalizedTerm `json:"verse"` Version LocalizedTerm `json:"version"` Video LocalizedTerm `json:"video"` Volume LocalizedTerm `json:"volume"` WorkingPaper LocalizedTerm `json:"working-paper"` } type LocalizedTerm struct { Format *LocalizedTermFormat `json:"format,omitempty"` Multiple *string `json:"multiple,omitempty"` Single *string `json:"single,omitempty"` } type StandaloneLocalize struct { Description *string `json:"description,omitempty"` Format *LocalizedTermFormat `json:"format,omitempty"` Multiple *string `json:"multiple,omitempty"` Rights *string `json:"rights,omitempty"` Single *string `json:"single,omitempty"` Translators []string `json:"translators,omitempty"` } // Option model for style configuration. type OptionsFile struct { } type SortRules struct { Key GroupSortKeys `json:"key"` // The order to sort the list. Order Order `json:"order"` } type Options struct { // Parameter groups. Options *OptionGroup `json:"options,omitempty"` } // Parameter groups. type OptionGroup struct { // Contributor list formatting configuration. Contributors *ContributorListFormatting `json:"contributors,omitempty"` // Date formatting configuration. Dates *DateFormatting `json:"dates,omitempty"` // Disambiguation configuration of rendererd group display names. Disambiguate *Disambiguation `json:"disambiguate,omitempty"` // Grouping configuration. Group []GroupSortKeys `json:"group,omitempty"` // Localization configuration. Localization *Localization `json:"localization,omitempty"` // Sorting configuration. Sort []SortConfig `json:"sort,omitempty"` // Substitution configuration. Substitute *Substitution `json:"substitute,omitempty"` } // Contributor list formatting configuration. type ContributorListFormatting struct { // The delimiter between last and second-to-last item. // // The default "text" value produces: // // > Doe, Johnson and Smith // // The "symbol" value produces: // // > Doe, Johnson & Smith AndAs *AndAsString `json:"andAs,omitempty"` Bold *bool `json:"bold,omitempty"` // Format a contributor name as sorted. DisplayAsSort *ContributorScope `json:"displayAsSort,omitempty"` Emph *bool `json:"emph,omitempty"` // Configuring of the display of contributor rolee annotations. Role *RoleOption `json:"role,omitempty"` // Configuration for contributor list shortening. Shorten *ContributorListShortening `json:"shorten,omitempty"` // The symbol pair to wrap around one or more rendering components. // Interaction with surrounding punctuation is localized. Wrap *WrapPunctuation `json:"wrap,omitempty"` } // Configuring of the display of contributor rolee annotations. // // Contributor role configuration. type RoleOption struct { Bold *bool `json:"bold,omitempty"` Emph *bool `json:"emph,omitempty"` // The display form of the role. // // ### `long` // // The full name of the role. // // > Jane Smith (editor) // // ### `short` // // > Jane Smith (ed.) // // ### `verb` // // > edited by Jane Smith // // ### `verb-short` // // > ed. Jane Smith Form *Form `json:"form,omitempty"` // Contributor roles for which to omit the role description. // // The default value is `["author"]`, which omits the role for authors, including for any // author substitutions. Omit []ContributorRoles `json:"omit,omitempty"` // The symbol pair to wrap around one or more rendering components. // Interaction with surrounding punctuation is localized. Wrap *WrapPunctuation `json:"wrap,omitempty"` } // Configuration for contributor list shortening. type ContributorListShortening struct { // When shortening, replace omitted names with this term form. // // ### `short` // // > Doe, Johnson, et al. // // ### `long` // // > Doe, Johnson, and others AtAl *AtAl `json:"atAl,omitempty"` // Determines when the delimiter or a space is used between a truncated contributor list // and the “et-al” (or “and others”) term in case of et-al abbreviation. // // Allowed values: // // ### `contextual` // // Delimiter is only used for contributor lists truncated to two or more items: // // - 1 name: “J. Doe et al.” // - 2 names: “J. Doe, S. Smith, et al.” // // ### `after-inverted-name` // // Delimiter is only used if the preceding name is inverted as a result of the `asSort` // parameter. // E.g. with `asSort` set to “first”: // // - “Doe, J., et al.” // - “Doe, J., S. Smith et al.” // // ### `always` // // Delimiter is always used: // // - 1 name: “J. Doe, et al.” // - 2 names: “J. Doe, S. Smith, et al.” // // ### `never` // // Delimiter is never used: // - 1 name: “J. Doe et al.” // - 2 names: “J. Doe, S. Smith et al.” DelimiterPrecedesEtAl *DelimiterPrecedes `json:"delimiterPrecedesEtAl,omitempty"` // Determines when the delimiter is used to separate the second to last and the last // item in contributor lists (if `and` is not set, the name delimiter is always used, // regardless of the value of `delimiterPrecedesLast`). Allowed values: // // ### `contextual` // // The contributor delimiter is only used for lists of three or more: // // - 2 names: “J. Doe and T. Williams” // - 3 names: “J. Doe, S. Smith, and T. Williams” // // ### `after-inverted-name` // // Delimiter is only used if the preceding name is inverted as a result of the // `asSort` parameter. E.g. with `asSort` set to “first”: // // - “Doe, J., and T. Williams” // - “Doe, J., S. Smith and T. Williams” // // ### `always` // // Delimiter is always used: // // - 2 names: “J. Doe, and T. Williams” // - 3 names: “J. Doe, S. Smith, and T. Williams” // // ### `never` // // Delimiter is never used: // // - 2 names: “J. Doe and T. Williams” // - 3 names: “J. Doe, S. Smith and T. Williams” DelimiterPrecedesLast *DelimiterPrecedes `json:"delimiterPrecedesLast,omitempty"` // The minimum length of the before acitvating shortening Min *float64 `json:"min,omitempty"` // When shortening, use the first number of contributors. UseFirst *float64 `json:"useFirst,omitempty"` } // Date formatting configuration. type DateFormatting struct { Date *TimeStyle `json:"date,omitempty"` Month *MonthStyle `json:"month,omitempty"` Time *TimeStyle `json:"time,omitempty"` Year *YearStyle `json:"year,omitempty"` } // Disambiguation configuration of rendererd group display names. // // Disambiguation of rendered group display name configuration. type Disambiguation struct { AddNames *AddNames `json:"addNames,omitempty"` AddYearSuffix *bool `json:"addYearSuffix,omitempty"` } // Localization configuration. // // Terms and data localization configuration. type Localization struct { // The scope to use for localization. // // "per-item" uses the locale of the reference item, and "global" uses the target language // across all references. Scope *Scope `json:"scope,omitempty"` } // Reference sorting configuration. type SortConfig struct { Key GroupSortKeys `json:"key"` Order Order `json:"order"` } // Substitution configuration. // // Substitution of variable configuration. type Substitution struct { // When author is nil, substitute the first non-nil listed variable. // Once a substitution is made, the substituted variable shall be set to nil for purposes of // later rendering. Author []Substitute `json:"author"` } type SortGroup struct { Key GroupSortKeys `json:"key"` } // Reference grouping of configuration. type Group struct { // The string with which to join two or more rendering comnponents. Delimiter *string `json:"delimiter,omitempty"` Key GroupSortKeys `json:"key"` } type MatchWhich struct { // The conditions that must be true for the templates to render. Match MatchEnum `json:"match"` } // Template property definition in the Style. type TopLevelTemplate struct { Templates NamedTemplate `json:"templates"` } // A global template that can be referenced by unique key. type NamedTemplate struct { } // A standlone template file. type TemplateFile struct { Description *string `json:"description,omitempty"` Templates NamedTemplate `json:"templates"` Title *string `json:"title,omitempty"` } // A template is called by name. type CalledTemplate struct { TemplateKey string `json:"templateKey"` } // A template defined inline. type InlineTemplate struct { Template []TemplateComponent `json:"template"` } type Condition struct { // Is the item variable a number? IsNumber *Locators `json:"isNumber,omitempty"` // The conditions that must be true for the templates to render. Match MatchEnum `json:"match"` Template []TemplateComponent `json:"template,omitempty"` // Does the date conform to EDTF? IsEDTFDate *Dates `json:"isEDTFDate,omitempty"` // Is the item reference type among the listed reference types? IsRefType []ReferenceTypes `json:"isRefType,omitempty"` // Does the item reference include one of the listed variables? HasVariable []Variables `json:"hasVariable,omitempty"` // The item reference locale; to allow multilingual output. Locale *string `json:"locale,omitempty"` } // When all of the when conditions are nil, format the children. // // The rendering of style templates can be specified by reference to a template name or by // inline definition. // // A template defined inline. // // A template is called by name. type Template struct { Template []TemplateComponent `json:"template,omitempty"` TemplateKey *string `json:"templateKey,omitempty"` } // A component of a CSL style template. // // Integral citations are those where the author is printed inline in the text; aka "in // text" or "narrative" citations. // // Non-integral citations are those where the author is incorporated in the citation, and // not printed inline in the text. // // A template is called by name. // // A template component for rendering contributors. // // A template component for rendering locators. // // A template component for rendering dates. // // A template component for rendering title. // // Non-localized plain text. // // Localized strings. type TemplateComponent struct { // Parameter groups. Options *OptionGroup `json:"options,omitempty"` Template []TemplateComponent `json:"template,omitempty"` TemplateKey *string `json:"templateKey,omitempty"` Bold *bool `json:"bold,omitempty"` Emph *bool `json:"emph,omitempty"` Variable *SimpleTypes `json:"variable,omitempty"` // The symbol pair to wrap around one or more rendering components. // Interaction with surrounding punctuation is localized. Wrap *WrapPunctuation `json:"wrap,omitempty"` Contributor *ContributorRoles `json:"contributor,omitempty"` Locator *Locators `json:"locator,omitempty"` Date *Dates `json:"date,omitempty"` Format *TemplateComponentFormat `json:"format,omitempty"` Title *Titles `json:"title,omitempty"` Text *string `json:"text,omitempty"` Term *LocalizedTermName `json:"term,omitempty"` // When all of the when conditions are nil, format the children. Else *Template `json:"else,omitempty"` // For the first condition that is non-nil, format the children. When []Condition `json:"when,omitempty"` } type Cond struct { // When all of the when conditions are nil, format the children. Else *Template `json:"else,omitempty"` // For the first condition that is non-nil, format the children. When []Condition `json:"when,omitempty"` } type MatchClass struct { // The conditions that must be true for the templates to render. Match MatchEnum `json:"match"` } type IsNumber struct { // Is the item variable a number? IsNumber Locators `json:"isNumber"` } type IsEDTFDate struct { // Does the date conform to EDTF? IsEDTFDate Dates `json:"isEDTFDate"` } type IsRefType struct { // Is the item reference type among the listed reference types? IsRefType []ReferenceTypes `json:"isRefType"` } type HasVariable struct { // Does the item reference include one of the listed variables? HasVariable []Variables `json:"hasVariable"` } type DataMatch struct { // Is the item variable a number? IsNumber *Locators `json:"isNumber,omitempty"` // Does the date conform to EDTF? IsEDTFDate *Dates `json:"isEDTFDate,omitempty"` // Is the item reference type among the listed reference types? IsRefType []ReferenceTypes `json:"isRefType,omitempty"` // Does the item reference include one of the listed variables? HasVariable []Variables `json:"hasVariable,omitempty"` // The item reference locale; to allow multilingual output. Locale *string `json:"locale,omitempty"` } type Locale struct { // The item reference locale; to allow multilingual output. Locale string `json:"locale"` } type RenderListBlock struct { ListStyle *string `json:"listStyle,omitempty"` // Parameter groups. Options *OptionGroup `json:"options,omitempty"` Template []TemplateComponent `json:"template"` } type RenderSimple struct { Bold *bool `json:"bold,omitempty"` Emph *bool `json:"emph,omitempty"` Variable SimpleTypes `json:"variable"` // The symbol pair to wrap around one or more rendering components. // Interaction with surrounding punctuation is localized. Wrap *WrapPunctuation `json:"wrap,omitempty"` } // Non-localized plain text. type RenderText struct { Bold *bool `json:"bold,omitempty"` Emph *bool `json:"emph,omitempty"` Text string `json:"text"` // The symbol pair to wrap around one or more rendering components. // Interaction with surrounding punctuation is localized. Wrap *WrapPunctuation `json:"wrap,omitempty"` } // Localized strings. type RenderTerm struct { Bold *bool `json:"bold,omitempty"` Emph *bool `json:"emph,omitempty"` Format LocalizedTermFormat `json:"format"` Term LocalizedTermName `json:"term"` // The symbol pair to wrap around one or more rendering components. // Interaction with surrounding punctuation is localized. Wrap *WrapPunctuation `json:"wrap,omitempty"` } // A template component for rendering dates. type RenderDate struct { Bold *bool `json:"bold,omitempty"` Date Dates `json:"date"` Emph *bool `json:"emph,omitempty"` Format DateFormat `json:"format"` // The symbol pair to wrap around one or more rendering components. // Interaction with surrounding punctuation is localized. Wrap *WrapPunctuation `json:"wrap,omitempty"` } // A template component for rendering title. type RenderTitle struct { Bold *bool `json:"bold,omitempty"` Emph *bool `json:"emph,omitempty"` Format *RenderTitleFormat `json:"format,omitempty"` Title Titles `json:"title"` // The symbol pair to wrap around one or more rendering components. // Interaction with surrounding punctuation is localized. Wrap *WrapPunctuation `json:"wrap,omitempty"` } // A template component for rendering contributors. type RenderContributors struct { Contributor ContributorRoles `json:"contributor"` // Parameter groups. Options *OptionGroup `json:"options,omitempty"` Template []TemplateComponent `json:"template"` } // A template component for rendering locators. type RenderLocators struct { Locator Locators `json:"locator"` // Parameter groups. Options *OptionGroup `json:"options,omitempty"` Template []TemplateComponent `json:"template"` } // The CSL NEXT style model. // // Option model for style configuration. // // A standlone template file. // // A CSL Style. type Csl struct { // The description of the style. Description *string `json:"description,omitempty"` Locale *Lang `json:"locale,omitempty"` PunctuationInQuote *bool `json:"punctuationInQuote,omitempty"` Terms *RecordLocalizedTermNameLocalizedTerm `json:"terms,omitempty"` // The human-readable name of the style. Title *string `json:"title,omitempty"` Templates *NamedTemplate `json:"templates,omitempty"` // The bibliography specification. Bibliography *BibliographyStyle `json:"bibliography,omitempty"` // The categories the style belongs to; for purposes of indexing. Categories []StyleCategory `json:"categories,omitempty"` // The citation specification. Citation *CitationStyle `json:"citation,omitempty"` // The machine-readable token that uniquely identifies the style. ID *string `json:"id,omitempty"` // Parameter groups. Options *OptionGroup `json:"options,omitempty"` } // The bibliography specification. type BibliographyStyle struct { Heading *string `json:"heading,omitempty"` ListStyle *string `json:"listStyle,omitempty"` // Parameter groups. Options *OptionGroup `json:"options,omitempty"` Template []TemplateComponent `json:"template"` } // The citation specification. type CitationStyle struct { // Integral citations are those where the author is printed inline in the text; aka "in // text" or "narrative" citations. Integral *RenderList `json:"integral,omitempty"` // Non-integral citations are those where the author is incorporated in the citation, and // not printed inline in the text. NonIntegral *RenderList `json:"nonIntegral,omitempty"` // Parameter groups. Options *OptionGroup `json:"options,omitempty"` Placement *Placement `json:"placement,omitempty"` Template []TemplateComponent `json:"template"` } // Integral citations are those where the author is printed inline in the text; aka "in // text" or "narrative" citations. // // Non-integral citations are those where the author is incorporated in the citation, and // not printed inline in the text. type RenderList struct { // Parameter groups. Options *OptionGroup `json:"options,omitempty"` Template []TemplateComponent `json:"template"` } // A CSL Style. type Style struct { // The bibliography specification. Bibliography *BibliographyStyle `json:"bibliography,omitempty"` // The categories the style belongs to; for purposes of indexing. Categories []StyleCategory `json:"categories,omitempty"` // The citation specification. Citation *CitationStyle `json:"citation,omitempty"` // The description of the style. Description *string `json:"description,omitempty"` // The machine-readable token that uniquely identifies the style. ID *string `json:"id,omitempty"` // Parameter groups. Options *OptionGroup `json:"options,omitempty"` Templates NamedTemplate `json:"templates"` // The human-readable name of the style. Title *string `json:"title,omitempty"` } type StyleMetadata struct { // The categories the style belongs to; for purposes of indexing. Categories []StyleCategory `json:"categories,omitempty"` // The description of the style. Description *string `json:"description,omitempty"` // The machine-readable token that uniquely identifies the style. ID *string `json:"id,omitempty"` // The human-readable name of the style. Title *string `json:"title,omitempty"` } type HasFormatting struct { Bold *bool `json:"bold,omitempty"` Emph *bool `json:"emph,omitempty"` // The symbol pair to wrap around one or more rendering components. // Interaction with surrounding punctuation is localized. Wrap *WrapPunctuation `json:"wrap,omitempty"` } type Lang string const ( AFZA Lang = "af-ZA" Ar Lang = "ar" BgBG Lang = "bg-BG" CAAD Lang = "ca-AD" CSCZ Lang = "cs-CZ" DaDK Lang = "da-DK" DeAT Lang = "de-AT" DeCH Lang = "de-CH" DeDE Lang = "de-DE" ElGR Lang = "el-GR" EnGB Lang = "en-GB" EnUS Lang = "en-US" EsES Lang = "es-ES" EtEE Lang = "et-EE" Eu Lang = "eu" FaIR Lang = "fa-IR" FiFI Lang = "fi-FI" FrCA Lang = "fr-CA" FrFR Lang = "fr-FR" HeIL Lang = "he-IL" HrHR Lang = "hr-HR" HuHU Lang = "hu-HU" IsIS Lang = "is-IS" ItIT Lang = "it-IT" JaJP Lang = "ja-JP" KMKH Lang = "km-KH" KoKR Lang = "ko-KR" LVLV Lang = "lv-LV" LtLT Lang = "lt-LT" MnMN Lang = "mn-MN" NbNO Lang = "nb-NO" NlNL Lang = "nl-NL" PlPL Lang = "pl-PL" PtBR Lang = "pt-BR" PtPT Lang = "pt-PT" RoRO Lang = "ro-RO" RuRU Lang = "ru-RU" SkSK Lang = "sk-SK" SlSI Lang = "sl-SI" SrRS Lang = "sr-RS" SvSE Lang = "sv-SE" ThTH Lang = "th-TH" TrTR Lang = "tr-TR" UkUA Lang = "uk-UA" ViVN Lang = "vi-VN" ZhCN Lang = "zh-CN" ZhTW Lang = "zh-TW" ) type LocalizedTermFormat string const ( PurpleShort LocalizedTermFormat = "short" PurpleSymbol LocalizedTermFormat = "symbol" ) type LocalizedTermNameMisc string const ( LocalizedTermNameMiscAccessed LocalizedTermNameMisc = "accessed" LocalizedTermNameMiscAd LocalizedTermNameMisc = "ad" LocalizedTermNameMiscAdvanceOnlinePublication LocalizedTermNameMisc = "advance-online-publication" LocalizedTermNameMiscAlbum LocalizedTermNameMisc = "album" LocalizedTermNameMiscAnd LocalizedTermNameMisc = "and" LocalizedTermNameMiscAndOthers LocalizedTermNameMisc = "and-others" LocalizedTermNameMiscAnonymous LocalizedTermNameMisc = "anonymous" LocalizedTermNameMiscAt LocalizedTermNameMisc = "at" LocalizedTermNameMiscAudioRecording LocalizedTermNameMisc = "audio-recording" LocalizedTermNameMiscAvailableAt LocalizedTermNameMisc = "available-at" LocalizedTermNameMiscBc LocalizedTermNameMisc = "bc" LocalizedTermNameMiscBce LocalizedTermNameMisc = "bce" LocalizedTermNameMiscBy LocalizedTermNameMisc = "by" LocalizedTermNameMiscCe LocalizedTermNameMisc = "ce" LocalizedTermNameMiscCirca LocalizedTermNameMisc = "circa" LocalizedTermNameMiscCited LocalizedTermNameMisc = "cited" LocalizedTermNameMiscEtAl LocalizedTermNameMisc = "et-al" LocalizedTermNameMiscFilm LocalizedTermNameMisc = "film" LocalizedTermNameMiscForthcoming LocalizedTermNameMisc = "forthcoming" LocalizedTermNameMiscFrom LocalizedTermNameMisc = "from" LocalizedTermNameMiscHenceforth LocalizedTermNameMisc = "henceforth" LocalizedTermNameMiscIbid LocalizedTermNameMisc = "ibid" LocalizedTermNameMiscIn LocalizedTermNameMisc = "in" LocalizedTermNameMiscInPress LocalizedTermNameMisc = "in-press" LocalizedTermNameMiscInternet LocalizedTermNameMisc = "internet" LocalizedTermNameMiscInterview LocalizedTermNameMisc = "interview" LocalizedTermNameMiscLOCCit LocalizedTermNameMisc = "loc-cit" LocalizedTermNameMiscLetter LocalizedTermNameMisc = "letter" LocalizedTermNameMiscNoDate LocalizedTermNameMisc = "no date" LocalizedTermNameMiscNoPlace LocalizedTermNameMisc = "no-place" LocalizedTermNameMiscNoPublisher LocalizedTermNameMisc = "no-publisher" LocalizedTermNameMiscOn LocalizedTermNameMisc = "on" LocalizedTermNameMiscOnline LocalizedTermNameMisc = "online" LocalizedTermNameMiscOpCit LocalizedTermNameMisc = "op-cit" LocalizedTermNameMiscOriginalWorkPublished LocalizedTermNameMisc = "original-work-published" LocalizedTermNameMiscPersonalCommunication LocalizedTermNameMisc = "personal-communication" LocalizedTermNameMiscPodcast LocalizedTermNameMisc = "podcast" LocalizedTermNameMiscPodcastEpisode LocalizedTermNameMisc = "podcast-episode" LocalizedTermNameMiscPreprint LocalizedTermNameMisc = "preprint" LocalizedTermNameMiscPresentedAt LocalizedTermNameMisc = "presented-at" LocalizedTermNameMiscRadioBroadcast LocalizedTermNameMisc = "radio-broadcast" LocalizedTermNameMiscRadioSeries LocalizedTermNameMisc = "radio-series" LocalizedTermNameMiscRadioSeriesEpisode LocalizedTermNameMisc = "radio-series-episode" LocalizedTermNameMiscReference LocalizedTermNameMisc = "reference" LocalizedTermNameMiscRetrieved LocalizedTermNameMisc = "retrieved" LocalizedTermNameMiscReviewOf LocalizedTermNameMisc = "review-of" LocalizedTermNameMiscScale LocalizedTermNameMisc = "scale" LocalizedTermNameMiscSpecialIssue LocalizedTermNameMisc = "special-issue" LocalizedTermNameMiscSpecialSection LocalizedTermNameMisc = "special-section" LocalizedTermNameMiscTelevisionBroadcast LocalizedTermNameMisc = "television-broadcast" LocalizedTermNameMiscTelevisionSeries LocalizedTermNameMisc = "television-series" LocalizedTermNameMiscTelevisionSeriesEpisode LocalizedTermNameMisc = "television-series-episode" LocalizedTermNameMiscVideo LocalizedTermNameMisc = "video" LocalizedTermNameMiscWorkingPaper LocalizedTermNameMisc = "working-paper" ) type LocalizedTermNameLocator string const ( LocalizedTermNameLocatorAct LocalizedTermNameLocator = "act" LocalizedTermNameLocatorAppendix LocalizedTermNameLocator = "appendix" LocalizedTermNameLocatorArticleLocator LocalizedTermNameLocator = "article-locator" LocalizedTermNameLocatorBook LocalizedTermNameLocator = "book" LocalizedTermNameLocatorCanon LocalizedTermNameLocator = "canon" LocalizedTermNameLocatorChapter LocalizedTermNameLocator = "chapter" LocalizedTermNameLocatorColumn LocalizedTermNameLocator = "column" LocalizedTermNameLocatorElocation LocalizedTermNameLocator = "elocation" LocalizedTermNameLocatorEquation LocalizedTermNameLocator = "equation" LocalizedTermNameLocatorFigure LocalizedTermNameLocator = "figure" LocalizedTermNameLocatorFolio LocalizedTermNameLocator = "folio" LocalizedTermNameLocatorLine LocalizedTermNameLocator = "line" LocalizedTermNameLocatorNote LocalizedTermNameLocator = "note" LocalizedTermNameLocatorOpus LocalizedTermNameLocator = "opus" LocalizedTermNameLocatorParagraph LocalizedTermNameLocator = "paragraph" LocalizedTermNameLocatorRule LocalizedTermNameLocator = "rule" LocalizedTermNameLocatorScene LocalizedTermNameLocator = "scene" LocalizedTermNameLocatorSubVerbo LocalizedTermNameLocator = "sub-verbo" LocalizedTermNameLocatorTable LocalizedTermNameLocator = "table" LocalizedTermNameLocatorTimestamp LocalizedTermNameLocator = "timestamp" LocalizedTermNameLocatorTitleLocator LocalizedTermNameLocator = "title-locator" LocalizedTermNameLocatorVerse LocalizedTermNameLocator = "verse" ) type LocalizedTermNameLocatorNumber string const ( LocalizedTermNameLocatorNumberIssue LocalizedTermNameLocatorNumber = "issue" LocalizedTermNameLocatorNumberPage LocalizedTermNameLocatorNumber = "page" LocalizedTermNameLocatorNumberPart LocalizedTermNameLocatorNumber = "part" LocalizedTermNameLocatorNumberSection LocalizedTermNameLocatorNumber = "section" LocalizedTermNameLocatorNumberSupplement LocalizedTermNameLocatorNumber = "supplement" LocalizedTermNameLocatorNumberVersion LocalizedTermNameLocatorNumber = "version" LocalizedTermNameLocatorNumberVolume LocalizedTermNameLocatorNumber = "volume" ) type GroupSortKeys string const ( AsCited GroupSortKeys = "as-cited" GroupSortKeysAuthor GroupSortKeys = "author" GroupSortKeysTitle GroupSortKeys = "title" GroupSortKeysYear GroupSortKeys = "year" ) // The order to sort the list. type Order string const ( Ascending Order = "ascending" Descending Order = "descending" ) // The delimiter between last and second-to-last item. // // The default "text" value produces: // // > Doe, Johnson and Smith // // The "symbol" value produces: // // > Doe, Johnson & Smith type AndAsString string const ( AndAsSymbol AndAsString = "symbol" Text AndAsString = "text" ) // Format a contributor name as sorted. // // Which of the contributor names in a list to apply the transformation. type ContributorScope string const ( DisplayAsSortAll ContributorScope = "all" DisplayAsSortNone ContributorScope = "none" First ContributorScope = "first" ) // The display form of the role. // // ### `long` // // The full name of the role. // // > Jane Smith (editor) // // ### `short` // // > Jane Smith (ed.) // // ### `verb` // // > edited by Jane Smith // // ### `verb-short` // // > ed. Jane Smith type Form string const ( FormLong Form = "long" FormShort Form = "short" Verb Form = "verb" VerbShort Form = "verb-short" ) type ContributorRoles string const ( ContributorRolesAuthor ContributorRoles = "author" ContributorRolesEditor ContributorRoles = "editor" ContributorRolesPublisher ContributorRoles = "publisher" ) // The symbol pair to wrap around one or more rendering components. // Interaction with surrounding punctuation is localized. type WrapPunctuation string const ( Brackets WrapPunctuation = "brackets" Parentheses WrapPunctuation = "parentheses" Quotes WrapPunctuation = "quotes" ) // When shortening, replace omitted names with this term form. // // ### `short` // // > Doe, Johnson, et al. // // ### `long` // // > Doe, Johnson, and others type AtAl string const ( AtAlLong AtAl = "long" AtAlShort AtAl = "short" ) // Determines when the delimiter or a space is used between a truncated contributor list // and the “et-al” (or “and others”) term in case of et-al abbreviation. // // Allowed values: // // ### `contextual` // // Delimiter is only used for contributor lists truncated to two or more items: // // - 1 name: “J. Doe et al.” // - 2 names: “J. Doe, S. Smith, et al.” // // ### `after-inverted-name` // // Delimiter is only used if the preceding name is inverted as a result of the `asSort` // parameter. // E.g. with `asSort` set to “first”: // // - “Doe, J., et al.” // - “Doe, J., S. Smith et al.” // // ### `always` // // Delimiter is always used: // // - 1 name: “J. Doe, et al.” // - 2 names: “J. Doe, S. Smith, et al.” // // ### `never` // // Delimiter is never used: // - 1 name: “J. Doe et al.” // - 2 names: “J. Doe, S. Smith et al.” // // Determines when the delimiter is used to separate the second to last and the last // item in contributor lists (if `and` is not set, the name delimiter is always used, // regardless of the value of `delimiterPrecedesLast`). Allowed values: // // ### `contextual` // // The contributor delimiter is only used for lists of three or more: // // - 2 names: “J. Doe and T. Williams” // - 3 names: “J. Doe, S. Smith, and T. Williams” // // ### `after-inverted-name` // // Delimiter is only used if the preceding name is inverted as a result of the // `asSort` parameter. E.g. with `asSort` set to “first”: // // - “Doe, J., and T. Williams” // - “Doe, J., S. Smith and T. Williams” // // ### `always` // // Delimiter is always used: // // - 2 names: “J. Doe, and T. Williams” // - 3 names: “J. Doe, S. Smith, and T. Williams” // // ### `never` // // Delimiter is never used: // // - 2 names: “J. Doe and T. Williams” // - 3 names: “J. Doe, S. Smith and T. Williams” type DelimiterPrecedes string const ( Always DelimiterPrecedes = "always" Contextual DelimiterPrecedes = "contextual" Never DelimiterPrecedes = "never" ) type TimeStyle string const ( DateFull TimeStyle = "full" DateLong TimeStyle = "long" DateShort TimeStyle = "short" Medium TimeStyle = "medium" ) type MonthStyle string const ( Month2Digit MonthStyle = "2-digit" MonthLong MonthStyle = "long" MonthNumeric MonthStyle = "numeric" MonthShort MonthStyle = "short" Narrow MonthStyle = "narrow" ) type YearStyle string const ( Year2Digit YearStyle = "2-digit" YearNumeric YearStyle = "numeric" ) type AddNames string const ( AddNamesAll AddNames = "all" AllWithInitials AddNames = "all-with-initials" ByCite AddNames = "by-cite" Primary AddNames = "primary" PrimaryWithInitials AddNames = "primary-with-initials" ) // The scope to use for localization. // // "per-item" uses the locale of the reference item, and "global" uses the target language // across all references. type Scope string const ( Global Scope = "global" PerItem Scope = "per-item" ) type Substitute string const ( SubstituteEditor Substitute = "editor" SubstituteTitle Substitute = "title" Translator Substitute = "translator" ) type DelimiterPunctuation string const ( Colon DelimiterPunctuation = "colon" Comma DelimiterPunctuation = "comma" Period DelimiterPunctuation = "period" Semicolon DelimiterPunctuation = "semicolon" Space DelimiterPunctuation = "space" ) // The conditions that must be true for the templates to render. type MatchEnum string const ( Any MatchEnum = "any" MatchAll MatchEnum = "all" MatchNone MatchEnum = "none" ) type Variables string const ( VariablesAccessed Variables = "accessed" VariablesArticle Variables = "article" VariablesAuthor Variables = "author" VariablesBook Variables = "book" VariablesChapter Variables = "chapter" VariablesContainerTitle Variables = "container-title" VariablesEditor Variables = "editor" VariablesIssue Variables = "issue" VariablesIssued Variables = "issued" VariablesPages Variables = "pages" VariablesPublisher Variables = "publisher" VariablesTitle Variables = "title" VariablesVolume Variables = "volume" ) // Does the date conform to EDTF? type Dates string const ( DatesAccessed Dates = "accessed" DatesIssued Dates = "issued" ) // Is the item variable a number? type Locators string const ( LocatorsChapter Locators = "chapter" LocatorsPage Locators = "page" ) type ReferenceTypes string const ( ReferenceTypesArticle ReferenceTypes = "article" ReferenceTypesBook ReferenceTypes = "book" ReferenceTypesChapter ReferenceTypes = "chapter" ) type TemplateComponentFormat string const ( FluffyShort TemplateComponentFormat = "short" FluffySymbol TemplateComponentFormat = "symbol" FormatMonthDay TemplateComponentFormat = "month-day" FormatYear TemplateComponentFormat = "year" FormatYearMonth TemplateComponentFormat = "year-month" PurpleFull TemplateComponentFormat = "full" PurpleMain TemplateComponentFormat = "main" PurpleSub TemplateComponentFormat = "sub" ) // The unique human-readable identifier for a term. type LocalizedTermName string const ( LocalizedTermNameAccessed LocalizedTermName = "accessed" LocalizedTermNameAct LocalizedTermName = "act" LocalizedTermNameAd LocalizedTermName = "ad" LocalizedTermNameAdvanceOnlinePublication LocalizedTermName = "advance-online-publication" LocalizedTermNameAlbum LocalizedTermName = "album" LocalizedTermNameAnd LocalizedTermName = "and" LocalizedTermNameAndOthers LocalizedTermName = "and-others" LocalizedTermNameAnonymous LocalizedTermName = "anonymous" LocalizedTermNameAppendix LocalizedTermName = "appendix" LocalizedTermNameArticleLocator LocalizedTermName = "article-locator" LocalizedTermNameAt LocalizedTermName = "at" LocalizedTermNameAudioRecording LocalizedTermName = "audio-recording" LocalizedTermNameAvailableAt LocalizedTermName = "available-at" LocalizedTermNameBc LocalizedTermName = "bc" LocalizedTermNameBce LocalizedTermName = "bce" LocalizedTermNameBook LocalizedTermName = "book" LocalizedTermNameBy LocalizedTermName = "by" LocalizedTermNameCanon LocalizedTermName = "canon" LocalizedTermNameCe LocalizedTermName = "ce" LocalizedTermNameChapter LocalizedTermName = "chapter" LocalizedTermNameCirca LocalizedTermName = "circa" LocalizedTermNameCited LocalizedTermName = "cited" LocalizedTermNameColumn LocalizedTermName = "column" LocalizedTermNameElocation LocalizedTermName = "elocation" LocalizedTermNameEquation LocalizedTermName = "equation" LocalizedTermNameEtAl LocalizedTermName = "et-al" LocalizedTermNameFigure LocalizedTermName = "figure" LocalizedTermNameFilm LocalizedTermName = "film" LocalizedTermNameFolio LocalizedTermName = "folio" LocalizedTermNameForthcoming LocalizedTermName = "forthcoming" LocalizedTermNameFrom LocalizedTermName = "from" LocalizedTermNameHenceforth LocalizedTermName = "henceforth" LocalizedTermNameIbid LocalizedTermName = "ibid" LocalizedTermNameIn LocalizedTermName = "in" LocalizedTermNameInPress LocalizedTermName = "in-press" LocalizedTermNameInternet LocalizedTermName = "internet" LocalizedTermNameInterview LocalizedTermName = "interview" LocalizedTermNameIssue LocalizedTermName = "issue" LocalizedTermNameLOCCit LocalizedTermName = "loc-cit" LocalizedTermNameLetter LocalizedTermName = "letter" LocalizedTermNameLine LocalizedTermName = "line" LocalizedTermNameNoDate LocalizedTermName = "no date" LocalizedTermNameNoPlace LocalizedTermName = "no-place" LocalizedTermNameNoPublisher LocalizedTermName = "no-publisher" LocalizedTermNameNote LocalizedTermName = "note" LocalizedTermNameOn LocalizedTermName = "on" LocalizedTermNameOnline LocalizedTermName = "online" LocalizedTermNameOpCit LocalizedTermName = "op-cit" LocalizedTermNameOpus LocalizedTermName = "opus" LocalizedTermNameOriginalWorkPublished LocalizedTermName = "original-work-published" LocalizedTermNamePage LocalizedTermName = "page" LocalizedTermNameParagraph LocalizedTermName = "paragraph" LocalizedTermNamePart LocalizedTermName = "part" LocalizedTermNamePersonalCommunication LocalizedTermName = "personal-communication" LocalizedTermNamePodcast LocalizedTermName = "podcast" LocalizedTermNamePodcastEpisode LocalizedTermName = "podcast-episode" LocalizedTermNamePreprint LocalizedTermName = "preprint" LocalizedTermNamePresentedAt LocalizedTermName = "presented-at" LocalizedTermNameRadioBroadcast LocalizedTermName = "radio-broadcast" LocalizedTermNameRadioSeries LocalizedTermName = "radio-series" LocalizedTermNameRadioSeriesEpisode LocalizedTermName = "radio-series-episode" LocalizedTermNameReference LocalizedTermName = "reference" LocalizedTermNameRetrieved LocalizedTermName = "retrieved" LocalizedTermNameReviewOf LocalizedTermName = "review-of" LocalizedTermNameRule LocalizedTermName = "rule" LocalizedTermNameScale LocalizedTermName = "scale" LocalizedTermNameScene LocalizedTermName = "scene" LocalizedTermNameSection LocalizedTermName = "section" LocalizedTermNameSpecialIssue LocalizedTermName = "special-issue" LocalizedTermNameSpecialSection LocalizedTermName = "special-section" LocalizedTermNameSubVerbo LocalizedTermName = "sub-verbo" LocalizedTermNameSupplement LocalizedTermName = "supplement" LocalizedTermNameTable LocalizedTermName = "table" LocalizedTermNameTelevisionBroadcast LocalizedTermName = "television-broadcast" LocalizedTermNameTelevisionSeries LocalizedTermName = "television-series" LocalizedTermNameTelevisionSeriesEpisode LocalizedTermName = "television-series-episode" LocalizedTermNameTimestamp LocalizedTermName = "timestamp" LocalizedTermNameTitleLocator LocalizedTermName = "title-locator" LocalizedTermNameVerse LocalizedTermName = "verse" LocalizedTermNameVersion LocalizedTermName = "version" LocalizedTermNameVideo LocalizedTermName = "video" LocalizedTermNameVolume LocalizedTermName = "volume" LocalizedTermNameWorkingPaper LocalizedTermName = "working-paper" ) type Titles string const ( TitlesContainerTitle Titles = "container-title" TitlesTitle Titles = "title" ) type SimpleTypes string const ( SimpleTypesIssue SimpleTypes = "issue" SimpleTypesPages SimpleTypes = "pages" SimpleTypesVolume SimpleTypes = "volume" ) type DateFormat string const ( DateFormatFull DateFormat = "full" DateFormatMonthDay DateFormat = "month-day" DateFormatYear DateFormat = "year" DateFormatYearMonth DateFormat = "year-month" ) type RenderTitleFormat string const ( FluffyFull RenderTitleFormat = "full" FluffyMain RenderTitleFormat = "main" FluffySub RenderTitleFormat = "sub" TentacledShort RenderTitleFormat = "short" ) type StyleCategory string const ( Biology StyleCategory = "biology" Science StyleCategory = "science" SocialScience StyleCategory = "social science" ) type Placement string const ( Inline Placement = "inline" PlacementNote Placement = "note" ) type Match struct { AnythingArray []interface{} Bool *bool Double *float64 Integer *int64 MatchClass *MatchClass String *string } func (x *Match) UnmarshalJSON(data []byte) error { x.AnythingArray = nil x.MatchClass = nil var c MatchClass object, err := unmarshalUnion(data, &x.Integer, &x.Double, &x.Bool, &x.String, true, &x.AnythingArray, true, &c, false, nil, false, nil, true) if err != nil { return err } if object { x.MatchClass = &c } return nil } func (x *Match) MarshalJSON() ([]byte, error) { return marshalUnion(x.Integer, x.Double, x.Bool, x.String, x.AnythingArray != nil, x.AnythingArray, x.MatchClass != nil, x.MatchClass, false, nil, false, nil, true) } func unmarshalUnion(data []byte, pi **int64, pf **float64, pb **bool, ps **string, haveArray bool, pa interface{}, haveObject bool, pc interface{}, haveMap bool, pm interface{}, haveEnum bool, pe interface{}, nullable bool) (bool, error) { if pi != nil { *pi = nil } if pf != nil { *pf = nil } if pb != nil { *pb = nil } if ps != nil { *ps = nil } dec := json.NewDecoder(bytes.NewReader(data)) dec.UseNumber() tok, err := dec.Token() if err != nil { return false, err } switch v := tok.(type) { case json.Number: if pi != nil { i, err := v.Int64() if err == nil { *pi = &i return false, nil } } if pf != nil { f, err := v.Float64() if err == nil { *pf = &f return false, nil } return false, errors.New("Unparsable number") } return false, errors.New("Union does not contain number") case float64: return false, errors.New("Decoder should not return float64") case bool: if pb != nil { *pb = &v return false, nil } return false, errors.New("Union does not contain bool") case string: if haveEnum { return false, json.Unmarshal(data, pe) } if ps != nil { *ps = &v return false, nil } return false, errors.New("Union does not contain string") case nil: if nullable { return false, nil } return false, errors.New("Union does not contain null") case json.Delim: if v == '{' { if haveObject { return true, json.Unmarshal(data, pc) } if haveMap { return false, json.Unmarshal(data, pm) } return false, errors.New("Union does not contain object") } if v == '[' { if haveArray { return false, json.Unmarshal(data, pa) } return false, errors.New("Union does not contain array") } return false, errors.New("Cannot handle delimiter") } return false, errors.New("Cannot unmarshal union") } func marshalUnion(pi *int64, pf *float64, pb *bool, ps *string, haveArray bool, pa interface{}, haveObject bool, pc interface{}, haveMap bool, pm interface{}, haveEnum bool, pe interface{}, nullable bool) ([]byte, error) { if pi != nil { return json.Marshal(*pi) } if pf != nil { return json.Marshal(*pf) } if pb != nil { return json.Marshal(*pb) } if ps != nil { return json.Marshal(*ps) } if haveArray { return json.Marshal(pa) } if haveObject { return json.Marshal(pc) } if haveMap { return json.Marshal(pm) } if haveEnum { return json.Marshal(pe) } if nullable { return json.Marshal(nil) } return nil, errors.New("Union must not be null") }