public static IEnumerable <CssSourceMapNode> Decode(string vlqValue, string basePath, params string[] sources) { int generatedLine = 0, previousSource, previousGeneratedColumn, previousOriginalLine, previousOriginalColumn; previousSource = previousGeneratedColumn = previousOriginalLine = previousOriginalColumn = 0; var stream = new StringReader(vlqValue); while (stream.Peek() != -1) { if (stream.Peek() == ',') { stream.Read(); continue; } if (stream.Peek() == ';') { stream.Read(); generatedLine++; previousGeneratedColumn = 0; continue; } var result = new CssSourceMapNode(); // Generated column. result.GeneratedColumn = previousGeneratedColumn + VlqDecode(stream); result.GeneratedLine = generatedLine; previousGeneratedColumn = result.GeneratedColumn; if (stream.Peek() < 0 || IsMappingSeparator(stream.Peek())) { yield break; } // Original source. previousSource += VlqDecode(stream); result.SourceFilePath = GetName(previousSource, basePath, sources); if (stream.Peek() < 0 || IsMappingSeparator(stream.Peek())) { throw new VlqException("Found a source, but no line and column"); } // Original line. result.OriginalLine = previousOriginalLine + VlqDecode(stream); previousOriginalLine = result.OriginalLine; if (stream.Peek() < 0 || IsMappingSeparator(stream.Peek())) { throw new VlqException("Found a source and line, but no column"); } // Original column. result.OriginalColumn = previousOriginalColumn + VlqDecode(stream); previousOriginalColumn = result.OriginalColumn; // Skip Original Name bit; we are not using it. if (stream.Peek() > 0 && !IsMappingSeparator(stream.Peek())) { stream.Read(); } yield return(result); } }
public static IEnumerable<CssSourceMapNode> Decode(string vlqValue, string basePath, params string[] sources) { int generatedLine = 0, previousSource, previousGeneratedColumn, previousOriginalLine, previousOriginalColumn; previousSource = previousGeneratedColumn = previousOriginalLine = previousOriginalColumn = 0; var stream = new StringReader(vlqValue); while (stream.Peek() != -1) { if (stream.Peek() == ',') { stream.Read(); continue; } if (stream.Peek() == ';') { stream.Read(); generatedLine++; previousGeneratedColumn = 0; continue; } var result = new CssSourceMapNode(); // Generated column. result.GeneratedColumn = previousGeneratedColumn + VlqDecode(stream); result.GeneratedLine = generatedLine; previousGeneratedColumn = result.GeneratedColumn; if (stream.Peek() < 0 || IsMappingSeparator(stream.Peek())) yield break; // Original source. previousSource += VlqDecode(stream); result.SourceFilePath = GetName(previousSource, basePath, sources); if (stream.Peek() < 0 || IsMappingSeparator(stream.Peek())) throw new VlqException("Found a source, but no line and column"); // Original line. result.OriginalLine = previousOriginalLine + VlqDecode(stream); previousOriginalLine = result.OriginalLine; if (stream.Peek() < 0 || IsMappingSeparator(stream.Peek())) throw new VlqException("Found a source and line, but no column"); // Original column. result.OriginalColumn = previousOriginalColumn + VlqDecode(stream); previousOriginalColumn = result.OriginalColumn; // Skip Original Name bit; we are not using it. if (stream.Peek() > 0 && !IsMappingSeparator(stream.Peek())) stream.Read(); yield return result; } }
public static IEnumerable<CssSourceMapNode> Decode(string vlqValue, string basePath, params string[] sources) { int generatedLine = 0, previousSource, previousGeneratedColumn, previousOriginalLine, previousOriginalColumn; previousSource = previousGeneratedColumn = previousOriginalLine = previousOriginalColumn = 0; while (vlqValue.Length > 0) { if (vlqValue[0] == ',') { vlqValue = vlqValue.Substring(1); continue; } if (vlqValue[0] == ';') { generatedLine++; vlqValue = vlqValue.Substring(1); previousGeneratedColumn = 0; continue; } var temp = VlqDecode(vlqValue); var result = new CssSourceMapNode(); // Generated column. result.GeneratedColumn = previousGeneratedColumn + temp.value; result.GeneratedLine = generatedLine; previousGeneratedColumn = result.GeneratedColumn; vlqValue = temp.rest; if (vlqValue.Length < 1 || _mappingSeparator.IsMatch(vlqValue.Substring(0, 1))) yield break; // Original source. temp = VlqDecode(vlqValue); previousSource += temp.value; result.SourceFilePath = GetName(previousSource, basePath, sources); vlqValue = temp.rest; if (vlqValue.Length == 0 || _mappingSeparator.IsMatch(vlqValue.Substring(0, 1))) throw new VlqException("Found a source, but no line and column"); // Original line. temp = VlqDecode(vlqValue); result.OriginalLine = previousOriginalLine + temp.value; previousOriginalLine = result.OriginalLine; vlqValue = temp.rest; if (vlqValue.Length == 0 || _mappingSeparator.IsMatch(vlqValue.Substring(0, 1))) throw new VlqException("Found a source and line, but no column"); // Original column. temp = VlqDecode(vlqValue); result.OriginalColumn = previousOriginalColumn + temp.value; previousOriginalColumn = result.OriginalColumn; vlqValue = temp.rest; if (vlqValue.Length > 0 && !_mappingSeparator.IsMatch(vlqValue.Substring(0, 1))) // Skip Original Name bit; we are not using it. vlqValue = vlqValue.Substring(1); yield return result; } }
public static IEnumerable <CssSourceMapNode> Decode(string vlqValue, string basePath, params string[] sources) { int generatedLine = 0, previousSource, previousGeneratedColumn, previousOriginalLine, previousOriginalColumn; previousSource = previousGeneratedColumn = previousOriginalLine = previousOriginalColumn = 0; while (vlqValue.Length > 0) { if (vlqValue[0] == ',') { vlqValue = vlqValue.Substring(1); continue; } if (vlqValue[0] == ';') { generatedLine++; vlqValue = vlqValue.Substring(1); previousGeneratedColumn = 0; continue; } var temp = VlqDecode(vlqValue); var result = new CssSourceMapNode(); // Generated column. result.GeneratedColumn = previousGeneratedColumn + temp.value; result.GeneratedLine = generatedLine; previousGeneratedColumn = result.GeneratedColumn; vlqValue = temp.rest; if (vlqValue.Length < 1 || _mappingSeparator.IsMatch(vlqValue.Substring(0, 1))) { yield break; } // Original source. temp = VlqDecode(vlqValue); previousSource += temp.value; result.SourceFilePath = GetName(previousSource, basePath, sources); vlqValue = temp.rest; if (vlqValue.Length == 0 || _mappingSeparator.IsMatch(vlqValue.Substring(0, 1))) { throw new VlqException("Found a source, but no line and column"); } // Original line. temp = VlqDecode(vlqValue); result.OriginalLine = previousOriginalLine + temp.value; previousOriginalLine = result.OriginalLine; vlqValue = temp.rest; if (vlqValue.Length == 0 || _mappingSeparator.IsMatch(vlqValue.Substring(0, 1))) { throw new VlqException("Found a source and line, but no column"); } // Original column. temp = VlqDecode(vlqValue); result.OriginalColumn = previousOriginalColumn + temp.value; previousOriginalColumn = result.OriginalColumn; vlqValue = temp.rest; if (vlqValue.Length > 0 && !_mappingSeparator.IsMatch(vlqValue.Substring(0, 1))) { // Skip Original Name bit; we are not using it. vlqValue = vlqValue.Substring(1); } yield return(result); } }