public QueryListMarkerBlock(IQuerySource source, string id, string name, string op, QueryMarker value)
     : base(source, id, op, value.value as string)
 {
     m_Marker  = value;
     this.name = name ?? id;
     ExtractArguments(m_Marker);
 }
        void ExtractArguments(QueryMarker marker)
        {
            var args = m_Marker.EvaluateArgsNoSpread().ToList();

            if (args.Count < 2)
            {
                m_Choices = new string[] {};
                return;
            }

            m_Choices = ExtractChoices(args[1]).ToArray();

            foreach (var arg in args.Skip(2))
            {
                if (!(arg is IEnumerable <object> enumerable))
                {
                    continue;
                }

                var array = enumerable.ToArray();
                if (array.Length == 0)
                {
                    continue;
                }

                var argStr = (string)array[0];
                if (argStr.StartsWith("#"))
                {
                    m_BackgroundColor = ExtractBackgroundColor(argStr);
                }
                else
                {
                    icon = ExtractIcon(argStr);
                    if (icon)
                    {
                        m_IconName = argStr;
                    }
                }
            }
        }
Example #3
0
 public QueryListMarkerBlock(IQuerySource source, string id, QueryMarker value, QueryListBlockAttribute attr)
     : base(source, id, value.value as string, attr)
 {
     m_Marker = value;
 }