Inheritance: IronRuby.Builtins.RubyObject
示例#1
0
 private void InitializeFrom(StringScanner/*!*/ other) {
     _currentPosition = other._currentPosition;
     _foundPosition = other._foundPosition;
     _lastMatch = other._lastMatch;
     _lastMatchingGroups = other._lastMatchingGroups;
     _previousPosition = other._previousPosition;
     _scanString = other.ScanString;
 }
示例#2
0
 public static bool IsRestLeft(StringScanner/*!*/ self)
 {
     return self.CurrentPosition < self.Length;
 }
示例#3
0
 public static MutableString GetString(StringScanner/*!*/ self)
 {
     return self.ScanString;
 }
示例#4
0
 public static int GetCurrentPosition(StringScanner/*!*/ self)
 {
     return self.CurrentPosition;
 }
示例#5
0
 public static StringScanner Unscan(StringScanner/*!*/ self)
 {
     if (self.LastMatch == null) {
         // throw Exception StringScanner::Error
         throw RubyExceptions.CreateRangeError("unscan failed: previous match had failed");
     }
     int position = self.PreviousPosition;
     self.Reset();
     self.CurrentPosition = position;
     return self;
 }
示例#6
0
 public static int SetCurrentPosition(StringScanner/*!*/ self, int newPosition)
 {
     int newPos = newPosition;
     if (newPos < 0) {
         newPos = self.Length - self.CurrentPosition;
     }
     if (newPos > self.Length) {
         throw RubyExceptions.CreateRangeError("index out of range");
     }
     self.CurrentPosition = newPos;
     return newPosition;
 }
示例#7
0
 public static int RestSize(StringScanner/*!*/ self)
 {
     return (self.CurrentPosition < self.Length) ? (self.Length - self.CurrentPosition) : 0;
 }
示例#8
0
 public static MutableString PreMatch(StringScanner/*!*/ self)
 {
     if (self.LastMatch == null) {
         return null;
     }
     return self.ScanString.GetSlice(0, self.FoundPosition);
 }
示例#9
0
 public static bool WasMatched(StringScanner /*!*/ self)
 {
     return(self.LastMatch != null);
 }
示例#10
0
 public static MutableString ToString(StringScanner /*!*/ self)
 {
     return(MutableString.Create(self.ToString(), self._scanString.Encoding));
 }
示例#11
0
 public static bool EndOfLine(StringScanner /*!*/ self)
 {
     return(self.CurrentPosition >= self.Length);
 }
示例#12
0
 public static MutableString CheckUntil(StringScanner /*!*/ self, [NotNull] RubyRegex /*!*/ pattern)
 {
     return(SearchFull(self, pattern, false, true) as MutableString);
 }
示例#13
0
 public static bool BeginningOfLine(StringScanner /*!*/ self)
 {
     return((self.CurrentPosition == 0) || (self.ScanString.GetChar(self.CurrentPosition - 1) == '\n'));
 }
示例#14
0
 public static StringScanner Concat(StringScanner /*!*/ self, MutableString str)
 {
     self.ScanString.Append(str);
     return(self);
 }
示例#15
0
 public static void Reinitialize(StringScanner /*!*/ self, [DefaultProtocol, NotNull] MutableString /*!*/ scan)
 {
     self.ScanString = scan;
     self.Reset();
 }
示例#16
0
 public static MutableString Matched(StringScanner/*!*/ self)
 {
     if (self.LastMatch == null) {
         return null;
     }
     return MutableString.Create(self.LastMatch);
 }
示例#17
0
 public static MutableString Peek(StringScanner/*!*/ self, int len)
 {
     if (len < 0) {
         throw RubyExceptions.CreateArgumentError("negative string size (or size too big)");
     }
     int maxlen = self.Length - self.CurrentPosition;
     if (len > maxlen) {
         len = maxlen;
     }
     if (self.CurrentPosition >= self.Length || len == 0) {
         return MutableString.CreateEmpty();
     }
     return self.ScanString.GetSlice(self.CurrentPosition, len);
 }
示例#18
0
 public static int GetCurrentPosition(StringScanner /*!*/ self)
 {
     return(self.CurrentPosition);
 }
示例#19
0
 public static StringScanner Reset(StringScanner/*!*/ self)
 {
     self.Reset();
     return self;
 }
示例#20
0
 public static StringScanner Reset(StringScanner /*!*/ self)
 {
     self.Reset();
     return(self);
 }
示例#21
0
 public static object ScanUntil(StringScanner/*!*/ self, [NotNull]RubyRegex/*!*/ pattern)
 {
     return SearchFull(self, pattern, true, true);
 }
示例#22
0
 public static bool IsRestLeft(StringScanner /*!*/ self)
 {
     return(self.CurrentPosition < self.Length);
 }
示例#23
0
 public static int? SkipUntil(StringScanner/*!*/ self, [NotNull]RubyRegex/*!*/ pattern)
 {
     bool match = self.Match(pattern, false, true);
     if (!match) {
         return null;
     }
     return (self.CurrentPosition - self.PreviousPosition);
 }
示例#24
0
 public static int RestSize(StringScanner /*!*/ self)
 {
     return((self.CurrentPosition < self.Length) ? (self.Length - self.CurrentPosition) : 0);
 }
示例#25
0
 public static MutableString Scan(StringScanner /*!*/ self, [NotNull] RubyRegex /*!*/ pattern)
 {
     return(ScanFull(self, pattern, true, true) as MutableString);
 }
示例#26
0
 public static object /*!*/ Scan(StringScanner /*!*/ self, [NotNull] RubyRegex /*!*/ pattern)
 {
     return(ScanFull(self, pattern, true, true));
 }
示例#27
0
 public static MutableString GetMatchSubgroup(StringScanner/*!*/ self, int subgroup)
 {
     if (subgroup == 0 && self.LastMatch != null) {
         return MutableString.Create(self.LastMatch);
     }
     if (self.LastMatchingGroups == null) {
         return null;
     }
     if (subgroup < 0) {
         subgroup = self.LastMatchingGroups.GroupCount - subgroup;
     }
     if (subgroup >= self.LastMatchingGroups.GroupCount) {
         return null;
     }
     return self.LastMatchingGroups.GetGroupValue(subgroup);
 }
示例#28
0
 public static object ScanUntil(StringScanner /*!*/ self, [NotNull] RubyRegex /*!*/ pattern)
 {
     return(SearchFull(self, pattern, true, true));
 }
示例#29
0
 public static void InitializeFrom(StringScanner/*!*/ self, [DefaultProtocol, NotNull]StringScanner/*!*/ other)
 {
     self.InitializeFrom(other);
 }
示例#30
0
 public static MutableString GetString(StringScanner /*!*/ self)
 {
     return(self.ScanString);
 }
示例#31
0
 public static int? Match(StringScanner/*!*/ self, [NotNull]RubyRegex/*!*/ pattern)
 {
     if (!self.Match(pattern, true, false)) {
         return null;
     }
     return self.LastMatch.GetLength();
 }
示例#32
0
 public static MutableString SetString(RubyContext /*!*/ context, StringScanner /*!*/ self, [NotNull] MutableString /*!*/ str)
 {
     self.ScanString = (MutableString)KernelOps.Freeze(context, MutableString.Create(str));
     self.Reset();
     return(str);
 }
示例#33
0
 public static int? MatchedSize(StringScanner/*!*/ self)
 {
     if (self.LastMatch == null) {
         return null;
     }
     return self.LastMatch.Length;
 }
示例#34
0
 public static StringScanner Clear(StringScanner /*!*/ self)
 {
     self.Reset();
     self.CurrentPosition = self.Length;
     return(self);
 }
示例#35
0
 public static MutableString PostMatch(StringScanner/*!*/ self)
 {
     if (self.LastMatch == null) {
         return null;
     }
     int position = self.FoundPosition + self.LastMatch.Length;
     int len = self.Length - position;
     if (len <= 0) {
         return MutableString.CreateEmpty();
     }
     return self.ScanString.GetSlice(position, len);
 }
示例#36
0
 public static void Reinitialize(StringScanner /*!*/ self, [DefaultProtocol, NotNull] MutableString /*!*/ scan, [Optional] object ignored)
 {
     self.ScanString = scan;
     self.Reset();
 }
示例#37
0
 public static void Reinitialize(StringScanner/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ scan, [Optional]object ignored)
 {
     self.ScanString = scan;
     self.Reset();
 }
示例#38
0
 public static void InitializeFrom(StringScanner /*!*/ self, [DefaultProtocol, NotNull] StringScanner /*!*/ other)
 {
     self.InitializeFrom(other);
 }
示例#39
0
 public static MutableString Rest(StringScanner/*!*/ self)
 {
     int len = self.Length - self.CurrentPosition;
     if (len <= 0) {
         return MutableString.CreateEmpty();
     }
     return self.ScanString.GetSlice(self.CurrentPosition, len);
 }
示例#40
0
 public static StringScanner Concat(StringScanner/*!*/ self, MutableString str)
 {
     self.ScanString.Append(str);
     return self;
 }
示例#41
0
 public static object ScanFull(StringScanner/*!*/ self, [NotNull]RubyRegex/*!*/ pattern, bool advancePointer, bool returnString)
 {
     bool match = self.Match(pattern, true, advancePointer);
     if (match) {
         if (returnString) {
             return MutableString.Create(self.LastMatch);
         } else {
             return ScriptingRuntimeHelpers.Int32ToObject(self.LastMatch.Length);
         }
     }
     return null;
 }
示例#42
0
 public static StringScanner Create(RubyClass/*!*/ self, [DefaultProtocol, NotNull]MutableString/*!*/ scan, [Optional]object ignored)
 {
     var result = new StringScanner(self);
     result.ScanString = scan;
     result.Reset();
     return result;
 }
示例#43
0
 public static object SearchFull(StringScanner/*!*/ self, [NotNull]RubyRegex/*!*/ pattern, bool advancePointer, bool returnString)
 {
     bool match = self.Match(pattern, false, advancePointer);
     if (match) {
         int length = self.LastMatch.Length + (self.FoundPosition - self.PreviousPosition);
         if (returnString) {
             return self.ScanString.GetSlice(self.PreviousPosition, length);
         } else {
             return ScriptingRuntimeHelpers.Int32ToObject(length);
         }
     }
     return null;
 }
示例#44
0
 public static bool EndOfLine(StringScanner/*!*/ self)
 {
     return self.CurrentPosition >= self.Length;
 }
示例#45
0
 public static MutableString SetString(RubyContext/*!*/ context, StringScanner/*!*/ self, [NotNull]MutableString/*!*/ str)
 {
     self.ScanString = (MutableString)KernelOps.Freeze(context, MutableString.Create(str));
     self.Reset();
     return str;
 }
示例#46
0
 public static int? Exist(StringScanner/*!*/ self, [NotNull]RubyRegex/*!*/ pattern)
 {
     if (!self.Match(pattern, false, false)) {
         return null;
     }
     return self.FoundPosition + self.LastMatch.Length;
 }
示例#47
0
 public static MutableString ToString(StringScanner/*!*/ self)
 {
     return MutableString.Create(self.ToString(), self._scanString.Encoding);
 }
示例#48
0
 public static MutableString GetChar(StringScanner/*!*/ self)
 {
     if (self.CurrentPosition >= self.Length) {
         return null;
     }
     self.PreviousPosition = self.CurrentPosition;
     self.FoundPosition = self.CurrentPosition;
     self.LastMatch = self.ScanString.GetSlice(self.CurrentPosition++, 1);
     return MutableString.Create(self.LastMatch);
 }
示例#49
0
 public static bool WasMatched(StringScanner/*!*/ self)
 {
     return (self.LastMatch != null);
 }
示例#50
0
 public static MutableString ToString(StringScanner /*!*/ self)
 {
     return(MutableString.Create(self.ToString()));
 }