(&self, writer: &BufferWriter)
| 108 | } |
| 109 | |
| 110 | fn buffers(&self, writer: &BufferWriter) -> Result<Vec<Buffer>> { |
| 111 | let table_dimension = self.required_dimension(); |
| 112 | let row_dimensions: Vec<RowDimension> = table_dimension.clone().into(); |
| 113 | let mut row_dimensions = row_dimensions.into_iter(); |
| 114 | let color_spec = self.color_spec(); |
| 115 | |
| 116 | let mut buffers = Buffers::new(writer); |
| 117 | |
| 118 | print_horizontal_line( |
| 119 | &mut buffers, |
| 120 | self.format.border.top.as_ref(), |
| 121 | &table_dimension, |
| 122 | &self.format, |
| 123 | &color_spec, |
| 124 | )?; |
| 125 | |
| 126 | if let Some(ref title) = self.title { |
| 127 | let title_dimension = row_dimensions.next().unwrap(); |
| 128 | let mut title_buffers = |
| 129 | title.buffers(writer, title_dimension, &self.format, &color_spec)?; |
| 130 | |
| 131 | buffers.append(&mut title_buffers)?; |
| 132 | |
| 133 | if self.format.separator.title.is_some() { |
| 134 | print_horizontal_line( |
| 135 | &mut buffers, |
| 136 | self.format.separator.title.as_ref(), |
| 137 | &table_dimension, |
| 138 | &self.format, |
| 139 | &color_spec, |
| 140 | )? |
| 141 | } else { |
| 142 | print_horizontal_line( |
| 143 | &mut buffers, |
| 144 | self.format.separator.row.as_ref(), |
| 145 | &table_dimension, |
| 146 | &self.format, |
| 147 | &color_spec, |
| 148 | )? |
| 149 | } |
| 150 | } |
| 151 | |
| 152 | let mut rows = self.rows.iter().zip(row_dimensions).peekable(); |
| 153 | |
| 154 | while let Some((row, row_dimension)) = rows.next() { |
| 155 | let mut row_buffers = row.buffers(writer, row_dimension, &self.format, &color_spec)?; |
| 156 | |
| 157 | buffers.append(&mut row_buffers)?; |
| 158 | |
| 159 | match rows.peek() { |
| 160 | Some(_) => print_horizontal_line( |
| 161 | &mut buffers, |
| 162 | self.format.separator.row.as_ref(), |
| 163 | &table_dimension, |
| 164 | &self.format, |
| 165 | &color_spec, |
| 166 | )?, |
| 167 | None => print_horizontal_line( |
no test coverage detected