Ejemplo n.º 1
0
func parseTimingFragment(text string, msg *m.Messages) m.RecipeTimingFragment {
	result := m.RecipeTimingFragment{TagF: m.TimingTag}

	for _, component := range fractionAwareSplitBySlashes(text) {
		component = strings.TrimSpace(component)
		if value, ok := extractComponent(component, servesRe); ok {
			result.ServingSize = value
		} else if value, ok := extractComponent(component, totalTimeRe); ok {
			result.TotalTime = parseDuration(value)
		} else if value, ok := extractComponent(component, prepTimeRe); ok {
			result.PreparationTime = parseDuration(value)
		} else {
			msg.AddWarningf("Unknown duration component: %#v", component)
		}
	}

	return result
}