2018-11-20 14:53:56 +00:00
|
|
|
#!/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
|
|
|
|
|
2019-07-21 15:01:43 +01:00
|
|
|
CLASSES=$(egrep -h "^ *((enum|class) |} [a-zA-Z0-9_]+_t;$)" src/*.h |
|
|
|
|
sed 's/^ *//;s/enum class//;s/\;$//' | cut -d' ' -f2 | sort -u)
|
2018-11-20 14:53:56 +00:00
|
|
|
for i in ${CLASSES}; do
|
|
|
|
echo -e "${i}\tKEYWORD1"
|
|
|
|
done | sort -du
|
|
|
|
|
|
|
|
cat << EndOfTextEndOfTextEndOfText
|
|
|
|
|
|
|
|
#######################################
|
|
|
|
# Methods and Functions (KEYWORD2)
|
|
|
|
#######################################
|
|
|
|
|
|
|
|
EndOfTextEndOfTextEndOfText
|
2019-07-21 15:01:43 +01:00
|
|
|
CTYPES="u?int(8|16|32|64)?(_t)?|void|bool|char|float|long|double|String|static"
|
|
|
|
OURTYPES="match_result_t|state_t|decode_type_t"
|
|
|
|
METHODS=$(egrep -h "^[ ]{0,2}(${CTYPES}|${OURTYPES})\*? [^ ]*\(" src/*.cpp |
|
|
|
|
sed 's/^ //' | cut -d' ' -f2 | sed 's/^\([^:]*::\| *\* *\)//' |
|
|
|
|
cut -d'(' -f1 | sort -u | grep -v RAM_ATTR)
|
2018-11-20 14:53:56 +00:00
|
|
|
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
|