impl<'a> ChangeSet<'a> {
// Create a new ChangeSet for a given libsyntax CodeMap.
pub fn from_codemap(codemap: &'a CodeMap) -> ChangeSet<'a> {
- let mut result = ChangeSet {
- file_map: HashMap::new(),
- codemap: codemap,
- file_spans: Vec::with_capacity(codemap.files.borrow().len()),
- };
+ let mut result = ChangeSet { file_map: HashMap::new(),
+ codemap: codemap,
+ file_spans: Vec::with_capacity(codemap.files.borrow().len()), };
for f in codemap.files.borrow().iter() {
// Use the length of the file as a heuristic for how much space we
self.push_str(&file_name, text)
}
+ // Fetch the output buffer for the given file name.
+ // Panics on unknown files.
+ pub fn get(&mut self, file_name: &str) -> &StringBuffer {
+ self.file_map.get(file_name).unwrap()
+ }
+
+ // Fetch a mutable reference to the output buffer for the given file name.
+ // Panics on unknown files.
pub fn get_mut(&mut self, file_name: &str) -> &mut StringBuffer {
self.file_map.get_mut(file_name).unwrap()
}
// Return an iterator over the entire changed text.
pub fn text<'c>(&'c self) -> FileIterator<'c, 'a> {
- FileIterator {
- change_set: self,
- keys: self.file_map.keys().collect(),
- cur_key: 0,
- }
+ FileIterator { change_set: self, keys: self.file_map.keys().collect(), cur_key: 0 }
}
// Append a newline to the end of each file.
let text = &self.file_map[filename];
// prints all newlines either as `\n` or as `\r\n`
- fn write_system_newlines<T>(
- mut writer: T,
- text: &StringBuffer,
- config: &Config)
- -> Result<(), ::std::io::Error>
- where T: Write,
+ fn write_system_newlines<T>(mut writer: T,
+ text: &StringBuffer,
+ config: &Config)
+ -> Result<(), ::std::io::Error>
+ where T: Write
{
match config.newline_style {
NewlineStyle::Unix => write!(writer, "{}", text),
Ok(None)
}
+
+ pub fn is_changed(&self, filename: &str) -> bool {
+ self.file_map.get(filename).expect("Unknown filename").len != 0
+ }
}
// Iterates over each file in the ChangSet. Yields the filename and the changed