beercnv

package module
v0.0.0-...-8257b7a Latest Latest
Warning

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

Go to latest
Published: Jul 31, 2019 License: GPL-3.0 Imports: 8 Imported by: 1

README

beercnv

Convert beer recipe standard formats between beerXML, beerXML2, and beerJSON

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ConvertXML1to2

func ConvertXML1to2(xml1 io.Reader, beer2 *BeerXML2) error

func NewBeerXML

func NewBeerXML(r io.Reader, pBXml *BeerXML) error

NewBeerXML takes a io.Reader and returns Recipes

Types

type AlcTolerence

type AlcTolerence struct {
	Minimum float32 `xml:"minimum"`
	Maximum float32 `xml:"maximum"`
}

AlcTolerence minimum and maximun alcohol tolerence for perticular yeast

type BeerRecipe

type BeerRecipe struct {
	XMLName              xml.Name        `xml:"recipe"`
	Name                 string          `xml:"name"`
	Type                 string          `xml:"type"`
	Brewer               string          `xml:"brewer"`
	AssistantBrewer      string          `xml:"assistant_brewer"`
	BatchSize            float32         `xml:"batch_size"`
	BoilSize             float32         `xml:"boil_size"`
	BoilTime             int             `xml:"boil_time"`
	Efficiency           float32         `xml:"efficiency"`
	Style                StyleAddition   `xml:"style"`
	Ingredients          RecIngredients  `xml:"ingredients"`
	Mash                 MashProfile     `xml:"mash"`
	Notes                string          `xml:"notes"`
	Og                   OriginalGravity `xml:"original_gravity"`
	Fg                   FinalGravity    `xml:"final_gravity"`
	DisplayBatchSize     string          `xml:"display_batch_size"`
	DisplayBoilSize      string          `xml:"display_boil_size"`
	DisplayOg            string          `xml:"display_og"`
	DisplayFg            string          `xml:"display_fg"`
	DisplayPrimaryTemp   string          `xml:"display_primary_temp"`
	DisplaySecondaryTemp string          `xml:"display_secondary_temp"`
	DisplayTertiaryTemp  string          `xml:"display_tertiary_temp"`
	DisplayAgeTemp       string          `xml:"display_age_temp"`
}

BeerRecipe implements a BeerXML2 recipe including the different childs.

type BeerXML

type BeerXML struct {
	XMLName xml.Name `xml:"RECIPES"`
	Recipes []Recipe `xml:"RECIPE"`
}

BeerXML holds a slice of Recipes

func NewBeerXMLFromFile

func NewBeerXMLFromFile(f string) (BeerXML, error)

NewBeerXMLFromFile takes a filename as string and returns Recipes

func (*BeerXML) TextSummary

func (bxml *BeerXML) TextSummary() string

TextSummary returns a string with a summary of Recipes including fermentables and hops

type BeerXML2

type BeerXML2 struct {
	XMLName      xml.Name         `xml:"beer_xml"`
	Version      string           `xml:"version"`
	HopVarieties []InvHop         `xml:"hop_varieties>hop"`
	Fermentables []InvFermentable `xml:"fermentables>fermentable"`
	Miscs        []InvMisc        `xml:"miscellaneous_ingredients>miscellaneous"`
	Cultures     []InvYeast       `xml:"cultures>yeast"`
	Styles       []StyleProfile   `xml:"styles>style"`
	Profiles     []WaterProfile   `xml:"profiles>water"`
	Procedures   []MashProfile    `xml:"procedure>mash"`
	Recipes      []BeerRecipe     `xml:"recipes>recipe"`
}

BeerXML2 holds all beer information. first level

func NewBeerXML2

func NewBeerXML2(r io.Reader) (bxml *BeerXML2, err error)

NewBeerXml takes a io.Reader and returns Recipes

func NewBeerXmlFromFile2

func NewBeerXmlFromFile2(f string) (bxml *BeerXML2, err error)

NewBeerXmlFromFile takes a filename as string and returns Recipes

func (*BeerXML2) Init

func (xml *BeerXML2) Init()

func (*BeerXML2) TextSummaryxml2

func (bxml *BeerXML2) TextSummaryxml2() string

TextSummary returns a string with a summary of Recipes including fermentables and hops

type Bitterness

type Bitterness struct {
	Minimum float32 `xml:"minimum"`
	Maximum float32 `xml:"maximum"`
}

type Color

type Color struct {
	//XMLName xml.Name `xml:"color"`
	Units string  `xml:"units,attr"`
	Color float32 `xml:",chardata"`
}

Color is beer color with units SRM or L

type ColorScale

type ColorScale struct {
	Minimum Color `xml:"minimum"`
	Maximum Color `xml:"maximum"`
}

ColorScale is max tolerece of a beer color for given style

type CultureAmount

type CultureAmount struct {
	XMLName xml.Name `xml:"culture"`
	Units   string   `xml:"units,attr"`
	Date    string   `xml:"date,attr"`
	Amount  float32  `xml:",chardata"`
}

type DecVol

type DecVol struct {
	XMLName xml.Name `xml:"decoction_amount"`
	Units   string   `xml:"units,attr"`
	Amount  float32  `xml:",chardata"`
}

type DryAmount

type DryAmount struct {
	XMLName xml.Name `xml:"dry"`
	Units   string   `xml:"units,attr"`
	Amount  float32  `xml:",chardata"`
}

type EndDeg

type EndDeg struct {
	XMLName xml.Name `xml:"end_temperature"`
	Units   string   `xml:"degrees,attr"`
	Degrees float32  `xml:",chardata"`
}

type Equipment

type Equipment struct {
	XMLName                xml.Name `xml:"EQUIPMENT"`
	Name                   string   `xml:"NAME"`
	Version                int      `xml:"VERSION"`
	BoilSize               float32  `xml:"BOIL_SIZE"`
	BatchSize              float32  `xml:"BATCH_SIZE"`
	TunVolume              float32  `xml:"TUN_VOLUME"`
	TunWeight              float32  `xml:"TUN_WEIGHT"`
	TunSpecificHeat        float32  `xml:"TUN_SPECIFIC_HEAT"`
	TopUpWater             float32  `xml:"TOP_UP_WATER"`
	TrubChillerLoss        float32  `xml:"TRUB_CHILLER_LOSS"`
	EvapRate               float32  `xml:"EVAP_RATE"`
	BoilTime               float32  `xml:"BOIL_TIME"`
	CalcBoilVolume         bool     `xml:"CALC_BOIL_VOLUME"`
	LauterDeadspace        float32  `xml:"LAUTER_DEADSPACE"`
	TopUpKettle            float32  `xml:"TOP_UP_KETTLE"`
	HopUtilization         float32  `xml:"HOP_UTILIZATION"`
	CoolingLossPct         float32  `xml:"COOLING_LOSS_PCT"`
	Notes                  string   `xml:"NOTES"`
	DisplayBoilSize        string   `xml:"DISPLAY_BOIL_SIZE"`
	DisplayBatchSize       string   `xml:"DISPLAY_BATCH_SIZE"`
	DisplayTunVolume       string   `xml:"DISPLAY_TUN_VOLUME"`
	DisplayTunWeight       string   `xml:"DISPLAY_TUN_WEIGHT"`
	DisplayTopUpWater      string   `xml:"DISPLAY_TOP_UP_WATER"`
	DiplayTrubChillerLoss  string   `xml:"DISPLAY_TRUB_CHILLER_LOSS"`
	DisplayLauterDeadspace string   `xml:"DISPLAY_LAUTER_DEADSPACE"`
	DisplayTopUpKettle     string   `xml:"DISPLAY_TOP_UP_KETTLE"`
}

Equipment profiles for brewin beer

type EquipmentUsed

type EquipmentUsed struct {
	XMLName                xml.Name `xml:"equipment"`
	Name                   string   `xml:"name"`
	Version                int      `xml:"version"`
	BoilSize               float32  `xml:"boil_size"`
	BatchSize              float32  `xml:"batch_size"`
	TunVolume              float32  `xml:"tun_volume"`
	TunWeight              float32  `xml:"tun_weight"`
	TunSpecificHeat        float32  `xml:"tun_specific_heat"`
	TopUpWater             float32  `xml:"top_up_water"`
	TrubChillerLoss        float32  `xml:"trub_chiller_loss"`
	EvapRate               float32  `xml:"evap_rate"`
	BoilTime               float32  `xml:"boil_time"`
	CalcBoilVolume         bool     `xml:"calc_boil_volume"`
	LauterDeadspace        float32  `xml:"lauter_deadspace"`
	TopUpKettle            float32  `xml:"top_up_kettle"`
	HopUtilization         float32  `xml:"hop_utilization"`
	CoolingLossPct         float32  `xml:"cooling_loss_pct"`
	Notes                  string   `xml:"notes"`
	DisplayBoilSize        string   `xml:"display_boil_size"`
	DisplayBatchSize       string   `xml:"display_batch_size"`
	DisplayTunVolume       string   `xml:"display_tun_volume"`
	DisplayTunWeight       string   `xml:"display_tun_weight"`
	DisplayTopUpWater      string   `xml:"display_top_up_water"`
	DiplayTrubChillerLoss  string   `xml:"display_trub_chiller_loss"`
	DisplayLauterDeadspace string   `xml:"display_lauter_deadspace"`
	DisplayTopUpKettle     string   `xml:"display_top_up_kettle"`
}

type FermAddition

type FermAddition struct {
	XMLName       xml.Name   `xml:"fermentable"`
	Name          string     `xml:"name"`
	Type          string     `xml:"type"`
	Color         Color      `xml:"color"`
	Origin        string     `xml:"origin"`
	Supplier      string     `xml:"supplier"`
	Amount        MassAmount `xml:"amount"`
	AddAfterBoil  bool       `xml:"add_after_boil"`
	DisplayAmount string     `xml:"display_amount"`
	Inventory     string     `xml:"inventory"`
	DisplayColor  string     `xml:"display_color"`
}

FermAddition is fermentable ingredient added to a rrecipe

type Fermentable

type Fermentable struct {
	XMLName           xml.Name `xml:"FERMENTABLE"`
	Name              string   `xml:"NAME"`
	Version           int      `xml:"VERSION"`
	Type              string   `xml:"TYPE"`
	Amount            float32  `xml:"AMOUNT"`
	Yield             float32  `xml:"YIELD"`
	Color             float32  `xml:"COLOR"`
	AddAfterBoil      bool     `xml:"ADD_AFTER_BOIL"`
	Origin            string   `xml:"ORIGIN"`
	Supplier          string   `xml:"SUPPLIER"`
	Notes             string   `xml:"NOTES"`
	CoarseFineDiff    float32  `xml:"COARSE_FINE_DIFF"`
	Moisture          float32  `xml:"MOISTURE"`
	DiastaticPower    float32  `xml:"DIASTATIC_POWER"`
	Protein           float32  `xml:"PROTEIN"`
	MaxInBatch        float32  `xml:"MAX_IN_BATCH"`
	RecommendMash     bool     `xml:"RECOMMEND_MASH"`
	IbuGalPerLb       float32  `xml:"IBU_GAL_PER_LB"`
	DisplayAmount     string   `xml:"DISPLAY_AMOUNT"`
	Inventory         string   `xml:"INVENTORY"`
	Potential         float32  `xml:"POTENTIAL"`
	DisplayColor      string   `xml:"DISPLAY_COLOR"`
	ExtractSubstitute string   `xml:"EXTRACT_SUBSTITUTE"`
}

Fermentable definition

type FinalGravity

type FinalGravity struct {
	XMLName xml.Name `xml:"final_gravity"`
	Units   string   `xml:"units,attr"`
	Fg      float32  `xml:",chardata"`
}

FinalGravity is Final Gravity by units (plato, brix, gravity)

type GrainDeg

type GrainDeg struct {
	XMLName xml.Name `xml:"grain_temperature"`
	Units   string   `xml:"units,attr"`
	Degrees float32  `xml:",chardata"`
}

type Gravity

type Gravity struct {
	Minimum MinDensity `xml:"minimum"`
	Maximum MaxDensity `xml:"maximum"`
}

type Hop

type Hop struct {
	XMLName       xml.Name `xml:"HOP"`
	Name          string   `xml:"NAME"`
	Version       string   `xml:"VERSION"`
	Origin        string   `xml:"ORIGIN"`
	Alpha         float32  `xml:"ALPHA"`
	Beta          float32  `xml:"BETA"`
	Amount        float32  `xml:"AMOUNT"`
	Use           string   `xml:"USE"`
	Time          string   `xml:"TIME"`
	Notes         string   `xml:"NOTES"`
	Type          string   `xml:"TYPE"`
	Form          string   `xml:"FORM"`
	Hsi           string   `xml:"HSI"`
	Humulene      float32  `xml:"HUMULENE"`
	Caryophyllene float32  `xml:"CARYOPHYLLENE"`
	Cohumulone    float32  `xml:"COHUMULONE"`
	Myrcene       float32  `xml:"MYRCENE"`
	DisplayAmount string   `xml:"DISPLAY_AMOUNT"`
	Inventory     string   `xml:"INVENTORY"`
	DisplayTime   string   `xml:"DISPLAY_TIME"`
}

Hop definition

type HopAddition

type HopAddition struct {
	XMLName        xml.Name   `xml:"hop"`
	Name           string     `xml:"name"`
	Origin         string     `xml:"origin"`
	AlphaAcidUnits float32    `xml:"alpha_acid_units"`
	BetaAcidUnits  float32    `xml:"beta_acid_units"`
	Form           string     `xml:"form"`
	Use            string     `xml:"use"`
	Amount         MassAmount `xml:"amount"`
	Time           UseTime    `xml:"time"`
	DisplayAmount  string     `xml:"display_amount"`
	Inventory      string     `xml:"inventory"`
	DisplayTime    string     `xml:"display_time"`
}

HopAddition describes hop and its brewing attributes added to a recipe

type HopInv

type HopInv struct {
	Leaf   Leaf   `xml:"leaf"`
	Pellet Pellet `xml:"pellet"`
	Plug   Plug   `xml:"plug"`
}

HopInv is total hops inventory for all hops in form leaf, pellet, and plugs

func (*HopInv) AddHopAmount

func (inv *HopInv) AddHopAmount(amount float32, unit string, form string)

type InfuseDeg

type InfuseDeg struct {
	XMLName xml.Name `xml:"infuse_temperature"`
	Units   string   `xml:"units,attr"`
	Degrees float32  `xml:",chardata"`
}

type InfuseVol

type InfuseVol struct {
	XMLName xml.Name `xml:"infuse_amount"`
	Units   string   `xml:"units,attr"`
	Amount  float32  `xml:",chardata"`
}

type InvFermentable

type InvFermentable struct {
	XMLName        xml.Name        `xml:"fermentable"`
	Name           string          `xml:"name"`
	Type           string          `xml:"type"`
	Color          Color           `xml:"color"`
	Origin         string          `xml:"origin"`
	Supplier       string          `xml:"supplier"`
	YieldDryBasis  Yield           `xml:"yield_dry_basis"`
	Notes          string          `xml:"notes"`
	Moisture       float32         `xml:"moisture"`
	DiastaticPower float32         `xml:"diastatic_power"`
	Protein        float32         `xml:"protien"`
	MaxInBatch     float32         `xml:"max_in_batch"`
	RecommendMash  bool            `xml:"recommended_mash"`
	IbuGalPerLb    float32         `xml:"ibu_gal_per_lb"`
	Inventory      InventoryAmount `xml:"inventory"`
	Potential      float32         `xml:"potential"`
}

InvFermentable describes fermentable stored in inventory

type InvHop

type InvHop struct {
	XMLName        xml.Name `xml:"hop"`
	Name           string   `xml:"name"`
	Origin         string   `xml:"origin"`
	AlphaAcidUnits float32  `xml:"alpha_acid_units"`
	BetaAcidUnits  float32  `xml:"beta_acid_units"`
	Type           string   `xml:"type"`
	Notes          string   `xml:"notes"`
	PercentLost    float32  `xml:"percent_lost"`
	Substitutes    string   `xml:"substitutes"`
	Humulene       float32  `xml:"humulene"`
	Caryophyllene  float32  `xml:"caryophyllene"`
	Cohumulone     float32  `xml:"cohumulone"`
	Myrcene        float32  `xml:"myrcene"`
	Inventory      HopInv   `xml:"inventory"`
}

InvHop describes a hop stored in inventory

type InvMisc

type InvMisc struct {
	XMLName   xml.Name      `xml:"miscellaneous"`
	Name      string        `xml:"name"`
	Type      string        `xml:"type"`
	Use       string        `xml:"use"`
	UseFor    string        `xml:"use_for"`
	Notes     string        `xml:"notes"`
	Inventory InventoryMisc `xml:"inventory"`
}

type InvYeast

type InvYeast struct {
	XMLName          xml.Name       `xml:"yeast"`
	Name             string         `xml:"name"`
	Type             string         `xml:"type"`
	Form             string         `xml:"form"`
	Laboratory       string         `xml:"laboratory"`
	ProductID        string         `xml:"product_id"`
	TemperatureRange TempRange      `xml:"temperature_range"`
	Flocculation     string         `xml:"flocculation"`
	Attenuation      float32        `xml:"attenuation"`
	AlcoholTolerece  AlcTolerence   `xml:"alcohol_tolerence"`
	Notes            string         `xml:"notes"`
	BestFor          string         `xml:"best_for"`
	MaxReuse         int            `xml:"max_reuse"`
	Inventory        YeastInventory `xml:"inventory"`
}

type InventoryAmount

type InventoryAmount struct {
	XMLName xml.Name `xml:"inventory"`
	Units   string   `xml:"units,attr"`
	Amount  float32  `xml:",chardata"`
}

InventoryAmount is total mass of fermentables specified by units

func (*InventoryAmount) AddFermentationAmount

func (inv *InventoryAmount) AddFermentationAmount(amount float32, unit string)

type InventoryMisc

type InventoryMisc struct {
	Amount         VolAmount    `xml:"amount"`
	AmountAsWeight WeightAmount `xml:"amount_as_weight"`
}

func (*InventoryMisc) AddMiscMassAmount

func (inv *InventoryMisc) AddMiscMassAmount(amount float32, unit string)

func (*InventoryMisc) AddMiscVolAmount

func (inv *InventoryMisc) AddMiscVolAmount(amount float32, volume string)

type Leaf

type Leaf struct {
	XMLName xml.Name `xml:"leaf"`
	Units   string   `xml:"units,attr"`
	Amount  float32  `xml:",chardate"`
}

Leaf is amount of hops inventory in leaf form

type LiquidAmount

type LiquidAmount struct {
	XMLName xml.Name `xml:"liquid"`
	Units   string   `xml:"units,attr"`
	Amount  float32  `xml:",chardata"`
}

LiquidAmount Liquid Amount in yeast sample by units

type Mash

type Mash struct {
	XMLName           xml.Name   `xml:"MASH"`
	Name              string     `xml:"NAME"`
	Version           int        `xml:"VERSION"`
	GrainTemp         float32    `xml:"GRAIN_TEMP"`
	TunTemp           float32    `xml:"TUN_TEMP"`
	SpargeTemp        float32    `xml:"SPARGE_TEMP"`
	Ph                float32    `xml:"PH"`
	TunWeight         float32    `xml:"TUN_WEIGHT"`
	TunSpecificHeat   float32    `xml:"TUN_SPECIFIC_HEAT"`
	EquipAdjust       bool       `xml:"EQUIP_ADJUST"`
	Notes             string     `xml:"NOTES"`
	DisplayGrainTemp  string     `xml:"DISPLAY_GRAIN_TEMP"`
	DisplayTunTemp    string     `xml:"DISPLAY_TUN_TEMP"`
	DisplaySpargeTemp string     `xml:"DISPLAY_SPARGE_TEMP"`
	DisplayTunWeight  string     `xml:"DISPLAY_TUN_WEIGHT"`
	MashSteps         []MashStep `xml:"MASH_STEPS>MASH_STEP"`
}

Mash is struct defining mash type

type MashProfile

type MashProfile struct {
	XMLName           xml.Name      `xml:"mash"`
	Name              string        `xml:"name"`
	GrainTemp         GrainDeg      `xml:"grain_temperature"`
	SpargeTemp        SpargeDeg     `xml:"sparge_temperature"`
	Ph                float32       `xml:"pH"`
	Notes             string        `xml:"notes"`
	DisplayGrainTemp  string        `xml:"display_grain_temp"`
	DisplayTunTemp    string        `xml:"display_tun_temp"`
	DisplaySpargeTemp string        `xml:"display_sparge_temp"`
	DisplayTunWeight  string        `xml:"display_tun_weight"`
	MashSteps         []RecMashStep `xml:"mash_steps"`
}

type MashStep

type MashStep struct {
	XMLName          xml.Name `xml:"MASH_STEP"`
	Name             string   `xml:"NAME"`
	Version          int      `xml:"VERSION"`
	Type             string   `xml:"TYPE"`
	InfuseAmount     float32  `xml:"INFUSE_AMOUNT"`
	StepTime         float32  `xml:"STEP_TIME"`
	StepTemp         float32  `xml:"STEP_TEMP"`
	RampTime         float32  `xml:"RAMP_TIME"`
	EndTemp          float32  `xml:"END_TEMP"`
	Description      string   `xml:"DESCRIPTION"`
	WaterGrainRatio  string   `xml:"WATER_GRAIN_RATIO"`
	DecotionAmt      string   `xml:"DECOTION_AMT"`
	InfuseTemp       string   `xml:"INFUSE_TEMP"`
	DisplayStepTemp  string   `xml:"DISPLAY_STEP_TEMP"`
	DisplayInfuseAmt string   `xml:"DISPLAY_INFUSE_AMT"`
}

MashStep ia single step for a mash profile

type MassAmount

type MassAmount struct {
	XMLName xml.Name `xml:"amount"`
	Units   string   `xml:"units,attr"`
	Amount  float32  `xml:",chardata"`
}

MassAmount is total mass amount specified by units

type MaxDensity

type MaxDensity struct {
	XMLName xml.Name `xml:"maximum"`
	Units   string   `xml:"units,attr"`
	Maximum float32  `xml:",chardata"`
}

type MaxTemp

type MaxTemp struct {
	XMLName xml.Name `xml:"maximum"`
	Degrees string   `xml:",Degrees,attr"`
	Temp    float32  `xml:",chardata"`
}

type MinDensity

type MinDensity struct {
	XMLName xml.Name `xml:"minimum"`
	Units   string   `xml:"units,attr"`
	Minimum float32  `xml:",chardata"`
}

type MinTemp

type MinTemp struct {
	XMLName xml.Name `xml:"minimum"`
	Degrees string   `xml:",Degrees,attr"`
	Temp    float32  `xml:",chardata"`
}

type Misc

type Misc struct {
	XMLName        xml.Name `xml:"MISC"`
	Name           string   `xml:"NAME"`
	Version        int      `xml:"VERSION"`
	Type           string   `xml:"TYPE"`
	Use            string   `xml:"USE"`
	Amount         float32  `xml:"AMOUNT"`
	Time           float32  `xml:"TIME"`
	AmountIsWeight bool     `xml:"AMOUNT_IS_WEIGHT"`
	UseFor         string   `xml:"USE_FOR"`
	Notes          string   `xml:"NOTES"`
	DisplayAmount  string   `xml:"DISPLAY_AMOUNT"`
	Inventory      string   `xml:"INVENTORY"`
	DisplayTime    string   `xml:"DISPLAY_TIME"`
}

Misc is miscellaneous ingredients used in beer

type MiscAdditions

type MiscAdditions struct {
	XMLName        xml.Name     `xml:"miscellaneous"`
	Name           string       `xml:"name"`
	Type           string       `xml:"type"`
	Use            string       `xml:"use"`
	Amount         VolAmount    `xml:"amount"`
	AmountAsWeight WeightAmount `xml:"amount_as_weight"`
	Time           UseTime      `xml:"time"`
	DisplayAmount  string       `xml:"display_amount"`
	Inventory      string       `xml:"inventory"`
	DisplayTime    string       `xml:"display_time"`
}

type OriginalGravity

type OriginalGravity struct {
	XMLName xml.Name `xml:"original_gravity"`
	Units   string   `xml:"units,attr"`
	Og      float32  `xml:",chardata"`
}

OriginalGravity is Original Gravity by units (plato, brix, gravity)

type Pellet

type Pellet struct {
	XMLName xml.Name `xml:"pellet"`
	Units   string   `xml:"units,attr"`
	Amount  float32  `xml:",chardate"`
}

Pellet is amount of hops inventory in pellet form

type Plug

type Plug struct {
	XMLName xml.Name `xml:"plug"`
	Units   string   `xml:"units,attr"`
	Amount  float32  `xml:",chardate"`
}

Plug is amount of hops inventory in plug form

type RampDur

type RampDur struct {
	XMLName xml.Name `xml:"ramp_time"`
	Units   string   `xml:"units,attr"`
	Time    float32  `xml:",chardata"`
}

type RecIngredients

type RecIngredients struct {
	Hops         []HopAddition    `xml:"hop_bill>hop"`
	Fermentables []FermAddition   `xml:"grain_bill>fermentable"`
	Miscs        []MiscAdditions  `xml:"adjuncts>miscellaneous"`
	Yeasts       []YeastAdditions `xml:"yeast_additions>yeast"`
	Waters       []WaterAddition  `xml:"water_profile>water"`
	Equipment    []EquipmentUsed  `xml:"Equipment,omitempty"`
}

RecIngredients is superset of all infredient types in the recipe

type RecMashStep

type RecMashStep struct {
	XMLName          xml.Name  `xml:"step"`
	Name             string    `xml:"name"`
	Type             string    `xml:"type"`
	InfuseAmount     InfuseVol `xml:"infuse_amount"`
	StepTemp         StepDeg   `xml:"step_temperature"`
	StepTime         StepDur   `xml:"step_time"`
	RampTime         RampDur   `xml:"ramp_time"`
	EndTemp          EndDeg    `xml:"end_temperature"`
	Description      string    `xml:"description"`
	WaterGrainRatio  string    `xml:"water_grain_ratio"`
	DecotionAmt      DecVol    `xml:"decoction_amount"`
	InfuseTemp       InfuseDeg `xml:"infuse_temperature"`
	DisplayStepTemp  string    `xml:"display_step_temp"`
	DisplayInfuseAmt string    `xml:"display_infuse_amt"`
}

type Recipe

type Recipe struct {
	XMLName              xml.Name      `xml:"RECIPE"`
	Name                 string        `xml:"NAME"`
	Version              string        `xml:"VERSION"`
	Type                 string        `xml:"TYPE"`
	Brewer               string        `xml:"BREWER"`
	AssistantBrewer      string        `xml:"ASST_BREWER"`
	BatchSize            float32       `xml:"BATCH_SIZE"`
	BoilSize             float32       `xml:"BOIL_SIZE"`
	BoilTime             int           `xml:"BOIL_TIME"`
	Efficiency           float32       `xml:"EFFICIENCY"`
	Hops                 []Hop         `xml:"HOPS>HOP"`
	Fermentables         []Fermentable `xml:"FERMENTABLES>FERMENTABLE"`
	Miscs                []Misc        `xml:"MISCS>MISC"`
	Yeasts               []Yeast       `xml:"YEASTS>YEAST"`
	Waters               []Water       `xml:"WATERS>WATER"`
	Style                Style         `xml:"STYLE"`
	Equipment            Equipment     `xml:"EQUIPMENT"`
	Mash                 Mash          `xml:"MASH"`
	Notes                string        `xml:"NOTES"`
	TasteNotes           string        `xml:"TASTE_NOTES"`
	TasteRating          float32       `xml:"TASTE_RATING"`
	Og                   float32       `xml:"OG"`
	Fg                   float32       `xml:"FG"`
	Carbonation          float32       `xml:"CARBONATION"`
	FermentationStages   int           `xml:"FERMENTATION_STAGES"`
	PrimaryAge           float32       `xml:"PRIMARY_AGE"`
	PrimaryTemp          float32       `xml:"PRIMARY_TEMP"`
	SecondaryAge         float32       `xml:"SECONDARY_AGE"`
	SecondaryTemp        float32       `xml:"SECONDARY_TEMP"`
	TertiaryAge          float32       `xml:"TERTIARY_AGE"`
	Age                  string        `xml:"AGE"`
	AgeTemp              float32       `xml:"AGE_TEMP"`
	CarbonationUsed      string        `xml:"CARBONATION_USED"`
	PrimingSugarName     string        `xml:"PRIMING_SUGAR_NAME"`
	PrimingSugarEquiv    float32       `xml:"PRIMING_SUGAR_EQUIV"`
	KegPrimingFactor     float32       `xml:"KEG_PRIMING_FACTOR"`
	CarbonationTemp      float32       `xml:"CARBONATIOn_TEMP"`
	DisplayCarbTemp      string        `xml:"DISPLAY_CARB_TEMP"`
	Date                 string        `xml:"DATE"`
	EstOg                string        `xml:"EST_OG"`
	EstFg                string        `xml:"EST_FG"`
	EstColor             string        `xml:"EST_COLOR"`
	Ibu                  string        `xml:"IBU"`
	IbuMethod            string        `xml:"Tinseth"`
	EstAbv               string        `xml:"EST_ABV"`
	Abv                  string        `xml:"ABV"`
	ActualEfficiency     string        `xml:"ACTUAL_EFFICIENCY"`
	Calories             string        `xml:"CALORIES"`
	DisplayBatchSize     string        `xml:"DISPLAY_BATCH_SIZE"`
	DisplayBoilSize      string        `xml:"DISPLAY_BOIL_SIZE"`
	DisplayOg            string        `xml:"DISPLAY_OG"`
	DisplayFg            string        `xml:"DISPLAY_FG"`
	DisplayPrimaryTemp   string        `xml:"DISPLAY_PRIMARY_TEMP"`
	DisplaySecondaryTemp string        `xml:"DISPLAY_SECONDARY_TEMP"`
	DisplayTertiaryTemp  string        `xml:"DISPLAY_TERTIARY_TEMP"`
	DisplayAgeTemp       string        `xml:"DISPLAY_AGE_TEMP"`
}

Recipe implements a BeerXML recipe including the different childs.

type SlantAmount

type SlantAmount struct {
	XMLName xml.Name `xml:"slant"`
	Units   string   `xml:"units,attr"`
	Amount  float32  `xml:",chardata"`
}

type SpargeDeg

type SpargeDeg struct {
	XMLName xml.Name `xml:"sparge_temperature"`
	Units   string   `xml:"units,attr"`
	Degrees float32  `xml:",chardata"`
}

type StepDeg

type StepDeg struct {
	XMLName xml.Name `xml:"step_temperature"`
	Units   string   `xml:"degrees,attr"`
	Degrees float32  `xml:",chardata"`
}

type StepDur

type StepDur struct {
	XMLName xml.Name `xml:"step_time"`
	Units   string   `xml:"units,attr"`
	Time    float32  `xml:",chardata"`
}

type Style

type Style struct {
	XMLName         xml.Name `xml:"STYLE"`
	Name            string   `xml:"NAME"`
	Version         int      `xml:"VERSION"`
	Category        string   `xml:"CATEGORY"`
	CategoryNumber  int      `xml:"CATEGORY_NUMBER"`
	StyleLetter     string   `xml:"STYLE_LETTER"`
	StyleGuide      string   `xml:"STYLE_GUIDE"`
	Type            string   `xml:"TYPE"`
	OgMin           float32  `xml:"OG_MIN"`
	OgMax           float32  `xml:"OG_MAX"`
	FgMin           float32  `xml:"FG_MIN"`
	FgMax           float32  `xml:"FG_MAX"`
	IbuMin          float32  `xml:"IBU_MIN"`
	IbuMax          float32  `xml:"IBU_MAX"`
	ColorMin        float32  `xml:"COLOR_MIN"`
	ColorMax        float32  `xml:"COLOR_MAX"`
	CarbMin         float32  `xml:"CARB_MIN"`
	CarbMax         float32  `xml:"CARB_MAX"`
	AbvMax          float32  `xml:"ABV_MAX"`
	AbvMin          float32  `xml:"ABV_MIN"`
	Notes           string   `xml:"NOTES"`
	Profile         string   `xml:"PROFILE"`
	Ingredients     string   `xml:"INGREDIENTS"`
	Examples        string   `xml:"EXAMPLES"`
	DisplayOgMin    string   `xml:"DISPLAY_OG_MIN"`
	DisplayOgMax    string   `xml:"DISPLAY_OG_MAX"`
	DisplayFgMin    string   `xml:"DISPLAY_FG_MIN"`
	DisplayFgMax    string   `xml:"DISPLAY_FG_MAX"`
	DisplayColorMin string   `xml:"DISPLAY_COLOR_MIN"`
	DisplayColorMax string   `xml:"DISPLAY_COLOR_MAX"`
	OgRange         string   `xml:"OG_RANGE"`
	FgRange         string   `xml:"FG_RANGE"`
	IbuRange        string   `xml:"IBU_RANGE"`
	CarbRange       string   `xml:"CARB_RANGE"`
	ColorRange      string   `xml:"COLOR_RANGE"`
	AbvRange        string   `xml:"ABV_RANGE"`
}

Style defines beer styles

type StyleABV

type StyleABV struct {
	Minimum float32 `xml:"minimum"`
	Maximum float32 `xml:"maximum"`
}

type StyleAddition

type StyleAddition struct {
	XMLName         xml.Name `xml:"style"`
	Name            string   `xml:"name"`
	Category        string   `xml:"category"`
	CategoryNumber  int      `xml:"category_number"`
	StyleLetter     string   `xml:"style_letter"`
	StyleGuide      string   `xml:"style_guide"`
	Type            string   `xml:"type"`
	DisplayOgMin    string   `xml:"display_og_min"`
	DisplayOgMax    string   `xml:"display_og_max"`
	DisplayFgMin    string   `xml:"display_fg_min"`
	DisplayFgMax    string   `xml:"display_fg_max"`
	DisplayColorMin string   `xml:"display_color_min"`
	DisplayColorMax string   `xml:"display_color_max"`
}

type StyleCarb

type StyleCarb struct {
	Minimum float32 `xml:"minimum"`
	Maximum float32 `xml:"maximum"`
}

type StyleProfile

type StyleProfile struct {
	XMLName        xml.Name   `xml:"style"`
	Name           string     `xml:"name"`
	Category       string     `xml:"category"`
	CategoryNumber int        `xml:"category_number"`
	StyleLetter    string     `xml:"style_letter"`
	StyleGuide     string     `xml:"style_guide"`
	Type           string     `xml:"type"`
	Og             Gravity    `xml:"original_gravity"`
	Fg             Gravity    `xml:"final_gravity"`
	IBU            Bitterness `xml:"international_bitterness_units"`
	Color          ColorScale `xml:"color"`
	Carbonation    StyleCarb  `xml:"carbonation"`
	ABV            StyleABV   `xml:"alcohol_by_volume"` // Testfile from beerxml contains 2.1>
	Notes          string     `xml:"notes"`
	Profile        string     `xml:"profile"`
	Ingredients    string     `xml:"ingredients"`
	Examples       string     `xml:"examples"`
}

type TempRange

type TempRange struct {
	Minimum MinTemp `xml:"minimum"`
	Maximum MaxTemp `xml:"maximum"`
}

type UseTime

type UseTime struct {
	XMLName xml.Name `xml:"time"`
	Units   string   `xml:"units,attr"`
	Time    float32  `xml:",chardata"`
}

UseTime time hops added to brew

type VolAmount

type VolAmount struct {
	XMLName xml.Name `xml:"amount"`
	Units   string   `xml:"units,attr"`
	Amount  float32  `xml:",chardata"`
}

VolAmount is amount of liquid with units

type Water

type Water struct {
	XMLName       xml.Name `xml:"WATER"`
	Name          string   `xml:"NAME"`
	Version       int      `xml:"VERSION"`
	Amount        float32  `xml:"AMOUNT"`
	Calcium       float32  `xml:"CALCIUM"`
	Bicarbonate   float32  `xml:"BICARBONATE"`
	Sulfate       float32  `xml:"SULFATE"`
	Chloride      float32  `xml:"CHLORIDE"`
	Sodium        float32  `xml:"SODIUM"`
	Magnesium     float32  `xml:"MAGNESIUM"`
	Ph            float32  `xml:"PH"`
	Notes         string   `xml:"NOTES"`
	DisplayAmount string   `xml:"DISPLAY_AMOUNT"`
}

Water definition used in brewing process

type WaterAddition

type WaterAddition struct {
	XMLName       xml.Name  `xml:"water"`
	Name          string    `xml:"name"`
	Calcium       float32   `xml:"calcium"`
	Bicarbonate   float32   `xml:"bicarbonate"`
	Sulfate       float32   `xml:"sulfate"`
	Chloride      float32   `xml:"chloride"`
	Sodium        float32   `xml:"sodium"`
	Magnesium     float32   `xml:"magnesium"`
	Amount        VolAmount `xml:"amount"`
	DisplayAmount string    `xml:"display_amount"`
}

type WaterProfile

type WaterProfile struct {
	XMLName     xml.Name `xml:"water"`
	Name        string   `xml:"name"`
	Calcium     float32  `xml:"calcium"`
	Bicarbonate float32  `xml:"bicarbonate"`
	Sulfate     float32  `xml:"sulfate"`
	Chloride    float32  `xml:"chloride"`
	Sodium      float32  `xml:"sodium"`
	Magnesium   float32  `xml:"magnesium"`
	Ph          float32  `xml:"pH"`
	Notes       string   `xml:"notes"`
}

type WeightAmount

type WeightAmount struct {
	XMLName xml.Name `xml:"amount_as_weight"`
	Units   string   `xml:"units,attr"`
	Weight  float32  `xml:",chardata"`
}

WeightAmount is weight amount by unit type provided

type Yeast

type Yeast struct {
	XMLName        xml.Name `xml:"YEAST"`
	Name           string   `xml:"NAME"`
	Version        int      `xml:"VERSION"`
	Type           string   `xml:"TYPE"`
	Form           string   `xml:"FROM"`
	Amount         float32  `xml:"AMOUNT"`
	AmountIsWeight bool     `xml:"AMOUNT_IS_WEIGHT"`
	Laboratory     string   `xml:"LABORATORY"`
	ProductID      string   `xml:"PRODUCT_ID"`
	MinTemperature float32  `xml:"MIN_TEMPERATURE"`
	MaxTemperature float32  `xml:"MAX_TEMPERATURE"`
	Flocculation   string   `xml:"FLOCCULATION"`
	Attenuation    float32  `xml:"ATTENUATION"`
	Notes          string   `xml:"NOTES"`
	BestFor        string   `xml:"BEST_FOR"`
	MaxReuse       int      `xml:"MAX_REUSE"`
	TimesCultured  int      `xml:"TIMES_CULTURED"`
	AddToSecondary bool     `xml:"ADD_TO_SECONDARY"`
	DisplayAmount  string   `xml:"DISPLAY_AMOUNT"`
	DispMinTemp    string   `xml:"DISP_MIN_TEMP"`
	DispMaxTemp    string   `xml:"DISP_MAX_TEMP"`
	Inventory      string   `xml:"INVENTORY"`
	CultureDate    string   `xml:"CULTURE_DATE"`
}

Yeast definition

type YeastAdditions

type YeastAdditions struct {
	XMLName        xml.Name     `xml:"yeast"`
	Name           string       `xml:"name"`
	Type           string       `xml:"type"`
	Form           string       `xml:"form"`
	Laboratory     string       `xml:"laboratory"`
	ProductID      string       `xml:"product_id"`
	Amount         VolAmount    `xml:"amount"`
	AmountAsWeight WeightAmount `xml:"amount_as_weight"`
	TimesCultured  int          `xml:"times_cultured"`
	AddToSecondary bool         `xml:"add_to_secondary"`
	DisplayAmount  string       `xml:"display_amount"`
	DispMinTemp    string       `xml:"disp_min_temp"`
	DispMaxTemp    string       `xml:"disp_max_temp"`
	Inventory      string       `xml:"inventory"`
	CultureDate    string       `xml:"culture_date"`
}

type YeastInventory

type YeastInventory struct {
	Liquid  LiquidAmount  `xml:"liquid"`
	Dry     DryAmount     `xml:"dry"`
	Slant   SlantAmount   `xml:"slant"`
	Culture CultureAmount `xml:"culture"`
}

type Yield

type Yield struct {
	FineGrind      float32 `xml:"fine_grind"`
	CoarseFineDiff float32 `xml:"fine_coarse_difference"`
}

Yield is total for fine and coarsce grain for dry usage

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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