Exemple #1
0
        private static void ProcessMsgRef(IInlineExpression self, TextWriter writer, Scope scope,
                                          MessageReference msgRef)
        {
            var id        = msgRef.Id;
            var attribute = msgRef.Attribute;

            if (scope.Bundle.TryGetAstMessage(id.Name.ToString(), out var msg))
            {
                if (attribute != null)
                {
                    var found = msg.Attributes.Find(e => e.Id.Equals(attribute));
                    if (found != null)
                    {
                        scope.Track(writer, found.Value, self);
                    }
                    else
                    {
                        scope.WriteRefError(writer, self);
                        return;
                    }
                }
                else
                {
                    if (msg.Value != null)
                    {
                        scope.Track(writer, msg.Value, self);
                    }
                    else
                    {
                        scope.AddError(ResolverFluentError.NoValue(id.Name));
                        writer.Write('{');
                        self.WriteError(writer);
                        writer.Write('}');
                    }
                }
            }
            else
            {
                scope.WriteRefError(writer, self);
            }
        }