Пример #1
0
    private void ConvertProcessedTextPosition(ref UITextPosition p, ref int markupCount)
    {
        if (markupCount == -1)
        {
            markupCount = this.markups.Count;
        }
        if (markupCount != 0)
        {
            UITextMarkup markup = this.markups[0];
            int          num    = 0;
            while (p.position <= markup.index)
            {
                switch (markup.mod)
                {
                case UITextMod.End:
                    p.deformed = (short)(this.mText.Length - markup.index);
                    return;

                case UITextMod.Removed:
                {
                    p.deformed = (short)(p.deformed + 1);
                    if (++num >= markupCount)
                    {
                        return;
                    }
                    markup = this.markups[num];
                    continue;
                }

                case UITextMod.Replaced:
                {
                    if (++num >= markupCount)
                    {
                        return;
                    }
                    markup = this.markups[num];
                    continue;
                }

                case UITextMod.Added:
                {
                    p.deformed = (short)(p.deformed - 1);
                    if (++num >= markupCount)
                    {
                        return;
                    }
                    markup = this.markups[num];
                    continue;
                }
                }
                if (++num >= markupCount)
                {
                    break;
                }
                markup = this.markups[num];
            }
        }
    }
Пример #2
0
    public UITextPosition ConvertUnprocessedPosition(int position)
    {
        UITextPosition uITextPosition = new UITextPosition();
        string         str            = this.processedText;
        int            count          = this.markups.Count;
        int            num            = position;

        if (count > 0)
        {
            int          num1 = 0;
            UITextMarkup item = this.markups[num1];
            while (item.index <= position)
            {
                switch (item.mod)
                {
                case UITextMod.End:
                {
                    position = position - (num - item.index);
                    num1     = count;
                    goto case UITextMod.Replaced;
                }

                case UITextMod.Removed:
                {
                    position--;
                    goto case UITextMod.Replaced;
                }

                case UITextMod.Replaced:
                {
                    int num2 = num1 + 1;
                    num1 = num2;
                    if (num2 < count)
                    {
                        item = this.markups[num1];
                        continue;
                    }
                    break;
                }

                case UITextMod.Added:
                {
                    position++;
                    goto case UITextMod.Replaced;
                }

                default:
                {
                    goto case UITextMod.Replaced;
                }
                }
            }
        }
        UILabel.CountLinesGetColumn(str, position, out uITextPosition.position, out uITextPosition.line, out uITextPosition.column, out uITextPosition.region);
        uITextPosition.uniformRegion = uITextPosition.region;
        uITextPosition.deformed      = (short)(num - uITextPosition.position);
        return(uITextPosition);
    }
Пример #3
0
    public UITextPosition ConvertUnprocessedPosition(int position)
    {
        UITextPosition position2;
        string         processedText = this.processedText;
        int            count         = this.markups.Count;
        int            num2          = position;

        if (count > 0)
        {
            int num3 = 0;
            for (UITextMarkup markup = this.markups[num3]; markup.index <= position; markup = this.markups[num3])
            {
                switch (markup.mod)
                {
                case UITextMod.End:
                    position -= num2 - markup.index;
                    num3      = count;
                    break;

                case UITextMod.Removed:
                    position--;
                    break;

                case UITextMod.Added:
                    position++;
                    break;
                }
                if (++num3 >= count)
                {
                    break;
                }
            }
        }
        CountLinesGetColumn(processedText, position, out position2.position, out position2.line, out position2.column, out position2.region);
        position2.uniformRegion = position2.region;
        position2.deformed      = (short)(num2 - position2.position);
        return(position2);
    }
Пример #4
0
    public static string MarkUp(this List <UITextMarkup> list, string input)
    {
        int num;

        if ((list == null) || ((num = list.Count) == 0))
        {
            return(input);
        }
        UITextMarkup  markup2 = list[0];
        int           index   = markup2.index;
        StringBuilder builder = new StringBuilder(input, 0, index, input.Length + num);
        int           num3    = 0;
        UITextMarkup  markup  = list[num3];

        for (int i = markup.index; i < input.Length; i++)
        {
            char ch = input[i];
            if (i != markup.index)
            {
                goto Label_0176;
            }
Label_0068:
            switch (markup.mod)
            {
            case UITextMod.End:
                i  = input.Length + 1;
                ch = '\0';
                break;

            case UITextMod.Removed:
                ch = '\0';
                break;

            case UITextMod.Replaced:
                builder.Append(markup.value);
                ch = '\0';
                break;

            case UITextMod.Added:
                builder.Append(markup.value);
                break;
            }
            if (++num3 == num)
            {
                if (i >= input.Length)
                {
                    goto Label_0153;
                }
                if (ch != '\0')
                {
                    builder.Append(input, i, input.Length - i);
                }
                else
                {
                    if (++i >= input.Length)
                    {
                        goto Label_0161;
                    }
                    builder.Append(input, i, input.Length - i);
                }
                i = input.Length + 1;
                goto Label_0161;
            }
            markup = list[num3];
Label_0153:
            if (markup.index == i)
            {
                goto Label_0068;
            }
Label_0161:
            if (ch != '\0')
            {
                builder.Append(ch);
            }
            continue;
Label_0176:
            if (ch != '\0')
            {
                builder.Append(ch);
            }
        }
        while (++num3 < num)
        {
            switch (markup.mod)
            {
            case UITextMod.End:
            {
                continue;
            }

            case UITextMod.Added:
            {
                builder.Append(markup.value);
                continue;
            }
            }
            Debug.Log("Unsupported end markup " + markup);
        }
        return(builder.ToString());
    }
Пример #5
0
    public static string MarkUp(this List <UITextMarkup> list, string input)
    {
        if (list != null)
        {
            int count = list.Count;
            int num   = count;
            if (count != 0)
            {
                int           item          = list[0].index;
                StringBuilder stringBuilder = new StringBuilder(input, 0, item, input.Length + num);
                int           num1          = 0;
                UITextMarkup  uITextMarkup  = list[num1];
                for (int i = uITextMarkup.index; i < input.Length; i++)
                {
                    char chr = input[i];
                    if (i == uITextMarkup.index)
                    {
                        do
                        {
                            switch (uITextMarkup.mod)
                            {
                            case UITextMod.End:
                            {
                                i   = input.Length + 1;
                                chr = '\0';
                                break;
                            }

                            case UITextMod.Removed:
                            {
                                chr = '\0';
                                break;
                            }

                            case UITextMod.Replaced:
                            {
                                stringBuilder.Append(uITextMarkup.@value);
                                chr = '\0';
                                break;
                            }

                            case UITextMod.Added:
                            {
                                stringBuilder.Append(uITextMarkup.@value);
                                break;
                            }
                            }
                            int num2 = num1 + 1;
                            num1 = num2;
                            if (num2 != num)
                            {
                                uITextMarkup = list[num1];
                            }
                            else if (i < input.Length)
                            {
                                if (chr == 0)
                                {
                                    int num3 = i + 1;
                                    i = num3;
                                    if (num3 >= input.Length)
                                    {
                                        break;
                                    }
                                    else
                                    {
                                        stringBuilder.Append(input, i, input.Length - i);
                                    }
                                }
                                else
                                {
                                    stringBuilder.Append(input, i, input.Length - i);
                                }
                                i = input.Length + 1;
                                break;
                            }
                        }while (uITextMarkup.index == i);
                        if (chr != 0)
                        {
                            stringBuilder.Append(chr);
                        }
                    }
                    else if (chr != 0)
                    {
                        stringBuilder.Append(chr);
                    }
                }
                while (true)
                {
                    int num4 = num1 + 1;
                    num1 = num4;
                    if (num4 >= num)
                    {
                        break;
                    }
                    switch (uITextMarkup.mod)
                    {
                    case UITextMod.End:
                    {
                        continue;
                    }

                    case UITextMod.Removed:
                    case UITextMod.Replaced:
                    {
                        Debug.Log(string.Concat("Unsupported end markup ", uITextMarkup));
                        continue;
                    }

                    case UITextMod.Added:
                    {
                        stringBuilder.Append(uITextMarkup.@value);
                        continue;
                    }

                    default:
                    {
                        goto case UITextMod.Replaced;
                    }
                    }
                }
                return(stringBuilder.ToString());
            }
        }
        return(input);
    }
Пример #6
0
    public void GetProcessedIndices(ref int start, ref int end)
    {
        int count = this.markups.Count;

        if (count != 0)
        {
            UITextMarkup markup = this.markups[0];
            if (markup.index <= end)
            {
                UITextMarkup markup3;
                UITextMarkup markup5;
                int          num2 = start;
                int          num3 = end;
                int          num4 = 0;
Label_00AA:
                markup3 = this.markups[num4];
                if (markup3.index <= start)
                {
                    UITextMarkup markup2 = this.markups[num4];
                    switch (markup2.mod)
                    {
                    case UITextMod.End:
                        num3 = this.mProcessedText.Length - 1;
                        return;

                    case UITextMod.Removed:
                        num2--;
                        num3--;
                        break;

                    case UITextMod.Added:
                        num2++;
                        num3++;
                        break;
                    }
                    if (++num4 >= count)
                    {
                        start = num2;
                        end   = num3;
                        return;
                    }
                    goto Label_00AA;
                }
Label_012F:
                markup5 = this.markups[num4];
                if (markup5.index <= end)
                {
                    UITextMarkup markup4 = this.markups[num4];
                    switch (markup4.mod)
                    {
                    case UITextMod.End:
                        num3 = this.mProcessedText.Length - 1;
                        return;

                    case UITextMod.Removed:
                        num3--;
                        break;

                    case UITextMod.Added:
                        num3++;
                        break;
                    }
                    if (++num4 < count)
                    {
                        goto Label_012F;
                    }
                }
                start = num2;
                end   = num3;
            }
        }
    }
Пример #7
0
    private void ConvertProcessedTextPosition(ref UITextPosition p, ref int markupCount)
    {
        if (markupCount == -1)
        {
            markupCount = this.markups.Count;
        }
        if (markupCount == 0)
        {
            return;
        }
        UITextMarkup item = this.markups[0];
        int          num  = 0;

        while (true)
        {
            if (p.position > item.index)
            {
                return;
            }
            switch (item.mod)
            {
            case UITextMod.End:
            {
                p.deformed = (short)(this.mText.Length - item.index);
                break;
            }

            case UITextMod.Removed:
            {
                p.deformed = (short)(p.deformed + 1);
                int num1 = num + 1;
                num = num1;
                if (num1 < markupCount)
                {
                    item = this.markups[num];
                    continue;
                }
                break;
            }

            case UITextMod.Replaced:
            {
                int num2 = num + 1;
                num = num2;
                if (num2 < markupCount)
                {
                    item = this.markups[num];
                    continue;
                }
                break;
            }

            case UITextMod.Added:
            {
                p.deformed = (short)(p.deformed - 1);
                int num3 = num + 1;
                num = num3;
                if (num3 < markupCount)
                {
                    item = this.markups[num];
                    continue;
                }
                break;
            }

            default:
            {
                int num4 = num + 1;
                num = num4;
                if (num4 < markupCount)
                {
                    item = this.markups[num];
                    continue;
                }
                break;
            }
            }
        }
    }