'evaluate and return the value of option `key` on the fly, or
returns those options whose name or description contains `key`,
case disregarded.
Details
Keys that contain `filename` are not evaluated.
For ``loc==None``, `self` is used as environment
but this does not define `N`.
:See: `eval()`, `evalall()`'

def __call__(self, key, default=None, loc=None):

    try:
        val = self[key]
    except:
        return self.match(key)
    if (loc is None):
        loc = self
    try:
        if (type(val) is str):
            val = val.split('#')[0].strip()
            if ((type(val) == type('')) and (key.find('filename') < 0) and (key.find('mindx') < 0)):
                val = eval(val, globals(), loc)
        elif ((val is None) and (default is not None)):
            val = eval(str(default), globals(), loc)
    except:
        pass
    return val
