.. _interpolation: Interpolation ============= In a custom extension to the YAML specification you can define and reuse variables like this (observe how we interpolate ``url_root``, ``major``, ``minor``, ``patch``, and ``components`` in this example):: url_root: https://github.com/coderefinery/autocmake/raw/master/ major: 1 minor: 48 patch: 0 components: "" fetch: - "%(url_root)modules/boost/boost_unpack.cmake" - "%(url_root)modules/boost/boost_userconfig.cmake" - "%(url_root)modules/boost/boost_configure.cmake" - "%(url_root)modules/boost/boost_build.cmake" - "%(url_root)modules/boost/boost_install.cmake" - "%(url_root)modules/boost/boost_headers.cmake" - "%(url_root)modules/boost/boost_cleanup.cmake" - "http://sourceforge.net/projects/boost/files/boost/%(major).%(minor).%(patch)/boost_%(major)_%(minor)_%(patch).zip" docopt: - "--boost-headers= Include directories for Boost [default: '']." - "--boost-libraries= Library directories for Boost [default: '']." - "--build-boost= Deactivate Boost detection and build on-the-fly [default: OFF]." define: - "'-DBOOST_INCLUDEDIR=\"{0}\"'.format(arguments['--boost-headers'])" - "'-DBOOST_LIBRARYDIR=\"{0}\"'.format(arguments['--boost-libraries'])" - "'-DFORCE_CUSTOM_BOOST={0}'.format(arguments['--build-boost'])" - "'-DBOOST_MINIMUM_REQUIRED=\"%(major).%(minor).%(patch)\"'" - "'-DBOOST_COMPONENTS_REQUIRED=\"%(components)\"'"