/// <summary>Constructor.</summary>
 ///<remarks>
 /// Do not use this constructor to access global settings.
 /// The global settings are contained in FluentJdfLibrary.Settings.
 /// </remarks>
 public FluentJdfLibrary() {
     //TODO we need an interface for the HttpTransmissionSettings and a better way to resolve.
     Infrastructure.Core.Configuration.Settings.ServiceLocator.Register(typeof(HttpTransmissionSettings), typeof(HttpTransmissionSettings));
     jdfAuthoringSettings = new JdfAuthoringSettings();
     encodingSettings = new EncodingSettings();
     transmissionPartSettings = new TransmissionPartSettings();
     transmitterSettings = new TransmitterSettings();
     httpTransmissionSettings = Infrastructure.Core.Configuration.Settings.ServiceLocator.Resolve<HttpTransmissionSettings>();
     templateEngineSettings = new TemplateEngineSettings();
     ResetToDefaults();
 }
Beispiel #2
0
 /// <summary>Constructor.</summary>
 ///<remarks>
 /// Do not use this constructor to access global settings.
 /// The global settings are contained in FluentJdfLibrary.Settings.
 /// </remarks>
 public FluentJdfLibrary()
 {
     //TODO we need an interface for the HttpTransmissionSettings and a better way to resolve.
     Infrastructure.Core.Configuration.Settings.ServiceLocator.Register(typeof(HttpTransmissionSettings), typeof(HttpTransmissionSettings));
     jdfAuthoringSettings     = new JdfAuthoringSettings();
     encodingSettings         = new EncodingSettings();
     transmissionPartSettings = new TransmissionPartSettings();
     transmitterSettings      = new TransmitterSettings();
     httpTransmissionSettings = Infrastructure.Core.Configuration.Settings.ServiceLocator.Resolve <HttpTransmissionSettings>();
     templateEngineSettings   = new TemplateEngineSettings();
     ResetToDefaults();
 }
        FormulaTemplateItem CreateCustomFormulaIfRegistered(TemplateItem parent, string name, int lineNumber, int positionInLine,
                                                     string functionName, ITemplateEngineSettings templateEngineSettings, string [] parameterNames)
        {
            IDictionary<string, Delegate> customFormulas = templateEngineSettings.CustomFormulas;
            int openParenPos = functionName.IndexOf("(");
            string funcNameWithoutParameters = functionName;
            if (openParenPos > -1) {
                funcNameWithoutParameters = functionName.Substring(0, openParenPos);
            }
            if (additionalCustomFormulas != null && additionalCustomFormulas.ContainsKey(funcNameWithoutParameters)) {
                return new CustomFormulaTemplateItem(parent, name, lineNumber, positionInLine, functionName,
                                                     additionalCustomFormulas[funcNameWithoutParameters], parameterNames);
            }
            if (customFormulas.ContainsKey(funcNameWithoutParameters)) {
                return new CustomFormulaTemplateItem(parent, name, lineNumber, positionInLine, functionName,
                                                     customFormulas[funcNameWithoutParameters], parameterNames);
            }

            return null;
        }
        /// <summary>
        /// Construct a descendant of FormulaTemplateItem
        /// </summary>
        /// <param name="parent">Parent that contains this template item.</param>
        /// <param name="name">The name of this template item.</param>
        /// <param name="lineNumber">Line number within the xml template file.</param>
        /// <param name="positionInLine">Column number within the xml template file.</param>
        /// <param name="functionNameWithParameterList">The name of the function.</param>
        /// <param name="templateEngineSettings">The template engine settings.</param>
        /// <returns>A FormulaTemplateItem descendant.</returns>
        public FormulaTemplateItem CreateFormulaItem(TemplateItem parent, string name, int lineNumber, int positionInLine,
                                                     string functionNameWithParameterList, ITemplateEngineSettings templateEngineSettings) {
            ParameterCheck.StringRequiredAndNotWhitespace(name, "name");
            ParameterCheck.StringRequiredAndNotWhitespace(functionNameWithParameterList, "functionName");

            var openingParenPosition = functionNameWithParameterList.IndexOf("(");
            var closingParenPosition = functionNameWithParameterList.IndexOf(")");
            var functionName = functionNameWithParameterList.Substring(0, openingParenPosition) + "()";

            string[] parameterNames = null;
            if (closingParenPosition - openingParenPosition > 1) {
                var startArgumentList = openingParenPosition + 1;
                var lengthArgumentList = closingParenPosition - startArgumentList;
                parameterNames = functionNameWithParameterList.Substring(startArgumentList, lengthArgumentList).Split(',');
               for (int i = 0; i < parameterNames.Length; i++) {
                   parameterNames[i] = parameterNames[i].Trim();
               }
            }

            var customFormulaTemplateItem = CreateCustomFormulaIfRegistered(parent, name, lineNumber, positionInLine, functionName,
                                                                            templateEngineSettings, parameterNames);
            if (customFormulaTemplateItem != null) return customFormulaTemplateItem;

            if (functionName == "generate()") {
                return new GenerateFormulaTemplateItem(parent, name, lineNumber, positionInLine);
            }
            if (functionName == "now()") {
                return new NowFormulaTemplateItem(parent, name, lineNumber, positionInLine);
            }
            if (functionName == "jdfDefault()") {
                return new JdfDefaultFormulaTemplateItem(parent, name, lineNumber, positionInLine);
            }

            string mess = string.Format(Messages.FormulaTemplateItemFactory_CreateFormulaItem_InvalidFunctionNameMessage, functionNameWithParameterList);
            logger.ErrorFormat(Messages.ErrorAtLineAndColumn, mess, lineNumber, positionInLine);
            throw new TemplateExpansionException(lineNumber, positionInLine, mess);
        }
Beispiel #5
0
        FormulaTemplateItem CreateCustomFormulaIfRegistered(TemplateItem parent, string name, int lineNumber, int positionInLine,
                                                            string functionName, ITemplateEngineSettings templateEngineSettings, string [] parameterNames)
        {
            IDictionary <string, Delegate> customFormulas = templateEngineSettings.CustomFormulas;
            int    openParenPos = functionName.IndexOf("(");
            string funcNameWithoutParameters = functionName;

            if (openParenPos > -1)
            {
                funcNameWithoutParameters = functionName.Substring(0, openParenPos);
            }
            if (additionalCustomFormulas != null && additionalCustomFormulas.ContainsKey(funcNameWithoutParameters))
            {
                return(new CustomFormulaTemplateItem(parent, name, lineNumber, positionInLine, functionName,
                                                     additionalCustomFormulas[funcNameWithoutParameters], parameterNames));
            }
            if (customFormulas.ContainsKey(funcNameWithoutParameters))
            {
                return(new CustomFormulaTemplateItem(parent, name, lineNumber, positionInLine, functionName,
                                                     customFormulas[funcNameWithoutParameters], parameterNames));
            }

            return(null);
        }
Beispiel #6
0
        /// <summary>
        /// Construct a descendant of FormulaTemplateItem
        /// </summary>
        /// <param name="parent">Parent that contains this template item.</param>
        /// <param name="name">The name of this template item.</param>
        /// <param name="lineNumber">Line number within the xml template file.</param>
        /// <param name="positionInLine">Column number within the xml template file.</param>
        /// <param name="functionNameWithParameterList">The name of the function.</param>
        /// <param name="templateEngineSettings">The template engine settings.</param>
        /// <returns>A FormulaTemplateItem descendant.</returns>
        public FormulaTemplateItem CreateFormulaItem(TemplateItem parent, string name, int lineNumber, int positionInLine,
                                                     string functionNameWithParameterList, ITemplateEngineSettings templateEngineSettings)
        {
            ParameterCheck.StringRequiredAndNotWhitespace(name, "name");
            ParameterCheck.StringRequiredAndNotWhitespace(functionNameWithParameterList, "functionName");

            var openingParenPosition = functionNameWithParameterList.IndexOf("(");
            var closingParenPosition = functionNameWithParameterList.IndexOf(")");
            var functionName         = functionNameWithParameterList.Substring(0, openingParenPosition) + "()";

            string[] parameterNames = null;
            if (closingParenPosition - openingParenPosition > 1)
            {
                var startArgumentList  = openingParenPosition + 1;
                var lengthArgumentList = closingParenPosition - startArgumentList;
                parameterNames = functionNameWithParameterList.Substring(startArgumentList, lengthArgumentList).Split(',');
                for (int i = 0; i < parameterNames.Length; i++)
                {
                    parameterNames[i] = parameterNames[i].Trim();
                }
            }

            var customFormulaTemplateItem = CreateCustomFormulaIfRegistered(parent, name, lineNumber, positionInLine, functionName,
                                                                            templateEngineSettings, parameterNames);

            if (customFormulaTemplateItem != null)
            {
                return(customFormulaTemplateItem);
            }

            if (functionName == "generate()")
            {
                return(new GenerateFormulaTemplateItem(parent, name, lineNumber, positionInLine));
            }
            if (functionName == "now()")
            {
                return(new NowFormulaTemplateItem(parent, name, lineNumber, positionInLine));
            }
            if (functionName == "jdfDefault()")
            {
                return(new JdfDefaultFormulaTemplateItem(parent, name, lineNumber, positionInLine));
            }

            string mess = string.Format(Messages.FormulaTemplateItemFactory_CreateFormulaItem_InvalidFunctionNameMessage, functionNameWithParameterList);

            logger.ErrorFormat(Messages.ErrorAtLineAndColumn, mess, lineNumber, positionInLine);
            throw new TemplateExpansionException(lineNumber, positionInLine, mess);
        }
        internal TemplateEngineSettingsBuilder(IFluentJdfLibrary fluentJdfLibrary, ITemplateEngineSettings templateEngineSettings) : base(fluentJdfLibrary) {
            ParameterCheck.ParameterRequired(templateEngineSettings, "templateEngineSettings");

            this.templateEngineSettings = templateEngineSettings;
        }
        internal TemplateEngineSettingsBuilder(IFluentJdfLibrary fluentJdfLibrary, ITemplateEngineSettings templateEngineSettings) : base(fluentJdfLibrary)
        {
            ParameterCheck.ParameterRequired(templateEngineSettings, "templateEngineSettings");

            this.templateEngineSettings = templateEngineSettings;
        }