首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Erlang sys.config转化为config.exs?

如何将Erlang sys.config转化为config.exs?
EN

Stack Overflow用户
提问于 2015-11-10 09:58:50
回答 2查看 312关注 0票数 3

这可能很简单。例如,这个sys.config到mix config.exs:

代码语言:javascript
复制
{gsms, [{interfaces,
  [
   {gsms_0705, 1, [{device,"/dev/tty.usbserial-FTF5DP2J"},
           {bnumber, "<phone-number>"},{baud,19200},
           {reopen_timeout, 5000}]}
   {gsms_0705, 2, [{device,"/dev/tty.HUAWEIMobile-Pcui"},
           {bnumber, "<phone-number>"},
           {reopen_timeout, 5000}]}
   {gsms_0705, 3, [{device, "/dev/tty.usbserial"},
          {bnumber, "<phone-number>"},
          {baud, 9600}]}
  ]}
]}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-10 11:13:15

如果您修复语法错误(缺少逗号)并添加强制尾随点,甚至可以解析Elixir中的Erlang术语,并让解析器为您进行转换:

代码语言:javascript
复制
erlang_term = '{gsms, [{interfaces, [
  {gsms_0705, 1, [{device,"/dev/tty.usbserial-FTF5DP2J"},
                  {bnumber, "<phone-number>"},{baud,19200},
                  {reopen_timeout, 5000}]},
  {gsms_0705, 2, [{device,"/dev/tty.HUAWEIMobile-Pcui"},
                  {bnumber, "<phone-number>"},
                  {reopen_timeout, 5000}]},
  {gsms_0705, 3, [{device, "/dev/tty.usbserial"},
                  {bnumber, "<phone-number>"},
                  {baud, 9600}]}
 ]}
]}.'

{:ok, tokens, _} = :erl_scan.string(erlang_term)
{:ok, result} = :erl_parse.parse_term(tokens)
IO.inspect result, limit: :infinity

这些指纹:

代码语言:javascript
复制
{:gsms,
 [interfaces: [{:gsms_0705, 1,
    [device: '/dev/tty.usbserial-FTF5DP2J', bnumber: '<phone-number>',
     baud: 19200, reopen_timeout: 5000]},
   {:gsms_0705, 2,
    [device: '/dev/tty.HUAWEIMobile-Pcui', bnumber: '<phone-number>',
     reopen_timeout: 5000]},
   {:gsms_0705, 3,
    [device: '/dev/tty.usbserial', bnumber: '<phone-number>', baud: 9600]}]]}

元组的第一部分是应用程序名:gsms,另一部分是包含实际选项的proplist。您可以去掉周围的括号,稍微修改一下格式,这样您就可以得到:

代码语言:javascript
复制
config :gsms, interfaces: [
  {:gsms_0705, 1, [
    device: '/dev/tty.usbserial-FTF5DP2J',
    bnumber: '<phone-number>',
    baud: 19200,
    reopen_timeout: 5000]},
  {:gsms_0705, 2, [
    device: '/dev/tty.HUAWEIMobile-Pcui',
    bnumber: '<phone-number>',
    reopen_timeout: 5000]},
  {:gsms_0705, 3, [
    device: '/dev/tty.usbserial',
    bnumber: '<phone-number>',
    baud: 9600]}]
票数 3
EN

Stack Overflow用户

发布于 2015-11-10 10:45:55

我想应该是这样的:

代码语言:javascript
复制
config :gsms, :interfaces, [
  {:gsms_0705, 1, [device: '/dev/tty.usbserial-FTF5DP2J',
                   bnumber: '<phone-number>',
                   baud: 19200,
                   reopen_timeout: 5000]},
  # and so on
]

在您要配置的应用程序中,:gsms是通过Application.get_env/2 (Application.get_env(:gsms, :interfaces))检索的键,{:gsms_*, ...}元组列表是该键的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33627303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档