我想模仿 Mac 日历快速事件或 Fantastical 的快速输入的功能。使用 Chronic gem,我可以传递如下字符串:
"Today at 3pm"
=> 2014-01-24 15:00:00 -0600
如果您传入以下内容,则慢性解析不起作用:
"Eat at Joes Today at 3pm"
=> nil
到目前为止,我所做的是使用一个简单的正则表达式将字符串拆分为通常用于返回 Chronic 日期的单词。初始正则表达式很简单:
scan(/(.+)(tomorrow{1}.+|in\s.+|next\s.+|today\s.+)/)
如果您愿意,这将返回一个带有“标题”的数组,以及我想发送给 Chronic 为我解析的字符串。
两个问题:
- 这真的是最好的方法吗?我必须提供一些大型正则表达式来拆分我认为我的用户将在这里提交的任何字符串。
- 在 Chronic 中进行黑客攻击会更好吗?它已经在为我解析日期,但我最初的想法是否定的,因为如果你传递
Eat at Joes Today at 3pm
给 Chronic.parse,它将返回 nil。似乎它无法识别字符串中用于格式化当前形式的日期的部分。