ruby レシピ管理アプリケーションを構築しています。その一環として、材料の量を解析して、比較およびスケーリングできる形式にしたいと考えています。これを行うための最良のツールは何か疑問に思っています。
私は当初、複雑な正規表現を計画し、次にtwo
またはのような人間が読める数値five
を整数に変換する他のコードを計画し、最後に1 cup
および3 teaspoons
を何らかの基本測定値に変換するコードを計画しました。入力を制御するので、実際の成分を分けておきました。to taste
しかし、ユーザーがや などの抽象的な測定値を入力していることに気付きました1 package
。少なくとも抽象的な測定値では、それらを無視してスケーリングし、それらの前の数値をスクレイピングすることができると思います。
ここにいくつかの例があります
1 tall can
1/4 cup
2 Leaves
1 packet
To Taste
One
Two slices
3-4 fillets
Half-bunch
2 to 3 pinches (optional)
これには何かトリックはありますか?私は、ユーザーが数量を構成するものについて多少混乱しているように見えることに気付きました. より厳格なルールを適用して、 や などを成分部分に押し込むこともできtall can
ますleaves
。ただし、それを強制するためには、無効なものを伝えることができる必要があります。
また、数量を変換する必要がある「基本」測定値もわかりません。
これらが私の目標です。
レシピをスケーリングできるようにするため。 のような任意の測定単位は スケーリングする必要
packages
はありませんが、正確なものはスケーリングcups
するounces
必要があります。「主な」成分を把握します。 この質問のコンテキストでは、これは主に、レシピに含まれる最大の成分を把握することによって行われます.
flour
生産では、明らかに、 「主な」成分と見なされることはほとんどないため、成分の種類に基づいて何らかの修飾子が必要になります。しかし、chocolate
控えめに使用することができ、それはまだchocolate cake
.入力を正規化します。 サイトの一貫性を維持するために、一貫した略語を維持したいと考えています。たとえば、 ではなく、
pounds
にする必要がありますlbs
。