它目前读取配方(见下文)并将其打印出来.串行通信的代码仍然需要处理以及我在下面提到的其他一些想法.
这是我的第一个DSL,我正在使用前一个例子,所以它的边缘非常粗糙.任何批评,代码改进(有没有对Ruby DSL最佳实践或成语的任何好的参考?)或任何一般性评论.
我目前有DSL的草稿,所以饮料配方如下(Github link):
desc "Simple glass of water" recipe "water" do ingredients( "Water" => 2.ounces ) end
这反过来被解释,目前结果如下(Github link):
[mwilliams@Danzig barduino-tender]$ruby barduino-tender.rb examples/water.rb Preparing: Simple glass of water Ingredients: Water: 2 ounces
这是DSL的一个良好开端,但是,我认为它可以更好地实现.我在下面提出的一些想法:
>使用成分名称和连接的数字泵定义可用的“成分”.也许使用哈希?成分= {“水”=> 1,“伏特加”=> 2}.这样,当一种成分被解释时,它可以a)通过串口发送泵号,然后是Arduino分配的盎司数b)告诉用户该成分不存在并中止所以没有分配c)如果它们发生变化,很容易有能力改变或添加新成分.
>使配方看起来更像代码,这是DSL的主要目的,也许建立一个配方建设者?使用可用的成分提示用户饮用名称,成分涉及多少?
Github项目是here,随意分叉并发出拉取请求,或在此发布您的代码建议和示例供其他用户查看.如果你有点好奇,使用Ruby Arduino开发框架的Arduino代码是here.
更新
我修改并清理了一些东西以反映Orion Edwards对食谱的建议.它现在看起来如下.
description 'Screwdriver' do serve_in 'Highball Glass' ingredients do 2.ounces :vodka 5.ounces :orange_juice end end
我还添加了一个哈希(键是成分和它连接的泵号的值).我认为这提供了很多进展.我现在将问题留给任何进一步的建议,但最终将选择猎户座的答案.更新的DSL代码是here.
解决方法
(从这里偷窃:http://supercocktails.com/1310/Long-Island-Iced-Tea-)
describe "Long Island Iced Tea" do serve_in 'Highball Glass' ingredients do half.ounce.of :vodka half.ounce.of :tequila half.ounce.of :light_rum half.ounce.of :gin 1.dash.of :coca_cola #ignoring lemon peel as how can a robot peel a lemon? end steps do add :vodka,:tequila,:light_rum,:gin stir :gently add :coca_cola end end
希望有所帮助!
原文地址:https://www.jb51.cc/ruby/264516.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。