From 498764bcafd7f4e95567e155a3c2313790401642 Mon Sep 17 00:00:00 2001 From: Colomban Wendling Date: Sat, 14 Nov 2015 23:46:12 +0100 Subject: [PATCH] Refactor the Python identifiers update script for better flexibility --- scripts/update-python-identifiers.sh | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/scripts/update-python-identifiers.sh b/scripts/update-python-identifiers.sh index ade59fab6..37d84347e 100644 --- a/scripts/update-python-identifiers.sh +++ b/scripts/update-python-identifiers.sh @@ -12,15 +12,23 @@ file=data/filetypes.python [ -f "$file" ] -py2_builtins=$(python2 -c 'print("\n".join(dir(__builtins__)))') -py3_builtins=$(python3 -c 'print("\n".join(dir(__builtins__)))') +py_2_and_3() { + python2 "$@" && python3 "$@" +} -# merge Python 2 and 3 keywords but exclude the ones that are already listed primary= -identifiers=$( (echo "$py2_builtins" && echo "$py3_builtins") | python -c '\ +# sort_filter [exclude...] +sort_filter() { + python -c '\ from sys import stdin; \ -builtins=set(stdin.read().strip().split("\n")); \ -exclude=["False", "None", "True", "exec"]; \ -print(" ".join(sorted([i for i in builtins if i not in exclude]))) -') +items=set(stdin.read().strip().split("\n")); \ +exclude=['"$(for a in "$@"; do printf "'%s', " "$a"; done)"']; \ +print(" ".join(sorted([i for i in items if i not in exclude]))) +' +} + +builtins=$(py_2_and_3 -c 'print("\n".join(dir(__builtins__)))') + +# builtins, but excluding keywords that are already listed in primary= +identifiers=$(echo "$builtins" | sort_filter False None True exec) sed -e "s/^identifiers=.*$/identifiers=$identifiers/" -i "$file" -- 2.11.4.GIT