示例#1
0
        private static void MakeDataField(string FileAddress)
        {
            var Bytes = System.IO.File.ReadAllBytes(FileAddress);

            CurrentBlock.NewBlock(() =>
            {
                CurrentBlock += $"public static readonly string Url =\"data:image/gif;base64,{Convert.ToBase64String(Bytes)}\";";
            });
        }
示例#2
0
        private static void MakeBytesAsbyte(byte[] Bytes, string ToVariable)
        {
            var ZipMemmory = new System.IO.MemoryStream();

            using (var Zipper = new System.IO.Compression.DeflateStream(ZipMemmory, System.IO.Compression.CompressionLevel.Optimal))
            {
                Zipper.Write(Bytes, 0, Bytes.Length);
            }
            Bytes = ZipMemmory.ToArray();

            var strBytes = new char[Bytes.Length * 4];
            var bytelen  = Bytes.Length / 4;

            for (int i = 0; i < Bytes.Length; i++)
            {
                var strByte = Bytes[i] * 3;
                var bytepos = i * 4;
                strBytes[bytepos]     = ByteToChars[strByte];
                strBytes[bytepos + 1] = ByteToChars[strByte + 1];
                strBytes[bytepos + 2] = ByteToChars[strByte + 2];
                strBytes[bytepos + 3] = ',';
            }

            CurrentBlock += "{";
            CurrentBlock.NewBlock(() =>
            {
                CurrentBlock += "var ZipMemmory = new System.IO.MemoryStream(new byte[] {" + new string(strBytes) + "});";
                CurrentBlock += "var DezippedMemory = new System.IO.MemoryStream();";
                CurrentBlock += "using (var Dezip = new System.IO.Compression.DeflateStream(ZipMemmory, System.IO.Compression.CompressionMode.Decompress))";
                CurrentBlock += "{";
                CurrentBlock.NewBlock("Dezip.CopyTo(DezippedMemory);");
                CurrentBlock += "}";
                CurrentBlock += ToVariable + " = DezippedMemory.ToArray();";
            });
            CurrentBlock += "}\n";
        }
示例#3
0
        private static void MakeBytesAsB64(byte[] Bytes, string ToVariable)
        {
            var ZipMemmory = new System.IO.MemoryStream();

            using (var Zipper = new System.IO.Compression.DeflateStream(ZipMemmory, System.IO.Compression.CompressionLevel.Optimal))
            {
                Zipper.Write(Bytes, 0, Bytes.Length);
            }
            Bytes = ZipMemmory.ToArray();
            var Text = System.Convert.ToBase64String(Bytes);

            CurrentBlock += "{";
            CurrentBlock.NewBlock(() =>
            {
                CurrentBlock += "var ZipMemmory = new System.IO.MemoryStream(System.Convert.FromBase64String(\"" + Text + "\"));";
                CurrentBlock += "var DezippedMemory = new System.IO.MemoryStream();";
                CurrentBlock += "using (var Dezip = new System.IO.Compression.DeflateStream(ZipMemmory, System.IO.Compression.CompressionMode.Decompress))";
                CurrentBlock += "{";
                CurrentBlock.NewBlock("Dezip.CopyTo(DezippedMemory);");
                CurrentBlock += "}";
                CurrentBlock += ToVariable + " = DezippedMemory.ToArray();";
            });
            CurrentBlock += "}\n";
        }
示例#4
0
        void MakeForDir(System.IO.DirectoryInfo dirinfo)
        {
            foreach (var file in dirinfo.GetFiles())
            {
                var FileName = file.Name.Replace(".", "_");
                FileName      = FileName.Replace("-", "_");
                CurrentBlock += "public class " + FileName;
                CurrentBlock += "{";
                if (file.Name.ToLower().EndsWith("css"))
                {
                    MakeDataField(file.FullName);
                }
                else if (file.Name.ToLower().EndsWith("js"))
                {
                    CurrentBlock.NewBlock(() =>
                    {
                        CurrentBlock += "public static readonly string TextContent = ((Func<string>)(() =>";
                        CurrentBlock += "{";
                        CurrentBlock.NewBlock(() =>
                        {
                            CurrentBlock += "byte[] Result = null;";
#if DEBUG
                            MakeBytesAsB64(Encoding.UTF8.GetBytes(System.IO.File.ReadAllText(file.FullName)), "Result");
#else
                            MakeBytesAsbyte(System.IO.File.ReadAllBytes(file.FullName), "Result");
#endif
                            CurrentBlock += "return System.Text.Encoding.UTF8.GetString(Result);";
                        });
                        CurrentBlock += "}))();\n";
                    });
                }
                else if (file.Name.ToLower().EndsWith("html") | file.Name.ToLower().EndsWith("htm"))
                {
                    //Use the default configuration for AngleSharp
                    var config = Configuration.Default;

                    //Create a new context for evaluating webpages with the given config
                    var context = BrowsingContext.New(config);

                    //Source to be parsed
                    var source = System.IO.File.ReadAllText(file.FullName);

                    //Create a virtual request to specify the document to load (here from our fixed string)
                    var web = context.OpenAsync(req => req.Content(source)).GetAwaiter().GetResult();

                    var ElementIds  = new string[0];
                    var ElementTags = new string[0];
                    foreach (var Element in web.All)
                    {
                        string Attribute = null;
                        if (Element.GetAttribute("src") != null)
                        {
                            Attribute = "src";
                        }
                        else if (Element.GetAttribute("href") != null & Element.TagName.ToLower() == "link")
                        {
                            Attribute = "href";
                        }
                        if (Attribute != null)
                        {
                            string Address = file.DirectoryName + "\\" + Element.GetAttribute(Attribute).Replace("/", "\\");
                            if (System.IO.File.Exists(Address))
                            {
                                Address = new System.IO.FileInfo(Address).FullName;
                                if (Address.StartsWith(BaseDir))
                                {
                                    Element.RemoveAttribute(Attribute);
                                    Element.SetAttribute("MNsrc",
                                                         "Monsajem_Incs.Resources" +
                                                         Address.Substring(BaseDir.Length).
                                                         Replace(".", "_").
                                                         Replace("-", "_").
                                                         Replace("\\", "."));
                                }
                            }
                        }
                    }
                    foreach (var Element in web.All)
                    {
                        if (Element.Id != null)
                        {
                            Array.Resize(ref ElementIds, ElementIds.Length + 1);
                            ElementIds[ElementIds.Length - 1] = Element.Id;
                            Array.Resize(ref ElementTags, ElementTags.Length + 1);
                            ElementTags[ElementTags.Length - 1] = Element.TagName.ToUpper();
                        }
                    }

                    if (ElementIds.Length > 0)
                    {
                        string DocText = "<html>" +
                                         "<head>" + web.GetElementsByTagName("head")[0].InnerHtml + "</head>" +
                                         "<body>" + web.GetElementsByTagName("body")[0].InnerHtml + "</body></html>";

                        for (int i = 0; i < ElementIds.Length; i++)
                        {
                            if (ElementTags[i] == "INPUT")
                            {
                                ElementTags[i] = "HTMLInputElement";
                            }
                            else if (ElementTags[i] == "LABEL")
                            {
                                ElementTags[i] = "HTMLLabelElement";
                            }
                            else if (ElementTags[i] == "DIV")
                            {
                                ElementTags[i] = "HTMLDivElement";
                            }
                            else if (ElementTags[i] == "DL")
                            {
                                ElementTags[i] = "HTMLDListElement";
                            }
                            else if (ElementTags[i] == "BUTTON")
                            {
                                ElementTags[i] = "HTMLButtonElement";
                            }
                            else if (ElementTags[i] == "AREA")
                            {
                                ElementTags[i] = "HTMLAreaElement";
                            }
                            else if (ElementTags[i] == "IMG")
                            {
                                ElementTags[i] = "HTMLImageElement";
                            }
                            else if (ElementTags[i] == "TABLE")
                            {
                                ElementTags[i] = "HTMLTableElement";
                            }
                            else if (ElementTags[i] == "TR")
                            {
                                ElementTags[i] = "HTMLTableRowElement";
                            }
                            else if (ElementTags[i] == "TD")
                            {
                                ElementTags[i] = "HTMLTableDataCellElement";
                            }
                            else if (ElementTags[i] == "SELECT")
                            {
                                ElementTags[i] = "HTMLSelectElement";
                            }
                            else if (ElementTags[i] == "OPTION")
                            {
                                ElementTags[i] = "HTMLOptionElement";
                            }
                            else if (ElementTags[i] == "IFRAME")
                            {
                                ElementTags[i] = "HTMLIFrameElement";
                            }
                            else
                            {
                                ElementTags[i] = "HTMLElement";
                            }
                        }


                        CurrentBlock.NewBlock(() =>
                        {
                            CurrentBlock += "public static readonly string HtmlText = ((Func<string>)(() =>";
                            CurrentBlock += "{";
                            CurrentBlock.NewBlock(() =>
                            {
                                CurrentBlock += "byte[] ByteResult = null;";

                                CurrentBlock += $"var Result =\n@\"{DocText.Replace("\"", "\"\"")}\";";

                                CurrentBlock += "var Doc = Document.Parse(Result);";
                                CurrentBlock += "var Elements = Doc.GetElementsByTagName(\"*\").ToArray();";
                                CurrentBlock += "foreach(var Element in Elements)";
                                CurrentBlock += "{";
                                CurrentBlock.NewBlock(() =>
                                {
                                    CurrentBlock += "var MNsrc = Element.GetAttribute(\"MNsrc\");";
                                    CurrentBlock += "if (MNsrc == \"\")";
                                    CurrentBlock += "MNsrc = null;";
                                    CurrentBlock += "if (MNsrc != null)";
                                    CurrentBlock += "{";
                                    CurrentBlock.NewBlock(() =>
                                    {
                                        CurrentBlock += "Element.RemoveAttribute(\"MNsrc\");";
                                        CurrentBlock += "var TagName = Element.TagName.ToLower();";
                                        CurrentBlock += "switch(TagName)";
                                        CurrentBlock += "{";
                                        CurrentBlock.NewBlock(() =>
                                        {
                                            CurrentBlock += "case \"script\":";
                                            CurrentBlock.NewBlock(() =>
                                            {
                                                CurrentBlock += "Element.InnerHtml = (string)Type.GetType(MNsrc).GetField(\"TextContent\").GetValue(null);";
                                                CurrentBlock += "break;";
                                            });
                                            CurrentBlock += "case \"img\":";
                                            CurrentBlock.NewBlock(() =>
                                            {
                                                CurrentBlock += "Element.SetAttribute(\"src\",(string)Type.GetType(MNsrc).GetField(\"Url\").GetValue(null));";
                                                CurrentBlock += "break;";
                                            });
                                            CurrentBlock += "case \"link\":";
                                            CurrentBlock.NewBlock(() =>
                                            {
                                                CurrentBlock += "if (Element.GetAttribute(\"type\").ToLower() == \"text/css\")";
                                                CurrentBlock += "{";
                                                CurrentBlock.NewBlock(() =>
                                                {
                                                    CurrentBlock += "var Style = Document.document.CreateElement<HTMLStyleElement>();";
                                                    CurrentBlock += "Element.SetAttribute(\"src\",(string)Type.GetType(MNsrc).GetField(\"Url\").GetValue(null));";
                                                    CurrentBlock += "Element.ParentElement.ReplaceChild(Style, Element);";
                                                });
                                                CurrentBlock += "}";
                                                CurrentBlock += "break;";
                                            });
                                        });
                                        CurrentBlock += "}";
                                    });
                                    CurrentBlock += "}";
                                });
                                CurrentBlock += "}";

                                CurrentBlock += "Result = \"<html>\\\"\" +" +
                                                "\"<head>\" + Doc.GetElementsByTagName(\"head\")[0].InnerHtml + \"</head>\" +" +
                                                "\"<body>\" + Doc.GetElementsByTagName(\"body\")[0].InnerHtml + \"</body></html>\";";
                                CurrentBlock += "return Result;";
                            });
                            CurrentBlock += "}))();\n";

                            for (int i = 0; i < ElementIds.Length; i++)
                            {
                                CurrentBlock += "public readonly " + ElementTags[i] + " " + ElementIds[i] + ";";
                            }
                            CurrentBlock += "public " + FileName + "():this(false){}";
                            CurrentBlock += "public " + FileName + "(bool IsGlobal)";
                            CurrentBlock += "{";
                            CurrentBlock.NewBlock(() =>
                            {
                                CurrentBlock += "if(IsGlobal==true)";
                                CurrentBlock += "{";
                                CurrentBlock.NewBlock(() =>
                                {
                                    CurrentBlock += "var Document = new Document();";
                                    for (int i2 = 0; i2 < ElementIds.Length; i2++)
                                    {
                                        CurrentBlock += ElementIds[i2] + "= Document.GetElementById<" + ElementTags[i2] + ">(\"" + ElementIds[i2] + "\");";
                                    }
                                    CurrentBlock += "return;";
                                });
                                CurrentBlock += "}";

                                CurrentBlock += "var doc =  Document.Parse(HtmlText);";
                                CurrentBlock += "var HeadTags = doc.Head.GetElementsByTagName(\"*\").ToArray();";
                                CurrentBlock += "foreach(var Tag in HeadTags)";
                                CurrentBlock += "Document.document.Head.AppendChild(Tag);";

                                for (int i2 = 0; i2 < ElementIds.Length; i2++)
                                {
                                    CurrentBlock += ElementIds[i2] + "= doc.GetElementById<" + ElementTags[i2] + ">(\"" + ElementIds[i2] + "\");";
                                }

                                CurrentBlock += "var div = Document.document.CreateElement(\"Div\");";
                                CurrentBlock += "div.AppendChild(doc.Body);";

                                CurrentBlock += "var Scripts = div.GetElementsByTagName(\"Script\").ToArray();";
                                CurrentBlock += "foreach(var Script in Scripts)";
                                CurrentBlock += "{";
                                CurrentBlock.NewBlock(() =>
                                {
                                    CurrentBlock += "var NewScript = Document.document.CreateElement(\"Script\");";
                                    CurrentBlock += "var Src = Script.GetAttribute(\"src\");";
                                    CurrentBlock += "if(Src!=null)";
                                    CurrentBlock.NewBlock(() =>
                                                          CurrentBlock += "NewScript.SetAttribute(\"src\",Src);");
                                    CurrentBlock += "NewScript.InnerHtml = Script.InnerHtml;";
                                    CurrentBlock += "Script.ParentElement.ReplaceChild(NewScript, Script);";
                                });
                                CurrentBlock += "}";

                                CurrentBlock += "div.SetStyleAttribute(\"display\",\"none\");";
                                CurrentBlock += "Document.document.Body.AppendChild(div);";

                                CurrentBlock += "Document.document.Body.RemoveChild(div);";
                                for (int i2 = 0; i2 < ElementIds.Length; i2++)
                                {
                                    CurrentBlock += ElementIds[i2] + ".Id=\"\";";
                                }
                            });
                            CurrentBlock += "}";
                        });
                    }
                }
                else
                {
                    MakeDataField(file.FullName);
                }

                CurrentBlock += "\n" + AddTabs() + "}";
            }

            foreach (var Dir in dirinfo.GetDirectories())
            {
                CurrentBlock += "\n" + AddTabs() + "namespace " + Dir.Name.Replace(".", "_") +
                                "\n" + AddTabs() + "{";
                Tabs += 1;
                MakeForDir(Dir);
                Tabs         -= 1;
                CurrentBlock += "\n" + AddTabs() + "}";
            }
        }