]> git.lizzy.rs Git - rust.git/blobdiff - src/comment.rs
Add custom comments (#1179)
[rust.git] / src / comment.rs
index 4ced667ef78a20409be0503412ceae7cbd63a622..23d7dab3de9725ae43183908a4a962a156cab645 100644 (file)
 use string::{StringFormat, rewrite_string};
 use utils::wrap_str;
 
+fn is_custom_comment(comment: &str) -> bool {
+    if !comment.starts_with("//") {
+        false
+    } else {
+        if let Some(c) = comment.chars().nth(2) {
+            !c.is_alphanumeric() && !c.is_whitespace()
+        } else {
+            false
+        }
+    }
+}
+
 pub fn rewrite_comment(orig: &str,
                        block_style: bool,
                        width: usize,
@@ -51,6 +63,12 @@ pub fn rewrite_comment(orig: &str,
             ("/// ", "", "/// ")
         } else if orig.starts_with("//!") || orig.starts_with("/*!") {
             ("//! ", "", "//! ")
+        } else if is_custom_comment(orig) {
+            if orig.chars().nth(3) == Some(' ') {
+                (&orig[0..4], "", &orig[0..4])
+            } else {
+                (&orig[0..3], "", &orig[0..3])
+            }
         } else {
             ("// ", "", "// ")
         };
@@ -138,6 +156,12 @@ fn left_trim_comment_line(line: &str) -> &str {
     if line.starts_with("//! ") || line.starts_with("/// ") || line.starts_with("/*! ") ||
        line.starts_with("/** ") {
         &line[4..]
+    } else if is_custom_comment(line) {
+        if line.len() > 3 && line.chars().nth(3) == Some(' ') {
+            &line[4..]
+        } else {
+            &line[3..]
+        }
     } else if line.starts_with("/* ") || line.starts_with("// ") || line.starts_with("//!") ||
               line.starts_with("///") ||
               line.starts_with("** ") || line.starts_with("/*!") ||