1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
use crate::source::Range; #[derive(Debug, Clone, PartialEq)] pub enum CommentType { Inline, Document, Unknown, } #[derive(Debug, Clone)] pub struct Comment { location: Range, } impl Comment { pub fn new(location: Range) -> Self { Self { location } } pub fn kind(&self) -> CommentType { match self.location.source() { Some(source) => { if source.starts_with('#') { CommentType::Inline } else if source.starts_with("=begin") { CommentType::Document } else { CommentType::Unknown } } None => CommentType::Unknown, } } pub fn is_inline(&self) -> bool { self.kind() == CommentType::Inline } pub fn is_document(&self) -> bool { self.kind() == CommentType::Document } }