beerXML

package module
v0.0.0-...-7797240 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 4, 2023 License: MIT Imports: 6 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Culture_CultureType_name = map[int32]string{
	0:  "CULTURE_NONE",
	1:  "Ale",
	2:  "Lager",
	3:  "Wheat",
	4:  "Wine",
	5:  "Champagne",
	6:  "Bacteria",
	7:  "Brett",
	8:  "Kveik",
	9:  "Lacto",
	10: "Malolactic",
	11: "Mixed Culture",
	12: "Other",
	13: "Pedio",
	14: "Spontaneous",
}
View Source
var Culture_CultureType_value = map[string]int32{
	"CULTURE_NONE":  0,
	"Ale":           1,
	"Lager":         2,
	"Wheat":         3,
	"Wine":          4,
	"Champagne":     5,
	"Bacteria":      6,
	"Brett":         7,
	"Kveik":         8,
	"Lacto":         9,
	"Malolactic":    10,
	"Mixed Culture": 11,
	"Other":         12,
	"Pedio":         13,
	"Spontaneous":   14,
}
View Source
var Culture_FlocculationType_name = map[int32]string{
	0: "FLOCCULATION_NONE",
	1: "Low",
	2: "Medium",
	3: "High",
	4: "Very High",
}
View Source
var Culture_FlocculationType_value = map[string]int32{
	"FLOCCULATION_NONE": 0,
	"Low":               1,
	"Medium":            2,
	"High":              3,
	"Very High":         4,
}
View Source
var Culture_FormType_name = map[int32]string{
	0: "FORM_NONE",
	1: "Liquid",
	2: "Dry",
	3: "Slant",
	4: "Culture",
	5: "Dregs",
}
View Source
var Culture_FormType_value = map[string]int32{
	"FORM_NONE": 0,
	"Liquid":    1,
	"Dry":       2,
	"Slant":     3,
	"Culture":   4,
	"Dregs":     5,
}
View Source
var Fermentable_FermentablesType_name = map[int32]string{
	0: "FERMENTABLES_NONE",
	1: "Grain",
	2: "Sugar",
	3: "Extract",
	4: "Dry Extract",
	5: "Adjunct",
}
View Source
var Fermentable_FermentablesType_value = map[string]int32{
	"FERMENTABLES_NONE": 0,
	"Grain":             1,
	"Sugar":             2,
	"Extract":           3,
	"Dry Extract":       4,
	"Adjunct":           5,
}
View Source
var Hop_HopsFormType_name = map[int32]string{
	0: "HOPS_FORM_NONE",
	1: "Pellet",
	2: "Plug",
	3: "Leaf",
}
View Source
var Hop_HopsFormType_value = map[string]int32{
	"HOPS_FORM_NONE": 0,
	"Pellet":         1,
	"Plug":           2,
	"Leaf":           3,
}
View Source
var Hop_HopsType_name = map[int32]string{
	0: "HOPS_NONE",
	1: "Bittering",
	2: "Aroma",
	3: "Both",
}
View Source
var Hop_HopsType_value = map[string]int32{
	"HOPS_NONE": 0,
	"Bittering": 1,
	"Aroma":     2,
	"Both":      3,
}
View Source
var Hop_HopsUseType_name = map[int32]string{
	0: "HOPS_USE_NONE",
	1: "Boil",
	2: "Dry Hop",
	3: "Mash",
	4: "First Wort",
	5: "Aroma",
}
View Source
var Hop_HopsUseType_value = map[string]int32{
	"HOPS_USE_NONE": 0,
	"Boil":          1,
	"Dry Hop":       2,
	"Mash":          3,
	"First Wort":    4,
	"Aroma":         5,
}
View Source
var MashStep_MashStepType_name = map[int32]string{
	0: "FERMENTABLES_NONE",
	1: "Infusion",
	2: "Temperature",
	3: "Decoction",
}
View Source
var MashStep_MashStepType_value = map[string]int32{
	"FERMENTABLES_NONE": 0,
	"Infusion":          1,
	"Temperature":       2,
	"Decoction":         3,
}
View Source
var Misc_MiseType_name = map[int32]string{
	0: "MISE_NONE",
	1: "Spice",
	2: "Fining",
	3: "Water Agent",
	4: "Herb",
	5: "Flavor",
	6: "Other",
}
View Source
var Misc_MiseType_value = map[string]int32{
	"MISE_NONE":   0,
	"Spice":       1,
	"Fining":      2,
	"Water Agent": 3,
	"Herb":        4,
	"Flavor":      5,
	"Other":       6,
}
View Source
var Misc_MiseUseType_name = map[int32]string{
	0: "USE_NONE",
	1: "Boil",
	2: "Mash",
	3: "Primary",
	4: "Secondary",
	5: "Bottling",
}
View Source
var Misc_MiseUseType_value = map[string]int32{
	"USE_NONE":  0,
	"Boil":      1,
	"Mash":      2,
	"Primary":   3,
	"Secondary": 4,
	"Bottling":  5,
}
View Source
var Recipe_RecipeType_name = map[int32]string{
	0: "RECIPE_NONE",
	1: "Extract",
	2: "Partial Mash",
	3: "All Grain",
	4: "Cider",
	5: "Kombucha",
	6: "Soda",
	7: "Other",
	8: "Mead",
	9: "Wine",
}
View Source
var Recipe_RecipeType_value = map[string]int32{
	"RECIPE_NONE":  0,
	"Extract":      1,
	"Partial Mash": 2,
	"All Grain":    3,
	"Cider":        4,
	"Kombucha":     5,
	"Soda":         6,
	"Other":        7,
	"Mead":         8,
	"Wine":         9,
}
View Source
var Style_StyleType_name = map[int32]string{
	0: "STYLE_NONE",
	1: "Lager",
	2: "Ale",
	3: "Mead",
	4: "Wheat",
	5: "Mixed",
	6: "Cider",
}
View Source
var Style_StyleType_value = map[string]int32{
	"STYLE_NONE": 0,
	"Lager":      1,
	"Ale":        2,
	"Mead":       3,
	"Wheat":      4,
	"Mixed":      5,
	"Cider":      6,
}
View Source
var WithUnits bool = false

Functions

This section is empty.

Types

type Culture_CultureType

type Culture_CultureType int32
const (
	// None
	CULTURE_CULTURE_NONE Culture_CultureType = 0
	// Ale
	CULTURE_ALE Culture_CultureType = 1
	// Lager
	CULTURE_LAGER Culture_CultureType = 2
	// Wheat
	CULTURE_WHEAT Culture_CultureType = 3
	// Wine
	CULTURE_WINE Culture_CultureType = 4
	// Champagne
	CULTURE_CHAMPAGNE Culture_CultureType = 5
	// Bacteria
	CULTURE_BACTERIA Culture_CultureType = 6
	// Brett
	CULTURE_BRETT Culture_CultureType = 7
	// Kveik
	CULTURE_KVEIK Culture_CultureType = 8
	// Lacto
	CULTURE_LACTO Culture_CultureType = 9
	// Malolactic
	CULTURE_MALOLACTIC Culture_CultureType = 10
	// Mixed-Culture
	CULTURE_MIXED_CULTURE Culture_CultureType = 11
	// Other
	CULTURE_OTHER Culture_CultureType = 12
	// Pedio
	CULTURE_PEDIO Culture_CultureType = 13
	// Spontaneous
	CULTURE_SPONTANEOUS Culture_CultureType = 14
)

func (Culture_CultureType) MarshalXML

func (a Culture_CultureType) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*Culture_CultureType) UnmarshalXML

func (a *Culture_CultureType) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type Culture_FlocculationType

type Culture_FlocculationType int32
const (
	// None
	CULTURE_FLOCCULATION_NONE Culture_FlocculationType = 0
	// Low
	CULTURE_LOW Culture_FlocculationType = 1
	// Medium
	CULTURE_MEDIUM Culture_FlocculationType = 2
	// High
	CULTURE_HIGH Culture_FlocculationType = 3
	// Very High
	CULTURE_VERY_HIGH Culture_FlocculationType = 4
)

type Culture_FormType

type Culture_FormType int32
const (
	// None
	CULTURE_FORM_NONE Culture_FormType = 0
	// Liquid
	CULTURE_LIQUID Culture_FormType = 1
	// Dry
	CULTURE_DRY Culture_FormType = 2
	// Slant
	CULTURE_SLANT Culture_FormType = 3
	// Culture
	CULTURE_CULTURE Culture_FormType = 4
	// Dregs
	CULTURE_DREGS Culture_FormType = 5
)

func (Culture_FormType) MarshalXML

func (a Culture_FormType) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*Culture_FormType) UnmarshalXML

func (a *Culture_FormType) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type Equipment

type Equipment struct {
	// Name of the equipment profile – usually a text description of the brewing setup.
	Name string `xml:"NAME" json:"name,omitempty"`
	// Version of the equipment record.  Should always be “1” for this version of the XML standard.
	Version int32 `xml:"VERSION" json:"version,omitempty"`
	// The pre-boil volume used in this particular instance for this equipment setup.
	// Note that this may be a calculated value depending on the CALC_BOIL_VOLUME parameter.
	BoilSize float64 `xml:"BOIL_SIZE" json:"boil_size,omitempty"`
	// The target volume of the batch at the start of fermentation.
	BatchSize float64 `xml:"BATCH_SIZE" json:"batch_size,omitempty"`
	// Volume of the mash tun in liters.  This parameter can be used to calculate if a particular mash and grain
	// profile will fit in the mash tun.  It may also be used for thermal calculations
	// in the case of a partially full mash tun.
	TunVolume *float64 `xml:"TUN_VOLUME,omitempty" json:"tun_volume,omitempty"`
	// Weight of the mash tun in kilograms.
	// Used primarily to calculate the thermal parameters of the mash tun – in conjunction with the volume and specific
	// heat.
	TunWeight *float64 `xml:"TUN_WEIGHT,omitempty" json:"tun_weight,omitempty"`
	// The specific heat of the mash tun which is usually a function of the material it is made of.
	// Typical ranges are 0.1-0.25 for metal and 0.2-0.5 for plastic materials.
	TunSpecificHeat *float64 `xml:"TUN_SPECIFIC_HEAT,omitempty" json:"tun_specific_heat,omitempty"`
	// The amount of top up water normally added just prior to starting fermentation.  Usually used for extract brewing.
	TopUpWater *float64 `xml:"TOP_UP_WATER,omitempty" json:"top_up_water,omitempty"`
	// The amount of wort normally lost during transition from the boiler to the fermentation vessel.
	// Includes both unusable wort due to trub and wort lost to the chiller and transfer systems.
	TrubChillerLoss *float64 `xml:"TRUB_CHILLER_LOSS,omitempty" json:"trub_chiller_loss,omitempty"`
	// The percentage of wort lost to evaporation per hour of the boil.
	EvapRate *float64 `xml:"EVAP_RATE,omitempty" json:"evap_rate,omitempty"`
	// The normal amount of time one boils for this equipment setup.  This can be used with the evaporation rate to
	// calculate the evaporation loss.
	BoilTime *float64 `xml:"BOIL_TIME,omitempty" json:"boil_time,omitempty"`
	// Flag denoting that the program should calculate the boil size.  Flag may be TRUE or FALSE.
	// If TRUE, then BOIL_SIZE = (BATCH_SIZE – TOP_UP_WATER – TRUB_CHILLER_LOSS) * (1+BOIL_TIME * EVAP_RATE )
	// If set then the boil size should match this value.
	CalcBoilVolume *bool `xml:"CALC_BOIL_VOLUME,omitempty" json:"calc_boil_volume,omitempty"`
	// Amount lost to the lauter tun and equipment associated with the lautering process.
	LauterDeadspace *float64 `xml:"LAUTER_DEADSPACE,omitempty" json:"lauter_deadspace,omitempty"`
	// Amount normally added to the boil kettle before the boil.
	TopUpKettle *float64 `xml:"TOP_UP_KETTLE,omitempty" json:"top_up_kettle,omitempty"`
	// Large batch hop utilization.  This value should be 100% for batches less than 20 gallons,
	// but may be higher (200% or more) for very large batch equipment.
	HopUtilization *float64 `xml:"HOP_UTILIZATION,omitempty" json:"hop_utilization,omitempty"`
	// Notes associated with the equipment.  May be a multiline entry.
	Notes *string `xml:"NOTES,omitempty" json:"notes,omitempty"`

	// The pre-boil volume normally used for a batch of this size shown in display volume units such as “5.5 gal”
	DisplayBoilSize *string `xml:"DISPLAY_BOIL_SIZE,omitempty" json:display_boil_size,omitempty"`
	// The target volume of the batch at the start of fermentation in display volume units such as “5.0 gal”
	DisplayBatchSize *string `xml:"DISPLAY_BATCH_SIZE,omitempty" json:"DISPLAY_BATCH_SIZE,omitempty"`
	// Volume of the mash tun in display units such as “10.0 gal” or “20.0 l”
	DisplayTunVolume *string `xml:"DISPLAY_TUN_VOLUME,omitempty" json:"display_tun_volume,omitempty"`
	// Weight of the mash tun in display units such as “3.0 kg” or “6.0 lb”
	DisplayTunWeight *string `xml:"DISPLAY_TUN_WEIGHT,omitempty" json:"display_tun_weight,omitempty"`
	// The amount of top up water normally added just prior to starting fermentation in display volume such as “1.0 gal”
	DisplayTopUpWater *string `xml:"DISPLAY_TOP_UP_WATER,omitempty" json:"display_top_up_water,omitempty"`
	// The amount of wort normally lost during transition from the boiler to the fermentation vessel.
	// Includes both unusable wort due to trub and wort lost to the chiller and transfer systems.
	// Expressed in user units - Ex: “1.5 qt”
	DisplayTrubChillerLoss *string `xml:"DISPLAY_TRUB_CHILLER_LOSS,omitempty" json:"display_trub_chiller_loss,omitempty"`
	// Amount lost to the lauter tun and equipment associated with the lautering process. Ex: “2.0 gal” or “1.0 l”
	DisplayLauterDeadspace *string `xml:"DISPLAY_LAUTER_DEADSPACE,omitempty" json:"display_lauter_deadspace,omitempty"`
	// Amount normally added to the boil kettle before the boil. Ex: “1.0 gal”
	DisplayTopUpKettle *string `xml:"DISPLAY_TOP_UP_KETTLE,omitempty" json:"display_top_up_kettle,omitempty"`
}

Though an equipment record is optional, when used it in a recipe or on its own it provides details needed to calculate total water usage as well as water needed for each step. It also contains information about the thermal parameters of the mash tun and large batch hop utilization factors.

func (Equipment) MarshalXML

func (a Equipment) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*Equipment) UnmarshalXML

func (a *Equipment) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type Fermentable

type Fermentable struct {
	// Name of the fermentable.
	Name string `xml:"NAME" json:"name,omitempty"`

	// Should be set to 1 for this version of the XML standard.  May be a higher number for later versions but all later
	// versions shall be backward compatible.
	Version int32 `xml:"VERSION" json:"version,omitempty"`

	// May be "Grain", "Sugar", "Extract", "Dry Extract" or "Adjunct".  Extract refers to liquid extract.
	Type Fermentable_FermentablesType `xml:"TYPE" json:"type,omitempty"`

	// Weight of the fermentable, extract or sugar in Kilograms.
	Amount float64 `xml:"AMOUNT" json:"amount,omitempty"`
	// Percent dry yield (fine grain) for the grain, or the raw yield by weight if this is an extract adjunct or sugar.
	Yield float64 `xml:"YIELD" json:"yield,omitempty"`
	// The color of the item in Lovibond Units (SRM for liquid extracts).
	Color float64 `xml:"COLOR" json:"color,omitempty"`
	// May be TRUE if this item is normally added after the boil.  The default value is FALSE since most grains are
	// added during the mash or boil.
	AddAfterBoil *bool `xml:"ADD_AFTER_BOIL,omitempty" json:"add_after_boil,omitempty"`
	// Country or place of origin
	Origin *string `xml:"ORIGIN,omitempty" json:"origin,omitempty"`
	// Supplier of the grain/extract/sugar
	Supplier *string `xml:"SUPPLIER,omitempty" json:"supplier,omitempty"`
	// Textual noted describing this ingredient and its use.  May be multiline.
	Notes *string `xml:"NOTES,omitempty" json:"notes,omitempty"`
	// Percent difference between the coarse grain yield and fine grain yield.  Only appropriate for a "Grain" or
	// "Adjunct" type, otherwise this value is ignored.
	CoarseFineDiff *float64 `xml:"COARSE_FINE_DIFF,omitempty" json:"coarse_fine_diff,omitempty"`
	// Percent moisture in the grain.  Only appropriate for a "Grain" or "Adjunct" type, otherwise this value is ignored.
	Moisture *float64 `xml:"MOISTURE,omitempty" json:"moisture,omitempty"`
	// The diastatic power of the grain as measured in "Lintner" units. Only appropriate for a "Grain" or "Adjunct"
	// type, otherwise this value is ignored.
	DiastaticPower *float64 `xml:"DIASTATIC_POWER,omitempty" json:"diastatic_power,omitempty"`
	// The percent protein in the grain.  Only appropriate for a "Grain" or "Adjunct" type, otherwise this value is
	// ignored.
	Protein *float64 `xml:"PROTEIN,omitempty" json:"protein,omitempty"`
	// The recommended maximum percentage (by weight) this ingredient should represent in a batch of beer.
	MaxInBatch *float64 `xml:"MAX_IN_BATCH,omitempty" json:"max_in_batch,omitempty"`
	// TRUE if it is recommended the grain be mashed, FALSE if it can be steeped.  A value of TRUE is only appropriate
	// for a "Grain" or "Adjunct" types.  The default value is FALSE.  Note that this does NOT indicate whether
	// the grain is mashed or not – it is only a recommendation used in recipe formulation.
	RecommendMash *bool `xml:"RECOMMEND_MASH,omitempty" json:"recommend_mash,omitempty"`
	// For hopped extracts only - an estimate of the number of IBUs per pound of extract in a gallon of water.
	// To convert to IBUs we multiply this number by the "AMOUNT" field (in pounds) and divide by the number of
	// gallons in the batch.  Based on a sixty minute boil.
	// Only suitable for use with an "Extract" type, otherwise this value is ignored.
	IIBGalPerlb *float64 `xml:"IBU_GAL_PER_LB,omitempty" json:"ibu_gal_per_lb,omitempty"`

	// The amount of fermentables in this record along with the units formatted for easy display in the current
	// user defined units.
	// For example “1.5 lbs” or “2.1 kg”.
	DisplayAmount *string `xml:"DISPLAY_AMOUNT,omitempty" json:"display_amount,omitempty"`
	// The yield of the fermentable converted to specific gravity units for display.
	// For example “1.036” or “1.040” might be valid potentials.
	Potential *string `xml:"POTENTIAL,omitempty" json:"potential,omitempty"`
	// Amount in inventory for this item along with the units – for example “10.0 lb”
	Inventory *string `xml:"INVENTORY,omitempty" json:"inventory,omitempty"`
	// Color in user defined color units along with the unit identified – for example “200L” or “40 ebc”
	DisplayColor *string `xml:"DISPLAY_COLOR,omitempty" json:"display_color,omitempty"`
}

The term "fermentable" encompasses all fermentable items that contribute substantially to the beer including extracts, grains, sugars, honey, fruits.

func (Fermentable) MarshalXML

func (a Fermentable) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*Fermentable) UnmarshalXML

func (a *Fermentable) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type Fermentable_FermentablesType

type Fermentable_FermentablesType int32
const (
	// None
	FERMENTABLE_FERMENTABLES_NONE Fermentable_FermentablesType = 0
	// Grain
	FERMENTABLE_GRAIN Fermentable_FermentablesType = 1
	// Sugar
	FERMENTABLE_SUGAR Fermentable_FermentablesType = 2
	// Extract
	FERMENTABLE_EXTRACT Fermentable_FermentablesType = 3
	// Dry Extract
	FERMENTABLE_DRY_EXTRACT Fermentable_FermentablesType = 4
	// Adjunct
	FERMENTABLE_ADJUNCT Fermentable_FermentablesType = 5
)

func (Fermentable_FermentablesType) MarshalXML

func (*Fermentable_FermentablesType) UnmarshalXML

func (a *Fermentable_FermentablesType) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type Fermentables

type Fermentables struct {
	Fermentable []Fermentable `xml:"FERMENTABLE" json:"fermentable,omitempty"`
}

Encloses a set of one or more Fermentable records.

type Hop

type Hop struct {
	// Name of the hops
	Name string `xml:"NAME" json:"name,omitempty"`
	// Should be set to 1 for this version of the XML standard.  May be a higher number for later versions but all
	// later versions shall be backward compatible.
	Version int32 `xml:"VERSION" json:"version,omitempty"`
	// Percent alpha of hops - for example "5.5" represents 5.5% alpha
	Alpha float64 `xml:"ALPHA" json:"alpha,omitempty"`
	// Weight in Kilograms of the hops used in the recipe.
	Amount float64 `xml:"AMOUNT" json:"amount,omitempty"`
	// May be "Boil", "Dry Hop", "Mash", "First Wort" or "Aroma".  Note that "Aroma" and "Dry Hop" do not contribute
	// to the bitterness of the beer while the others do.  Aroma hops are added after the boil and do not contribute
	// substantially to beer bitterness.
	Use Hop_HopsUseType `xml:"USE" json:"use,omitempty"`
	// The time as measured in minutes.  Meaning is dependent on the “USE” field.
	// For “Boil” this is the boil time.
	// For “Mash” this is the mash time.
	// For “First Wort” this is the boil time.
	// For “Aroma” this is the steep time.
	// For “Dry Hop” this is the amount of time to dry hop.
	Time float64 `xml:"TIME" json:"time,omitempty"`
	// Textual notes about the hops, usage, substitutes.  May be a multiline entry.
	Notes *string `xml:"NOTES,omitempty" json:"notes,omitempty"`
	// May be "Bittering", "Aroma" or "Both"
	Type Hop_HopsType `xml:"TYPE" json:"type,omitempty"`
	// May be "Pellet", "Plug" or "Leaf"
	Form Hop_HopsFormType `xml:"FORM" json:"form,omitempty"`
	// Hop beta percentage - for example "4.4" denotes 4.4 % beta
	Beta *float64 `xml:"BETA,omitempty" json:"beta,omitempty"`
	// Hop Stability Index - defined as the percentage of hop alpha lost in 6 months of storage
	HSI *float64 `xml:"HSI,omitempty" json:"hsi,omitempty"`
	// Place of origin for the hops
	Origin *string `xml:"ORIGIN,omitempty" json:"origin,omitempty"`
	// Substitutes that can be used for this hops
	Substitutes *string `xml:"SUBSTITUTES,omitempty" json:"substitutes,omitempty"`
	// Humulene level in percent.
	Humulene *float64 `xml:"HUMULENE,omitempty" json:"humulene,omitempty"`
	// Caryophyllene level in percent.
	Caryophyllene *float64 `xml:"CARYOPHYLLENE,omitempty" json:"caryophyllene,omitempty"`
	// Cohumulone level in percent
	Cohumulone *float64 `xml:"COHUMULONE,omitempty" json:"cohumulone,omitempty"`
	// Myrcene level in percent
	Myrcene *float64 `xml:"MYRCENE,omitempty" json:"myrcene,omitempty"`

	// The amount of hops in this record along with the units formatted for easy display in the current user defined units.  For example “100 g” or “1.5 oz”.
	DisplayAmount *string `xml:"DISPLAY_AMOUNT,omitempty" json:"display_amount,omitempty"`
	// Amount in inventory for this item along with the units – for example “10.0 oz”
	Inventory *string `xml:"INVENTORY,omitempty" json:"inventory,omitempty"`
	// Time displayed in minutes for all uses except for the dry hop which is in days.  For example “60 min”, “3 days”.
	DisplayTime *string `xml:"DISPLAY_TIME,omitempty" json:"display_time,omitempty"`
}

The “HOP” identifier is used to define all varieties of hops.

func (Hop) MarshalXML

func (a Hop) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*Hop) UnmarshalXML

func (a *Hop) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type Hop_HopsFormType

type Hop_HopsFormType int32
const (
	// None
	Hop_HOPS_FORM_NONE Hop_HopsFormType = 0
	// Pellet
	Hop_PELLET Hop_HopsFormType = 1
	// Plug
	Hop_PLUG Hop_HopsFormType = 2
	// Leaf
	Hop_LEAF Hop_HopsFormType = 3
)

func (Hop_HopsFormType) MarshalXML

func (a Hop_HopsFormType) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*Hop_HopsFormType) UnmarshalXML

func (a *Hop_HopsFormType) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type Hop_HopsType

type Hop_HopsType int32
const (
	// None
	HOP_HOPS_NONE Hop_HopsType = 0
	// Bittering
	HOP_BITTERING Hop_HopsType = 1
	// Aroma
	HOP_AROMA Hop_HopsType = 2
	// Both
	HOP_BOTH Hop_HopsType = 3
)

func (Hop_HopsType) MarshalXML

func (a Hop_HopsType) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*Hop_HopsType) UnmarshalXML

func (a *Hop_HopsType) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type Hop_HopsUseType

type Hop_HopsUseType int32
const (
	// None
	HOP_HOPS_USE_NONE Hop_HopsUseType = 0
	// Boil
	HOP_BOIL Hop_HopsUseType = 1
	// Dry Hop
	HOP_DRY_HOP Hop_HopsUseType = 2
	// Mash
	HOP_MASH Hop_HopsUseType = 3
	// First Wort
	HOP_FIRST_WORT Hop_HopsUseType = 4
	// Aroma
	HOP_AROMA_OTHER Hop_HopsUseType = 5
)

func (Hop_HopsUseType) MarshalXML

func (a Hop_HopsUseType) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*Hop_HopsUseType) UnmarshalXML

func (a *Hop_HopsUseType) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type Hops

type Hops struct {
	Hop []Hop `xml:"HOP" json:"hop,omitempty"`
}

Encloses a set of one or more Hop records.

type MISCS

type MISCS struct {
	MISC []Misc `xml:"MISC" json:"mise,omitempty"`
}

Encloses a set of one or more Misc records

type Mash

type Mash struct {
	// Name of the mash profile.
	Name string `xml:"NAME" json:"name,omitempty"`
	// Version of the mash record.  Should always be “1” for this version of the XML standard.
	Version int32 `xml:"VERSION" json:"version,omitempty"`
	// The temperature of the grain before adding it to the mash in degrees Celsius.
	GrainTemp float64 `xml:"GRAIN_TEMP" json:"grain_temp,omitempty"`
	// Record set that starts the list of <MASH_STEP> records.  All MASH_STEP records should appear between the
	// <MASH_STEPS> … </MASH_STEPS> pair.
	MashSteps *MashSteps `xml:"MASH_STEPS" json:"mash_steps,omitempty"`
	// Notes associated with this profile – may be multiline.
	Notes *string `xml:"NOTES,omitempty" json:"notes,omitempty"`
	// Grain tun temperature – may be used to adjust the infusion temperature for equipment if the program supports it.
	// Measured in degrees C.
	TunTemp *float64 `xml:"TUN_TEMP,omitempty" json:"tun_temp,omitempty"`
	// Temperature of the sparge water used in degrees Celsius.
	SpargeTemp *float64 `xml:"SPARGE_TEMP,omitempty" json:"sparge_temp,omitempty"`
	// PH of the sparge.
	PH *float64 `xml:"PH,omitempty" json:"ph,omitempty"`
	// Weight of the mash tun in kilograms
	TunWeight *float64 `xml:"TUN_WEIGHT,omitempty" json:"tun_weight,omitempty"`
	// Specific heat of the tun material in calories per gram-degree C.
	TunSpecificHeat *float64 `xml:"TUN_SPECIFIC_HEAT,omitempty" json:"tun_specific_heat,omitempty"`
	// If TRUE, mash infusion and decoction calculations should take into account the temperature effects of the
	// equipment (tun specific heat and tun weight).  If FALSE, the tun is assumed to be pre-heated.  Default is FALSE.
	EquipAdjust *bool `xml:"EQUIP_ADJUST,omitempty" json:"equip_adjust,omitempty"`

	// Grain temperature in user display units with the units.  For example: “72 F”.
	DisplayGrainTemp *string `xml:"DISPLAY_GRAIN_TEMP,omitempty" json:"display_grain_temp,omitempty"`
	// Tun temperature in user display units.  For example “68 F”
	DisplayTunTemp *string `xml:"DISPLAY_TUN_TEMP,omitempty" json:"display_tun_temp,omitempty"`
	// Sparge temperature in user defined units.  For example “178 F”
	DisplaySpargeTemp *string `xml:"DISPLAY_SPARGE_TEMP,omitempty" json:"display_sparge_temp,omitempty"`
	// Tun weight in user defined units – for example “10 lb”
	DisplayTunWeight *string `xml:"DISPLAY_TUN_WEIGHT,omitempty" json:"display_tun_weight,omitempty"`
}

A mash profile is a record used either within a recipe or outside the recipe to precisely specify the mash method used. The record consists of some informational items followed by a <MASH_STEPS> record that contains the actual mash steps.

func (Mash) MarshalXML

func (a Mash) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*Mash) UnmarshalXML

func (a *Mash) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type MashStep

type MashStep struct {
	// Name of the mash step – usually descriptive text such as “Dough In” or “Conversion”
	Name string `xml:"NAME" json:"name,omitempty"`
	// Version of the mash step record.  Should always be “1” for this version of the XML standard.
	Version int32 `xml:"VERSION" json:"version,omitempty"`
	// May be “Infusion”, “Temperature” or “Decoction” depending on the type of step.
	// Infusion denotes adding hot water, Temperature denotes heating with an outside heat source,
	// and decoction denotes drawing off some mash for boiling.
	Type MashStep_MashStepType `xml:"TYPE" json:"type,omitempty"`
	// The volume of water in liters to infuse in this step.  Required only for infusion steps, though one may also
	// add water for temperature mash steps.  One should not have an infusion amount for decoction steps.
	InfuseAmount *float64 `xml:"INFUSE_AMOUNT,omitempty" json:"infuse_amount,omitempty"`
	// The target temperature for this step in degrees Celsius.
	StepTemp float64 `xml:"STEP_TEMP" json:"step_temp,omitempty"`
	// The number of minutes to spend at this step – i.e. the amount of time we are to hold this particular step
	// temperature.
	StepTime int64 `xml:"STEP_TIME" json:"step_time,omitempty"`
	// Time in minutes to achieve the desired step temperature – useful particularly for temperature mashes where
	// it may take some time to achieve the step temperature.
	RampTime *int64 `xml:"RAMP_TIME,omitempty" json:"ramp_time,omitempty"`
	// the temperature you can expect the mash to fall to after a long mash step.  Measured in degrees Celsius.
	EndTemp *float64 `xml:"END_TEMP,omitempty" json:"end_temp,omitempty"`

	// Textual description of this step such as “Infuse 4.5 gal of water at 170 F” – may be either generated by the
	// program or input by the user.
	Description *string `xml:"DESCRIPTION,omitempty" json:"description,omitempty"`
	// The total ratio of water to grain for this step AFTER the infusion along with the units, usually
	// expressed in qt/lb or l/kg.  Note this value must be consistent with the required infusion amount and amounts
	// added in earlier steps and is only relevant as part of a <MASH> profile.  For example “1.5 qt/lb” or “3.0 l/kg”
	WaterGrainRatio *string `xml:"WATER_GRAIN_RATIO,omitempty" json:"water_grain_ratio,omitempty"`
	// Calculated volume of mash to decoct.  Only applicable for a decoction step.
	// Includes the units as in “7.5 l” or “2.3 gal”
	DecoctionAmt *string `xml:"DECOCTION_AMT,omitempty" json:"decoction_amt,omitempty"`
	// The calculated infusion temperature based on the current step, grain, and other settings.
	// Applicable only for an infusion step.  Includes the units as in “154 F” or “68 C”
	InfuseTemp *string `xml:"INFUSE_TEMP,omitempty" json:"infuse_temp,omitempty"`
	// Step temperature in user defined temperature units.  For example “154F” or “68 C”
	DisplayStepTemp *string `xml:"DISPLAY_STEP_TEMP,omitempty" json:"display_step_temp,omitempty"`
	// Infusion amount along with the volume units as in “20 l” or “13 qt”
	DisplayInfuseAmt *string `xml:"DISPLAY_INFUSE_AMT,omitempty" json:"display_infuse_amt,omitempty"`
}

A mash step is an internal record used within a mash profile to denote a separate step in a multi-step mash. A mash step is not intended for use outside of a mash profile.

func (MashStep) MarshalXML

func (a MashStep) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*MashStep) UnmarshalXML

func (a *MashStep) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type MashStep_MashStepType

type MashStep_MashStepType int32
const (
	// None
	MASH_STEP_FERMENTABLES_NONE MashStep_MashStepType = 0
	// Infusion
	MASH_STEP_INFUSION MashStep_MashStepType = 1
	// Temperature
	MASH_STEP_TEMPERATURE MashStep_MashStepType = 2
	// Decoction
	MASH_STEP_DECOCTION MashStep_MashStepType = 3
)

func (MashStep_MashStepType) MarshalXML

func (a MashStep_MashStepType) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*MashStep_MashStepType) UnmarshalXML

func (a *MashStep_MashStepType) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type MashSteps

type MashSteps struct {
	Mashstep []MashStep `xml:"MASH_STEP" json:"mash_step,omitempty"`
}

Used within a MASH profile to record the steps

type Measureable

type Measureable struct {
	Value float64 `xml:"VALUE,omitempty" json:"value,omitempty"`
	Unit  string  `xml:"UNIT,omitempty" json:"unit,omitempty"`
}

func NewMeasureable

func NewMeasureable(value *string) *Measureable

func (Measureable) MarshalXML

func (s Measureable) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (Measureable) String

func (s Measureable) String() string

func (*Measureable) UnmarshalXML

func (s *Measureable) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type Misc

type Misc struct {
	// Name of the misc item.
	Name string `xml:"NAME" json:"name,omitempty"`
	// Version number of this element.  Should be “1” for this version.
	Version int32 `xml:"VERSION" json:"version,omitempty"`
	// May be “Spice”, “Fining”, “Water Agent”, “Herb”, “Flavor” or “Other”
	Type Misc_MiseType `xml:"TYPE" json:"type,omitempty"`
	// May be “Boil”, “Mash”, “Primary”, “Secondary”, “Bottling”
	Use Misc_MiseUseType `xml:"USE" json:"use,omitempty"`
	// Amount of time the misc was boiled, steeped, mashed, etc in minutes.
	Time float64 `xml:"TIME" json:"time,omitempty"`
	// Amount of item used.  The default measurements are by weight, but this may be the measurement in volume units
	// if AMOUNT_IS_WEIGHT is set to TRUE for this record.
	// If a liquid it is in liters,
	// if a solid the weight is measured in kilograms.
	Amount float64 `xml:"AMOUNT" json:"amount,omitempty"`
	// TRUE if the amount measurement is a weight measurement and FALSE if the amount is a volume measurement.
	// Default value (if not present) is assumed to be FALSE.
	AmountIsWeight *bool `xml:"AMOUNT_IS_WEIGHT" json:"amount_is_weight,omitempty"`
	// Short description of what the ingredient is used for in text
	UseFor *string `xml:"USE_FOR" json:"use_for,omitempty"`
	// Detailed notes on the item including usage.  May be multiline.
	Notes *string `xml:"NOTES" json:"notes,omitempty"`

	// The amount of the item in this record along with the units formatted for easy display in the current user
	// defined units.  For example “1.5 lbs” or “2.1 kg”.
	DisplayAmount *string `xml:"DISPLAY_AMOUNT" json:"display_amount,omitempty"`
	// Amount in inventory for this item along with the units – for example “10.0 lb”
	Inventory *string `xml:"INVENTORY" json:"inventory,omitempty"`
	// Time in appropriate units along with the units as in “10 min” or “3 days”.
	DisplayTime *string `xml:"DISPLAY_TIME" json:"display_time,omitempty"`
}

The term "misc" encompasses all non-fermentable miscellaneous ingredients that are not hops or yeast and do not significantly change the gravity of the beer. For example: spices, clarifying agents, water treatments, etc…

func (Misc) MarshalXML

func (a Misc) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*Misc) UnmarshalXML

func (a *Misc) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type Misc_MiseType

type Misc_MiseType int32
const (
	// None
	MISC_MISE_NONE Misc_MiseType = 0
	// Spice
	MISC_SPICE Misc_MiseType = 1
	// Fining
	MISC_FINING Misc_MiseType = 2
	// Water Agent
	MISC_WATER_AGENT Misc_MiseType = 3
	// Herb
	MISC_HERB Misc_MiseType = 4
	// Flavor
	MISC_FLAVOR Misc_MiseType = 5
	// Other
	MISC_OTHER Misc_MiseType = 6
)

func (Misc_MiseType) MarshalXML

func (a Misc_MiseType) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*Misc_MiseType) UnmarshalXML

func (a *Misc_MiseType) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type Misc_MiseUseType

type Misc_MiseUseType int32
const (
	// None
	MISC_USE_NONE Misc_MiseUseType = 0
	// Boil
	MISC_BOIL Misc_MiseUseType = 1
	// Mash
	MISC_MASH Misc_MiseUseType = 2
	// Primary
	MISC_PRIMARY Misc_MiseUseType = 3
	// Secondary
	MISC_SECONDARY Misc_MiseUseType = 4
	// Bottling
	MISC_BOTTLING Misc_MiseUseType = 5
)

func (Misc_MiseUseType) MarshalXML

func (a Misc_MiseUseType) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*Misc_MiseUseType) UnmarshalXML

func (a *Misc_MiseUseType) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type RECIPES

type RECIPES struct {
	Recipe []Recipe `xml:"RECIPE" json:"recipes,omitempty"`
}

Encloses one or more recipe records.

type Recipe

type Recipe struct {
	// Name of the recipe.
	Name string `xml:"NAME" json:"name,omitempty"`
	// Version of the recipe record.  Should always be “1” for this version of the XML standard.
	Version int32 `xml:"VERSION" json:"version,omitempty"`
	// May be one of “Extract”, “Partial Mash” or “All Grain”
	Type Recipe_RecipeType `xml:"TYPE" json:"type,omitempty"`
	// The style of the beer this recipe is associated with.  All of the required items for a valid style should be
	// between the <STYLE>…</STYLE> tags.
	Style *Style `xml:"STYLE,omitempty" json:"style,omitempty"`
	// An equipment record is optional.  If included the BATCH_SIZE and BOIL_SIZE in the equipment record must match
	// the values in this recipe record.
	Equipment *Equipment `xml:"EQUIPMENT" json:"equipment,omitempty"`
	// Name of the brewer
	Brewer string `xml:"BREWER" json:"author,omitempty"`
	// Optional name of the assistant brewer
	AsstBrewer *string `xml:"ASST_BREWER,omitempty" json:"coauthor,omitempty"`
	// Target size of the finished batch in liters.
	BatchSize float64 `xml:"BATCH_SIZE" json:"batch_size,omitempty"`
	// Starting size for the main boil of the wort in liters.
	BoilSize float64 `xml:"BOIL_SIZE" json:"boil_size,omitempty"`
	// The total time to boil the wort in minutes.
	BoilTime float64 `xml:"BOIL_TIME" json:"boil_time,omitempty"`
	// The percent brewhouse efficiency to be used for estimating the starting gravity of the beer.
	// Not required for “Extract” recipes, but is required for “Partial Mash” and “All Grain” recipes.
	Efficiency *float64 `xml:"EFFICIENCY,omitempty" json:"efficiency,omitempty"`
	// Zero or more HOP ingredient records may appear between the <HOPS>…</HOPS> tags.
	Hops Hops `xml:"HOPS" json:"hops,omitempty"`
	// Zero or more FERMENTABLE ingredients may appear between the <FERMENTABLES> … </FERMENTABLES> tags.
	Fermentables Fermentables `xml:"FERMENTABLES" json:"fermentables,omitempty"`
	// Zero or more Misc records may appear between <MISCS> … </MISCS>
	Miscs MISCS `xml:"MISCS" json:"miscs,omitempty"`
	// Zero or more YEAST records may appear between <YEASTS> … </YEASTS>
	Yeasts Yeasts `xml:"YEASTS" json:"yeasts,omitempty"`
	// Zero or more WATER records may appear between <WATERS> … </WATERS>
	Waters Waters `xml:"WATERS" json:"waters,omitempty"`
	// A MASH profile record containing one or more MASH_STEPs.  NOTE: No Mash record is needed for “Extract” type
	// brews.
	Mash *Mash `xml:"MASH" json:"mash,omitempty"`
	// Notes associated with this recipe – may be multiline.
	Notes *string `xml:"NOTES,omitempty" json:"notes,omitempty"`
	// Tasting notes – may be multiline.
	TasteNotes *string `xml:"TASTE_NOTES,omitempty" json:"taste_notes,omitempty"`
	// Number between zero and 50.0 denoting the taste rating – corresponds to the 50 point BJCP rating system.
	TasteRating *float64 `xml:"TASTE_RATING,omitempty" json:"taste_rating,omitempty"`
	// The measured original (pre-fermentation) specific gravity of the beer.
	OG *float64 `xml:"OG,omitempty" json:"og,omitempty"`
	// The measured final gravity of the finished beer.
	FG *float64 `xml:"FG,omitempty" json:"fg,omitempty"`
	// The number of fermentation stages used – typically a number between one and three
	FermentationStages *int32 `xml:"FERMENTATION_STAGES,omitempty" json:"fermentation_stages,omitempty"`
	// Time spent in the primary in days
	PrimaryAge *int32 `xml:"PRIMARY_AGE,omitempty" json:"primary_age,omitempty"`
	// Temperature in degrees Celsius for the primary fermentation.
	PrimaryTemp *float64 `xml:"PRIMARY_TEMP,omitempty" json:"primary_temp,omitempty"`
	// Time spent in the secondary in days.
	SecondaryAge *int32 `xml:"SECONDARY_AGE,omitempty" json:"secondary_age,omitempty"`
	// Temperature in degrees Celsius for the secondary fermentation.
	SecondaryTemp *float64 `xml:"SECONDARY_TEMP,omitempty" json:"secondary_temp,omitempty"`
	// Time spent in the third fermenter in days.
	TertiaryAge *int32 `xml:"TERTIARY_AGE,omitempty" json:"tertiary_age,omitempty"`
	// Temperature in the tertiary fermenter.
	TertiaryTemp *float64 `xml:"TERTIARY_TEMP,omitempty" json:"tertiary_temp,omitempty"`
	// The time to age the beer in days after bottling.
	Age *float32 `xml:"AGE,omitempty" json:"age,omitempty"`
	// Temperature for aging the beer after bottling.
	AgeTemp *float64 `xml:"AGE_TEMP,omitempty" json:"age_temp,omitempty"`
	// Date brewed in a easily recognizable format such as “3 Dec 04”.
	Date *string `xml:"DATE,omitempty" json:"date,omitempty"`
	// Floating point value corresponding to the target volumes of CO2 used to carbonate this beer.
	Carbonation *float64 `xml:"CARBONATION,omitempty" json:"carbonation,omitempty"`
	// TRUE if the batch was force carbonated using CO2 pressure,
	// FALSE if the batch was carbonated using a priming agent.  Default is FALSE
	ForcedCarbonation *bool `xml:"FORCED_CARBONATION,omitempty" json:"forced_carbonation,omitempty"`
	// Text describing the priming agent such as “Honey” or “Corn Sugar” – used only if this is not a forced
	// carbonation
	PrimingSugarName *string `xml:"PRIMING_SUGAR_NAME,omitempty" json:"priming_sugar_name,omitempty"`
	// The temperature for either bottling or forced carbonation.
	CarbonationTemp *float64 `xml:"CARBONATION_TEMP,omitempty" json:"carbonation_temp,omitempty"`
	// Factor used to convert this priming agent to an equivalent amount of corn sugar for a bottled scenario.
	// For example, “Dry Malt Extract” would have a value of 1.4 because it requires 1.4 times as much DME as
	// corn sugar to carbonate.  To calculate the amount of DME needed, the program can calculate the amount of
	// corn sugar needed and then multiply by this factor.
	PrimingSugarEquiv *float64 `xml:"PRIMING_SUGAR_EQUIV,omitempty" json:"priming_sugar_equiv,omitempty"`
	// Used to factor in the smaller amount of sugar needed for large containers.
	// For example, this might be 0.5 for a typical 5 gallon keg since naturally priming a keg requires about 50%
	// as much sugar as priming bottles.
	KegPrimingFactor *float64 `xml:"KEG_PRIMING_FACTOR,omitempty" json:"keg_priming_factor,omitempty"`

	// Calculated estimate of the original gravity for this recipe along with the units.
	EstOG *Measureable `xml:"EST_OG,omitempty" json:"est_og,omitempty"`
	// Calculated estimate for the final specific gravity of this recipe along with the units as in “1.015 sg”
	EstFF *Measureable `xml:"EST_FG,omitempty" json:"est_fg,omitempty"`
	// The estimated color of the beer in user defined color units.
	EstColor *Measureable `xml:"EST_COLOR,omitempty" json:"est_color,omitempty"`
	// The estimated bitterness level of the beer in IBUs
	IBU *float64 `xml:"IBU,omitempty" json:"ibu,omitempty"`
	// May be “Rager”, “Tinseth” or “Garetz” corresponding to the method/equation used to estimate IBUs for this recipe.
	IBUMethod *string `xml:"IBU_METHOD,omitempty" json:"ibu_method,omitempty"`
	// Estimated percent alcohol by volume for this recipe.
	EstABV *float64 `xml:"EST_ABV,omitempty" json:"est_abv,omitempty"`
	// Actual alcohol by volume calculated from the OG and FG measured.
	ABV *float64 `xml:"ABV,omitempty" json:"abv,omitempty"`
	// The actual efficiency as calculated using the measured original and final gravity.
	ActualEfficiency *float64 `xml:"ACTUAL_EFFICIENCY,omitempty" json:"actual_efficiency,omitempty"`
	// Calorie estimate based on the measured starting and ending gravity.  Note that calories should be quoted in
	// “Cal” or kilocalories which is the normal dietary measure
	// (i.e. a beer is usually in the range of 100-250 calories per 12 oz).  Examples “180 Cal/pint”,
	Calories *string `xml:"CALORIES,omitempty" json:"calories,omitempty"`
	// Batch size in user defined units along with the units as in “5.0 gal”
	DisplayBatchSize *string `xml:"DISPLAY_BATCH_SIZE,omitempty" json:"DISPLAY_BATCH_SIZE,omitempty"`
	// Boil size with user defined units as in “6.3 gal”
	DisplayBoilSize *string `xml:"DISPLAY_BOIL_SIZE,omitempty" json:display_boil_size,omitempty"`
	// Measured original gravity in user defined units as in “6.4 plato”
	DisplayOG *string `xml:"DISPLAY_OG,omitempty" json:"display_og,omitempty"`
	// Measured final gravity in user defined units as in “1.035 sg”
	DisplayFG *string `xml:"DISPLAY_FG,omitempty" json:"display_fg,omitempty"`
	// Primary fermentation temperature in user defined units such as “64 F”
	DisplayPrimaryTemp *string `xml:"DISPLAY_PRIMARY_TEMP,omitempty" json:"display_primary_temp,omitempty"`
	// Secondary fermentation temperature in user defined units such as “56 F”
	DisplaySecondaryTemp *string `xml:"DISPLAY_SECONDARY_TEMP,omitempty" json:"display_secondary_temp,omitempty"`
	// Tertiary temperature in user defined units such as “20 C”
	DisplayTertiaryTemp *string `xml:"DISPLAY_TERTIARY_TEMP,omitempty" json:"display_tertiary_temp,omitempty"`
	// Temperature to use when aging the beer in user units such as “55 F”
	DisplayAgeTemp *string `xml:"DISPLAY_AGE_TEMP,omitempty" json:"display_age_temp,omitempty"`
	// Text description of the carbonation used such as “50g corn sugar” or “Kegged at 20psi”
	CarbonationUsed *string `xml:"CARBONATION_USED,omitempty" json:"carbonation_used,omitempty"`
	// Carbonation/Bottling temperature in appropriate units such as “40F” or “32 C”
	DisplayCarbTemp *string `xml:"DISPLAY_CARB_TEMP,omitempty" json:"display_carb_temp,omitempty"`
}

A recipe record denotes a single recipe. A recipe record may use records from any of the previously described record formats to specify ingredients and other data.

func (Recipe) MarshalXML

func (a Recipe) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*Recipe) UnmarshalXML

func (a *Recipe) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type Recipe_RecipeType

type Recipe_RecipeType int32
const (
	// None
	RECIPE_RECIPE_NONE Recipe_RecipeType = 0
	// Extract
	RECIPE_EXTRACT Recipe_RecipeType = 1
	// Partial Mash
	RECIPE_PARTIAL_MASH Recipe_RecipeType = 2
	// All Grain
	RECIPE_ALL_GRAIN Recipe_RecipeType = 3
	// Cider
	RECIPE_CIDER Recipe_RecipeType = 4
	// Kombucha
	RECIPE_KOMBUCHA Recipe_RecipeType = 5
	// Soda
	RECIPE_SODA Recipe_RecipeType = 6
	// Other
	RECIPE_OTHER Recipe_RecipeType = 7
	// Mead
	RECIPE_MEAD Recipe_RecipeType = 8
	// Wine
	RECIPE_WINE Recipe_RecipeType = 9
)

func (Recipe_RecipeType) MarshalXML

func (a Recipe_RecipeType) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*Recipe_RecipeType) UnmarshalXML

func (a *Recipe_RecipeType) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type Style

type Style struct {
	// Name of the style profile – usually this is the specific name of the style – for example
	// “Scottish Wee Heavy Ale” and not the Category which in this case might be “Scottish Ale”
	Name string `xml:"NAME" json:"name,omitempty"`
	// Category that this style belongs to – usually associated with a group of styles such as “English Ales”
	// or “Amercian Lagers”.
	Category string `xml:"CATEGORY" json:"category,omitempty"`
	// Version of the style record.  Should always be “1” for this version of the XML standard.
	Version int32 `xml:"VERSION" json:"version,omitempty"`
	// Number or identifier associated with this style category.  For example in the BJCP style guide,
	// the “American Lager” category has a category number of “1”.
	CategoryNumber string `xml:"CATEGORY_NUMBER" json:"category_number,omitempty"`
	// The specific style number or subcategory letter associated with this particular style.
	// For example in the BJCP style guide, an American Standard Lager would be style letter “A”
	// under the main category.  Letters should be upper case.
	StyleLetter string `xml:"STYLE_LETTER" json:"style_letter,omitempty"`
	// The name of the style guide that this particular style or category belongs to.
	// For example “BJCP” might denote the BJCP style guide, and “AHA” would be used for the AHA style guide.
	StyleGuide string `xml:"STYLE_GUIDE" json:"style_guide,omitempty"`
	// May be “Lager”, “Ale”, “Mead”, “Wheat”, “Mixed” or “Cider”.  Defines the type of beverage
	// associated with this category.
	Type Style_StyleType `xml:"TYPE" json:"type,omitempty"`
	// The minimum specific gravity as measured relative to water.  For example “1.040” might be a reasonable
	// minimum for a Pale Ale.
	OGMin float64 `xml:"OG_MIN" json:"og_min,omitempty"`
	// The maximum specific gravity as measured relative to water.
	OGMax float64 `xml:"OG_MAX" json:"og_max,omitempty"`
	// The minimum final gravity as measured relative to water.
	FGMin float64 `xml:"FG_MIN" json:"fg_min,omitempty"`
	// The maximum final gravity as measured relative to water.
	FGMax float64 `xml:"FG_MAX" json:"fg_max,omitempty"`
	// The recommended minimum bitterness for this style as measured in International Bitterness Units (IBUs)
	IBUMin float64 `xml:"IBU_MIN" json:"ibu_min,omitempty"`
	// The recommended maximum bitterness for this style as measured in International Bitterness Units (IBUs)
	IBUMax float64 `xml:"IBU_MAX" json:"ibu_max,omitempty"`
	// The minimum recommended color in SRM
	ColorMin float64 `xml:"COLOR_MIN" json:"color_min,omitempty"`
	// The maximum recommended color in SRM.
	ColorMax float64 `xml:"COLOR_MAX" json:"color_max,omitempty"`
	// Minimum recommended carbonation for this style in volumes of CO2
	CarbMin *float64 `xml:"CARB_MIN,omitempty" json:"carb_min,omitempty"`
	// The maximum recommended carbonation for this style in volumes of CO2
	CarbMax *float64 `xml:"CARB_MAX,omitempty" json:"carb_max,omitempty"`
	// The minimum recommended alcohol by volume as a percentage.
	ABVMmin *float64 `xml:"ABV_MIN,omitempty" json:"abv_min,omitempty"`
	// The maximum recommended alcohol by volume as a percentage.
	ABVMax *float64 `xml:"ABV_MAX,omitempty" json:"abv_max,omitempty"`
	// Description of the style, history
	Notes *string `xml:"NOTES,omitempty" json:"notes,omitempty"`
	// Flavor and aroma profile for this style
	Profile *string `xml:"PROFILE,omitempty" json:"profile,omitempty"`
	// Suggested ingredients for this style
	Ingredients *string `xml:"INGREDIENTS,omitempty" json:"ingredients,omitempty"`
	// Example beers of this style.
	Examples *string `xml:"EXAMPLES,omitempty" json:"examples,omitempty"`

	// Original gravity minimum in user defined units such as “1.036 sg”.
	DisplayOGMin *string `xml:"DISPLAY_OG_MIN" json:"display_og_min,omitempty"`
	// Original gravity max in user defined units such as “1.056 sg”
	DisplayOGMax *string `xml:"DISPLAY_OG_MAX" json:"display_og_max,omitempty"`
	// Final gravity minimum in user defined units such as “1.010 sg”.
	DisplayFGMin *string `xml:"DISPLAY_FG_MIN" json:"display_fg_min,omitempty"`
	// Final gravity maximum in user defined units such as “1.019 sg”.
	DisplayFGMax *string `xml:"DISPLAY_FG_MAX" json:"display_fg_max,omitempty"`
	// Minimum color in user defined units such as “30 srm”.
	DisplayColorMin *string `xml:"DISPLAY_COLOR_MIN" json:"display_color_min,omitempty"`
	// Maximum color in user defined units such as “20 srm”
	DisplayColorMax *string `xml:"DISPLAY_COLOR_MAX" json:"display_color_max,omitempty"`
	// Original gravity range for the style such as “1.030-1.040 sg”
	OGRange *string `xml:"OG_RANGE" json:"og_range,omitempty"`
	// Final gravity range such as “1.010-1.015 sg”
	FGRange *string `xml:"FG_RANGE" json:"fg_range,omitempty"`
	// Bitterness range in IBUs such as “10-20 IBU”
	IBURange *string `xml:"IBU_RANGE" json:"ibu_range,omitempty"`
	// Carbonation range in volumes such as “2.0-2.6 vols”
	CarbRange *string `xml:"CARB_RANGE" json:"carb_range,omitempty"`
	// Color range such as “10-20 SRM”
	ColorRange *string `xml:"COLOR_RANGE" json:"color_range,omitempty"`
	// Color range such as “10-20 SRM”
	ABVRange *string `xml:"ABV_RANGE" json:"abv_range,omitempty"`
}

The term "style" encompasses beer styles. The beer style may be from the BJCP style guide, Australian, UK or local style guides. Generally a recipe is designed to one style.

func (Style) MarshalXML

func (a Style) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*Style) UnmarshalXML

func (a *Style) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type Style_StyleType

type Style_StyleType int32
const (
	// None
	STYLE_STYLE_NONE Style_StyleType = 0
	// Lager
	STYLE_LAGER Style_StyleType = 1
	// Ale
	STYLE_ALE Style_StyleType = 2
	// Mead
	STYLE_MEAD Style_StyleType = 3
	// Wheat
	STYLE_WHEAT Style_StyleType = 4
	// Mixed
	STYLE_MIXED Style_StyleType = 5
	// Cider
	STYLE_CIDER Style_StyleType = 6
)

func (Style_StyleType) MarshalXML

func (a Style_StyleType) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*Style_StyleType) UnmarshalXML

func (a *Style_StyleType) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type Styles

type Styles struct {
	Style []Style `xml:"STYLE" json:"style,omitempty"`
}

Encloses a set of one or more Beer Styles

type Water

type Water struct {
	// Name of the water profile – usually the city and country of the water profile.
	Name string `xml:"NAME" json:"name,omitempty"`
	// Version of the water record.  Should always be “1” for this version of the XML standard.
	Version int32 `xml:"VERSION" json:"version,omitempty"`
	// Volume of water to use in a recipe in liters.
	Amount float64 `xml:"AMOUNT" json:"amount,omitempty"`
	// The amount of calcium (Ca) in parts per million.
	Calcium float64 `xml:"CALCIUM" json:"calcium,omitempty"`
	// The amount of bicarbonate (HCO3) in parts per million.
	Bicarbonate float64 `xml:"BICARBONATE" json:"bicarbonate,omitempty"`
	// The amount of Sulfate (SO4) in parts per million.
	Sulfate float64 `xml:"SULFATE" json:"sulfate,omitempty"`
	// The amount of Chloride (Cl) in parts per million.
	Chloride float64 `xml:"CHLORIDE" json:"chloride,omitempty"`
	// The amount of Sodium (Na) in parts per million.
	Sodium float64 `xml:"SODIUM" json:"sodium,omitempty"`
	// The amount of Magnesium (Mg) in parts per million.
	Magnesium float64 `xml:"MAGNESIUM" json:"magnesium,omitempty"`
	// The PH of the water.
	PH    *float64 `xml:"PH,omitempty" json:"ph,omitempty"`
	Notes *string  `xml:"NOTES,omitempty" json:"notes,omitempty"`

	// The amount of water in this record along with the units formatted for easy display in the current
	// user defined units.  For example “5.0 gal” or “20.0 l”.
	DisplayAmount *string `xml:"DISPLAY_AMOUNT,omitempty" json:"display_amount,omitempty"`
}

The term "water" encompasses water profiles. Though not strictly required for recipes, the water record allows supporting programs to record the water profile used for brewing a particular batch.

func (Water) MarshalXML

func (a Water) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*Water) UnmarshalXML

func (a *Water) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type Waters

type Waters struct {
	Water []Water `xml:"WATER" json:"water,omitempty"`
}

Encloses a set of one or more Water records

type Yeast

type Yeast struct {
	// Name of the yeast.
	Name string `xml:"NAME" json:"name,omitempty"`
	// Version of the standard.  Should be “1” for this version.
	Version int32 `xml:"VERSION" json:"version,omitempty"`
	// May be “Ale”, “Lager”, “Wheat”, “Wine” or “Champagne”
	Type Culture_CultureType `xml:"TYPE" json:"type,omitempty"`
	// May be “Liquid”, “Dry”, “Slant” or “Culture”
	Form Culture_FormType `xml:"FORM" json:"form,omitempty"`
	// The amount of yeast, measured in liters.  For a starter this is the size of the starter.
	// If the flag AMOUNT_IS_WEIGHT is set to TRUE then this measurement is in kilograms and not liters.
	Amount float64 `xml:"AMOUNT" json:"amount,omitempty"`
	// TRUE if the amount measurement is a weight measurement and FALSE if the amount is a volume measurement.
	// Default value (if not present) is assumed to be FALSE – therefore the yeast measurement is a liquid
	// amount by default.
	AmountIsWeight *bool `xml:"AMOUNT_IS_WEIGHT,omitempty" json:"amount_is_weight,omitempty"`
	// The name of the laboratory that produced the yeast.
	Laboratory *string `xml:"LABORATORY,omitempty" json:"laboratory,omitempty"`
	// The manufacturer’s product ID label or number that identifies this particular strain of yeast.
	ProductID *string `xml:"PRODUCT_ID,omitempty" json:"product_id,omitempty"`
	// The minimum recommended temperature for fermenting this yeast strain in degrees Celsius.
	MinTemperature *float64 `xml:"MIN_TEMPERATURE,omitempty" json:"min_temperature,omitempty"`
	// The maximum recommended temperature for fermenting this yeast strain in Celsius.
	MaxTemperature *float64 `xml:"MAX_TEMPERATURE,omitempty" json:"max_temperature,omitempty"`
	// May be “Low”, “Medium”, “High” or “Very High”
	Flocculation *string `xml:"FLOCCULATION,omitempty" json:"flocculation,omitempty"`
	// Average attenuation for this yeast strain.
	Attenuation *float64 `xml:"ATTENUATION,omitempty" json:"attenuation,omitempty"`
	// Notes on this yeast strain.  May be a multiline entry.
	Notes *string `xml:"NOTES,omitempty" json:"notes,omitempty"`
	// Styles or types of beer this yeast strain is best suited for.
	BestFor *string `xml:"BEST_FOR,omitempty" json:"best_for,omitempty"`
	// Number of times this yeast has been reused as a harvested culture.  This number should be zero if this is a
	// product directly from the manufacturer.
	TimesCultured *float64 `xml:"TIMES_CULTURED,omitempty" json:"times_cultured,omitempty"`
	// Recommended of times this yeast can be reused (recultured from a previous batch)
	MaxReuse *float64 `xml:"MAX_REUSE,omitempty" json:"max_reuse,omitempty"`
	// Flag denoting that this yeast was added for a secondary (or later) fermentation as opposed to the primary
	// fermentation.  Useful if one uses two or more yeast strains for a single brew (eg: Lambic).
	// Default value is FALSE.
	AddToSecondary *bool `xml:"ADD_TO_SECONDARY,omitempty" json:"add_to_secondary,omitempty"`

	// The amount of yeast or starter in this record along with the units formatted for easy display in the
	// current user defined units.  For example “1.5 oz” or “100 g”.
	DisplayAmount *string `xml:"DISPLAY_AMOUNT,omitempty" json:"display_amount,omitempty"`
	// Minimum fermentation temperature converted to current user units along with the units.
	// For example “54.0 F” or “24.2 C”
	DispMinTemp *string `xml:"DISP_MIN_TEMP,omitempty" json:"disp_min_temp,omitempty"`
	// Maximum fermentation temperature converted to current user units along with the units.
	// For example “54.0 F” or “24.2 C”
	DispMaxTemp *string `xml:"DISP_MAX_TEMP,omitempty" json:"disp_max_temp,omitempty"`
	// Amount in inventory for this hop along with the units – for example “10.0 pkgs”
	Inventory *string `xml:"INVENTORY,omitempty" json:"inventory,omitempty"`
	// Date sample was last cultured in a neutral date form such as “10 Dec 04”
	CultureDate *string `xml:"CULTURE_DATE,omitempty" json:"culture_date,omitempty"`
}

The term "yeast" encompasses all yeasts, including dry yeast, liquid yeast and yeast starters.

func (Yeast) MarshalXML

func (a Yeast) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (*Yeast) UnmarshalXML

func (a *Yeast) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

type Yeasts

type Yeasts struct {
	Yeast []Yeast `xml:"YEAST" json:"yeast,omitempty"`
}

Encloses a set of one or more Yeast records.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL