diff --git a/frontend/components/Domain/Recipe/RecipeIngredients.vue b/frontend/components/Domain/Recipe/RecipeIngredients.vue
index f69d6ab2c73..8be0b433a3d 100644
--- a/frontend/components/Domain/Recipe/RecipeIngredients.vue
+++ b/frontend/components/Domain/Recipe/RecipeIngredients.vue
@@ -54,7 +54,7 @@ export default defineComponent({
const ingredientCopyText = computed(() => {
return props.value
.map((ingredient) => {
- return `${parseIngredientText(ingredient, props.disableAmount, props.scale)}`;
+ return `${parseIngredientText(ingredient, props.disableAmount, props.scale, false)}`;
})
.join("\n");
});
diff --git a/frontend/composables/recipes/use-recipe-ingredients.test.ts b/frontend/composables/recipes/use-recipe-ingredients.test.ts
index 499e2b2db2f..c7e6900bea7 100644
--- a/frontend/composables/recipes/use-recipe-ingredients.test.ts
+++ b/frontend/composables/recipes/use-recipe-ingredients.test.ts
@@ -31,7 +31,16 @@ describe(parseIngredientText.name, () => {
test("ingredient text with fraction", () => {
const ingredient = createRecipeIngredient({ quantity: 1.5, unit: { fraction: true, id: "1", name: "cup" } });
- expect(parseIngredientText(ingredient, false)).contain("1 1").and.to.contain("2");
+ expect(parseIngredientText(ingredient, false, 1, true)).contain("1 1").and.to.contain("2");
+ });
+
+ test("ingredient text with fraction no formatting", () => {
+ const ingredient = createRecipeIngredient({ quantity: 1.5, unit: { fraction: true, id: "1", name: "cup" } });
+ const result = parseIngredientText(ingredient, false, 1, false);
+
+ expect(result).not.contain("<");
+ expect(result).not.contain(">");
+ expect(result).contain("1 1/2");
});
test("sanitizes html", () => {
diff --git a/frontend/composables/recipes/use-recipe-ingredients.ts b/frontend/composables/recipes/use-recipe-ingredients.ts
index 36b9bc9f082..d975adc4ddd 100644
--- a/frontend/composables/recipes/use-recipe-ingredients.ts
+++ b/frontend/composables/recipes/use-recipe-ingredients.ts
@@ -10,7 +10,7 @@ function sanitizeIngredientHTML(rawHtml: string) {
});
}
-export function useParsedIngredientText(ingredient: RecipeIngredient, disableAmount: boolean, scale = 1) {
+export function useParsedIngredientText(ingredient: RecipeIngredient, disableAmount: boolean, scale = 1, includeFormating = true) {
if (disableAmount) {
return {
name: ingredient.note ? sanitizeIngredientHTML(ingredient.note) : undefined,
@@ -35,7 +35,9 @@ export function useParsedIngredientText(ingredient: RecipeIngredient, disableAmo
}
if (fraction[1] > 0) {
- returnQty += ` ${fraction[1]}⁄${fraction[2]}`;
+ returnQty += includeFormating ?
+ ` ${fraction[1]}⁄${fraction[2]}` :
+ ` ${fraction[1]}/${fraction[2]}`;
}
} else {
returnQty = (quantity * scale).toString();
@@ -54,8 +56,8 @@ export function useParsedIngredientText(ingredient: RecipeIngredient, disableAmo
};
}
-export function parseIngredientText(ingredient: RecipeIngredient, disableAmount: boolean, scale = 1): string {
- const { quantity, unit, name, note } = useParsedIngredientText(ingredient, disableAmount, scale);
+export function parseIngredientText(ingredient: RecipeIngredient, disableAmount: boolean, scale = 1, includeFormating = true): string {
+ const { quantity, unit, name, note } = useParsedIngredientText(ingredient, disableAmount, scale, includeFormating);
const text = `${quantity || ""} ${unit || ""} ${name || ""} ${note || ""}`.replace(/ {2,}/g, " ").trim();
return sanitizeIngredientHTML(text);