Hapikit.Templates.UriTemplate.Resolve C# (CSharp) Method

Resolve() public method

public Resolve ( ) : string
return string
            public string Resolve()
            {
                var currentState = States.CopyingLiterals;
                _Result = new Result();
                StringBuilder currentExpression = null;
                foreach (var character in _template.ToCharArray())
                {
                    switch (currentState)
                    {
                        case States.CopyingLiterals:
                            if (character == '{')
                            {
                                currentState = States.ParsingExpression;
                                currentExpression = new StringBuilder();
                            }
                            else if (character == '}')
                            {
                                throw new ArgumentException("Malformed template, unexpected } : " + _Result.ToString());
                            }
                            else
                            {
                                _Result.Append(character);
                            }
                            break;
                        case States.ParsingExpression:
                            if (character == '}')
                            {
                                ProcessExpression(currentExpression);

                                currentState = States.CopyingLiterals;
                            }
                            else
                            {
                                currentExpression.Append(character);
                            }

                            break;
                    }
                }
                if (currentState == States.ParsingExpression)
                {
                    _Result.Append("{");
                    _Result.Append(currentExpression.ToString());

                    throw new ArgumentException("Malformed template, missing } : " + _Result.ToString());
                }

                if (_ErrorDetected)
                {
                    throw new ArgumentException("Malformed template : " + _Result.ToString());
                }
                return _Result.ToString();
            }

Usage Example

Exemplo n.º 1
0
 public void ShouldAllowUriTemplateWithPathSegmentParameter()
 {
     var template = new UriTemplate("http://example.org/foo/{bar}/baz");
     template.SetParameter("bar", "yo");
     var uriString = template.Resolve();
     Assert.Equal("http://example.org/foo/yo/baz", uriString);
 }
All Usage Examples Of Hapikit.Templates.UriTemplate::Resolve