summaryrefslogtreecommitdiff
path: root/rename_fields.rb
blob: c72af6dfb69a1320692d398863e14cc043d1d6bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/env ruby1.9.1
#charset: utf-8
require 'pp'

files = Dir[ARGV[0]]

$reg = /\/\*\s*(\w+) bits\s*\*\/\s*\n((?:#.+?\n)+)/i
$def = /^#\s*define[ \t]+([^ \t]+)/
regs = [] 
files.each do |f|
    File.read(f).scan($reg).each do |match|
        reg, fields = match
        fields.scan($def).each do |field|
            regs << [reg, field[0]] unless field[0][reg+'_']
        end
    end
end

files.each do |f|
    regs.each do |reg_field|
        reg, field = reg_field
        t = File.read(f).gsub(/\b#{field}\b/, reg+'_'+field)
        File.open(f, 'w') {|w| w.print t}
    end
end