public static void AppendIf(this ITextRender output, String content, String prefix = "")
 {
     if (content.isNullOrEmpty())
     {
         return;
     }
     output.AppendLine(prefix + content);
 }
 public void Report(rangeFinder ranger, ITextRender output, String rangeName, String prefix)
 {
     output.AppendLine("Range [" + rangeName + "]");
     output.nextTabLevel();
     foreach (var pair in ranger.GetDictionary(prefix))
     {
         output.AppendPair(pair.Key, pair.Value.ToString("F3"));
     }
     output.prevTabLevel();
 }
        public void Describe(ITextRender output)
        {
            output.AppendLine("Set calls [" + SetCalls + "]");
            output.AppendLine("Set prevented [" + SetPrevented + "]");
            output.AppendLine("Set saved to file [" + SetSavedToFile + "]");
            output.AppendLine("Set already in memory [" + SetAlreadyInMemory + "]");

            output.AppendLine("Get calls [" + GetCalls + "]");
            output.AppendLine("Get prevented [" + GetPrevented + "]");
            output.AppendLine("Get from file [" + GetFromFile + "]");
            output.AppendLine("Get from memory [" + GetFromMemory + "]");
        }
Пример #4
0
        /// <summary>
        /// Computes the similarity for the result object
        /// </summary>
        /// <param name="result">The result object, previously created with <see cref="Prepare(IEnumerable{HtmlNode}, string, List{string})" /></param>
        /// <param name="output">The output.</param>
        /// <param name="documents">Optional: select subset of documents to be analysed. These must be within <see cref="result" /> inner collections</param>
        /// <returns>
        /// The same result object specified in parameters
        /// </returns>
        public DocumentSimilarityResult ComputeSimilarity(DocumentSimilarityResult result, ITextRender output, List <HtmlNode> documents = null)
        {
            if (documents.isNullOrEmpty())
            {
                documents = result.LeafDictionaryByDocuments.Keys.ToList();
            }

            List <ComputeSimilarityTask> tasks = new List <ComputeSimilarityTask>();

            for (int i = 0; i < documents.Count - 1; i++)
            {
                for (int y = i + 1; y < documents.Count; y++)
                {
                    ComputeSimilarityTask task = new ComputeSimilarityTask()
                    {
                        documentA = documents[i],
                        documentB = documents[y],
                        nGrams_A  = result.NGramsByDocuments[documents[i]],
                        nGrams_B  = result.NGramsByDocuments[documents[y]]
                    };
                    tasks.Add(task);

                    //var documentA = ;
                    //var documentB = documents[y];

                    //var ABResult = ComputeSimilarity(documentA, documentB, result);
                    //result.AddResult(ABResult);
                }
            }

            var task_chunks = tasks.SplitBySize((tasks.Count / 5));

            foreach (var task_chunk in task_chunks)
            {
                output.AppendLine("Executing similarity computation task chunk [size:" + task_chunk.Count + "] " + task_chunks.IndexOf(task_chunk) + " of " + task_chunks.Count);

                Parallel.ForEach <ComputeSimilarityTask>(task_chunk, x =>
                {
                    ComputeSimilarity(x);
                }
                                                         );

                foreach (var task in task_chunk)
                {
                    if (task.output != null)
                    {
                        result.AddResult(task.output);
                    }
                }
            }



            return(result);
        }
 /// <summary>
 /// To the string.
 /// </summary>
 /// <param name="output">The output.</param>
 /// <param name="showNumber">if set to <c>true</c> [show number].</param>
 /// <param name="format">The format.</param>
 public virtual void ToString(ITextRender output, Boolean showNumber, String format = "{0,8} : {1}")
 {
     foreach (KeyValuePair <int, string> pair in results)
     {
         try
         {
             if (showNumber)
             {
                 output.AppendLine(String.Format(format, pair.Key, pair.Value));
             }
             else
             {
                 output.AppendLine(pair.Value);
             }
         }
         catch (Exception ex)
         {
             Thread.Sleep(250);
             output.AppendLine("--- output broken: " + ex.Message);
             break;
         }
     }
 }
        public void Report(folderNode folder, ITextRender output)
        {
            if (output == null)
            {
                return;
            }

            this.ReportBase(output, false, "TaskSelectionSpanCollection");

            foreach (var item in items)
            {
                output.AppendLine(item.GetSignature());

                item.Report(folder, output);
            }
        }
Пример #7
0
        //public static void TakeContent(this IReportDocument document)
        //{

        //    base.TakeContent();

        //    foreach (reportDocument doc in posts)
        //    {
        //        doc.TakeContent();
        //    }
        //}
        public static reportDocument AddChild(this IReportDocument parent, reportDocumentType postType, String title, ITextRender logger = null, String _bid = "")
        {
            reportDocument output = new reportDocument(postType)
            {
                Title = title,
                BID   = _bid.or(parent.BID),
            };

            if (parent is reportDocument parentReportDocument)
            {
                output.parent = parentReportDocument;
                if (logger != null)
                {
                    logger.AppendLine("New [" + postType.ToString() + "] [" + title + "] created under [" + parentReportDocument.Title + "]");
                }
            }


            parent.Children.Add(output);



            return(output);
        }
Пример #8
0
 /// <summary>
 /// Describes the specified output.
 /// </summary>
 /// <param name="output">The output.</param>
 public void Describe(ITextRender output)
 {
     output.AppendPair("Current", currentlyUsed.ToString("F2") + "mb", true, ":");
     output.AppendLine("Limits N(" + limit_normal.ToString("#,###") + "mb" + ") C(" + limit_critical.ToString("#,###") + ")");
     output.AppendPair("Directive", currentMode.ToString(), true, ":");
 }
        /// <summary>
        /// REturns count of phrased bank accounts
        /// </summary>
        /// <param name="input">The input.</param>
        /// <param name="output">The output.</param>
        /// <returns></returns>
        public Int32 FromString(String input, Boolean onlyUnique = true, ITextRender output = null)
        {
            if (input.isNullOrEmpty())
            {
                return(0);
            }

            Int32 c_old = this.Count;

            input = input.Replace("-", "");
            input = input.Replace(" ", "");

            var lines = input.Split(Environment.NewLine.ToArray(), StringSplitOptions.RemoveEmptyEntries);

            if (input.Length > digits)
            {
                Int32 mod = input.Length % digits;
                Int32 cnt = input.Length / digits;
                if (mod == 0)
                {
                    if (lines.Length == 1)
                    {
                        List <String> splicedLines = new List <string>();

                        for (int i = 0; i < cnt; i++)
                        {
                            Int32 index = i * digits;
                            splicedLines.Add(input.Substring(index, digits));
                        }

                        lines = splicedLines.ToArray();
                    }
                }
            }

            foreach (string ln in lines)
            {
                String lnt = ln.Trim();
                if (lnt.isNullOrEmpty())
                {
                    continue;
                }
                if (lnt.Length < 6)
                {
                    continue;
                }

                if (nonNumericCharacters.IsMatch(lnt))
                {
                    if (output != null)
                    {
                        output.AppendLine("Line: [" + lnt + "] contains letters. Ignored.");
                    }
                    continue;
                }

                var entry = new bankAccountNumber(lnt);
                AddEntry(entry, onlyUnique);
            }

            return(Count - c_old);
        }
Пример #10
0
        /// <summary>
        /// Reports the command tree.
        /// </summary>
        /// <param name="tree">The tree.</param>
        /// <param name="output">The output.</param>
        public static void ReportCommandTree(this commandTree tree, ITextRender output, Boolean paginate, Int32 lastPageLine = 0, aceCommandConsoleHelpOptions option = aceCommandConsoleHelpOptions.full)
        {
            output.AppendHeading(tree.name.ToUpper(), 1);

            output.AppendParagraph(tree.description);

            if (tree.helpLines.Any())
            {
                output.AppendHeading("Description", 2);
                foreach (String ln in tree.helpLines)
                {
                    output.AppendLine(ln);
                }
            }

            if (option.HasFlag(aceCommandConsoleHelpOptions.parameters))
            {
                output.AppendHeading("Properties", 2);

                foreach (var pair in tree.properties)
                {
                    output.AppendPair(pair.Value.Name, pair.Value.PropertyType.Name, true, ":");
                }

                output.AppendHorizontalLine();
            }

            if (option.HasFlag(aceCommandConsoleHelpOptions.plugins))
            {
                output.AppendHeading("Plugins", 2);

                foreach (var pair in tree.plugins)
                {
                    output.AppendPair(pair.Key.Trim('.'), pair.Value.GetType().Name, true, ":");

                    var methods = pair.Value.GetType().GetMethods(BindingFlags.Instance | BindingFlags.Public);
                    if (Enumerable.Any <MethodInfo>(methods))
                    {
                        List <String> lst = new List <string>();
                        foreach (MemberInfo mInfo in Enumerable.Where <MethodInfo>(methods, x => x.Name.StartsWith(aceMenuItemMeta.METHOD_PREFIX)))
                        {
                            lst.Add(pair.Key.add(mInfo.Name.removeStartsWith(aceMenuItemMeta.METHOD_PREFIX), ".").Trim('.'));
                        }

                        output.AppendList(lst);
                    }
                }

                output.AppendHorizontalLine();
            }

            if (option.HasFlag(aceCommandConsoleHelpOptions.modules))
            {
                output.AppendHeading("Modules", 2);

                foreach (var pair in tree.modules)
                {
                    output.AppendPair(pair.Value.Name, pair.Value.PropertyType.Name, true, ":");
                }

                output.AppendHorizontalLine();
            }

            //if (option.HasFlag(aceCommandConsoleHelpOptions.brief))
            //{
            //    output.AppendHeading("Overview", 2);

            //    foreach (var pair in tree.flatAccess)
            //    {
            //        output.AppendPair(pair.Value.path.Trim('.'), pair.Value.menuMeta.cmdParams.ToString(false, true, true), true, " ");
            //    }

            //    output.AppendHorizontalLine();
            //}

            if (option.HasFlag(aceCommandConsoleHelpOptions.commands))
            {
                foreach (commandTreeDescription node in tree)
                {
                    node.ReportCommandNode(output, paginate, lastPageLine);
                }
            }
        }
Пример #11
0
        public static void ReportCommandNode(this commandTreeDescription node, ITextRender output, Boolean paginate, Int32 lastPageLine = 0)
        {
            // output.open("div", node.item.name, node.item.description);
            if (lastPageLine == 0)
            {
                lastPageLine = Convert.ToInt32(output.Length);
            }

            switch (node.nodeLevel)
            {
            case commandTreeNodeLevel.parameter:
                output.AppendPair(node.path.Trim('.'), node.memberMeta.relevantTypeName);

                break;

            case commandTreeNodeLevel.module:
                output.AppendPair(node.path.Trim('.'), node.memberMeta.relevantTypeName);
                foreach (commandTreeDescription snode in node)
                {
                    snode.ReportCommandNode(output, paginate, lastPageLine);
                }
                break;

            case commandTreeNodeLevel.group:
                output.open("div", "Group: " + node.path.Trim('.'), node.description);

                foreach (commandTreeDescription snode in node)
                {
                    snode.ReportCommandNode(output, paginate, lastPageLine);
                }

                output.close();
                output.AppendHorizontalLine();
                break;

            case commandTreeNodeLevel.plugin:
                output.open("div", "Plugin: " + node.path.Trim('.'), node.description);

                foreach (commandTreeDescription tnode in node)
                {
                    node.ReportCommandNode(output, paginate, lastPageLine);
                }
                output.close();
                output.AppendHorizontalLine();
                break;

            case commandTreeNodeLevel.type:
                output.open("div", "Console: " + node.path.Trim('.'), node.description);

                foreach (commandTreeDescription tnode in node)
                {
                    node.ReportCommandNode(output, paginate, lastPageLine);
                }
                output.close();
                output.AppendHorizontalLine();
                break;

            case commandTreeNodeLevel.command:

                String cTitle = "";

                if (node.parent != null)
                {
                    cTitle = node.parent.path + " [" + node.name.toStringSafe() + "]";
                }

                ReportCommandDesc(node, output, cTitle);

                if (paginate)
                {
                    if ((lastPageLine - output.lastLength) >= output.zone.innerBoxedHeight)
                    {
                        lastPageLine = (int)output.lastLength;
                        Paginate();
                    }
                }
                break;
            }

            if (node.helpLines.Any())
            {
                output.open("div", "Additional help:");
                foreach (String ln in node.helpLines)
                {
                    output.AppendLine(ln);
                }
                output.close();
            }

            if (paginate)
            {
                if ((lastPageLine - output.lastLength) >= output.zone.innerBoxedHeight)
                {
                    lastPageLine = (int)output.lastLength;
                    Paginate();
                }
            }
        }
Пример #12
0
        /// <summary>
        /// Gets the clusters by target.
        /// </summary>
        /// <param name="result">The result.</param>
        /// <param name="collectionName">Name of the collection.</param>
        /// <param name="output">The output.</param>
        /// <param name="scoreSelector">The score selector.</param>
        /// <returns></returns>
        public DocumentClusterCollection GetClustersByTarget(DocumentSimilarityResult result, String collectionName = "Clusters", ITextRender output = null)
        {
            List <DocumentClusterCollection> candidates = new List <DocumentClusterCollection>();

            List <DocumentClusterCollection> others = new List <DocumentClusterCollection>();



            List <Func <DocumentSimilarityResultPair, double> > scoreSelectors = settings.SimilarityScoreSource.GetSelectorList();


            if (settings.TargetClusterCount > 0)
            {
                var minSimRange = settings.GetMinSimilarityRange();

                var minSimScores = minSimRange.GetValueRangeZigZagSteps(settings.TargetSearchSteps);

                Int32 si = 0;
                foreach (var minSimScore in minSimScores)
                {
                    si++;

                    foreach (var scoreSelector in scoreSelectors)
                    {
                        DocumentClusterCollection currentClusters = GetClusters(result, collectionName, scoreSelector, minSimScore);

                        if (output != null)
                        {
                            output.AppendLine($"Clusterization iteration {si}/{minSimScores.Count} with minSimScore: {minSimScore} : Clusters[{currentClusters.Count}] - NullCluster[{currentClusters.NullCluster.items.Count}]");
                        }

                        if (currentClusters.Count == settings.TargetClusterCount)
                        {
                            if (currentClusters.NullCluster.items.Any())
                            {
                                candidates.Add(currentClusters);
                            }
                            else
                            {
                                if (output != null)
                                {
                                    output.AppendLine($"Match found _{si}/{minSimScores.Count}_ with minSimScore: {minSimScore} : Clusters[{currentClusters.Count}] - NullCluster[{currentClusters.NullCluster.items.Count}]");
                                }
                                return(currentClusters);
                            }
                        }
                        else
                        {
                            others.Add(currentClusters);
                        }
                    }
                }

                if (candidates.Any())
                {
                    return(candidates.FirstOrDefault());
                }

                var sorted = others.OrderBy(x => Math.Abs(settings.TargetClusterCount - x.Count));
                return(sorted.FirstOrDefault());
            }


            return(GetClusters(result, collectionName, scoreSelectors.First(), settings.MinScoreInRangeCriterion));
        }
 public void Describe(ITextRender output)
 {
     output.AppendLine("Cache Provider [" + instanceID + "]");
     memoryWatch.Describe(output);
     stats.Describe(output);
 }