Blame scripts/sort_supported.rb
|
Michal Suchanek |
398394 |
#!/usr/bin/ruby
|
|
Michal Suchanek |
398394 |
|
|
Michal Suchanek |
398394 |
def max x, y
|
|
Michal Suchanek |
398394 |
(x >= y) ? x : y
|
|
Michal Suchanek |
398394 |
end
|
|
Michal Suchanek |
398394 |
|
|
Michal Suchanek |
398394 |
class String
|
|
Michal Suchanek |
398394 |
def tablen
|
|
Michal Suchanek |
398394 |
(length + 8) / 8
|
|
Michal Suchanek |
398394 |
end
|
|
Michal Suchanek |
398394 |
def tabfill tabs
|
|
Michal Suchanek |
398394 |
self + "\t" * (tabs - (length / 8))
|
|
Michal Suchanek |
398394 |
end
|
|
Michal Suchanek |
398394 |
def ** other
|
|
Michal Suchanek |
398394 |
star = nil
|
|
Michal Suchanek |
398394 |
star = length - 1 if self[length - 1] == '*'
|
|
Michal Suchanek |
398394 |
star = other.length - 1 if other[other.length - 1] == '*'
|
|
Michal Suchanek |
398394 |
if star then
|
|
Michal Suchanek |
398394 |
if self[0...star] == other[0...star] then
|
|
Michal Suchanek |
398394 |
return 1 if star == length - 1
|
|
Michal Suchanek |
398394 |
return -1
|
|
Michal Suchanek |
398394 |
end
|
|
Michal Suchanek |
398394 |
end
|
|
Michal Suchanek |
398394 |
return self <=> other
|
|
Michal Suchanek |
398394 |
end
|
|
Michal Suchanek |
398394 |
end
|
|
Michal Suchanek |
398394 |
|
|
Michal Suchanek |
398394 |
header = []
|
|
Michal Suchanek |
398394 |
supported = []
|
|
Michal Suchanek |
398394 |
maxtabs = [0,0]
|
|
Michal Suchanek |
398394 |
maxlen = [0,0]
|
|
Michal Suchanek |
398394 |
|
|
Michal Suchanek |
398394 |
File.open("supported.conf"){|f|
|
|
Michal Suchanek |
398394 |
f.each_line{|l|
|
|
Michal Suchanek |
398394 |
l.chomp!
|
|
Michal Suchanek |
398394 |
l.gsub! %r<//>, '/'
|
|
Michal Suchanek |
398394 |
split = (l.match %r<^([^[:blank:]/]*)[[:blank:]]+(?:([^[:blank:]/]+)[[:blank:]]+)?(?:([^[:blank:]/]+)[[:blank:]]+)?([^[:blank:]]+/[^[:blank:]]+)(?:[[:blank:]]+(.*))?$>)
|
|
Michal Suchanek |
398394 |
if ! split then
|
|
Michal Suchanek |
398394 |
header << l
|
|
Michal Suchanek |
398394 |
else
|
|
Michal Suchanek |
398394 |
# [[flag, ..],module,comment,is_kmp]
|
|
Michal Suchanek |
398394 |
s = [[]]
|
|
Michal Suchanek |
398394 |
slash = false
|
|
Michal Suchanek |
398394 |
split[1..-1].each{|e|
|
|
Michal Suchanek |
398394 |
if slash then
|
|
Michal Suchanek |
398394 |
raise l + split.inspect if s[2]
|
|
Michal Suchanek |
398394 |
s[2] = e
|
|
Michal Suchanek |
398394 |
else
|
|
Michal Suchanek |
398394 |
if e =~ %r then
|
|
Michal Suchanek |
398394 |
slash = true
|
|
Michal Suchanek |
398394 |
s[1] = e
|
|
Michal Suchanek |
398394 |
else
|
|
Michal Suchanek |
398394 |
s[0] << e if e
|
|
Michal Suchanek |
398394 |
s[3] = true if e =~ /-kmp/
|
|
Michal Suchanek |
398394 |
end
|
|
Michal Suchanek |
398394 |
end
|
|
Michal Suchanek |
398394 |
}
|
|
Michal Suchanek |
398394 |
supported << s
|
|
Michal Suchanek |
398394 |
maxtabs[0] = max(maxtabs[0], s[0].join(" ").tablen)
|
|
Michal Suchanek |
398394 |
maxlen[0] = max(maxlen[0], s[0].join(" ").length)
|
|
Michal Suchanek |
398394 |
if s[2] then
|
|
Michal Suchanek |
398394 |
maxtabs[1] = max(maxtabs[1], s[1].tablen)
|
|
Michal Suchanek |
398394 |
maxlen[1] = max(maxlen[1], s[1].length)
|
|
Michal Suchanek |
398394 |
end
|
|
Michal Suchanek |
398394 |
end
|
|
Michal Suchanek |
398394 |
}
|
|
Michal Suchanek |
398394 |
}
|
|
Michal Suchanek |
398394 |
|
|
Michal Suchanek |
398394 |
supported = supported.sort{|s1,s2|
|
|
Michal Suchanek |
398394 |
cmp = 0
|
|
Michal Suchanek |
398394 |
if s1[3] then
|
|
Michal Suchanek |
398394 |
if s2[3] then
|
|
Michal Suchanek |
398394 |
cmp = s1[0] <=> s2[0]
|
|
Michal Suchanek |
398394 |
else
|
|
Michal Suchanek |
398394 |
cmp = -1
|
|
Michal Suchanek |
398394 |
end
|
|
Michal Suchanek |
398394 |
elsif s2[3]
|
|
Michal Suchanek |
398394 |
cmp = 1
|
|
Michal Suchanek |
398394 |
end
|
|
Michal Suchanek |
398394 |
cmp != 0 ? cmp : s1[1] ** s2[1]
|
|
Michal Suchanek |
398394 |
}
|
|
Michal Suchanek |
398394 |
|
|
Michal Suchanek |
398394 |
File.open("supported.conf",'wb'){|f|
|
|
Michal Suchanek |
398394 |
header.each{|l| f.puts l }
|
|
Michal Suchanek |
398394 |
supported.each{|s|
|
|
Michal Suchanek |
398394 |
f.puts s[0].join(" ").tabfill(maxtabs[0]) + (s[2] ? s[1].tabfill(maxtabs[1]) : s[1]) + s[2].to_s
|
|
Michal Suchanek |
398394 |
}
|
|
Michal Suchanek |
398394 |
}
|
|
Michal Suchanek |
398394 |
#STDERR.puts (0..maxlen[1]).each{|n| STDERR.puts ("a"*n).tabfill(maxtabs[1]) + "|"}
|