コード例 #1
0
ファイル: zlib.cs プロジェクト: david50407/main
            public static MutableString /*!*/ Flush(Deflate /*!*/ self, [DefaultParameterValue(SYNC_FLUSH)] int flush)
            {
                if (flush == NO_FLUSH)
                {
                    return(MutableString.CreateEmpty());
                }

                return(Compress(self, MutableString.FrozenEmpty, flush));
            }
コード例 #2
0
ファイル: StringScanner.cs プロジェクト: ltwlf/IronSP
        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));
        }
コード例 #3
0
ファイル: OpenSSL.cs プロジェクト: parhelia512/ironruby
 public static MutableString PublicKey(Certificate /*!*/ self)
 {
     if (self.IsEmpty)
     {
         // TODO: Raise OpenSSL::X509::CertificateError
         return(MutableString.CreateEmpty());
     }
     else
     {
         return(MutableString.CreateAscii(self._certificate.GetPublicKeyString()));
     }
 }
コード例 #4
0
        public static MutableString /*!*/ Convert(RubyClass /*!*/ self,
                                                  [DefaultProtocol, NotNull] MutableString /*!*/ toEncoding, [DefaultProtocol, NotNull] MutableString /*!*/ fromEncoding,
                                                  [DefaultProtocol] MutableString str)
        {
            MutableString[] convertedStrings = Convert(toEncoding, fromEncoding, new MutableString[] { str, null });
            MutableString   result           = MutableString.CreateEmpty();

            foreach (MutableString s in convertedStrings)
            {
                result.Append(s);
            }
            return(result);
        }
コード例 #5
0
ファイル: IoTests.cs プロジェクト: zgramana/IronLanguages.PCG
        public void Dir1()
        {
            RubyClass dir    = Context.GetClass(typeof(RubyDir));
            Pal1      pal    = (Pal1)Context.Platform;
            var       sjis   = RubyEncoding.KCodeSJIS.StrictEncoding.GetBytes("ホ");
            var       toPath = new ConversionStorage <MutableString>(Context);

            // transcode to UTF8 if no KCODE specified
            Context.KCode = null;
            RubyDir.MakeDirectory(toPath, dir, MutableString.CreateBinary(new byte[] { 0xce, 0xa3 }, RubyEncoding.Binary), null);
            Assert(pal.Entries["Σ"]);
            pal.Entries.Clear();

            // transcode to UTF8 if no KCODE specified
            Context.KCode = null;
            RubyDir.MakeDirectory(toPath, dir, MutableString.CreateMutable("ホア", RubyEncoding.KCodeSJIS), null);
            Assert(pal.Entries["α"]);
            Assert(FileTest.IsDirectory(toPath, Context.KernelModule, MutableString.CreateMutable("ホア", RubyEncoding.KCodeSJIS)));
            Assert(FileTest.IsDirectory(toPath, Context.KernelModule, MutableString.CreateMutable("α", RubyEncoding.KCodeUTF8)));
            pal.Entries.Clear();

            // transcode to KCODE if specified
            Context.KCode = RubyEncoding.KCodeUTF8;
            RubyDir.MakeDirectory(toPath, dir, MutableString.CreateBinary(new byte[] { 0xce, 0xa3 }, RubyEncoding.KCodeSJIS), null);
            Assert(pal.Entries["Σ"]);
            pal.Entries.Clear();

            // transcode to KCODE if specified
            Context.KCode = RubyEncoding.KCodeSJIS;
            RubyDir.MakeDirectory(toPath, dir, MutableString.CreateBinary(sjis, RubyEncoding.Binary), null);
            Assert(pal.Entries["ホ"]);
            pal.Entries.Clear();

            // ignore entries whose name cannot be encoded using the current KCODE
            Context.KCode = RubyEncoding.KCodeSJIS;
            AssertExceptionThrown <EncoderFallbackException>(() => RubyEncoding.KCodeSJIS.StrictEncoding.GetBytes("Ԋ"));
            pal.Entries["Ԋ"] = true;
            pal.Entries["ホ"] = true;
            var entries = RubyDir.GetEntries(toPath, dir, MutableString.CreateEmpty());

            Assert(entries.Count == 3);
            foreach (MutableString entry in entries)
            {
                Assert(entry.Encoding == RubyEncoding.KCodeSJIS);
            }

            Assert(((MutableString)entries[0]).Equals(MutableString.CreateAscii(".")));
            Assert(((MutableString)entries[1]).Equals(MutableString.CreateAscii("..")));
            Assert(((MutableString)entries[2]).Equals(MutableString.Create("ホ", RubyEncoding.KCodeSJIS)));
        }
コード例 #6
0
        public GeneratorState()
        {
            _seen = new List <long>();

            Indent      = MutableString.CreateEmpty();
            Space       = MutableString.CreateEmpty();
            SpaceBefore = MutableString.CreateEmpty();
            ObjectNl    = MutableString.CreateEmpty();
            ArrayNl     = MutableString.CreateEmpty();

            CheckCircular = true;
            AllowNaN      = false;
            MaxNesting    = DEFAULT_MAX_NESTING;
        }
コード例 #7
0
ファイル: StringScanner.cs プロジェクト: ltwlf/IronSP
        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));
        }
コード例 #8
0
ファイル: StringScanner.cs プロジェクト: ltwlf/IronSP
        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));
        }
コード例 #9
0
ファイル: OpenSSL.cs プロジェクト: parhelia512/ironruby
            public static MutableString /*!*/ RandomBytes(RubyModule /*!*/ self, [DefaultProtocol] int length)
            {
                if (length < 0)
                {
                    throw RubyExceptions.CreateArgumentError("negative string size");
                }

                if (length == 0)
                {
                    return(MutableString.CreateEmpty());
                }

                byte[] data      = new byte[length];
                var    generator = new Crypto.RNGCryptoServiceProvider();

                generator.GetBytes(data);

                return(MutableString.CreateBinary(data));
            }
コード例 #10
0
ファイル: IoTests.cs プロジェクト: rudimk/dlr-dotnet
        public void Dir2()
        {
            RubyClass dir  = Context.GetClass(typeof(RubyDir));
            Pal1      pal  = (Pal1)Context.Platform;
            var       sjis = RubyEncoding.KCodeSJIS.StrictEncoding.GetBytes("ホ");

            // use the string encoding if given
            RubyDir.MakeDirectory(dir, MutableString.CreateBinary(sjis, RubyEncoding.KCodeSJIS.RealEncoding), null);
            Assert(pal.Entries["ホ"]);

            // IO system returns UTF8 encoded strings:
            var entries = RubyDir.GetEntries(dir, MutableString.CreateEmpty());

            Assert(entries.Count == 3);
            Assert(((MutableString)entries[0]).Equals(MutableString.CreateAscii(".")));
            Assert(((MutableString)entries[1]).Equals(MutableString.CreateAscii("..")));
            Assert(((MutableString)entries[2]).Equals(MutableString.Create("ホ", RubyEncoding.UTF8)));

            pal.Entries.Clear();
        }
コード例 #11
0
ファイル: OpenSSL.cs プロジェクト: parhelia512/ironruby
                public static MutableString ToString(RubyContext /*!*/ context, Certificate /*!*/ self)
                {
                    using (IDisposable handle = RubyUtils.InfiniteInspectTracker.TrackObject(self)) {
                        // #<OpenSSL::X509::Certificate subject=, issuer=, serial=0, not_before=nil, not_after=nil>
                        var result = MutableString.CreateEmpty();
                        result.Append("#<");
                        result.Append(context.Inspect(context.GetClassOf(self)));

                        if (handle == null)
                        {
                            return(result.Append(":...>"));
                        }
                        bool empty = self.IsEmpty;
                        result.AppendFormat(" subject={0}, issuer={1}, serial={2}, not_before=nil, not_after=nil>",
                                            empty ? "" : OpenSSLFormat(self._certificate.Subject),
                                            empty ? "" : OpenSSLFormat(self._certificate.Issuer),
                                            empty ? 0 : self.SerailNumber
                                            );
                        return(result);
                    }
                }
コード例 #12
0
ファイル: zlib.cs プロジェクト: david50407/main
 internal override MutableString /*!*/ Finish()
 {
     return(GetStream().IsInitialized ? Compress(this, null, FINISH) : MutableString.CreateEmpty());
 }