You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
712 B
Ruby
41 lines
712 B
Ruby
8 years ago
|
#!/usr/bin/env ruby
|
||
|
|
||
|
class KeymapConverter
|
||
|
|
||
|
def initialize(filename)
|
||
|
@filename = filename
|
||
|
@mode = :search
|
||
|
end
|
||
|
|
||
|
def read_keymaps
|
||
|
lines = IO.readlines(@filename)
|
||
|
lines.each { |line| parse_line line[0..-2] }
|
||
|
end
|
||
|
|
||
|
def parse_line(line)
|
||
|
case @mode
|
||
|
when :search
|
||
|
if line =~ /COMPACT_KEYMAP/
|
||
|
puts "### #{line}"
|
||
|
puts "```"
|
||
|
@mode = :parse
|
||
|
end
|
||
|
when :parse
|
||
|
if line =~ /\)/
|
||
|
@mode = :search
|
||
|
puts "```\n\n"
|
||
|
else
|
||
|
line = line[4..-1]
|
||
|
line.sub!(/(,)^-/m, "|")
|
||
|
line.sub!(/( {4})/, " |")
|
||
|
|
||
|
puts line
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
converter = KeymapConverter.new('keymap.c')
|
||
|
converter.read_keymaps
|