pub trait Comments {
Show 16 methods
// Required methods
fn add_leading(&self, pos: BytePos, cmt: Comment);
fn add_leading_comments(&self, pos: BytePos, comments: Vec<Comment>);
fn has_leading(&self, pos: BytePos) -> bool;
fn move_leading(&self, from: BytePos, to: BytePos);
fn take_leading(&self, pos: BytePos) -> Option<Vec<Comment>>;
fn get_leading(&self, pos: BytePos) -> Option<Vec<Comment>>;
fn add_trailing(&self, pos: BytePos, cmt: Comment);
fn add_trailing_comments(&self, pos: BytePos, comments: Vec<Comment>);
fn has_trailing(&self, pos: BytePos) -> bool;
fn move_trailing(&self, from: BytePos, to: BytePos);
fn take_trailing(&self, pos: BytePos) -> Option<Vec<Comment>>;
fn get_trailing(&self, pos: BytePos) -> Option<Vec<Comment>>;
fn add_pure_comment(&self, pos: BytePos);
// Provided methods
fn with_leading<F, Ret>(&self, pos: BytePos, f: F) -> Ret
where Self: Sized,
F: FnOnce(&[Comment]) -> Ret { ... }
fn with_trailing<F, Ret>(&self, pos: BytePos, f: F) -> Ret
where Self: Sized,
F: FnOnce(&[Comment]) -> Ret { ... }
fn has_flag(&self, lo: BytePos, flag: &str) -> bool { ... }
}
Expand description
Stores comment.
§Implementation notes
Methods uses (&self)
instead of (&mut self)
for some reasons. Firstly,
this is similar to the previous api. Secondly, typescript parser requires
backtracking, which requires Clone. To avoid cloning large vectors, we
must use Rc<RefCell(&self)
allows multi-threaded
use-cases such as swc itself.
We use Option instead of no-op Comments implementation to avoid allocation unless required.
Required Methods§
fn add_leading(&self, pos: BytePos, cmt: Comment)
fn add_leading_comments(&self, pos: BytePos, comments: Vec<Comment>)
fn has_leading(&self, pos: BytePos) -> bool
fn move_leading(&self, from: BytePos, to: BytePos)
fn take_leading(&self, pos: BytePos) -> Option<Vec<Comment>>
fn get_leading(&self, pos: BytePos) -> Option<Vec<Comment>>
fn add_trailing(&self, pos: BytePos, cmt: Comment)
fn add_trailing_comments(&self, pos: BytePos, comments: Vec<Comment>)
fn has_trailing(&self, pos: BytePos) -> bool
fn move_trailing(&self, from: BytePos, to: BytePos)
fn take_trailing(&self, pos: BytePos) -> Option<Vec<Comment>>
fn get_trailing(&self, pos: BytePos) -> Option<Vec<Comment>>
fn add_pure_comment(&self, pos: BytePos)
Provided Methods§
fn with_leading<F, Ret>(&self, pos: BytePos, f: F) -> Ret
fn with_trailing<F, Ret>(&self, pos: BytePos, f: F) -> Ret
Implementations on Foreign Types§
source§impl<C> Comments for Option<C>where
C: Comments,
impl<C> Comments for Option<C>where
C: Comments,
This implementation behaves like NoopComments if it’s None.