private void executeMacroReal(Appendable writer,String macroName,Map<String,Object> macroParameters) throws IOException, TemplateException {
  StringBuilder sb=new StringBuilder("<@");
  sb.append(macroName);
  if (macroParameters != null) {
    for (    Map.Entry<String,Object> parameter : macroParameters.entrySet()) {
      sb.append(' ');
      sb.append(parameter.getKey());
      sb.append("=");
      Object value=parameter.getValue();
      if (value instanceof String) {
        sb.append(ftlFmt.makeStringLiteral((String)value));
      }
 else {
        sb.append(value);
      }
    }
  }
  sb.append(" />");
  if (Debug.verboseOn()) {
    Debug.logVerbose("Executing macro: " + sb,module);
  }
  executeMacro(writer,sb.toString());
}

private void executeMacroReal ( Appendable writer , String macroName , Map < String , Object > macroParameters ) throws IOException , TemplateException { StringBuilder sb = new StringBuilder ( "<@" ) ; sb . append ( macroName ) ; if ( macroParameters != null ) { for ( Map . Entry < String , Object > parameter : macroParameters . entrySet ( ) ) { sb . append ( ' ' ) ; sb . append ( parameter . getKey ( ) ) ; sb . append ( "=" ) ; Object value = parameter . getValue ( ) ; if ( value instanceof String ) { sb . append ( ftlFmt . makeStringLiteral ( ( String ) value ) ) ; } else { sb . append ( value ) ; } } } sb . append ( " />" ) ; if ( Debug . verboseOn ( ) ) { Debug . logVerbose ( "Executing macro: " + sb , module ) ; } executeMacro ( writer , sb . toString ( ) ) ; }
scipio : this is the original executemacro . < p > note : to prevent auto - enclosing string in quotes , pass a stringbuilder or other non - string wrapper instead .
