swamp_script_source_map_lookup/
lib.rs

1/*
2 * Copyright (c) Peter Bjorklund. All rights reserved. https://github.com/swamp/script
3 * Licensed under the MIT License. See LICENSE in the project root for license information.
4 */
5
6use swamp_script_core_extra::prelude::SourceMapLookup;
7use swamp_script_node::{Node, Span};
8use swamp_script_source_map::SourceMap;
9
10#[derive(Debug)]
11pub struct SourceMapWrapper<'a> {
12    pub source_map: &'a SourceMap,
13}
14
15impl SourceMapLookup for SourceMapWrapper<'_> {
16    fn get_text(&self, resolved_node: &Node) -> &str {
17        self.source_map.get_span_source(
18            resolved_node.span.file_id,
19            resolved_node.span.offset as usize,
20            resolved_node.span.length as usize,
21        )
22    }
23
24    fn get_text_span(&self, span: &Span) -> &str {
25        self.source_map
26            .get_span_source(span.file_id, span.offset as usize, span.length as usize)
27    }
28}