[][src]Struct sourcemap::SourceMap

pub struct SourceMap { /* fields omitted */ }

Represents a sourcemap in memory

This is always represents a regular "non-indexed" sourcemap. Particularly in case the from_reader method is used an index sourcemap will be rejected with an error on reading.

Implementations

impl SourceMap[src]

pub fn from_reader<R: Read>(rdr: R) -> Result<SourceMap>[src]

Creates a sourcemap from a reader over a JSON stream in UTF-8 format. Optionally a "garbage header" as defined by the sourcemap draft specification is supported. In case an indexed sourcemap is encountered an error is returned.

use sourcemap::SourceMap;
let input: &[_] = b"{
    \"version\":3,
    \"sources\":[\"coolstuff.js\"],
    \"names\":[\"x\",\"alert\"],
    \"mappings\":\"AAAA,GAAIA,GAAI,EACR,IAAIA,GAAK,EAAG,CACVC,MAAM\"
}";
let sm = SourceMap::from_reader(input).unwrap();

While sourcemaps objects permit some modifications, it's generally not possible to modify tokens after they have been added. For creating sourcemaps from scratch or for general operations for modifying a sourcemap have a look at the SourceMapBuilder.

pub fn to_writer<W: Write>(&self, w: W) -> Result<()>[src]

Writes a sourcemap into a writer.

Note that this operation will generate an equivalent sourcemap to the one that was generated on load however there might be small differences in the generated JSON and layout. For instance sourceRoot will not be set as upon parsing of the sourcemap the sources will already be expanded.

let sm = SourceMap::from_reader(input).unwrap();
let mut output : Vec<u8> = vec![];
sm.to_writer(&mut output).unwrap();

pub fn from_slice(slice: &[u8]) -> Result<SourceMap>[src]

Creates a sourcemap from a reader over a JSON byte slice in UTF-8 format. Optionally a "garbage header" as defined by the sourcemap draft specification is supported. In case an indexed sourcemap is encountered an error is returned.

use sourcemap::SourceMap;
let input: &[_] = b"{
    \"version\":3,
    \"sources\":[\"coolstuff.js\"],
    \"names\":[\"x\",\"alert\"],
    \"mappings\":\"AAAA,GAAIA,GAAI,EACR,IAAIA,GAAK,EAAG,CACVC,MAAM\"
}";
let sm = SourceMap::from_slice(input).unwrap();

pub fn new(
    file: Option<String>,
    tokens: Vec<RawToken>,
    names: Vec<String>,
    sources: Vec<String>,
    sources_content: Option<Vec<Option<String>>>
) -> SourceMap
[src]

Constructs a new sourcemap from raw components.

  • file: an optional filename of the sourcemap
  • tokens: a list of raw tokens
  • names: a vector of names
  • sources a vector of source filenames
  • sources_content optional source contents

pub fn get_file(&self) -> Option<&str>[src]

Returns the embedded filename in case there is one.

pub fn set_file(&mut self, value: Option<&str>)[src]

Sets a new value for the file.

pub fn get_token(&self, idx: u32) -> Option<Token<'_>>[src]

Looks up a token by its index.

pub fn get_token_count(&self) -> u32[src]

Returns the number of tokens in the sourcemap.

pub fn tokens(&self) -> TokenIter<'_>

Notable traits for TokenIter<'a>

impl<'a> Iterator for TokenIter<'a> type Item = Token<'a>;
[src]

Returns an iterator over the tokens.

pub fn lookup_token(&self, line: u32, col: u32) -> Option<Token<'_>>[src]

Looks up the closest token to a given line and column.

pub fn get_original_function_name<'a>(
    &self,
    line: u32,
    col: u32,
    minified_name: &str,
    sv: &'a SourceView<'a>
) -> Option<&str>
[src]

Given a location, name and minified source file resolve a minified name to an original function name.

This invokes some guesswork and requires access to the original minified source. This will not yield proper results for anonymous functions or functions that do not have clear function names. (For instance it's recommended that dotted function names are not passed to this function).

pub fn get_source_count(&self) -> u32[src]

Returns the number of sources in the sourcemap.

pub fn get_source(&self, idx: u32) -> Option<&str>[src]

Looks up a source for a specific index.

pub fn set_source(&mut self, idx: u32, value: &str)[src]

Sets a new source value for an index. This cannot add new sources.

This panics if a source is set that does not exist.

pub fn sources(&self) -> SourceIter<'_>

Notable traits for SourceIter<'a>

impl<'a> Iterator for SourceIter<'a> type Item = &'a str;
[src]

Iterates over all sources

pub fn get_source_view(&self, idx: u32) -> Option<&SourceView<'_>>[src]

Returns the sources content as source view.

pub fn get_source_contents(&self, idx: u32) -> Option<&str>[src]

Looks up the content for a source.

pub fn set_source_contents(&mut self, idx: u32, value: Option<&str>)[src]

Sets source contents for a source.

pub fn source_contents(&self) -> SourceContentsIter<'_>

Notable traits for SourceContentsIter<'a>

impl<'a> Iterator for SourceContentsIter<'a> type Item = Option<&'a str>;
[src]

Iterates over all source contents

pub fn names(&self) -> NameIter<'_>

Notable traits for NameIter<'a>

impl<'a> Iterator for NameIter<'a> type Item = &'a str;
[src]

Returns an iterator over the names.

pub fn get_name_count(&self) -> u32[src]

Returns the number of names in the sourcemap.

pub fn has_names(&self) -> bool[src]

Returns true if there are any names in the map.

pub fn get_name(&self, idx: u32) -> Option<&str>[src]

Looks up a name for a specific index.

pub fn remove_names(&mut self)[src]

Removes all names from the sourcemap.

pub fn get_index_size(&self) -> usize[src]

Returns the number of items in the index

pub fn index_iter(&self) -> IndexIter<'_>

Notable traits for IndexIter<'a>

impl<'a> Iterator for IndexIter<'a> type Item = (u32, u32, u32);
[src]

Returns the number of items in the index

pub fn rewrite(self, options: &RewriteOptions<'_>) -> Result<SourceMap>[src]

This rewrites the sourcemap according to the provided rewrite options.

The default behavior is to just deduplicate the sourcemap, something that automatically takes place. This for instance can be used to slightly compress sourcemaps if certain data is not wanted.

use sourcemap::{SourceMap, RewriteOptions};
let sm = SourceMap::from_slice(input).unwrap();
let new_sm = sm.rewrite(&RewriteOptions {
    with_names: false,
    ..Default::default()
});

Trait Implementations

impl Clone for SourceMap[src]

impl Debug for SourceMap[src]

Auto Trait Implementations

impl !RefUnwindSafe for SourceMap

impl !Send for SourceMap

impl !Sync for SourceMap

impl Unpin for SourceMap

impl UnwindSafe for SourceMap

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.