public void AddMappingDirective(string generatedFilename, string mappingFilename)
        {
            var mapCode = SourceMappingHelper.GetJsMappingCode(Path.GetFileName(mappingFilename));

            File.AppendAllText(generatedFilename, mapCode);
            //file.JsFile.Units.Add(new JsUnit { Statements = new List<JsStatement> { Js.Code(mapCode).Statement() } });
        }
 public void ParseMappings()
 {
     ParsedMappings = new List <List <SourceMappingV3Item> >();
     foreach (var line in mappings.Split(';'))
     {
         var line2 = new List <SourceMappingV3Item>();
         foreach (var token in line.Split(','))
         {
             //Console.WriteLine(token);
             var data    = SourceMappingHelper.DecodeAll(token);
             var numbers = data.Cast <int?>().ToList();
             while (numbers.Count < 5)
             {
                 numbers.Add(null);
             }
             var map = new SourceMappingV3Item
             {
                 GeneratedColumn     = numbers[0],
                 SourceFilenameIndex = numbers[1],
                 SourceLine          = numbers[2],
                 SourceColumn        = numbers[3],
                 SourceNameIndex     = numbers[4],
                 OriginalData        = data,
             };
             line2.Add(map);
         }
         ParsedMappings.Add(line2);
     }
 }
        public void GenerateMappings()
        {
            var sb = new StringBuilder();

            foreach (var line in ParsedMappings)
            {
                var firstMap = true;
                foreach (var map in line)
                {
                    if (firstMap)
                    {
                        firstMap = false;
                    }
                    else
                    {
                        sb.Append(",");
                    }

                    var numbers = new List <int?> {
                        map.GeneratedColumn, map.SourceFilenameIndex, map.SourceLine, map.SourceColumn, map.SourceNameIndex
                    };
                    while (numbers.Count > 0 && numbers.Last() == null)
                    {
                        numbers.RemoveAt(numbers.Count - 1);
                    }
                    var nums = numbers.Select(t => t.GetValueOrDefault()).ToList();
                    var x    = SourceMappingHelper.EncodeAll(nums);
                    sb.Append(x);
                }
                sb.Append(";");
            }
            mappings  = sb.ToString();
            lineCount = ParsedMappings.Count;
            if (sourceRoot == null)
            {
                sourceRoot = "";
            }
            if (names == null)
            {
                names = new List <string>();
            }
        }