1

为澄清而编辑

我“已经”在谷歌上进行了多次搜索(超过我数不清的),显然我没有用正确的关键词进行搜索。我发现许多网站(rubyforum、个人网站、stackoverflow 等)都没有真正解决我的特定问题,也没有一个我能够适应。

我正在解析一个包含部分和子部分的配置文件。也就是说,它是我从设备中提取的文件,而不是我可以创建的文件。我想创建该配置的哈希,其中包含用于快速访问键或子键的部分和子部分,这样如果我知道给定 MAC 的索引,我可以快速将其状态设置为禁用,而不必遍历寻找 MAC 和跟踪索​​引的字符串或数组版本的配置。

配置文件内容(部分)我想转换:即我将读取文件并转换为散列。

aaa.1.br.devname=br0
aaa.1.devname=ath0
bridge.1.devname=br0
wireless.1.mac_acl.1.comment=testsm
wireless.1.mac_acl.1.mac=DC:9F:DB:32:0A:2E
wireless.1.mac_acl.1.status=enabled
wireless.1.mac_acl.policy=allow
wireless.1.mac_acl.status=enabled

我想将其转换为:

{
 :aaa => {:"1" => {
                   :br => {:devname => "br0"},
                   :devname => "ath0"
                  }
         },
 :bridge => {:"1" => {:devname => "br0"}},
 :wireless => {:"1" => {
                         :mac_acl => {
                                      :"1" => {:comment => "testsm", :mac => "DC:9F:DB:32:0A:2E", :status => "enabled"}
                                     },
                        :policy => "allow",
                        :status => "enabled"
                       }
              }
}

'Edgars Jekabsons' 提供了两种可能的解决方案(谢谢!!)。Configatron 不能工作,因为我正在解析的配置中的许多键是/将是整数,Configatron 不喜欢这样。它在使用 .store 和 .fetch 方法时有些工作,但是更新现有的存储值是个问题。Hashquiz 正是我想要的……太棒了!

抱歉,我在多次搜索中都没有遇到它,我想要!我确实觉得有人假设我搜索得不够好或根本没有。并且反应严厉。这应该是一个友好的地方,在这里可以表现出一定程度的尊重,并且最初的假设不会倾向于消极。我知道在发布之前应该进行一些研究,并且问题应该很清楚。然而,对一个人来说清楚的事情对另一个人来说不是。一个适当的问题可能是“我不明白你的问题,你能澄清你的意思......吗?” 或“您正在解析的配置是您创建的还是从另一个来源提取的?”,而不是您的问题不清楚。恭敬地,我的回答是……什么不清楚?很高兴澄清。我再次认为“

不是想在这里成为一个混蛋或忘恩负义,但来吧伙计们。我觉得问题在于没有阅读问题,因为我没有对你们中的一些人说清楚。

此致

4

1 回答 1

1

好吧,如果您搜索得更多,您最终可能会找到以下要点:

https://gist.github.com/potatosalad/760726

做你想要的。不错的选择:

https://github.com/markbates/configatron

于 2013-10-20T20:45:33.187 回答