public static ClassifiedRange[] PrepareRanges( ClassifiedRange[] syntacticRanges, ClassifiedRange[] semanticRanges, string text) { foreach (var range in semanticRanges) { range.IsSemantic = true; } var rangesSortedByStart = syntacticRanges .Concat(semanticRanges) .Where(r => r.length > 0) .OrderBy(r => r.start) .ToArray(); var midpoints = rangesSortedByStart .Select(r => r.start) .Concat( rangesSortedByStart .Select(r => r.end)) .Distinct() .OrderBy(n => n) .ToArray(); var ranges = RemoveIntersectingRanges( text, rangesSortedByStart, midpoints); ranges = RemoveOverlappingRanges( text, ranges); ranges = RangeUtilities.FillGaps( text, ranges, r => r.start, r => r.length, (s, l, t) => new ClassifiedRange(t, s, l)); foreach (var range in ranges) { if (range.text == null) { range.text = text.Substring(range.start, range.length); } } return(ranges); }
public Task TestSetTimeRangeInStartTextBoxRuRu07Async() { var start = 123456.789; var initialStartText = RangeUtilities.ToString("1.2,3.4,5.6,7.8,9.0", start.ToString("n3", CultureInfo.CurrentCulture)); var endStartText = "0"; return(TestSetTimeRangeInStartTextBoxImplAsync( initialStartText, null, endStartText, null, "Invalid number " + initialStartText, CultureInfo.CurrentCulture)); }
public Task TestSetTimeRangeInStartTextBoxRuRu04Async() { var start = 123456.789; var initialStartText = RangeUtilities.ToString(start.ToString("n3", CultureInfo.CurrentCulture), "not_a_number"); var endStartText = "0"; return(TestSetTimeRangeInStartTextBoxImplAsync( initialStartText, null, endStartText, null, null, CultureInfo.CurrentCulture)); }
public Task TestSetTimeRangeInStartTextBoxRuRu03Async() { var start = 123456.789; var end = 234567.890; var finalStartText = start.ToString("n3", CultureInfo.CurrentCulture); var finalEndtText = end.ToString("n3", CultureInfo.CurrentCulture); var initialStartText = RangeUtilities.ToString(finalStartText, finalEndtText); return(TestSetTimeRangeInStartTextBoxImplAsync( initialStartText, null, finalStartText, // BUG! finalEndtText, // BUG null, CultureInfo.CurrentCulture)); }
public void Generate(string sourceXmlFilePath, string destinationHtmlFilePath, string solutionDestinationFolder) { Log.Write(destinationHtmlFilePath); this.sourceXmlFilePath = Path.GetFullPath(sourceXmlFilePath); this.destinationHtmlFilePath = destinationHtmlFilePath; sourceText = File.ReadAllText(sourceXmlFilePath); var lines = File.ReadAllLines(sourceXmlFilePath); lineLengths = TextUtilities.GetLineLengths(sourceText); var lineCount = lines.Length; var root = Parser.ParseText(sourceText); var sb = new StringBuilder(); var relativePathToRoot = Paths.CalculateRelativePathToRoot(destinationHtmlFilePath, solutionDestinationFolder); var prefix = Markup.GetDocumentPrefix(Path.GetFileName(sourceXmlFilePath), relativePathToRoot, lineCount, "ix"); sb.Append(prefix); var displayName = GetDisplayName(); var assemblyName = GetAssemblyName(); var url = "/#" + assemblyName + "/" + displayName.Replace('\\', '/'); var file = string.Format("File: <a id=\"filePath\" class=\"blueLink\" href=\"{0}\" target=\"_top\">{1}</a><br/>", url, displayName); var row = string.Format("<tr><td>{0}</td></tr>", file); Markup.WriteLinkPanel(s => sb.AppendLine(s), row); // pass a value larger than 0 to generate line numbers statically at HTML generation time var table = Markup.GetTablePrefix(); sb.AppendLine(table); var ranges = new List <ClassifiedRange>(); ClassifierVisitor.Visit( root, 0, sourceText.Length, (start, length, node, classification) => { var line = TextUtilities.GetLineFromPosition(start, sourceText); var lineText = sourceText.Substring(line.Item1, line.Item2); ranges.Add( new ClassifiedRange { Classification = classification, Node = node, Text = sourceText.Substring(start, length), LineText = lineText, LineStart = line.Item1, LineNumber = TextUtilities.GetLineNumber(start, lineLengths), Start = start, Length = length }); }); ranges = RangeUtilities.FillGaps( sourceText, ranges, r => r.Start, r => r.Length, (s, l, t) => new ClassifiedRange { Start = s, Length = l, Text = t.Substring(s, l) }).ToList(); foreach (var range in ranges) { GenerateRange(range, sb); } var suffix = Markup.GetDocumentSuffix(); sb.AppendLine(suffix); var folder = Path.GetDirectoryName(destinationHtmlFilePath); Directory.CreateDirectory(folder); File.WriteAllText(destinationHtmlFilePath, sb.ToString()); }
/// <summary> /// Get values for sphere distance /// </summary> /// <param name="coordinate"></param> /// <returns></returns> protected override float getNoiseValueAt(Coordinate coordinate) { float distance = Math.Abs(sphereCenter.distance(coordinate)); return(RangeUtilities.ClampToFloat(distance, 0, (int)((sphereRadius) * 1.5f))); }
private string GetHtml(string sourceXmlFilePath, string destinationHtmlFilePath, string displayName) { var lines = File.ReadAllLines(sourceXmlFilePath); lineLengths = sourceText.GetLineLengths(); var lineCount = lines.Length; var sb = new StringBuilder(); var relativePathToRoot = Paths.CalculateRelativePathToRoot(destinationHtmlFilePath, ProjectGenerator.SolutionGenerator.SolutionDestinationFolder); var prefix = Markup.GetDocumentPrefix(Path.GetFileName(sourceXmlFilePath), relativePathToRoot, lineCount, "ix"); sb.Append(prefix); var assemblyName = GetAssemblyName(); var url = "/#" + assemblyName + "/" + displayName.Replace('\\', '/'); Markup.WriteLinkPanel( s => sb.AppendLine(s), fileLink: (displayName, url), webAccessUrl: ProjectGenerator.GetWebAccessUrl(sourceXmlFilePath), projectLink: (ProjectGenerator.ProjectSourcePath, Url: "/#" + assemblyName, assemblyName)); // pass a value larger than 0 to generate line numbers statically at HTML generation time var table = Markup.GetTablePrefix(); sb.AppendLine(table); if (sourceText.Length > 1000000) { sb.AppendLine(Markup.HtmlEscape(sourceText)); } else { var ranges = new List <ClassifiedRange>(); var root = Parser.ParseText(sourceText); ClassifierVisitor.Visit( root, 0, sourceText.Length, (start, length, node, classification) => { var line = TextUtilities.GetLineFromPosition(start, sourceText); var lineText = sourceText.Substring(line.Item1, line.Item2); ranges.Add( new ClassifiedRange { Classification = classification, Node = node, Text = sourceText.Substring(start, length), LineText = lineText, LineStart = line.Item1, LineNumber = TextUtilities.GetLineNumber(start, lineLengths), Start = start, Length = length }); }); ranges = RangeUtilities.FillGaps( sourceText, ranges, r => r.Start, r => r.Length, (s, l, t) => new ClassifiedRange { Start = s, Length = l, Text = t.Substring(s, l) }).ToList(); foreach (var range in ranges) { GenerateRange(range, sb); } } var suffix = Markup.GetDocumentSuffix(); sb.AppendLine(suffix); return(sb.ToString()); }
public bool TryParse(string text, out double start, out double end) { CultureInfo.CurrentCulture = CultureInfo.DefaultThreadCurrentCulture; return(RangeUtilities.TryParse(text, out start, out end)); }
public string ToString(double start, double end) { CultureInfo.CurrentCulture = CultureInfo.DefaultThreadCurrentCulture; return(RangeUtilities.ToString(start, end)); }