📄 icache.py
字号:
# Cache management for info file processing.# The function get_node() is the standard interface;# its signature is the same as ifile.get_node() but it uses# the cache and supports indirect tag tables.import stringimport ifilefrom ifile import NoSuchNode, NoSuchFileimport itags# Special hack to save the cache when using reload().# This can just be "cache = {}" in a production version.#try: dummy = cache del dummyexcept NameError: cache = {}# Clear the entire cache.#def resetcache(): for key in cache.keys(): del cache[key]# Clear the node info from the cache (the most voluminous data).#def resetnodecache(): for key in cache.keys(): tags, nodes = cache[key] cache[key] = tags, {}# Get a node.#def get_node(curfile, ref): file, node = ifile.parse_ref(curfile, ref) file = string.lower(file) node = string.lower(node) if node == '*': # Don't cache whole file references; # reading the data is faster than displaying it anyway. return ifile.get_whole_file(file) # May raise NoSuchFile if not cache.has_key(file): cache[file] = get_tags(file), {} # May raise NoSuchFile tags, nodes = cache[file] if not nodes.has_key(node): if not tags.has_key(node): raise NoSuchNode, ref file1, offset, line = tags[node] if not file1: file1 = file file1, node1, header, menu, footnotes, text = \ ifile.get_file_node(file1, offset, node) nodes[node] = file, node1, header, menu, footnotes, text return nodes[node]# Get the tag table for a file.# Either construct one or get the one found in the file.# Raise NoSuchFile if the file isn't found.#def get_tags(file): f = ifile.try_open(file) # May raise NoSuchFile tags = itags.get_tags(f) if not tags: ###print 'Scanning file...' f.seek(0) tags = ifile.make_tags(f) return tags
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -