Exemplo n.º 1
0
        protected virtual BuildTagProvider GetProvider(string category, string tagName)
        {
            if (String.IsNullOrEmpty(category) || String.IsNullOrEmpty(tagName))
            {
                return(null);
            }

            BuildTagProvider         provider  = null;
            IList <BuildTagProvider> providers = _userProviders[category];

            if (providers != null && providers.Count != 0)
            {
                for (int i = 0; i < providers.Count; i++)
                {
                    BuildTagProvider tagProvider = providers[i];
                    if (tagProvider.IsSupported(tagName))
                    {
                        provider = tagProvider;
                        break;
                    }
                }
            }

            return(provider);
        }
Exemplo n.º 2
0
            protected override BuildTagProvider GetProvider(string category, string tagName)
            {
                // Give priority to the default registered providers...
                BuildTagProvider provider = base.GetProvider(category, tagName);

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

                IList <BuildTagProvider> providers = _providers[category];

                if (providers != null && providers.Count != 0)
                {
                    for (int i = 0; i < providers.Count; i++)
                    {
                        BuildTagProvider tagProvider = providers[i];
                        if (tagProvider.IsSupported(tagName))
                        {
                            provider = tagProvider;
                            break;
                        }
                    }
                }

                return(provider);
            }
Exemplo n.º 3
0
        public virtual string Resolve(string sourceText, BuildTagProvider provider)
        {
            // Is the resolving mode started by the user or by this method?
            bool startedResolving = false;

            if (!_isResolving)
            {
                this.BeginResolve();
                startedResolving = true;
            }

            // Process the tag...
            string resolvedText = this.OnResolve(sourceText, provider);

            if (String.IsNullOrEmpty(resolvedText))
            {
                resolvedText = sourceText;
            }

            if (startedResolving)
            {
                this.EndResolve();
            }

            return(resolvedText);
        }
Exemplo n.º 4
0
        public virtual bool RegisterProvider(BuildTagProvider provider)
        {
            BuildExceptions.NotNull(provider, "provider");

            if (String.IsNullOrEmpty(provider.Id) || String.IsNullOrEmpty(provider.Category))
            {
                return(false);
            }

            _userProviders.Add(provider.Category, provider);

            return(true);
        }
Exemplo n.º 5
0
            private string GetReplacement(string tagName, string category, string numberText,
                                          string formatText, string functionName, BuildTagProvider provider)
            {
                string replacement = null;

                if (provider != null && String.Equals(provider.Category, category) &&
                    provider.IsSupported(tagName))
                {
                    replacement = provider.GetText(tagName, numberText, formatText);
                }
                else
                {
                    BuildTagProvider tagProvider = this.GetProvider(category, tagName);
                    if (tagProvider != null)
                    {
                        replacement = tagProvider.GetText(tagName, numberText, formatText);
                    }
                    else
                    {
                        // We have the default processing...
                        replacement = this.GetReplacement(tagName, numberText, formatText);
                    }
                }

                if (!String.IsNullOrEmpty(replacement) && !String.IsNullOrEmpty(functionName))
                {
                    Func <string, string> function = this.GetFunction(functionName);

                    if (function != null)
                    {
                        replacement = function(replacement);
                    }
                }

                return(replacement);
            }
Exemplo n.º 6
0
        public static string ResolveText(string sourceText, BuildTagProvider provider)
        {
            BuildTagResolver resolver = BuildTagResolver.Resolver;

            return(resolver.Resolve(sourceText, provider));
        }
Exemplo n.º 7
0
            protected override string OnResolve(string sourceText, BuildTagProvider provider)
            {
                StringBuilder inputText = new StringBuilder(sourceText);

                Match match = _regEx.Match(inputText.ToString());

                while (match != null && match.Success)
                {
                    int    index  = match.Index;
                    int    length = match.Length;
                    string value  = match.Value;

                    string name = match.Groups["TagName"].Value;

                    string[] parts        = name.Split('|');
                    string   namePart     = String.Empty;
                    string   formatPart   = String.Empty;
                    string   functionPart = String.Empty;

                    switch (parts.Length)
                    {
                    case 1:
                        namePart = parts[0];
                        break;

                    case 2:
                        namePart = parts[0];
                        string tempText = parts[1].Trim();
                        if (tempText.StartsWith("(", StringComparison.Ordinal) &&
                            tempText.EndsWith(")", StringComparison.Ordinal))
                        {
                            functionPart = parts[1].Substring(1, parts[1].Length - 2);
                        }
                        else
                        {
                            formatPart = parts[1];
                        }
                        break;

                    case 3:
                        namePart     = parts[0];
                        formatPart   = parts[1];
                        functionPart = parts[2].Substring(1, parts[2].Length - 2);
                        break;

                    default:
                        throw new ArgumentException();
                    }

                    string categoryPart = String.Empty;
                    string numberPart   = String.Empty;

                    int foundAt = namePart.IndexOf(':');
                    if (foundAt > 0)
                    {
                        categoryPart = namePart.Substring(0, foundAt).Trim();
                        namePart     = namePart.Substring(foundAt + 1).Trim();
                    }
                    foundAt = namePart.IndexOf('[');
                    if (foundAt > 0 && namePart.EndsWith("]", StringComparison.Ordinal))
                    {
                        numberPart = namePart.Substring(foundAt + 1, namePart.Length - foundAt - 2).Trim();
                        namePart   = namePart.Substring(0, foundAt).Trim();
                    }

                    string replacement = this.GetReplacement(namePart, categoryPart,
                                                             numberPart, formatPart, functionPart, provider);
                    if (!String.IsNullOrEmpty(replacement))
                    {
                        // If a replacement is found, apply it...
                        inputText.Remove(index, length);      // delete the current
                        inputText.Insert(index, replacement); // insert the new
                    }

                    match = _regEx.Match(inputText.ToString(), index);
                }

                return(inputText.ToString());
            }
Exemplo n.º 8
0
 protected abstract string OnResolve(string sourceText, BuildTagProvider provider);
Exemplo n.º 9
0
        public virtual bool UnregisterProvider(BuildTagProvider provider)
        {
            BuildExceptions.NotNull(provider, "provider");

            return(this.UnregisterProvider(provider.Category, provider.Id));
        }