Парсим dmidecode с рубином - PullRequest
       0

Парсим dmidecode с рубином

1 голос
/ 21 сентября 2010

Учитывая вывод dmidecode

Handle 0x0025, DMI type 13, 22 bytes
BIOS Language Information
  Installable Languages: 1
    en|US|iso8859-1
  Currently Installed Language: en|US|iso8859-1

Handle 0x0026, DMI type 16, 15 bytes
Physical Memory Array
  Location: System Board Or Motherboard
  Use: System Memory
  Error Correction Type: Single-bit ECC 
  Maximum Capacity: 16 GB
  Error Information Handle: Not Provided
  Number Of Devices: 4

Теперь я ищу комбо или регулярное выражение или что-то еще, чтобы получить структуру данных, подобную этой

{ "BIOS Language Information" =>
    { "Installable Languages" =>  "1\n    en|US|iso8859-1", 
      "Currently Installed Language" => "en|US|iso8859-1"},
   "Physical Memory Array" =>
    { "Location" => "System Board Or Motherboard",
      "Use" => "System Memory"} }

1 Ответ

1 голос
/ 27 сентября 2010
Hash[
    text.scan(/^(?:(\S.*?)\n((?: +.+\n?)+))/).map { |a,b|
        [a,
        Hash[
                b.scan(/  (.+?): (.+(?:(?:\n    .+))*)/)
            ]
        ]
    }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...