def _placeholders(self, value, placeholders):
        """ Applies a set of placeholders to the given settings recursively
            See http://sublimetext.info/docs/en/reference/build_systems.html#variables
        """
        if isinstance(value, str) and "$" in value:
            value = Template(value).safe_substitute(placeholders)
        elif isinstance(value, dict):
            for key, val in value.items():
                value[key] = self._placeholders(val, placeholders)
        elif isinstance(value, list):
            value = [self._placeholders(x, placeholders) for x in value]

        return value