File: gen_gps_help.py

package info (click to toggle)
libgnatcoll-python 21.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 2,088 kB
  • sloc: ada: 14,431; python: 1,493; ansic: 1,378; makefile: 173; sh: 94
file content (68 lines) | stat: -rw-r--r-- 1,701 bytes parent folder | download | duplicates (4)
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
#!/usr/bin/python2

import os
import os.path
import re

pkg_re = re.compile("^(private)?\s*package\s*(\S+)")


def recursive_ls(dir):
    """Return the list of ads files in dir and its subdirs"""
    result = set()
    for f in os.listdir(dir):
        if f.endswith(".ads") \
           and f.startswith("gnatcoll-"):

            private = False
            pkg = ""
            for l in file(os.path.join(dir, f)).readlines():
                m = pkg_re.search(l)
                if m:
                    private = m.group(1)
                    pkg = m.group(2)
                    break

            if not private:
                result.add((pkg, os.path.splitext(f)[0]))

        elif os.path.isdir(os.path.join(dir, f)):
            result = result.union(recursive_ls(os.path.join(dir, f)))

    return result

list = recursive_ls("..")
out = file("help_gnatcoll-bindings.py", "wb")
out.write("""XML = r'''<?xml version="1.0"?>
<GPS>
""")

for pkg, f in sorted(list):
    if '__' in f:
        # An internal package with a specific naming scheme
        continue

    menu = pkg.replace(".", "/").replace("_", "__")

    # Do we have a submenu ?
    in_front = False
    for pkg2, b in list:
        if b.startswith(f + "-"):
            item = menu[menu.rfind("/") + 1:]
            menu = menu + "/&lt;" + item + "&gt;"
            break

    out.write("""  <documentation_file>
     <shell>Editor.edit "%(file)s.ads"</shell>
     <descr>%(package)s</descr>
     <menu>/Help/%(menu)s</menu>
     <category>GNAT Components Collection</category>
  </documentation_file>

""" % {"file": f, "menu": menu, "package": pkg})

out.write("""</GPS>'''
import GPS
GPS.parse_xml(XML)
""")
out.close()