| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #!/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
|