コード例 #1
0
 public StringSlice JSON_UNESCAPE(StringSlice str)
 {
     return(new StringSlice(Regex.Unescape(str.Value)));
 }
コード例 #2
0
ファイル: MultilineText.cs プロジェクト: sabrogden/logjoint
 public MultilineText(StringSlice txt)
 {
     this.text = txt;
 }
コード例 #3
0
 public StringSlice CONCAT(StringSlice s1, string s2)
 {
     return(StringSlice.Concat(s1, new StringSlice(s2)));
 }
コード例 #4
0
 public StringSlice CSV_UNESCAPE(StringSlice str, char quoteChar)
 {
     return(new StringSlice(base.CSV_UNESCAPE(str.Value, quoteChar)));
 }
コード例 #5
0
            public static int EnumLines(StringSlice txt, Func <StringSlice, int, bool> callback)
            {
                int  currentIdx   = 0;
                bool lastWasR     = false;
                int  currentStart = 0;

                for (int i = 0; i < txt.Length; ++i)
                {
                    bool yieldLine       = false;
                    int  newCurrentStart = currentStart;
                    int  currentEnd      = 0;
                    switch (txt[i])
                    {
                    case '\r':
                        if (lastWasR)
                        {
                            yieldLine       = true;
                            newCurrentStart = i;
                            currentEnd      = i - 1;
                        }
                        lastWasR = true;
                        break;

                    case '\n':
                        yieldLine = true;
                        if (lastWasR)
                        {
                            currentEnd = i - 1;
                        }
                        else
                        {
                            currentEnd = i;
                        }
                        lastWasR        = false;
                        newCurrentStart = i + 1;
                        break;

                    default:
                        if (lastWasR)
                        {
                            yieldLine       = true;
                            newCurrentStart = i;
                            currentEnd      = i - 1;
                        }
                        lastWasR = false;
                        break;
                    }
                    if (yieldLine)
                    {
                        if (callback != null)
                        {
                            if (!callback(txt.SubString(currentStart, currentEnd - currentStart), currentIdx))
                            {
                                return(currentIdx + 1);
                            }
                        }
                        ++currentIdx;
                        currentStart = newCurrentStart;
                    }
                }
                if (lastWasR)
                {
                    if (callback != null)
                    {
                        if (!callback(txt.SubString(currentStart, txt.Length - currentStart - 1), currentIdx))
                        {
                            return(currentIdx + 1);
                        }
                    }
                    ++currentIdx;
                }
                else
                {
                    if (callback != null)
                    {
                        callback(txt.SubString(currentStart, txt.Length - currentStart), currentIdx);
                    }
                }
                return(currentIdx + 1);
            }
コード例 #6
0
 void IMessage.SetRawText(StringSlice rawText)
 {
     this.rawText = rawText;
 }
コード例 #7
0
 public int TO_INT(StringSlice str)
 {
     return(ParseInt(str.Buffer, str.StartIndex, str.Length));
 }
コード例 #8
0
 void IFieldsProcessor.SetInputField(int idx, StringSlice value)
 {
     builder.SetInputFieldByIndex(idx, value);
 }
コード例 #9
0
 public bool EMPTY(StringSlice str)
 {
     return(str.IsEmpty);
 }
コード例 #10
0
        public int TO_INT(StringSlice str, int idx, int len)
        {
            StringSlice tmp = str.SubString(idx, len);

            return(ParseInt(tmp.Buffer, tmp.StartIndex, tmp.Length));
        }
コード例 #11
0
 public int HEX_TO_INT(StringSlice str)
 {
     return(int.Parse(str.ToString(), NumberStyles.HexNumber));
 }
コード例 #12
0
 public DateTime TICKS_TO_DATETIME(StringSlice ticksStr)
 {
     return(new DateTime(long.Parse(ticksStr.Value), DateTimeKind.Unspecified));
 }
コード例 #13
0
 public StringSlice CONCAT(string s1, StringSlice s2)
 {
     return(StringSlice.Concat(new StringSlice(s1), s2));
 }
コード例 #14
0
 public IThread GetThread(StringSlice id)
 {
     return(fakeThread ?? threads.GetThread(id));
 }
コード例 #15
0
 public StringSlice TRIM(StringSlice str)
 {
     return(str.Trim());
 }
コード例 #16
0
 internal void SetRawText(StringSlice value)
 {
     rawText = value;
 }
コード例 #17
0
 public DateTime TO_DATETIME(StringSlice value, string format, string culture)
 {
     return(TO_DATETIME(value.Value, format, culture));
 }
コード例 #18
0
 public MultilineText(StringSlice txt, bool isMultiline)
 {
     this.text            = txt;
     this.textIsMultiline = isMultiline;
 }
コード例 #19
0
        public int PARSE_YEAR(StringSlice year)
        {
            int y = TO_INT(year);

            return(PARSE_YEAR_impl(y));
        }
コード例 #20
0
 public static int GetFirstLineLength(StringSlice s)
 {
     return(s.IndexOfAny(newLineChars));
 }
コード例 #21
0
 public StringSlice MATCH(StringSlice value, string pattern)
 {
     return(MATCH(value, pattern, 0));
 }
コード例 #22
0
 public MessageBase(long position, long endPosition, IThread t, MessageTimestamp time, StringSlice rawText = new StringSlice())
 {
     if (endPosition < position)
     {
         throw new ArgumentException("bad message positions");
     }
     this.thread      = t;
     this.time        = time;
     this.position    = position;
     this.endPosition = endPosition;
     this.rawText     = rawText;
 }
コード例 #23
0
 public StringSlice CONCAT(StringSlice s1, StringSlice s2)
 {
     return(StringSlice.Concat(s1, s2));
 }