class CFA::Grub2::GrubCfg::Parser

@private only internal parser

Public Class Methods

empty() click to toggle source
# File lib/cfa/grub2/grub_cfg.rb, line 33
def self.empty
  []
end
parse(string) click to toggle source
# File lib/cfa/grub2/grub_cfg.rb, line 16
def self.parse(string)
  submenu = []
  string.lines.each_with_object([]) do |line, result|
    case line
    when /menuentry\s+'/ then result << parse_entry(line, submenu)
    when /^\s*}\s*\n/ then submenu.pop
    when /submenu\s+'/
      submenu.push(line[/\s*submenu\s+'([^']+)'.*/, 1])
    end
  end
end
serialize(_string) click to toggle source
# File lib/cfa/grub2/grub_cfg.rb, line 28
def self.serialize(_string)
  raise NotImplementedError,
        "Serializing not implemented, use grub2 generator"
end

Private Class Methods

parse_entry(line, submenu) click to toggle source
# File lib/cfa/grub2/grub_cfg.rb, line 37
def self.parse_entry(line, submenu)
  entry = line[/\s*menuentry\s+'([^']+)'.*/, 1]
  submenu.push(entry)
  {
    title: entry,
    path:  submenu.join(">")
  }
end