docs: def _string_to_substitute(self, mo, methods_dict):
          """
          Return the string to be substituted for the match.
          """
          matched_text, f_name = mo.groups()
          # matched_text is the complete match string. e.g. plural_noun(cat)
          # f_name is the function name. e.g. plural_noun
  
          # Return matched_text if function name is not in methods_dict
          if f_name not in methods_dict:
              return matched_text
  
          # Parse the matched text
          a_tree = ast.parse(matched_text)
  
          # get the args and kwargs from ast objects
          args_list = [self._get_value_from_ast(a) for a in a_tree.body[0].value.args]
          kwargs_list = {
              kw.arg: self._get_value_from_ast(kw.value)
              for kw in a_tree.body[0].value.keywords
          }
  
          # Call the corresponding function
          return methods_dict[f_name](*args_list, **kwargs_list)