summaryrefslogtreecommitdiff
path: root/webapps/qooxdoo-0.6.5-sdk/frontend/framework/tool/modules/graph.py
blob: b5bac4c94e188c4d68386145b897b64631a42f70 (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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import os
import math
import filetool
################################################################################
#
#  qooxdoo - the new era of web development
#
#  http://qooxdoo.org
#
#  Copyright:
#    2006-2007 1&1 Internet AG, Germany, http://www.1and1.org
#
#  License:
#    LGPL: http://www.gnu.org/licenses/lgpl.html
#    EPL: http://www.eclipse.org/org/documents/epl-v10.php
#    See the LICENSE file in the project's top-level directory for details.
#
#  Authors:
#    * Fabian Jakobs (fjakobs)
#
################################################################################

# Write dependencies to a Graphviz compatible file (http://www.graphviz.org/)

def dotLine(fileDb, fileId, depEntry, largetFileSize):
  file = fileId.split(".")
  dep = depEntry.split(".")
  weight = 1

  for i in range(len(file)):
    if file[i] == dep[i]:
      weight += 1
    else:
      break

  size = os.path.getsize(fileDb[fileId]["path"])

  content = '  "%s" [color="%s %s 1.000"];\n' % (fileId, math.log(size)/math.log(largetFileSize), math.log(size)/math.log(largetFileSize))
  content += '  "%s" -> "%s" [weight=%s];\n' % (fileId, depEntry, weight)

  return content


def store(fileDb, sortedIncludeList, options):
  content = '''digraph "qooxdoo" {
node [style=filled];
'''

  largest = 0
  for fileId in sortedIncludeList:
      size = os.path.getsize(fileDb[fileId]["path"])
      if size > largest:
          largest = size

  for fileId in sortedIncludeList:
    if len(fileDb[fileId]["loadtimeDeps"]) > 0:
      for depEntry in fileDb[fileId]["loadtimeDeps"]:
        content += dotLine(fileDb, fileId, depEntry, largest)

    if len(fileDb[fileId]["afterDeps"]) > 0:
      for depEntry in fileDb[fileId]["afterDeps"]:
        content += dotLine(fileDb, fileId, depEntry, largest)

    if len(fileDb[fileId]["runtimeDeps"]) > 0:
      for depEntry in fileDb[fileId]["runtimeDeps"]:
        content += dotLine(fileDb, fileId, depEntry, largest)

    if len(fileDb[fileId]["loadDeps"]) > 0:
      for depEntry in fileDb[fileId]["loadDeps"]:
        content += dotLine(fileDb, fileId, depEntry, largest)

  content += '}'
  filetool.save(options.depDotFile, content)