public DocSlice(SourceDocument doc, int startLine, int startColumn, int endLine) { Contract.Requires(doc != null); Contract.Requires(startLine > 0); this.doc = doc; this.startColumn = startColumn; this.startLine = startLine; this.endLine = endLine; this.count = 0; // compute count int i = startLine; while (i <= endLine) { string s = doc[i]; if (s == null) { return; } count += s.Length; i++; } count -= startColumn; if (count < 0) { // problem. indicates source/pdb are out of date w.r.t each other count = 0; } }
static void TestCase2() { List <string> docsToIndex = DocumentsToIndex("./TestCases/2/"); List <string> queriesToProcess = QueriesToProcess("./TestCases/2/"); ParseOptions options = new ParseOptions(); // load documents foreach (string curr in docsToIndex) { byte[] data = Common.ReadBinaryFile(curr); SourceDocument src = new SourceDocument("test", "test", curr, curr, null, DocType.Json, null, "application/json", data.Length, Common.Md5(data)); IndexResult result = _IndexClient.Add(src, data, options, true).Result; Console.WriteLine(""); Console.WriteLine("Add: " + curr); Console.WriteLine(Common.SerializeJson(result, true)); } Console.WriteLine(""); Console.WriteLine("Press ENTER to continue"); Console.ReadLine(); // execute queries foreach (string curr in queriesToProcess) { EnumerationQuery query = Common.DeserializeJson <EnumerationQuery>(Common.ReadBinaryFile(curr)); EnumerationResult result = _IndexClient.Enumerate(query); Console.WriteLine(""); Console.WriteLine("Query: " + curr); Console.WriteLine(Common.SerializeJson(result, true)); } }
public IHttpActionResult PutSourceDocument(int id, SourceDocument sourceDocument) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != sourceDocument.ID) { return(BadRequest()); } db.Entry(sourceDocument).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!SourceDocumentExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
private static Stream?TryGetEmbeddedSourceStream(SourceDocument sourceDocument) { if (sourceDocument.EmbeddedTextBytes is null) { return(null); } var embeddedTextBytes = sourceDocument.EmbeddedTextBytes; var uncompressedSize = BitConverter.ToInt32(embeddedTextBytes, 0); var stream = new MemoryStream(embeddedTextBytes, sizeof(int), embeddedTextBytes.Length - sizeof(int)); if (uncompressedSize != 0) { var decompressed = new MemoryStream(uncompressedSize); using (var deflater = new DeflateStream(stream, CompressionMode.Decompress)) { deflater.CopyTo(decompressed); } if (decompressed.Length != uncompressedSize) { return(null); } stream = decompressed; } return(stream); }
private Lexer(SourceDocument document, TextReader reader) { this.document = document; this.reader = reader; this.offset = 0; this.lookaheadBuffer = new List <char>(); }
public async Task ReturnsSourceFileFromSourceLink() { var source = @" public class C { public event System.EventHandler [|E|] { add { } remove { } } }"; await RunTestAsync(async path => { MarkupTestFile.GetSpan(source, out var metadataSource, out var expectedSpan); var(project, symbol) = await CompileAndFindSymbolAsync(path, Location.OnDisk, Location.OnDisk, metadataSource, c => c.GetMember("C.E")); // Move the source file to a path that only our fake debugger service knows about var sourceFilePath = Path.Combine(path, "SourceLink.cs"); File.Move(GetSourceFilePath(path), sourceFilePath); var sourceLinkService = new Lazy <ISourceLinkService?>(() => new TestSourceLinkService(sourceFilePath: sourceFilePath)); var service = new PdbSourceDocumentLoaderService(sourceLinkService, logger: null); using var hash = SHA256.Create(); var fileHash = hash.ComputeHash(File.ReadAllBytes(sourceFilePath)); var sourceDocument = new SourceDocument("goo.cs", Text.SourceHashAlgorithm.Sha256, fileHash.ToImmutableArray(), null, "https://sourcelink"); var result = await service.LoadSourceDocumentAsync(path, sourceDocument, Encoding.UTF8, new TelemetryMessage(CancellationToken.None), CancellationToken.None); Assert.NotNull(result); Assert.Equal(sourceFilePath, result !.FilePath); }); }
public Leerlijnenpakket GetLeerlijnenPakket(string file) { Leerlijnenpakket leerlijnenpakket = null; try { SourceDocument = XDocument.Load(file); if (SourceDocument != null) { PakketNaam = SourceDocument.XPathSelectElement("/Leerlijnpackage/Leerlijn").Attribute("Naam").Value; var vakgebiedItems = SourceDocument.XPathSelectElements("/Leerlijnpackage/Leerlijn/Vakgebieden/Vakgebied"); var leerlijnen = vakgebiedItems.Select(GetLeerlijn).ToList(); DateTime invuldatum = DateTimeExtensions.Now; leerlijnenpakket = new Leerlijnenpakket( Guid.NewGuid(), Guid.NewGuid(), PakketNaam, invuldatum, definitief: true, leerlijnen: leerlijnen, auditTrail: new AuditTrail <Leerlijnenpakket>()); } } catch (Exception) { MessageBox.Show("Het bestand bevat geen geldig leerlijnenpakketDefinitie."); } return(leerlijnenpakket); }
public Task <TextLoader?> LoadSourceDocumentAsync(SourceDocument sourceDocument, CancellationToken cancellationToken) { // If we already have the embedded text then use that directly if (sourceDocument.EmbeddedText is not null) { var textAndVersion = TextAndVersion.Create(sourceDocument.EmbeddedText, VersionStamp.Default, sourceDocument.FilePath); return(Task.FromResult <TextLoader?>(TextLoader.From(textAndVersion))); } // Otherwise, check the easiest (but most unlikely) case which is the document exists on the disk if (File.Exists(sourceDocument.FilePath)) { var textLoader = IOUtilities.PerformIO(() => TryLoadSourceFromDisk(sourceDocument)); if (textLoader is not null) { return(Task.FromResult <TextLoader?>(textLoader)); } } // TODO: Call the debugger to download the file // Maybe they'll download to a temp file, in which case this method could return a string // or maybe they'll return a stream, in which case we could create a new StreamTextLoader return(Task.FromResult <TextLoader?>(null)); }
public void EmptyCompilationResultIsPossible() { var compilationResult = new List <IChunk>(); var markdownBlocks = new List <SourceBlock> { new SourceBlock(new List <SourceLine> { new SourceLine("# Fgh", 0) }), new SourceBlock(new List <SourceLine> { new SourceLine("Hey!", 1) }), new SourceBlock(new List <SourceLine> { new SourceLine("Oh", 2) }) }; var result = SourceDocument.ReturnMdChunksIntoCompilationResults(compilationResult, markdownBlocks); Assert.True(result.Count == 3); Assert.True(result[0].LineNumber == 0); Assert.True(result[0] is MarkdownChunk); Assert.True(result[1].LineNumber == 1); Assert.True(result[1] is MarkdownChunk); Assert.True(result[2].LineNumber == 2); Assert.True(result[2] is MarkdownChunk); }
private string /*?*/ GetSource(string prefix, SourceContext sctx, out bool isVB, bool islegacy = false) { isVB = false; if (!sctx.IsValid) { return(null); } if (sctx.StartLine <= 0) { return(null); } SourceDocument doc = GetDocument(sctx.Document); if (doc == null) { return(null); } DocSlice slice = new DocSlice(doc, sctx.StartLine, (islegacy) ? 0 : sctx.StartColumn, sctx.EndLine); var parsedText = Parse(prefix, slice, out isVB); return(parsedText); }
private async Task <SourceFileInfo?> TryGetSourceLinkFileAsync(SourceDocument sourceDocument, Encoding encoding, IPdbSourceDocumentLogger?logger, CancellationToken cancellationToken) { if (_sourceLinkService is null || sourceDocument.SourceLinkUrl is null) { return(null); } // This should ideally be the repo-relative path to the file, and come from SourceLink: https://github.com/dotnet/sourcelink/pull/699 var relativePath = Path.GetFileName(sourceDocument.FilePath); var delay = Task.Delay(SourceLinkTimeout, cancellationToken); var sourceFileTask = _sourceLinkService.GetSourceFilePathAsync(sourceDocument.SourceLinkUrl, relativePath, logger, cancellationToken); var winner = await Task.WhenAny(sourceFileTask, delay).ConfigureAwait(false); if (winner == sourceFileTask) { var sourceFile = await sourceFileTask.ConfigureAwait(false); if (sourceFile is not null) { // TODO: Log results from sourceFile.Log: https://github.com/dotnet/roslyn/issues/57352 // TODO: Don't ignore the checksum here: https://github.com/dotnet/roslyn/issues/55834 return(LoadSourceFile(sourceFile.SourceFilePath, sourceDocument, encoding, ignoreChecksum: true)); } else { // TODO: Log the timeout: https://github.com/dotnet/roslyn/issues/57352 } } return(null); }
public void SetInvoicePath(long vid, string path) { Voucher voucher = this.GetMyVoucher(vid); if (voucher != null && File.Exists(System.Web.HttpContext.Current.Server.MapPath(path))) { FileInfo fi = new FileInfo(System.Web.HttpContext.Current.Server.MapPath(path)); SourceDocument invoice = _ledger.SourceDocument.Where(sd => sd.SourceFileName == fi.FullName).FirstOrDefault(); if (invoice != null) { return; } invoice = new SourceDocument(); invoice.SourceFileName = fi.FullName; invoice.RelateFileName = path; invoice.RelatePath = path.Replace(fi.Name, ""); invoice.FileSize = fi.Length; voucher.Invoices.Add(invoice); voucher.InvoicePath = path.Replace(fi.Name, ""); _ledger.SaveChanges(); } else { throw new ArgumentNullException("地址不存在或保存失败"); } }
public void AccumulateRobustHash_PerTile(CachePackage cachePackage, IRobustHash hash) { hash.Accumulate("SourceMap:"); SourceDocument sourceDocument = this._documentFuture.RealizeSynchronously(cachePackage); sourceDocument.localDocument.AccumulateRobustHash(hash); this.AccumulateRobustHash_Common(hash); }
public void EmptyInputIsOk() { var compilationResult = new List <IChunk>(); var markdownBlocks = new List <SourceBlock>(); var result = SourceDocument.ReturnMdChunksIntoCompilationResults(compilationResult, markdownBlocks); Assert.True(result.Count == 0); }
private static SourceFileInfo?TryGetOriginalFile(SourceDocument sourceDocument, Encoding encoding) { if (File.Exists(sourceDocument.FilePath)) { return(LoadSourceFile(sourceDocument.FilePath, sourceDocument, encoding, ignoreChecksum: false)); } return(null); }
private static Stream?TryGetFileStream(SourceDocument sourceDocument) { if (File.Exists(sourceDocument.FilePath)) { return(IOUtilities.PerformIO(() => new FileStream(sourceDocument.FilePath, FileMode.Open, FileAccess.Read, FileShare.Read | FileShare.Delete))); } return(null); }
private void Load() { this.lines = new string[0]; var range = this.provider.GetSourceRanges(this.method).FirstOrDefault(); if (range != null) { this.document = range.Document; } }
/// <summary> /// Store or store-and-index a document. /// </summary> /// <param name="indexName">Name of the index.</param> /// <param name="sourceDoc">Source document.</param> /// <param name="data">Byte data.</param> /// <param name="options">Text parse options.</param> /// <param name="parse">True if the document should be parsed and indexed.</param> /// <param name="postbackUrl">URL to which results should be POSTed.</param> /// <returns>Index result.</returns> public async Task <IndexResult> AddDocument(string indexName, SourceDocument sourceDoc, byte[] data, ParseOptions options, bool parse = true, string postbackUrl = null) { if (String.IsNullOrEmpty(indexName)) { throw new ArgumentNullException(nameof(indexName)); } KomodoIndex idx = GetIndexClient(indexName); return(await idx.Add(sourceDoc, data, options, parse, postbackUrl)); }
static void Main(string[] args) { // 1. Create index repository & Make Index. // 1.1 Create repository. Indexer indexer = Indexer.Instance; Repository repo = indexer.CreateRepository("Test"); // 1.2 Add document by JSON format. repo.AddDocument("{'full_text': {'title': '一級淹水警戒區域 增至9縣市', " + " 'text':'(中央社記者黃巧雯台北12日電)受鋒面和西南氣流影響,各地降豪雨。水利署表示,截至今天下午5時,共18座水庫正洩洪、溢流或調節性放水;一級淹水警戒區域也從11日發布時的4個縣市,增至9個縣市。'}, " + " 'meta_data': {'created_time': '2012/06/01 13:24:33'}}"); // 1.3 Add document by object format. SourceDocument srcDoc = new SourceDocument(); srcDoc.FullText["title"] = "大雨灌進低底盤公車 乘客傻眼"; srcDoc.FullText["text"] = "暴雨襲台,全台災情不斷,現在就連行駛中的公車也遭殃,早上7點多時,一輛從三峽開往新埔捷運站的802公車,因為底盤低,經過淹水路段時,大雨直接灌進公車裡,車上乘客全嚇傻了,就像在坐船一樣,相當誇張。"; srcDoc.MetaData["created_time"] = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"); repo.AddDocument(srcDoc); // 1.4 Make index. repo.MakeIndex(); // 2. Search the documents // 2.1 Search, returned by JSON format // // Format: // {"matches":2, // "search_time":0.041, // "results":[ // {"rank":1,"score":2,"hit_field":"一級<<淹水>>警戒區域 增至9縣市\r\n(中央社記者黃巧雯台北12日電)受鋒面和西南氣流影響,各地降豪雨。水利署表示,截至今天下午5時,共18座水庫正洩洪、溢流或調節性放水;一級<<淹水>>警戒區域也從11日發布時的4個縣市,增至9個縣市。"}, // {"rank":2,"score":1,"hit_field":"大雨灌進低底盤公車 乘客傻眼\r\n暴雨襲台,全台災情不斷,現在就連行駛中的公車也遭殃,早上7點多時,一輛從三峽開往新埔捷運站的802公車,因為底盤低,經過<<淹水>>路段時,大雨直接灌進公車裡,車上乘客全嚇傻了,就像在坐船一樣,相當誇張。"}] // } String jsonResult = repo.Search("淹水", 0, 3).ToJson(); Console.WriteLine(jsonResult); // 2.2 Search, returned by object format SearchResult result = repo.Search("淹水", 0, 1); // 2.3 Print out the search result. Console.WriteLine("Matches: " + result.Matches); Console.WriteLine("Search Time: " + result.SearchTime); Console.WriteLine("=============================="); foreach (var aDoc in result.Results) { Console.WriteLine("Rank: " + aDoc.Rank); Console.WriteLine("Score: " + aDoc.Score); Console.WriteLine("Content: " + aDoc.HitField); Console.WriteLine("=============================="); } Console.ReadLine(); }
public IHttpActionResult GetSourceDocument(int id) { SourceDocument sourceDocument = db.SourceDocuments.Find(id); if (sourceDocument == null) { return(NotFound()); } return(Ok(sourceDocument)); }
private static async Task GetIndexDocument(RequestMetadata md) { string header = "[Komodo.Server] " + md.Http.Request.Source.IpAddress + ":" + md.Http.Request.Source.Port + " GetIndexDocument "; string indexName = md.Http.Request.Url.Elements[0]; string sourceGuid = md.Http.Request.Url.Elements[1]; if (!_Daemon.IndexExists(indexName)) { _Logging.Warn(header + "index " + indexName + " does not exist"); md.Http.Response.StatusCode = 404; md.Http.Response.ContentType = "application/json"; await md.Http.Response.Send(new ErrorResponse(404, "Unknown index.", null, null).ToJson(true)); return; } if (!md.Params.Parsed) { DocumentData content = await _Daemon.GetSourceDocumentContent(indexName, sourceGuid); if (content == null) { _Logging.Warn(header + "document " + indexName + "/" + sourceGuid + " does not exist"); md.Http.Response.StatusCode = 404; md.Http.Response.ContentType = "application/json"; await md.Http.Response.Send(new ErrorResponse(404, "Unknown document.", null, null).ToJson(true)); return; } else { md.Http.Response.StatusCode = 200; md.Http.Response.ContentType = content.ContentType; await md.Http.Response.Send(content.ContentLength, content.DataStream); return; } } else { SourceDocument source = _Daemon.GetSourceDocumentMetadata(indexName, sourceGuid); ParsedDocument parsed = _Daemon.GetParsedDocumentMetadata(indexName, sourceGuid); ParseResult parseResult = _Daemon.GetDocumentParseResult(indexName, sourceGuid); DocumentMetadata ret = new DocumentMetadata(source, parsed, parseResult); md.Http.Response.StatusCode = 200; md.Http.Response.ContentType = "application/json"; await md.Http.Response.Send(Common.SerializeJson(ret, md.Params.Pretty)); return; } }
public string SaveUpload(string sourceFileName, string relatePath, int fileSize) { SourceDocument uploadFile = new SourceDocument(); uploadFile.FileId = Guid.NewGuid(); uploadFile.SourceFileName = sourceFileName; uploadFile.RelateFileName = string.Format("{0}{1}", relatePath, sourceFileName); uploadFile.RelatePath = relatePath; uploadFile.FileSize = fileSize; return(""); }
private void handlePlayAllMode(SourceDocument sourceDocument) { var firstDocument = addMediaToDocumentIfNeeded(sourceDocument.DocumentGuid, sourceDocument.DocumentName, sourceDocument.ImportPath); // open video file if it wasn't if (mainViewModel.VideoViewModel.Document.Id == Guid.Empty) { mainViewModel.VideoViewModel.Document = firstDocument; reinitVideoPlayer(); startVideo(); } }
public IHttpActionResult PostSourceDocument(SourceDocument sourceDocument) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } db.SourceDocuments.Add(sourceDocument); db.SaveChanges(); return(CreatedAtRoute("DefaultApi", new { id = sourceDocument.ID }, sourceDocument)); }
/// <summary> /// Compiles Brainfuck source code down to a method and sets the /// assembly's entry point to that method. /// </summary> /// <param name="document"> /// A Brainfuck source code document. /// </param> public void Compile(SourceDocument document) { // Compile the Brainfuck source code to a Flame IR method body. var sourceBody = CompileBody(new SourceReader(document)); // Optimize the IR method body. var body = sourceBody.WithImplementation( sourceBody.Implementation.Transform( AllocaToRegister.Instance, CopyPropagation.Instance, new ConstantPropagation(), GlobalValueNumbering.Instance, CopyPropagation.Instance, InstructionSimplification.Instance, DeadValueElimination.Instance, MemoryAccessElimination.Instance, CopyPropagation.Instance, new ConstantPropagation(), DeadValueElimination.Instance, ReassociateOperators.Instance, DeadValueElimination.Instance, FuseMemoryAccesses.Instance)); if (CompilerOptions.GetValue <bool>(Options.PrintIr)) { PrintIr(sourceBody, body); } // Define a class. var program = new Mono.Cecil.TypeDefinition( "Brainfuck", "Program", Mono.Cecil.TypeAttributes.Class | Mono.Cecil.TypeAttributes.Public, Assembly.Definition.MainModule.ImportReference(Environment.Object)); Assembly.Definition.MainModule.Types.Add(program); // Add an entry point method to that class. var main = new Mono.Cecil.MethodDefinition( "Main", Mono.Cecil.MethodAttributes.Static | Mono.Cecil.MethodAttributes.Public, Assembly.Definition.MainModule.ImportReference(Environment.Void)); program.Methods.Add(main); // Compile the method body down to CIL and assign it to the method. var emitter = new ClrMethodBodyEmitter(main, body, Environment); main.Body = emitter.Compile(); // Set the entry point. Assembly.Definition.MainModule.EntryPoint = main; }
/// <summary> /// Tokenizes a source document. /// </summary> /// <param name="document">A source document to tokenize.</param> /// <returns>A tokenized source document.</returns> public static IEnumerable <Token> Tokenize(SourceDocument document) { using (var reader = document.Open(0)) { var lexer = new Lexer(document, reader); Token token; while (lexer.TryReadToken(out token)) { yield return(token); } } }
public SourceDocument RealizeSynchronously(CachePackage cachePackage) { Present present = GetSynchronousFuture(cachePackage).Realize("SourceDocument.RealizeSynchronously"); if (present is SourceDocument) { SourceDocument sourceDocument = (SourceDocument)present; D.Assert(sourceDocument.localDocument != null, "We waited for document to arrive synchronously."); return(sourceDocument); } throw ((PresentFailureCode)present).exception; }
public IEnumerable <XDocument> Parse() { if (SourceDocument == null) { throw new InvalidOperationException("XML Documentation not found."); } //choose only those member elements to do with the TargetTypeName var members = from m in SourceDocument.Descendants("member") let name = m.Attribute(XName.Get("name")) where name != null && name.Value.Contains("M:" + TargetTypeName) select m; return(TransformDocComments(members)); }
public IHttpActionResult DeleteSourceDocument(int id) { SourceDocument sourceDocument = db.SourceDocuments.Find(id); if (sourceDocument == null) { return(NotFound()); } db.SourceDocuments.Remove(sourceDocument); db.SaveChanges(); return(Ok(sourceDocument)); }
static void GetSourceDocMetadata() { string indexName = Common.InputString("Index name :", null, false); string sourceGuid = Common.InputString("Source GUID :", null, false); SourceDocument sourceDoc = _Komodo.GetSourceDocumentMetadata(indexName, sourceGuid); if (sourceDoc == null) { Console.WriteLine("(none)"); } else { Console.WriteLine(Common.SerializeJson(sourceDoc, true)); } }
private void MenuNewASMFileBtn_Click(object sender, EventArgs e) { this.SaveFileDialog.Filter = "ASM file|*.asm"; this.SaveFileDialog.DefaultExt = ".ext"; if (this.SaveFileDialog.ShowDialog(this) == DialogResult.OK) { try { var filePath = this.SaveFileDialog.FileName; // Create an empty file and load it. File.CreateText(filePath).Close(); var sourceDoc = new SourceDocument(m_compiler); sourceDoc.LoadFile(filePath); sourceDoc.Show(this.DockPanel, DockState.Document); } catch (Exception ex) { MessageBox.Show(this, "An error has occurred:" + Environment.NewLine + ex.Message, "An error has occurred", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
private SmallBasicDocument(SmallBasicCompilationHelper helper, string text, SourceDocument previousVersion, int position, int oldLength, int newLength) : base(text, previousVersion, position, oldLength, newLength) { this.helper = helper; }
private void OpenFileBtn_Click(object sender, EventArgs e) { // Let the user choose a file to open. if (this.OpenFileDialog.ShowDialog(this) == DialogResult.OK) { try { var filePath = this.OpenFileDialog.FileName; // Check the extension. var extension = Path.GetExtension(filePath).ToLower(); switch (extension) { case ".asm": { var sourceDoc = new SourceDocument(m_compiler); sourceDoc.LoadFile(filePath); sourceDoc.Show(this.DockPanel, DockState.Document); } break; case ".hex": case ".bin": { // The file is a program. Load it and show the disassembler. var program = OxIDE.DCPU.Program.LoadFrom(filePath); var disassembler = new DisassemblerDocument(); disassembler.Text = Path.GetFileName(filePath); disassembler.LoadProgram(program); disassembler.Show(this.DockPanel, DockState.Document); } break; } } catch (Exception ex) { MessageBox.Show(this, "An error has occurred:" + Environment.NewLine + ex.Message, "An error has occurred", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }