Пример #1
0
        static string SimpleJobDllLoadTypes()
        {
            string   dir             = Environment.CurrentDirectory;
            IReceive folderWithDll   = new ReceiverFolderHierarchical("#static:Directory.GetCurrentDirectory()#", "*.dll");
            var      filterFiles     = new FilterForFilesHierarchical();
            var      recContentFile  = new ReceiverFromDllRelational();
            var      loadDllromFiles = new TransformerApplyReceiver(recContentFile, "DllFileName", "FullName");

            var    fileRazor  = Path.Combine(dir, "relationalGeneric.cshtml");
            string filename   = "#static:Directory.GetCurrentDirectory()#\\relationalDLL.html";
            ISend  senderHTML = new SyncSenderMultiple(
                new Sender_Text(filename, "<html><body>")
            {
                FileMode = FileMode.Create
            },
                new Sender_HTMLRazor("Views/" + Path.GetFileName(fileRazor), filename),
                //new Sender_HTMLRelationViz("Name", filename),
                new Sender_Text(filename, "</body></html>")
                )
            ;
            var job = new SimpleJob();

            job.Receivers.Add(0, folderWithDll);
            job.FiltersAndTransformers.Add(0, filterFiles);
            job.FiltersAndTransformers.Add(1, loadDllromFiles);
            job.Senders.Add(0, senderHTML);
            return(job.SerializeMe());
        }
Пример #2
0
        public async Task TestTransformerApplyReceiverFiles()
        {
            #region arrange
            var dir = AppContext.BaseDirectory;
            dir = UtilsIO.DeleteCreateFolder(Path.Combine(dir, "TestTransformerApplyReceiverFiles"));
            string filename = Path.Combine(dir, "a.html");
            if (File.Exists(filename))
            {
                File.Delete(filename);
            }


            string fileNameToWrite = Guid.NewGuid().ToString("N") + ".txt";
            string fullNameFile    = Path.Combine(dir, fileNameToWrite);
            File.WriteAllText(fullNameFile, "andrei ignat" + Environment.NewLine + "aaa");
            var readFile = new ReceiverFileFromStorageLines(fullNameFile, Encoding.UTF8);
            readFile.ReadAllFirstTime = false;
            #endregion
            #region act
            IReceive r = new ReceiverFolderHierarchical(dir, "*.txt");
            await r.LoadData();

            var fi = new FilterForFilesHierarchical();
            fi.valuesRead = r.valuesRead;
            await fi.Run();

            var transformerApplyReceiver = new TransformerApplyReceiver(readFile, "FileToRead", "FullName");
            transformerApplyReceiver.valuesRead = fi.valuesTransformed;
            await transformerApplyReceiver.Run();

            #endregion
            #region assert
            transformerApplyReceiver.valuesTransformed.ShouldNotBeNull();
            transformerApplyReceiver.valuesTransformed.Length.ShouldBe(2, "2  lines above");
            #endregion
        }
Пример #3
0
        static string JobDllBlockly()
        {
            string   dir              = Environment.CurrentDirectory;
            IReceive folderWithDll    = new ReceiverFolderHierarchical("#static:Directory.GetCurrentDirectory()#", "*.dll");
            var      filterFiles      = new FilterForFilesHierarchical();
            var      recContentFile   = new ReceiverFromDllRelational();
            var      loadDllFromFiles = new TransformerApplyReceiver(recContentFile, "DllFileName", "FullName");
            //retain just types
            var filterTypes = new FilterRetainRelationalName(FilterType.Equal, "Types");
            //load types that are not generic or abstract
            //var justTypes = new FilterComparableEqual(typeof(string), "Types", "NameRelation");
            var notAbstract  = new FilterComparableEqual(typeof(bool), false, "IsAbstract");
            var notGeneric   = new FilterComparableEqual(typeof(bool), false, "IsGeneric");
            var notInterface = new FilterComparableEqual(typeof(bool), false, "IsInterface");
            //var noInterface = new FilterExcludeRelation("Interfaces");
            //var rel2plain = new TransformerRelationalToPlain();
            var haveProps = new FilterComparableGreat(typeof(int), 0, "PropertiesNr");
            //var justRelations = new FilterRetainItemsWithKey("NameRelation", FilterType.Equal);

            var    fileRazor  = Path.Combine(dir, "blockly.cshtml");
            string filename   = "#static:Directory.GetCurrentDirectory()#\\blockly.html";
            ISend  senderHTML = new SyncSenderMultiple(
                new Sender_Text(filename, "<html><body>")
            {
                FileMode = FileMode.Create
            },
                new Sender_HTMLRazor("Views/" + Path.GetFileName(fileRazor), filename),
                //new Sender_HTMLRelationViz("Name", filename),
                new Sender_Text(filename, "</body></html>")
                )
            ;
            var senderRow     = new SenderByRowToFile("Name", "txt", "Block Definition", "txt");
            var clear         = new TransformClearValues();
            var trReceiveHtml = new ReceiverHTMLTable(@"blockly.html", Encoding.UTF8);
            var decodeHtml    = new TransformerHtmlDecode();
            //var addJS = new TransformModifyField("Name", "{0}.js");
            var senderBlockTag          = new SenderByRowToFile("Name", "_def.txt", "Block definition", "txt");
            var senderBlockDefinitionJs = new SenderByRowToFile("Name", "_block.js", "Block JS", "js");
            var senderBlockCodeJs       = new SenderByRowToFile("Name", "_code.js", "Block CodeGenerator", "js");

            var job = new SimpleJobConditionalTransformers();

            job
            .AddReceiver(folderWithDll)
            .AddFilter(filterFiles)
            .AddTransformer(loadDllFromFiles)
            .AddFilter(filterTypes)
            .AddFilter(notAbstract)
            .AddFilter(notGeneric)
            .AddFilter(notInterface)
            .AddFilter(haveProps)
            //.AddTransformer(noInterface)
            //.AddTransformer(rel2plain)
            .AddSender(senderHTML)
            .AddTransformer(clear)
            .Add(clear, trReceiveHtml)
            .Add(trReceiveHtml, decodeHtml)
            .Add(decodeHtml, senderBlockTag)
            .Add(decodeHtml, senderBlockDefinitionJs)
            .Add(decodeHtml, senderBlockCodeJs)

            ;

            return(job.SerializeMe());
        }