draft/ol2dot.rb
author fabien
Wed, 30 Aug 2006 21:32:44 -0400
branchecjdr
changeset 92 bdef1afd1170
permissions -rw-r--r--
[svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400 Mise à jour préventive.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
92
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
     1
#!/usr/bin/ruby
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
     2
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
     3
Header_RE = /^(\*+)\s+(.*)/
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
     4
parents = ["#{ARGV[0]}"]
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
     5
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
     6
print "digraph \"#{parents[0]}\" {\n"
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
     7
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
     8
while gets
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
     9
  if $_ =~ Header_RE
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
    10
    title = $2
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
    11
    level = $1.length()
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
    12
    next if title =~ /^Emacs Variables/
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
    13
    if level > parents.length()
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
    14
      [level..parents.length()].each do |i| parents.push("") end
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
    15
    end
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
    16
    if level < parents.length()
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
    17
      parents = parents[0..level-1]
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
    18
    end
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
    19
    parents.push(title)
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
    20
    print "// #{parents.join(",")}\n"
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
    21
    if parents.length() > 1
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
    22
      print "\"#{parents[-2]}\" -> \"#{parents[-1]}\";\n"
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
    23
    end
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
    24
  end
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
    25
end
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
    26
bdef1afd1170 [svn] r2271@freebird: fabien | 2006-08-30 21:33:34 -0400
fabien
parents:
diff changeset
    27
print "}\n"