Beispiel #1
0
            public override void Visit(RtEnumValue node)
            {
                WriteLines(@"
// Lick the belly!
");
                base.Visit(node);
            }
Beispiel #2
0
        /// <summary>
        ///     Main code generator method. This method should write corresponding TypeScript code for element (1st argument) to
        ///     WriterWrapper (3rd argument) using TypeResolver if necessary
        /// </summary>
        /// <param name="element">Element code to be generated to output</param>
        /// <param name="result">Resulting node</param>
        /// <param name="resolver">Type resolver</param>
        public override RtEnum GenerateNode(Type element, RtEnum result, TypeResolver resolver)
        {
            var names = Enum.GetNames(element);

            result.EnumName = element.GetName();
            result.Order    = element.GetOrder();

            var fields = element.GetFields().Where(c => !c.IsSpecialName).ToDictionary(c => c.Name, c => c);
            var doc    = Context.Documentation.GetDocumentationMember(element);

            if (doc != null)
            {
                RtJsdocNode docNode = new RtJsdocNode();
                if (doc.HasSummary())
                {
                    docNode.Description = doc.Summary.Text;
                }
                result.Documentation = docNode;
            }
            List <RtEnumValue> valuesResult = new List <RtEnumValue>();

            for (var index = 0; index < names.Length; index++)
            {
                var n = names.GetValue(index) as string;
                var v = Enum.Parse(element, n);

                if (fields.ContainsKey(n))
                {
                    var fieldItself = fields[n];

                    var attr = ConfigurationRepository.Instance.ForEnumValue(fieldItself);
                    if (attr != null)
                    {
                        n = attr.Name;
                    }
                    RtEnumValue value = new RtEnumValue
                    {
                        EnumValueName = n,
                        EnumValue     = Convert.ToInt64(v).ToString()
                    };

                    var valueDoc = Context.Documentation.GetDocumentationMember(fieldItself);
                    if (valueDoc != null)
                    {
                        RtJsdocNode docNode = new RtJsdocNode();
                        if (doc.HasSummary())
                        {
                            docNode.Description = valueDoc.Summary.Text;
                        }
                        value.Documentation = docNode;
                    }

                    valuesResult.Add(value);
                }
            }
            result.Values.AddRange(valuesResult);
            AddDecorators(result, ConfigurationRepository.Instance.DecoratorsFor(element));
            return(result);
        }
Beispiel #3
0
 public override void Visit(RtEnumValue node)
 {
     if (node == null)
     {
         return;
     }
     Visit(node.Documentation);
     AppendTabs();
     Write(node.EnumValueName);
     if (!string.IsNullOrEmpty(node.EnumValue))
     {
         Write(" = ");
         Write(node.EnumValue);
     }
 }
        /// <summary>
        ///     Main code generator method. This method should write corresponding TypeScript code for element (1st argument) to
        ///     WriterWrapper (3rd argument) using TypeResolver if necessary
        /// </summary>
        /// <param name="element">Element code to be generated to output</param>
        /// <param name="result">Resulting node</param>
        /// <param name="resolver">Type resolver</param>
        public override RtEnum GenerateNode(Type element, RtEnum result, TypeResolver resolver)
        {
            Context.Location.SetCurrentType(element);

            var names = Enum.GetNames(element);
            var bp    = Context.Project.Blueprint(element);

            result.EnumName = bp.GetName();
            result.Order    = bp.GetOrder();

            var fields = element._GetFields().Where(c => !c.IsSpecialName).ToDictionary(c => c.Name, c => c);
            var doc    = Context.Documentation.GetDocumentationMember(element);

            if (doc != null)
            {
                RtJsdocNode docNode = new RtJsdocNode();
                if (doc.HasSummary())
                {
                    docNode.Description = doc.Summary.Text;
                }
                result.Documentation = docNode;
            }

            bool stringInit = false;
            var  ea         = Context.CurrentBlueprint.Attr <TsEnumAttribute>();

            if (ea != null)
            {
                result.IsConst = ea.IsConst;
                stringInit     = ea.UseString;
            }
            List <RtEnumValue> valuesResult = new List <RtEnumValue>();

            for (var index = 0; index < names.Length; index++)
            {
                var n = names.GetValue(index) as string;
                var v = Enum.Parse(element, n);

                if (fields.ContainsKey(n))
                {
                    var fieldItself = fields[n];

                    var attr = Context.CurrentBlueprint.ForEnumValue(fieldItself);
                    if (attr != null)
                    {
                        n = attr.Name;
                    }
                    if (string.IsNullOrEmpty(n))
                    {
                        n = fieldItself.Name;
                    }
                    RtEnumValue value = new RtEnumValue
                    {
                        EnumValueName = n,
                        EnumValue     = Convert.ToInt64(v).ToString()
                    };

                    if (stringInit)
                    {
                        if (attr != null && !string.IsNullOrEmpty(attr.Initializer))
                        {
                            value.EnumValue = String.Concat("\"", attr.Initializer, "\"");
                        }
                        else
                        {
                            value.EnumValue = String.Concat("\"", n, "\"");
                        }
                    }

                    var valueDoc = Context.Documentation.GetDocumentationMember(fieldItself);
                    if (valueDoc != null)
                    {
                        RtJsdocNode docNode = new RtJsdocNode();
                        if (valueDoc.HasSummary())
                        {
                            docNode.Description = valueDoc.Summary.Text;
                        }
                        value.Documentation = docNode;
                    }

                    valuesResult.Add(value);
                }
            }
            result.Values.AddRange(valuesResult);
            AddDecorators(result, Context.CurrentBlueprint.GetDecorators());

            Context.Location.ResetCurrentType();
            return(result);
        }
Beispiel #5
0
 public abstract void Visit(RtEnumValue node);
 public override void Visit(RtEnumValue node)
 {
 }
Beispiel #7
0
 public abstract T Visit(RtEnumValue node);