Inheritance: MonoBehaviour
    protected override void RegisterComponentClasses()
    {
        ClassBuilder.Register(() =>
        {
            var isCheckedClass = Value ? "checked" : "unchecked";
            var isEnabledClass = IsEnabled ? "enabled" : "disabled";
            return($"{RootElementClass}-{isEnabledClass}-{isCheckedClass}-{VisualClassRegistrar()}");
        });

        ClassBuilder.Register(() => IsInlineLabel ? $"{RootElementClass}-inline-{VisualClassRegistrar()}" : string.Empty);

        ClassBuilder.Register(() => OnText.HasNoValue() || OffText.HasNoValue()
                                        ? $"{RootElementClass}-noonoff-{VisualClassRegistrar()}" : string.Empty);

        ClassBuilder.Register(() => ValueInvalid is true ? $"{RootElementClass}-invalid-{VisualClassRegistrar()}" : string.Empty);
    }
    private int[] Parse(string text, OnText OnTextCallback, OnTag OnTagCallback)
    {
        List <int> result   = new List <int>();
        int        startPos = 0;
        int        tagPos   = text.IndexOf("[");

        while (tagPos >= 0)
        {
            // find end tag
            int endPos = text.IndexOf("]", tagPos + 1);
            if (endPos < 0)
            {
                break;
            }

            // add text before
            if (tagPos != startPos)
            {
                if (OnTextCallback != null)
                {
                    string t = text.Substring(startPos, tagPos - startPos);
                    OnTextCallback(t, startPos);
                }
            }

            string tag = text.Substring(tagPos + 1, endPos - tagPos - 1);

            if (OnTagCallback != null)
            {
                result.Add(tagPos);
                OnTagCallback(tag, tagPos);
            }

            startPos = endPos + 1;
            tagPos   = text.IndexOf("[", startPos);
        }

        if (OnTextCallback != null)
        {
            string t = text.Substring(startPos, text.Length - startPos);
            OnTextCallback(t, startPos);
        }

        return(result.ToArray());
    }
    private int[] Parse(string text, OnText OnTextCallback, OnTag OnTagCallback)
    {
        List<int> result = new List<int>();
        int startPos = 0;
        int tagPos = text.IndexOf("[");
        while (tagPos >= 0)
        {
            // find end tag
            int endPos = text.IndexOf("]", tagPos + 1);
            if (endPos < 0) break;

            // add text before
            if (tagPos != startPos)
            {
                if (OnTextCallback != null)
                {
                    string t = text.Substring(startPos, tagPos - startPos);
                    OnTextCallback(t, startPos);
                }
            }

            string tag = text.Substring(tagPos + 1, endPos - tagPos - 1);

            if (OnTagCallback != null)
            {
                result.Add(tagPos);
                OnTagCallback(tag, tagPos);
            }

            startPos = endPos + 1;
            tagPos = text.IndexOf("[", startPos);
        }

        if (OnTextCallback != null)
        {
            string t = text.Substring(startPos, text.Length - startPos);
            OnTextCallback(t, startPos);
        }

        return result.ToArray();
    }
Esempio n. 4
0
 void Text(string content)
 {
     OnText?.Invoke(content);
 }
Esempio n. 5
0
        public void Parse()
        {
            try
            {
                reader.MoveToContent();
                while (reader.Read())
                {
                    var arg = new ParseEventArg
                    {
                        NodeType     = reader.NodeType,
                        Depth        = reader.Depth,
                        Name         = reader.Name,
                        EmptyElement = reader.IsEmptyElement
                    };
                    if (reader.HasValue)
                    {
                        arg.Value = reader.Value;
                    }
                    else
                    {
                        arg.Value = null;
                    }
                    if (reader.HasAttributes)
                    {
                        var arr = new Attribute[reader.AttributeCount];
                        for (var i = 0; i < reader.AttributeCount; i++)
                        {
                            reader.MoveToAttribute(i);
                            arr[i] = new Attribute {
                                Name = reader.Name, Value = reader.Value, Index = i
                            };
                        }
                        reader.MoveToElement();
                        arg.Attributes = new ReadOnlyCollection <Attribute>(arr);
                    }
                    else
                    {
                        arg.Attributes = new ReadOnlyCollection <Attribute>(empty);
                    }
                    OnNode?.Invoke(this, arg);
                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:
                        OnElement?.Invoke(this, arg);
                        break;

                    case XmlNodeType.CDATA:
                        OnCData?.Invoke(this, arg);
                        break;

                    case XmlNodeType.Comment:
                        OnComment?.Invoke(this, arg);
                        break;

                    case XmlNodeType.DocumentType:
                        OnDocType?.Invoke(this, arg);
                        break;

                    case XmlNodeType.EndElement:
                        OnEndElement?.Invoke(this, arg);
                        break;

                    case XmlNodeType.EntityReference:
                        OnEntityReferenceUnresolved?.Invoke(this, arg);
                        reader.ResolveEntity();
                        reader.Read();
                        arg.Name     = reader.Name;
                        arg.Value    = reader.Value;
                        arg.Depth    = reader.Depth;
                        arg.NodeType = reader.NodeType;
                        OnEntityReference?.Invoke(this, arg);
                        break;

                    case XmlNodeType.ProcessingInstruction:
                        OnProcessingInstruction?.Invoke(this, arg);
                        break;

                    case XmlNodeType.Text:
                        OnText?.Invoke(this, arg);
                        break;
                    }
                }
            }
            catch (XmlException e)
            {
                OnException?.Invoke(this, e);
            }
        }