queezythegreat / arduino-cmake

Arduino CMake Build system
645 stars 216 forks source link

Allow infinite depth in arduino-style config keys #140

Open dave-newson opened 9 years ago

dave-newson commented 9 years ago

This PR fixes the Arduino-style config imports (boards.txt, etc) only allow a maximum depth of 3 keys, and now allows for an infinite depth of keys.

For instance, previously you could only import a maximum depth such as: KeyOne.KeyTwo.KeyThree=MyValue Deeper key/value pairs would previous be discarded and appear incomplete when requested as a setting. For example, this was not possible, and now is: KeyOne.KeyTwo.KeyThree.KeyFour.KeyFive.KeySix=MyValue

Also added a bugfix which allows the load_arduino_style_settings function to correctly import settings values that contain the = character. Previously anything between the two = characters would be omitted.

The index of keys for each collection, previously SETTINGS and SUBSETTINGS, has been standardised to just SETTINGS.

print_settings() has also been modified for compatibility, using recursion to walk any specified settings tree. Technically, it can also report on any variable that is requested, not just collections (bug? improvement? whoops?)