解析配置文件并将数组转换为嵌套哈希

时间:2013-10-20 19:17:54

标签: ruby

已编辑以澄清

我“在谷歌上”做过一些搜索(超过我可以计算),显然我没有用正确的关键词搜索。我找到了许多网站(rubyforum,个人网站,stackoverflow等),这些网站都没有真正解决我的特定问题,而且我都无法适应。

解析配置文件,其中包含部分和子部分。也就是说,它是我从设备中提取的文件,而不是我可以创建的文件。我想创建该配置的哈希,其中包含用于快速访问密钥或子密钥的部分和子部分,这样,如果我知道给定MAC的索引,我可以快速将其状态设置为禁用而不必迭代config的字符串或数组版本,用于查找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正是我想要的......太棒了!

对不起,我在很多搜索中没遇到过,我希望有!我确实感到有人认为我的搜索不够好或根本没有。反应非常激烈。这应该是一个友好的地方,通过这种方式表现出一种尊重,而最初的假设并不倾向于消极。我知道在发布之前应该进行一些研究,问题应该清楚。然而,一个人清楚的不是另一个人。一个合适的问题可能是“我不明白你的问题,你能澄清你的意思......?”或“你正在解析你创建的或正在从其他来源提取的配置?”,你的问题尚不清楚。尊敬地,我的回答是......不清楚的是什么?很高兴澄清。我再一次认为“From”这种格式(我已经说过我正在解析文件“)”“到”那种格式(哈希)是不言自明的。

不要试图成为一个混蛋或忘恩负义,而是来吧。我觉得这个问题与阅读问题一样多,因为我没有为你们中的某些人说清楚。

祝你好运

1 个答案:

答案 0 :(得分:1)

好吧,如果你再搜索一下,你可能最终会找到这个要点:

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

完全符合您的要求。不是一个不错的选择:

https://github.com/markbates/configatron