Tasmota/lib/IRremoteESP8266-2.5.2.03/tools/mkkeywords

83 lines
2.6 KiB
Bash

#!/bin/bash
# Generate a keywords.txt for the library that is suitable for the Arduino IDE.
# Expects to run from the top directory of the library.
# Set the locale for sorting
export LC_ALL=C
cat << EndOfTextEndOfTextEndOfText
#########################################
# Syntax Coloring Map For IRremoteESP8266
#########################################
################################################
# WARNING: Do NOT edit this file directly.
# It is generated by 'tools/mkkeywords'
# e.g. tools/mkkeywords > keywords.txt
################################################
#######################################################
# The Arduino IDE requires the use of a tab separator
# between the name and identifier. Without this tab the
# keyword is not highlighted.
#
# Reference: https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5:-Library-specification#keywords
#######################################################
#######################################
# Datatypes & Classes (KEYWORD1)
#######################################
EndOfTextEndOfTextEndOfText
CLASSES=$(grep "^class " src/*.h | cut -d' ' -f2 | sort -u)
# Manually add typedefs as they are hard to parse out.
CLASSES="${CLASSES} ir_params_t match_result_t"
for i in ${CLASSES}; do
echo -e "${i}\tKEYWORD1"
done | sort -du
cat << EndOfTextEndOfTextEndOfText
#######################################
# Methods and Functions (KEYWORD2)
#######################################
EndOfTextEndOfTextEndOfText
METHODS=$(egrep "^(u?int|void|bool|String|static|match_result_t).*\(" src/*.cpp|
cut -d' ' -f2- | sed 's/^.*:://' | cut -d'(' -f1 | sort -u |
grep -v ICACHE_RAM_ATTR)
for i in ${METHODS}; do
echo -e "${i}\tKEYWORD2"
done | sort -u
cat << EndOfTextEndOfTextEndOfText
#######################################
# Constants (LITERAL1)
#######################################
EndOfTextEndOfTextEndOfText
LITERALS=$(grep "^#define [A-Z]" src/*.cpp src/*.h |
while read ignore define ignore; do
echo ${define};
done | sort -u |
grep -v [\(\)] | grep -v ^_ | grep -v _\$ | grep -v VIRTUAL)
CONSTS=$(grep "^const " src/*.cpp src/*.h |
sed 's/\[.*\] =.*//;s/ =.*//;s/^.* k/k/')
ENUMS=$(cat src/*.h | while read a b; do
if [[ ${a} == "};" ]]; then
ENUM=0;
fi;
if [[ ${ENUM} -eq 1 ]]; then
echo $a | sed 's/,//g';
fi;
if [[ ${a} == "enum" ]]; then
ENUM=1;
fi;
done)
for i in ${LITERALS} ${CONSTS} ${ENUMS}; do
echo -e "${i}\tLITERAL1"
done | sort -u