public static ClassElement RetrieveClassElement(XElement field, List <ProgramElement> programElements) { IEnumerable <XElement> ownerClasses = from el in field.Ancestors(SRC.Class) select el; if (ownerClasses.Count() > 0) { //this ignores the possibility that a field may be part of an inner class XElement name = ownerClasses.First().Element(SRC.Name); string ownerClassName = ""; if (name == null) { ownerClassName = "anonymous"; } else { ownerClassName = name.Value; } //now find the ClassElement object corresponding to ownerClassName, since those should have been gen'd by now ProgramElement ownerClass = programElements.Find(element => element is ClassElement && ((ClassElement)element).Name == ownerClassName); return(ownerClass as ClassElement); } else { //field is not contained by a class return(null); } }
public static SandoDocument Create(ProgramElement programElement) { Contract.Requires(programElement != null, "DocumentFactory:Create - programElement cannot be null!"); Contract.Ensures(Contract.Result <SandoDocument>() != null, "DocumentFactory:Create - an object must be returned from this method!"); if (programElement as ClassElement != null) { return(new ClassDocument(programElement as ClassElement)); } if (programElement as CommentElement != null) { return(new CommentDocument(programElement as CommentElement)); } if (programElement as EnumElement != null) { return(new EnumDocument(programElement as EnumElement)); } if (programElement as FieldElement != null) { return(new FieldDocument(programElement as FieldElement)); } if (programElement as MethodElement != null) { return(new MethodDocument(programElement as MethodElement)); } if (programElement as MethodPrototypeElement != null) { return(new MethodPrototypeDocument(programElement as MethodPrototypeElement)); } if (programElement as PropertyElement != null) { return(new PropertyDocument(programElement as PropertyElement)); } if (programElement as StructElement != null) { return(new StructDocument(programElement as StructElement)); } if (programElement as TextLineElement != null) { return(new TextLineDocument(programElement as TextLineElement)); } if (programElement as XmlXElement != null) { return(new XmlXElementDocument(programElement as XmlXElement)); } if (programElement.GetCustomProperties().Count > 0) { return(new SandoDocument(programElement)); } //if this code is reached, contract will fail return(null); }
public override Element VisitProgram(SqlParser.ProgramContext context) { var program = new ProgramElement(CreateParseInfo(context)); for (var i = 0; i < context.ChildCount; i++) { program.Children.Add(Visit(context.GetChild(i))); } return(program); }
public static SandoDocument Create(ProgramElement programElement) { Contract.Requires(programElement != null, "DocumentFactory:Create - programElement cannot be null!"); Contract.Ensures(Contract.Result<SandoDocument>() != null, "DocumentFactory:Create - an object must be returned from this method!"); if(programElement as ClassElement != null) { return new ClassDocument(programElement as ClassElement); } if(programElement as CommentElement != null) { return new CommentDocument(programElement as CommentElement); } if(programElement as EnumElement != null) { return new EnumDocument(programElement as EnumElement); } if(programElement as FieldElement != null) { return new FieldDocument(programElement as FieldElement); } if(programElement as MethodElement != null) { return new MethodDocument(programElement as MethodElement); } if(programElement as MethodPrototypeElement != null) { return new MethodPrototypeDocument(programElement as MethodPrototypeElement); } if(programElement as PropertyElement != null) { return new PropertyDocument(programElement as PropertyElement); } if (programElement as StructElement != null) { return new StructDocument(programElement as StructElement); } if(programElement as TextFileElement != null) { return new TextFileDocument(programElement as TextFileElement); } if (programElement as XmlXElement!= null) { return new XmlXElementDocument(programElement as XmlXElement); } if(programElement.GetCustomProperties().Count>0) { return new SandoDocument(programElement); } //if this code is reached, contract will fail return null; }
public void DocumentFactory_CreateReturnsMethodDocumentForValidMethodElement() { try { ProgramElement programElement = SampleProgramElementFactory.GetSampleMethodElement(); SandoDocument sandoDocument = DocumentFactory.Create(programElement); Assert.True(sandoDocument != null, "Null returned from DocumentFactory!"); Assert.True(sandoDocument is MethodDocument, "MethodDocument must be returned for MethodElement object!"); } catch (Exception ex) { Assert.Fail(ex.Message + ". " + ex.StackTrace); } }
private bool ResolveClassId(string className, ProgramElement[] includeElements, out Guid outGuid) { foreach(ProgramElement element in includeElements) { if(element is ClassElement && element.Name == ClassName) { outGuid = ((ClassElement)element).Id; return true; } } outGuid = Guid.Empty; return false; }
private bool ResolveAccessType(string funcName, ProgramElement[] includeElements, out AccessLevel outAccessLevel) { foreach(ProgramElement element in includeElements) { if(element is MethodPrototypeElement && element.Name == funcName) { outAccessLevel = ((MethodPrototypeElement)element).AccessLevel; return true; } } outAccessLevel = AccessLevel.Protected; return false; }
public bool TryResolve(ProgramElement[] headerElements, out MethodElement outMethodElement) { AccessLevel accessLevel; Guid classId; outMethodElement = null; if(ResolveClassId(ClassName, headerElements, out classId) == false) return false; if(ResolveAccessType(Name, headerElements, out accessLevel) == false) return false; IsResolved = true; outMethodElement = new MethodElement(Name, DefinitionLineNumber, FullFilePath, Snippet, accessLevel, Arguments, ReturnType, Body, classId, ClassName, String.Empty, IsConstructor); return true; }
public static string DescribeQueryProgramElementMatch(ProgramElement progElem, string query) { if (progElem.Name.Contains(query)) { return "NameContainsQuery"; } else if (progElem.RawSource.Contains(query)) { return "RawSourceContainsQuery"; } else { return "QueryNotInNameOrRawSource"; } }
public static string DescribeQueryProgramElementMatch(ProgramElement progElem, string query) { if (progElem.Name.Contains(query)) { return("NameContainsQuery"); } else if (progElem.RawSource.Contains(query)) { return("RawSourceContainsQuery"); } else { return("QueryNotInNameOrRawSource"); } }
public static StructElement RetrieveStructElement(XElement field, List <ProgramElement> programElements) { IEnumerable <XElement> ownerStructs = from el in field.Ancestors(SRC.Struct) select el; if (ownerStructs.Count() > 0) { XElement name = ownerStructs.First().Element(SRC.Name); string ownerStructName = name.Value; //now find the StructElement object corresponding to ownerClassName, since those should have been gen'd by now ProgramElement ownerStruct = programElements.Find(element => element is StructElement && ((StructElement)element).Name == ownerStructName); return(ownerStruct as StructElement); } else { //field is not contained by a class return(null); } }
public static MethodElement RetrieveMethodElement(XElement field, List <ProgramElement> programElements) { IEnumerable <XElement> ownerMethods = from el in field.Ancestors(SRC.Function) select el; ownerMethods.Union(from el in field.Ancestors(SRC.Constructor) select el); if (ownerMethods.Count() > 0) { XElement name = ownerMethods.First().Element(SRC.Name); string ownerMethodName = name.Value; //now find the MethodElement object corresponding to ownerMethodName, since those should have been gen'd by now ProgramElement ownerMethod = programElements.Find(element => element is MethodElement && ((MethodElement)element).Name == ownerMethodName); return(ownerMethod as MethodElement); } else { //field is not contained by a method return(null); } }
public void Visit(ProgramElement program) { using (var s = _scope.Push()) { _scope.AddTable("airlineflightschedules", new AirlineFlightScheduleQueryTable(_httpExecutor, PropertyDescriptor.GenerateQueryDescriptor(typeof(AirlineFlightSchedule)))); _scope.AddTable("getflightid", new GetFlightIdQueryTable(_httpExecutor, PropertyDescriptor.GenerateQueryDescriptor(typeof(GetFlightId)))); _scope.AddTable("flightinfoex", new FlightInfoExQueryTable(_httpExecutor, PropertyDescriptor.GenerateQueryDescriptor(typeof(FlightInfoEx)))); _scope.AddTable("airportinfo", new AirportInfoQueryTable(_httpExecutor, PropertyDescriptor.GenerateQueryDescriptor(typeof(AirportInfo)))); _scope.AddTable("airlineinfo", new AirlineInfoQueryTable(_httpExecutor, PropertyDescriptor.GenerateQueryDescriptor(typeof(AirlineInfo)))); _scope.AddTable("inboundflightinfo", new InboundFlightInfoQueryTable(_httpExecutor, PropertyDescriptor.GenerateQueryDescriptor(typeof(InboundFlightInfo)))); _scope.AddTable("inflightinfo", new InFlightInfoQueryTable(_httpExecutor, PropertyDescriptor.GenerateQueryDescriptor(typeof(InFlightInfo)))); _scope.AddTable("scheduled", new ScheduledQueryTable(_httpExecutor, PropertyDescriptor.GenerateQueryDescriptor(typeof(Scheduled)))); _scope.AddTable("arrived", new ArrivedQueryTable(_httpExecutor, PropertyDescriptor.GenerateQueryDescriptor(typeof(Arrived)))); _scope.AddTable("gethistoricaltrack", new GetHistoricalTrackQueryTable(_httpExecutor, PropertyDescriptor.GenerateQueryDescriptor(typeof(GetHistoricalTrack)))); _scope.AddTable("enroute", new EnrouteQueryTable(_httpExecutor, PropertyDescriptor.GenerateQueryDescriptor(typeof(Enroute)))); _scope.AddTable("departed", new DepartedQueryTable(_httpExecutor, PropertyDescriptor.GenerateQueryDescriptor(typeof(Departed)))); _scope.AddTable("mapflight", new MapFlightQueryTable(_httpExecutor, PropertyDescriptor.GenerateQueryDescriptor(typeof(MapFlight)))); foreach (var c in program.Statements) { VisitChild(c); } } }
private static IEnumerable <string> ExtractUnknownElementWords(ProgramElement element) { return(GetDefaultLetterWords(element.RawSource)); }
public XmlXElementDocument(ProgramElement programElement) : base(programElement) { }
public NoSearchResults(ProgramElement programElement, double score) : base(programElement, score) { }
public CodeSearchResult(ProgramElement programElement, double score) { ProgramElement = programElement; Score = score; }
/// <summary> /// Returns order for program element in specified day. /// </summary> /// <param name="programElement"></param> /// <param name="dayNumber"></param> /// <returns></returns> private static int GetOrderForDay(ProgramElement programElement, int dayNumber) { var day = programElement.ProgramDayElements.First(d => d.Day == dayNumber); return(day.Sort ?? programElement.Sort); }
public SandoDocument(ProgramElement programElement) { this.programElement = programElement; }
private ConverterFromProgramElementToDocument(ProgramElement programElement, SandoDocument sandoDocument) { this.programElement = programElement; this.sandoDocument = sandoDocument; }
public static IEnumerable <String> ExtractElementWords(ProgramElement element) { var list = new List <string>(); if (element as ClassElement != null) { AddElementName(element, list); list.AddRange(ExtractClassWords(element as ClassElement)); return(list); } if (element as CommentElement != null) { list.AddRange(ExtractCommentWords(element as CommentElement)); return(list); } if (element as FieldElement != null) { AddElementName(element, list); list.AddRange(ExtractFieldWords(element as FieldElement)); return(list); } if (element as MethodElement != null) { AddElementName(element, list); list.AddRange(ExtractMethodWords(element as MethodElement)); return(list); } if (element as MethodPrototypeElement != null) { list.AddRange(ExtractMethodPrototypeWords(element as MethodPrototypeElement)); return(list); } if (element as PropertyElement != null) { AddElementName(element, list); list.AddRange(ExtractPropertyWords(element as PropertyElement)); return(list); } if (element as StructElement != null) { AddElementName(element, list); list.AddRange(ExtractStructWords(element as StructElement)); return(list); } if (element as TextLineElement != null) { list.AddRange(ExtractTextLineElement(element as TextLineElement)); return(list); } if (element as XmlXElement != null) { list.AddRange(ExtractXmlWords(element as XmlXElement)); return(list); } if (element.GetCustomProperties().Count > 0) { list.AddRange(ExtractUnknownElementWords(element)); return(list); } list.Clear(); return(list); }
private static void AddElementName(ProgramElement element, List <string> list) { var name = NormalizeText(element.Name); list.Add(name); }
internal static ConverterFromProgramElementToDocument Create(ProgramElement programElement, SandoDocument sandoDocument) { return(new ConverterFromProgramElementToDocument(programElement, sandoDocument)); }
private static void AddElementName(ProgramElement element, List<string> list) { var name = NormalizeText(element.Name); list.Add(name); }
private static IEnumerable<string> ExtractUnknownElementWords(ProgramElement element) { return GetDefaultLetterWords(element.RawSource); }
public static void ParseComments(List <ProgramElement> programElements, XElement elements, string fileName) { IEnumerable <XElement> comments = from el in elements.Descendants(SRC.Comment) select el; List <List <XElement> > commentGroups = new List <List <XElement> >(); List <XElement> lastGroup = null; foreach (var aComment in comments) { if (lastGroup != null) { int line = Int32.Parse(lastGroup.Last().Attribute(POS.Line).Value); int linenext = Int32.Parse(aComment.Attribute(POS.Line).Value); if (line + 1 == linenext) { lastGroup.Add(aComment); } else { var xElements = new List <XElement>(); xElements.Add(aComment); commentGroups.Add(xElements); lastGroup = xElements; } } else { var xElements = new List <XElement>(); xElements.Add(aComment); commentGroups.Add(xElements); lastGroup = xElements; } } foreach (var oneGroup in commentGroups) { try { var comment = oneGroup.First(); var commentText = GetCommentText(oneGroup); int commentLine = Int32.Parse(comment.Attribute(POS.Line).Value); int definitionColumnNumber = Int32.Parse(comment.Attribute(POS.Column).Value); if (String.IsNullOrWhiteSpace(commentText)) { continue; } //comment name doesn't contain non-word characters and is compact-er than its body var commentName = ""; commentName = GetCommentSummary(GetCommentText(oneGroup, true)); if (string.IsNullOrWhiteSpace(commentName)) { continue; } //comments above method or class var lastComment = oneGroup.Last() as XElement; ProgramElement programElement = null; if (lastComment != null && lastComment.Attribute(POS.Line) != null) { var definitionLineNumber = Int32.Parse(lastComment.Attribute(POS.Line).Value); programElement = programElements.Find(element => element.DefinitionLineNumber == definitionLineNumber + 1); } if (programElement != null) { programElements.Add(new CommentElement(commentName, commentLine, definitionColumnNumber, programElement.FullFilePath, RetrieveSource(commentText), commentText)); continue; } //comments inside a method or class MethodElement methodEl = RetrieveMethodElement(comment, programElements); if (methodEl != null) { programElements.Add(new CommentElement(commentName, commentLine, definitionColumnNumber, methodEl.FullFilePath, RetrieveSource(commentText), commentText)); continue; } ClassElement classEl = RetrieveClassElement(comment, programElements); if (classEl != null) { programElements.Add(new CommentElement(commentName, commentLine, definitionColumnNumber, classEl.FullFilePath, RetrieveSource(commentText), commentText)); continue; } //comments is not associated with another element, so it's a plain CommentElement programElements.Add(new CommentElement(commentName, commentLine, definitionColumnNumber, fileName, RetrieveSource(commentText), commentText)); } catch (Exception error) { Type t = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType; LogEvents.ParserGenericException(t, error); } } }
public static IEnumerable<String> ExtractElementWords(ProgramElement element) { var list = new List<string>(); if (element as ClassElement != null) { AddElementName(element, list); list.AddRange(ExtractClassWords(element as ClassElement)); return list; } if (element as CommentElement != null) { list.AddRange(ExtractCommentWords(element as CommentElement)); return list; } if (element as FieldElement != null) { AddElementName(element, list); list.AddRange(ExtractFieldWords(element as FieldElement)); return list; } if (element as MethodElement != null) { AddElementName(element, list); list.AddRange(ExtractMethodWords(element as MethodElement)); return list; } if (element as MethodPrototypeElement != null) { list.AddRange(ExtractMethodPrototypeWords(element as MethodPrototypeElement)); return list; } if (element as PropertyElement != null) { AddElementName(element, list); list.AddRange(ExtractPropertyWords(element as PropertyElement)); return list; } if (element as StructElement != null) { AddElementName(element, list); list.AddRange(ExtractStructWords(element as StructElement)); return list; } if (element as TextFileElement != null) { list.AddRange(ExtractTextLineElement(element as TextFileElement)); return list; } if (element as XmlXElement != null) { list.AddRange(ExtractXmlWords(element as XmlXElement)); return list; } if (element.GetCustomProperties().Count > 0) { list.AddRange(ExtractUnknownElementWords(element)); return list; } list.Clear(); return list; }
internal static ConverterFromProgramElementToDocument Create(ProgramElement programElement, SandoDocument sandoDocument) { return new ConverterFromProgramElementToDocument(programElement,sandoDocument); }