Наследование: RubyObject
Пример #1
0
        public static MutableString Read(RubyContext /*!*/ context, RubyDir /*!*/ self)
        {
            self.ThrowIfClosed();

            if (self._pos + 1 > self._rawEntries.Length)
            {
                return(null);
            }

            MutableString ret;

            if (self._pos == -2)
            {
                ret = context.EncodePath(".");
            }
            else if (self._pos == -1)
            {
                ret = context.EncodePath("..");
            }
            else
            {
                ret = context.EncodePath(context.Platform.GetFileName(self._rawEntries[self._pos]));
            }
            self._pos++;
            return(ret);
        }
Пример #2
0
        public static RubyDir /*!*/ Each(BlockParam block, RubyDir /*!*/ self)
        {
            self.ThrowIfClosed();

            RubyDir.ForEach(block, self, self._dirName);
            return(self);
        }
Пример #3
0
        public static RubyDir /*!*/ Rewind(RubyDir /*!*/ self)
        {
            self.ThrowIfClosed();

            self._pos = -2;
            return(self);
        }
Пример #4
0
        public static MutableString /*!*/ Read(RubyDir /*!*/ self)
        {
            self.ThrowIfClosed();

            if (self._pos + 1 > self._rawEntries.Length)
            {
                return(null);
            }

            MutableString ret;

            if (self._pos == -2)
            {
                ret = MutableString.Create(".");
            }
            else if (self._pos == -1)
            {
                ret = MutableString.Create("..");
            }
            else
            {
                ret = MutableString.Create(Path.GetFileName(self._rawEntries[self._pos]));
            }
            self._pos++;
            return(ret);
        }
Пример #5
0
        public static int SetPosition(RubyDir /*!*/ self, int pos)
        {
            self.ThrowIfClosed();

            self._pos = pos - 2;
            return(pos);
        }
Пример #6
0
        public static object Open(ConversionStorage <MutableString> /*!*/ toPath, BlockParam block, RubyClass /*!*/ self, object dirname)
        {
            RubyDir rd = new RubyDir(self, Protocols.CastToPath(toPath, dirname));

            try {
                object result;
                block.Yield(rd, out result);
                return(result);
            } finally {
                Close(rd);
            }
        }
Пример #7
0
        public static object Open(BlockParam block, RubyClass /*!*/ self, [NotNull] MutableString /*!*/ dirname)
        {
            RubyDir rd = new RubyDir(self, dirname);

            try {
                object result;
                block.Yield(rd, out result);
                return(result);
            } finally {
                Close(rd);
            }
        }
Пример #8
0
        public static RubyDir/*!*/ Reinitialize(RubyDir/*!*/ self, [NotNull]MutableString/*!*/ dirname) {
            self.Close();

            string strName = self.ImmediateClass.Context.DecodePath(dirname);
            try {
                self._rawEntries = self.Platform.GetFileSystemEntries(strName, "*");
            } catch (Exception ex) {
                throw ToRubyException(ex, strName, DirectoryOperation.Open);
            }
            self._dirName = dirname.Clone();
            self._pos = -2;
            return self;
        }
Пример #9
0
        public static MutableString GetPath(RubyContext /*!*/ context, RubyDir /*!*/ self)
        {
            if (context.RubyOptions.Compatibility < RubyCompatibility.Ruby19)
            {
                self.ThrowIfClosed();
            }
            else if (self.Closed)
            {
                return(null);
            }

            return(self._dirName.Clone());
        }
Пример #10
0
        public static RubyDir /*!*/ Reinitialize(RubyDir /*!*/ self, [NotNull] MutableString /*!*/ dirname)
        {
            self.Close();

            string strName = self.ImmediateClass.Context.DecodePath(dirname);

            try {
                self._rawEntries = self.Platform.GetFileSystemEntries(strName, "*");
            } catch (Exception ex) {
                throw ToRubyException(ex, strName, DirectoryOperation.Open);
            }
            self._dirName = dirname.Clone();
            self._pos     = -2;
            return(self);
        }
Пример #11
0
        public static RubyDir /*!*/ Seek(RubyDir /*!*/ self, int pos)
        {
            self.ThrowIfClosed();

            if (pos < 0)
            {
                self._pos = -2;
            }
            else if (pos > self._rawEntries.Length + 2)
            {
                self._pos = self._rawEntries.Length;
            }
            else
            {
                self._pos = pos - 2;
            }
            return(self);
        }
Пример #12
0
        public static int GetCurrentPosition(RubyDir/*!*/ self) {
            self.ThrowIfClosed();

            return self._pos + 2;
        }
Пример #13
0
        public static int SetPosition(RubyDir/*!*/ self, int pos) {
            self.ThrowIfClosed();

            self._pos = pos - 2;
            return pos;
        }
Пример #14
0
 public static object Each(RubyContext/*!*/ context, BlockParam block, RubyDir/*!*/ self) {
     return self.EnumerateEntries(context, block, self);
 }
Пример #15
0
        public static MutableString GetPath(RubyContext/*!*/ context, RubyDir/*!*/ self) {
            if (context.RubyOptions.Compatibility == RubyCompatibility.Ruby18) {
                self.ThrowIfClosed();
            } else if (self.Closed) {
                return null;
            }

            return self._dirName.Clone();
        }
Пример #16
0
        public static object Open(BlockParam block, RubyClass/*!*/ self, [NotNull]MutableString/*!*/ dirname) {
            RubyDir rd = new RubyDir(self, dirname);

            try {
                object result;
                block.Yield(rd, out result);
                return result;
            } finally {
                Close(rd);
            }
        }
Пример #17
0
 public static void Close(RubyDir/*!*/ self) {
     self.ThrowIfClosed();
     self.Close();
 }
Пример #18
0
        public static RubyDir/*!*/ Seek(RubyDir/*!*/ self, int pos) {
            self.ThrowIfClosed();

            if (pos < 0) {
                self._pos = -2;
            } else if (pos > self._rawEntries.Length + 2) {
                self._pos = self._rawEntries.Length;
            } else {
                self._pos = pos - 2;
            }
            return self;
        }
Пример #19
0
 public static object Each(RubyContext /*!*/ context, BlockParam block, RubyDir /*!*/ self)
 {
     return(self.EnumerateEntries(context, block, self));
 }
Пример #20
0
        public static MutableString/*!*/ GetPath(RubyDir/*!*/ self) {
            self.ThrowIfClosed();

            return self._dirName;
        }
Пример #21
0
        public static RubyDir/*!*/ Each(BlockParam block, RubyDir/*!*/ self) {
            self.ThrowIfClosed();

            RubyDir.ForEach(block, self, self._dirName);
            return self;
        }
Пример #22
0
        public static void Close(RubyDir/*!*/ self) {
            self.ThrowIfClosed();

            self._closed = true;
        }
Пример #23
0
        public static int GetCurrentPosition(RubyDir /*!*/ self)
        {
            self.ThrowIfClosed();

            return(self._pos + 2);
        }
Пример #24
0
        public static MutableString/*!*/ Read(RubyDir/*!*/ self) {
            self.ThrowIfClosed();

            if (self._pos + 1 > self._rawEntries.Length) {
                return null;
            }

            MutableString ret;
            if (self._pos == -2) {
                ret = MutableString.CreateAscii(".");
            } else if (self._pos == -1) {
                ret = MutableString.CreateAscii("..");
            } else {
                ret = MutableString.Create(Path.GetFileName(self._rawEntries[self._pos]), RubyEncoding.Path);
            }
            self._pos++;
            return ret;
        }
Пример #25
0
        public static MutableString Read(RubyContext/*!*/ context, RubyDir/*!*/ self) {
            self.ThrowIfClosed();

            if (self._pos + 1 > self._rawEntries.Length) {
                return null;
            }

            MutableString ret;
            if (self._pos == -2) {
                ret = context.EncodePath(".");
            } else if (self._pos == -1) {
                ret = context.EncodePath("..");
            } else {
                ret = context.EncodePath(context.Platform.GetFileName(self._rawEntries[self._pos]));
            }
            self._pos++;
            return ret;
        }
Пример #26
0
        public static void Close(RubyDir /*!*/ self)
        {
            self.ThrowIfClosed();

            self._closed = true;
        }
Пример #27
0
        public static RubyDir/*!*/ Rewind(RubyDir/*!*/ self) {
            self.ThrowIfClosed();

            self._pos = -2;
            return self;
        }
Пример #28
0
 public static void Close(RubyDir /*!*/ self)
 {
     self.ThrowIfClosed();
     self.Close();
 }
Пример #29
0
        public static object Open(ConversionStorage<MutableString>/*!*/ toPath, BlockParam block, RubyClass/*!*/ self, object dirname) {
            RubyDir rd = new RubyDir(self, Protocols.CastToPath(toPath, dirname));

            try {
                object result;
                block.Yield(rd, out result);
                return result;
            } finally {
                Close(rd);
            }
        }
Пример #30
0
        public static MutableString /*!*/ GetPath(RubyDir /*!*/ self)
        {
            self.ThrowIfClosed();

            return(self._dirName);
        }