Get a line of source code
(&self, line_num: u32)
| 116 | |
| 117 | /// Get a line of source code |
| 118 | pub fn line(&self, line_num: u32) -> Option<&str> { |
| 119 | let line_idx = line_num as usize; |
| 120 | if line_idx >= self.line_starts.len() { |
| 121 | return None; |
| 122 | } |
| 123 | |
| 124 | let start = self.line_starts[line_idx] as usize; |
| 125 | let end = if line_idx + 1 < self.line_starts.len() { |
| 126 | self.line_starts[line_idx + 1] as usize - 1 // Exclude newline |
| 127 | } else { |
| 128 | self.content.len() |
| 129 | }; |
| 130 | |
| 131 | Some(&self.content[start..end]) |
| 132 | } |
| 133 | } |
| 134 | |
| 135 | impl fmt::Display for Span { |