Inheritance: RubyObject
Exemplo n.º 1
0
Arquivo: Dir.cs Projeto: ltwlf/IronSP
        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);
        }
Exemplo n.º 2
0
        public static RubyDir /*!*/ Each(BlockParam block, RubyDir /*!*/ self)
        {
            self.ThrowIfClosed();

            RubyDir.ForEach(block, self, self._dirName);
            return(self);
        }
Exemplo n.º 3
0
Arquivo: Dir.cs Projeto: ltwlf/IronSP
        public static RubyDir /*!*/ Rewind(RubyDir /*!*/ self)
        {
            self.ThrowIfClosed();

            self._pos = -2;
            return(self);
        }
Exemplo n.º 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);
        }
Exemplo n.º 5
0
Arquivo: Dir.cs Projeto: ltwlf/IronSP
        public static int SetPosition(RubyDir /*!*/ self, int pos)
        {
            self.ThrowIfClosed();

            self._pos = pos - 2;
            return(pos);
        }
Exemplo n.º 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);
            }
        }
Exemplo n.º 7
0
Arquivo: Dir.cs Projeto: ltwlf/IronSP
        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);
            }
        }
Exemplo n.º 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;
        }
Exemplo n.º 9
0
Arquivo: Dir.cs Projeto: ltwlf/IronSP
        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());
        }
Exemplo n.º 10
0
Arquivo: Dir.cs Projeto: ltwlf/IronSP
        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);
        }
Exemplo n.º 11
0
Arquivo: Dir.cs Projeto: ltwlf/IronSP
        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);
        }
Exemplo n.º 12
0
        public static int GetCurrentPosition(RubyDir/*!*/ self) {
            self.ThrowIfClosed();

            return self._pos + 2;
        }
Exemplo n.º 13
0
        public static int SetPosition(RubyDir/*!*/ self, int pos) {
            self.ThrowIfClosed();

            self._pos = pos - 2;
            return pos;
        }
Exemplo n.º 14
0
 public static object Each(RubyContext/*!*/ context, BlockParam block, RubyDir/*!*/ self) {
     return self.EnumerateEntries(context, block, self);
 }
Exemplo n.º 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();
        }
Exemplo n.º 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);
            }
        }
Exemplo n.º 17
0
 public static void Close(RubyDir/*!*/ self) {
     self.ThrowIfClosed();
     self.Close();
 }
Exemplo n.º 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;
        }
Exemplo n.º 19
0
Arquivo: Dir.cs Projeto: ltwlf/IronSP
 public static object Each(RubyContext /*!*/ context, BlockParam block, RubyDir /*!*/ self)
 {
     return(self.EnumerateEntries(context, block, self));
 }
Exemplo n.º 20
0
        public static MutableString/*!*/ GetPath(RubyDir/*!*/ self) {
            self.ThrowIfClosed();

            return self._dirName;
        }
Exemplo n.º 21
0
        public static RubyDir/*!*/ Each(BlockParam block, RubyDir/*!*/ self) {
            self.ThrowIfClosed();

            RubyDir.ForEach(block, self, self._dirName);
            return self;
        }
Exemplo n.º 22
0
        public static void Close(RubyDir/*!*/ self) {
            self.ThrowIfClosed();

            self._closed = true;
        }
Exemplo n.º 23
0
Arquivo: Dir.cs Projeto: ltwlf/IronSP
        public static int GetCurrentPosition(RubyDir /*!*/ self)
        {
            self.ThrowIfClosed();

            return(self._pos + 2);
        }
Exemplo n.º 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;
        }
Exemplo n.º 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;
        }
Exemplo n.º 26
0
        public static void Close(RubyDir /*!*/ self)
        {
            self.ThrowIfClosed();

            self._closed = true;
        }
Exemplo n.º 27
0
        public static RubyDir/*!*/ Rewind(RubyDir/*!*/ self) {
            self.ThrowIfClosed();

            self._pos = -2;
            return self;
        }
Exemplo n.º 28
0
Arquivo: Dir.cs Projeto: ltwlf/IronSP
 public static void Close(RubyDir /*!*/ self)
 {
     self.ThrowIfClosed();
     self.Close();
 }
Exemplo n.º 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);
            }
        }
Exemplo n.º 30
0
        public static MutableString /*!*/ GetPath(RubyDir /*!*/ self)
        {
            self.ThrowIfClosed();

            return(self._dirName);
        }