コード例 #1
0
ファイル: TranslationResult.cs プロジェクト: sq/JSIL
        public void AddFile (
            string type, 
            string filename, 
            ArraySegment<byte> bytes, 
            int? position = null,
            Dictionary<string, object> properties = null,
            SourceMapBuilder sourceMapBuilder = null
        ) {
            lock (Files) {
                if (position.HasValue)
                    FileOrder.Insert(position.Value, filename);
                else
                    FileOrder.Add(filename);

                Files.Add(filename, new ResultFile {
                    Type = type,
                    Filename = filename,
                    Contents = bytes,
                    Size = bytes.Count,
                    Properties = properties,
                    SourceMapBuilder = sourceMapBuilder
                });
            }
        }
コード例 #2
0
ファイル: TranslationResult.cs プロジェクト: sq/JSIL
        private static void WriteBytesToFile (string folder, string name, ArraySegment<byte> bytes, SourceMapBuilder sourceMapBuilder = null) {
            var filePath = Path.Combine(folder, name);
            var fileMode = File.Exists(filePath) ? FileMode.Truncate : FileMode.CreateNew;

            EnsureDirectoryExists(Path.GetDirectoryName(filePath));

            bool writeMapLink = sourceMapBuilder != null && sourceMapBuilder.Build(folder, name);
            using (var fs = File.Open(filePath, fileMode, FileAccess.Write, FileShare.Read))
            {
                fs.Write(bytes.Array, bytes.Offset, bytes.Count);
                if (writeMapLink)
                    sourceMapBuilder.WriteSourceMapLink(fs, folder, name);
                fs.Flush();
            }
        }