Ejemplo n.º 1
0
        public override TokenReplacementResult ReplaceTokens(TokenReplacementContext context)
        {
            var result = new TokenReplacementResult
            {
                Value = context.Value
            };

            if (string.IsNullOrEmpty(result.Value))
            {
                return(result);
            }

            foreach (var tokenInfo in TokenProcessInfos)
            {
                if (!string.IsNullOrEmpty(result.Value))
                {
                    result.Value = tokenInfo.RegEx.Replace(result.Value, ResolveToken(context, context.Context, tokenInfo.Name));

                    result.Value = result.Value.Replace(@"//", @"/");
                    result.Value = result.Value.Replace(@"\\", @"\");
                }
            }

            if (OnTokenReplaced != null)
            {
                OnTokenReplaced(this, new TokenReplacementResultEventArgs
                {
                    Result = result
                });
            }

            return(result);
        }
        public override TokenReplacementResult ReplaceTokens(TokenReplacementContext context)
        {
            var result = new TokenReplacementResult
            {
                Value = context.Value
            };

            if (string.IsNullOrEmpty(result.Value))
            {
                return(result);
            }

            foreach (var tokenInfo in TokenProcessInfos)
            {
                if (!string.IsNullOrEmpty(result.Value))
                {
                    result.Value = tokenInfo.RegEx.Replace(result.Value, ResolveToken(context.Context, tokenInfo.Name));
                }
            }

            return(result);
        }
Ejemplo n.º 3
0
        public override TokenReplacementResult ReplaceTokens(TokenReplacementContext context)
        {
            var result = new TokenReplacementResult
            {
                Value = context.Value
            };

            if (string.IsNullOrEmpty(result.Value))
            {
                return(result);
            }

            foreach (var tokenInfo in TokenProcessInfos)
            {
                if (!string.IsNullOrEmpty(result.Value))
                {
                    var replacedValue = tokenInfo.RegEx.Replace(result.Value, ResolveToken(context, context.Context, tokenInfo.Name));

                    if (!string.IsNullOrEmpty(replacedValue))
                    {
                        // everything to '/'
                        replacedValue = replacedValue.Replace(@"\", @"/");

                        // replace doubles after '://'
                        var urlParts = replacedValue.Split(new string[] { "://" }, StringSplitOptions.RemoveEmptyEntries);

                        // return non 'protocol://' values
                        if (urlParts.Count() == 1)
                        {
                            result.Value = urlParts[0].Replace(@"//", @"/");
                        }
                        else
                        {
                            var resultValues = new List <string>();

                            resultValues.Add(urlParts[0]);

                            foreach (var value in urlParts.Skip(1))
                            {
                                resultValues.Add(value.Replace(@"//", @"/"));
                            }

                            result.Value = string.Join("://", resultValues.ToArray());
                        }
                    }
                    else
                    {
                        result.Value = replacedValue;
                    }
                }
            }

            // remove ending slash, SharePoint removes it everywhere
            if (result.Value.Length > 1)
            {
                result.Value = result.Value.TrimEnd('/');
            }

            if (OnTokenReplaced != null)
            {
                OnTokenReplaced(this, new TokenReplacementResultEventArgs
                {
                    Result = result
                });
            }

            return(result);
        }