aboutsummaryrefslogtreecommitdiffstats
path: root/library/python/resource/__init__.py
blob: dd00de7b43b782191914ab5385337e8408414cfa (plain) (blame)
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
from __res import find as __find, count, key_by_index, resfs_files as __resfs_files 
from __res import resfs_read, resfs_resolve, resfs_src  # noqa 

import six 


def iterkeys(prefix='', strip_prefix=False): 
    decode = lambda s: s 
    if isinstance(prefix, six.text_type): 
        prefix = prefix.encode('utf-8') 
        decode = lambda s: s.decode('utf-8') 
 
    for i in six.moves.range(count()): 
        key = key_by_index(i)
        if key.startswith(prefix): 
            if strip_prefix: 
                key = key[len(prefix):] 
            yield decode(key) 

 
def itervalues(prefix=b''): 
    for key in iterkeys(prefix=prefix): 
        value = find(key) 
        yield value 
 
 
def iteritems(prefix='', strip_prefix=False): 
    for key in iterkeys(prefix=prefix): 
        value = find(key) 
        if strip_prefix: 
            key = key[len(prefix):] 
        yield key, value 


def resfs_file_exists(path): 
    return resfs_src(path, resfs_file=True) is not None 
 
 
def resfs_files(prefix=''): 
    decode = lambda s: s 
    if isinstance(prefix, six.text_type): 
        decode = lambda s: s.decode('utf-8') 
    return [decode(s) for s in __resfs_files(prefix=prefix)] 


def find(path):
    if isinstance(path, six.text_type):
        path = path.encode('utf-8')
    return __find(path)