Module: dfmc-macro-expander Synopsis: Generate code for template substitution operations. Author: Keith Playford Copyright: Original Code is Copyright (c) 1995-2004 Functional Objects, Inc. All rights reserved. License: Functional Objects Library Public License Version 1.0 Dual-license: GNU Lesser General Public License Warranty: Distributed WITHOUT WARRANTY OF ANY KIND define method generate-substitution (subst :: ) => (code) let name = element-variable-name(subst); #{ import-to-template(?name) } end method; define method generate-substitution (subst :: ) => (code) let name = element-variable-name(subst); #{ substitute-as-string(?name) } end method; define method generate-substitution (subst :: ) => (code) let name = element-variable-name(subst); #{ substitute-as-symbol(?name) } end method; define method generate-substitution (subst :: ) => (code) let inner = element-name-substitution(subst); let name = element-variable-name(inner); let prefix = element-prefix(subst); let suffix = element-suffix(subst); let splicer = splicing-function-name(inner); #{ ?splicer(?prefix, ?name, ?suffix) } end method; define method splicing-function-name (subst :: ) #{ substitute-spliced-as-string } end method; define method splicing-function-name (subst :: ) #{ substitute-spliced-as-symbol } end method; define method splicing-function-name (subst :: ) #{ substitute-spliced-as-name } end method; define method generate-substitution (subst :: ) => (code) let name = element-variable-name(subst); let separator = element-separator(subst); if (separator) let separator = generate-constructor(separator); #{ substitute-sequence-separated(?name, ?separator) } else #{ substitute-sequence(?name) } end; end method; // eof