class Opal::SourceMap::File
def relative_mappings
def relative_mappings @relative_mappings ||= begin reference_segment = [0, 0, 0, 0, 0] reference_name_index = 0 absolute_mappings.map do |absolute_mapping| # [generated_column, source_index, original_line, original_column, map_name_index] reference_segment[0] = 0 # reset the generated_column at each new line absolute_mapping.map do |absolute_segment| segment = [] segment[0] = absolute_segment[0] - reference_segment[0] segment[1] = absolute_segment[1] - (reference_segment[1] || 0) segment[2] = absolute_segment[2] - (reference_segment[2] || 0) segment[3] = absolute_segment[3] - (reference_segment[3] || 0) # Since [4] can be nil we need to keep track of it in the reference_segment even if it's nil in absolute_segment if absolute_segment[4] segment[4] = absolute_segment[4].to_int - (reference_segment[4] || reference_name_index).to_int reference_name_index = absolute_segment[4] end reference_segment = absolute_segment segment end end end end