Files
telescope.nvim/scratch/files.py
T

90 lines
1.8 KiB
Python

from pathlib import Path
import subprocess
something = subprocess.run(["rg", "--files"], capture_output=True)
files = something.stdout.decode('utf-8').split('\n')
files.sort()
user_input = "lua finders/async"
REJECTED = -1.0
GOOD = 2.0
def is_subset(item, prompt) -> float:
prompt_chars = set()
for c in prompt:
prompt_chars.add(c)
item_chars = set()
for c in item:
item_chars.add(c)
return prompt_chars.issubset(item_chars)
def proportion_of_contained_letters(prompt, item) -> float:
prompt_chars = set()
for c in prompt:
prompt_chars.add(c)
item_chars = set()
for c in item:
item_chars.add(c)
contained = 0
for prompt_char in prompt_chars:
if prompt_char in item_chars:
contained += 1
return contained / len(prompt_chars)
def jerry_match(prompt: str, item) -> float:
p = Path(item)
split = prompt.split(" ", maxsplit=2)
language = split[0]
filter = split[1]
if p.suffix != "." + language:
return REJECTED
if filter in item:
return GOOD
proprotion = proportion_of_contained_letters(filter, item)
if proprotion < 0.75:
return REJECTED
return proprotion
def score_results(prompt, files):
results = []
for f in files:
score = jerry_match(prompt, f)
if score == REJECTED:
continue
results.append({'score': score, 'item': f})
results.sort(key=lambda x: x["score"], reverse=True)
return results
while True:
i = input("Filter Phrase > ")
if not i:
break
results = score_results(i, files)
for result in results[:10]:
print(result["item"])
# x = [1, 2, 3, 4, 4, 2, 1, 3]
# print(x)
# print(set(x))
# x = {1, 2, 3}
# y = {1}
#
# print("x.issubset(y)", x.issubset(y))
# print("y.issubset(x)", y.issubset(x))