from .base import Base
import re, os
import glob

PATH, _ = os.path.split(__file__)

apis = []
for docpath in glob.glob(PATH + '/docs/*'):
    path, name = os.path.split(docpath)
    f = open(docpath, 'rb')
    apis.append({'word': name, 'info': f.read().decode('utf-8')})
    f.close()

os.aaa = apis

_ = {
    'os':            'Current OS of compiling-system',
    'host':          'Current OS of localhost',
    'tmpdir':        'Temporary directory',
    'curdir':        'Current directory',
    'buildir':       'Build directory',
    'scriptdir':     'Script dictionary',
    'globaldir':     'Global-config directory',
    'configdir':     'Local-config directory',
    'programdir':    'Program directory',
    'projectdir':    'Project directory',
    'shell':         'Extern shell',
    'env':           'Get environment variable',
    'reg':           'Get windows register value'
}
builtin_vars = [{'word': k, 'menu': v} for k, v in _.items()]


class Source(Base):
    def __init__(self, vim):
        Base.__init__(self, vim)

        self.vim = vim
        self.name = 'xmake'
        self.mark = '[xmake]'
        self.filetypes = ['lua']
        self.input_pattern = r'\w+$|\$\($'

    def get_complete_position(self, context):
        input = context['input']
        word = re.search(r'\w+$', input)
        if word:
            return word.start()
        else:
            return len(input)

    def gather_candidates(self, context):
        global apis, builtin_vars

        if re.search('\$\(\w*$', context['input'][:context['complete_position']]):
            return builtin_vars
        else:
            return apis