summaryrefslogtreecommitdiffstats
path: root/feed/sse_feed.py
blob: 7925c253f6933429a868b94a5a05bcbde7079c73 (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
#!/usr/bin/python

import sys, os, stat, string
from popen2 import Popen3

import sse_db
from sse_config import *
from sse_defs import *

supported_languages = [ {
    "extensions" : [".c", ".h", ".cc", ".hh", ".cpp", ".hpp"],
    "lexer" : SSE_DIR+"/sse_lex_c",
    "language_id" : SSE_LANGUAGE_C
    }]

def find_language(fn):
    
    for l in supported_languages:
        for e in l["extensions"]:
            if fn.lower().endswith(e):
                return l

    return None

def supported_source(fn):
    return not find_language(fn) is None

def process_source(archive, root, path, package_id, meta):
    print "(%s) Processing %s" % (archive, path)

    language = find_language(path)
    assert not language is None

    file_id = sse_db.new_file(package_id, path, language["language_id"])

    p = Popen3("%s %s" % (language["lexer"], os.path.join(root, path)))

    for identifier in p.fromchild:
        
    	text = identifier.strip()

        if text.startswith("S:"):
            sse_db.new_word(file_id, text[2:], True)
        else:
            sse_db.new_word(file_id, text, False)

    if p.wait() != 0:
        print "WARNING: Subprocess failed!"

    del p