给定特定约束的Javascript或Clojure中的DSL

时间:2014-05-16 00:28:35

标签: javascript clojure dsl

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。虽然我认识到要么可以完成任务,但我对以下内容的最佳选择感兴趣:

  • 创建最具人类可读性的DSL的能力(没有parens,没有功能())
  • 易于定义和扩展语言原型
  • 提供协助的图书馆,协助语言结构
  • 内联执行任意语言的能力(因为不太可能定义每个可能的规则)

我对表现几乎不感兴趣。如果它只处理一行CSV行,那么开发者时间就是最重要的。

0 个答案:

没有答案