Clojure或Javascript中的领域特定语言
我正在考虑编写一个特定于域的语言来转换和映射CSV字段。
因此,对于CSV文件的每一行,DSL都会执行一组规则,这些规则会将该行上的元素转换并映射到数据库值。
这种语言看起来像/做的一个例子:
# comment
Customer "abccorp"
Field "email" # name of field
Rule "emails must be lower case with no white space" # rule rationale
Lowercase the value # operation to execute on field
Strip whitespace
Assign to "email_address" # field to map to
Field "last_name"
Rule "drop rows with no last name"
If we do not receive field
Drop this row
Rule "must upper case the first character of last name"
Uppercase the value
Assign to "lastname"
我可以选择在Javascript或Clojure中创建此DSL。虽然我认识到要么可以完成任务,但我对以下内容的最佳选择感兴趣:
我对表现几乎不感兴趣。如果它只处理一行CSV行,那么开发者时间就是最重要的。