query: Move 'exists' command to a function
This commit is contained in:
parent
2a93ee95fb
commit
ac5a64b972
4 changed files with 19 additions and 17 deletions
|
|
@ -21,7 +21,7 @@ class MakefileDirFilter(Filter):
|
|||
if filedir != '/':
|
||||
filedir += '/'
|
||||
|
||||
if ctx.query.query('exist', ctx.tag, filedir + m.group(1) + '/Makefile'):
|
||||
if ctx.query.file_exists(ctx.tag, filedir + m.group(1) + '/Makefile'):
|
||||
self.makefiledir.append(m.group(1))
|
||||
return f'__KEEPMAKEFILEDIR__{ encode_number(len(self.makefiledir)) }/{ m.group(2) }'
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ class MakefileFileFilter(Filter):
|
|||
if filedir != '/':
|
||||
filedir += '/'
|
||||
|
||||
if ctx.query.query('exist', ctx.tag, filedir + m.group(1)):
|
||||
if ctx.query.file_exists(ctx.tag, filedir + m.group(1)):
|
||||
self.makefilefile.append(m.group(1))
|
||||
return f'__KEEPMAKEFILEFILE__{ encode_number(len(self.makefilefile)) }{ m.group(2) }'
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ class MakefileSrcTreeFilter(Filter):
|
|||
|
||||
def transform_raw_code(self, ctx, code: str) -> str:
|
||||
def keep_makefilesrctree(m):
|
||||
if ctx.query.query('exist', ctx.tag, '/' + m.group(1)):
|
||||
if ctx.query.file_exists(ctx.tag, '/' + m.group(1)):
|
||||
self.makefilesrctree.append(m.group(1))
|
||||
return f'__KEEPMAKEFILESRCTREE__{ encode_number(len(self.makefilesrctree)) }{ m.group(2) }'
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -94,20 +94,7 @@ class Query:
|
|||
elif cmd == 'exist':
|
||||
version = args[0]
|
||||
path = args[1]
|
||||
|
||||
if version not in self.file_cache:
|
||||
version_cache = set()
|
||||
last_dir = None
|
||||
for _, path in self.db.vers.get(version).iter():
|
||||
dirname, filename = os.path.split(path)
|
||||
if dirname != last_dir:
|
||||
last_dir = dirname
|
||||
version_cache.add(dirname)
|
||||
version_cache.add(path)
|
||||
|
||||
self.file_cache[version] = version_cache
|
||||
|
||||
return path.strip('/') in self.file_cache[version]
|
||||
return self.file_exists(version, path)
|
||||
|
||||
elif cmd == 'dir':
|
||||
version = args[0]
|
||||
|
|
@ -178,6 +165,21 @@ class Query:
|
|||
else:
|
||||
return 'Unknown subcommand: ' + cmd + '\n'
|
||||
|
||||
# Returns True if file exists
|
||||
def file_exists(self, version, path):
|
||||
if version not in self.file_cache:
|
||||
version_cache = set()
|
||||
last_dir = None
|
||||
for _, path in self.db.vers.get(version).iter():
|
||||
dirname, filename = os.path.split(path)
|
||||
if dirname != last_dir:
|
||||
last_dir = dirname
|
||||
version_cache.add(dirname)
|
||||
version_cache.add(path)
|
||||
|
||||
self.file_cache[version] = version_cache
|
||||
|
||||
return path.strip('/') in self.file_cache[version]
|
||||
|
||||
# Returns the contents of the specified file
|
||||
# Tokens are marked for further processing
|
||||
|
|
|
|||
Loading…
Reference in a new issue