mirror of
https://github.com/danbulant/oxc
synced 2026-05-24 12:21:58 +00:00
feat(prettier) print array pattern (#1382)
This commit is contained in:
parent
6d0e647c13
commit
001a8d8fe9
2 changed files with 22 additions and 1 deletions
|
|
@ -6,10 +6,12 @@ use oxc_allocator::Vec;
|
|||
|
||||
use super::Format;
|
||||
|
||||
#[allow(clippy::enum_variant_names)]
|
||||
pub enum Array<'a, 'b> {
|
||||
ArrayExpression(&'b ArrayExpression<'a>),
|
||||
#[allow(unused)]
|
||||
TSTupleType(&'b TSTupleType<'a>),
|
||||
ArrayPattern(&'b ArrayPattern<'a>),
|
||||
}
|
||||
|
||||
impl<'a, 'b> Array<'a, 'b> {
|
||||
|
|
@ -17,6 +19,7 @@ impl<'a, 'b> Array<'a, 'b> {
|
|||
match self {
|
||||
Self::ArrayExpression(array) => array.elements.len(),
|
||||
Self::TSTupleType(tuple) => tuple.element_types.len(),
|
||||
Self::ArrayPattern(array) => array.elements.len(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -64,6 +67,24 @@ fn print_elements<'a>(p: &mut Prettier<'a>, array: &Array<'a, '_>) -> Vec<'a, Do
|
|||
parts.push(element.format(p));
|
||||
}
|
||||
}
|
||||
Array::ArrayPattern(array_pat) => {
|
||||
for (i, element) in array_pat.elements.iter().enumerate() {
|
||||
if i > 0 && i < array_pat.elements.len() {
|
||||
parts.push(ss!(","));
|
||||
parts.push(Doc::Line);
|
||||
}
|
||||
|
||||
if let Some(binding_pat) = element {
|
||||
parts.push(binding_pat.format(p));
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(rest) = &array_pat.rest {
|
||||
parts.push(ss!(","));
|
||||
parts.push(Doc::Line);
|
||||
parts.push(rest.format(p));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
parts
|
||||
|
|
|
|||
|
|
@ -1632,7 +1632,7 @@ impl<'a> Format<'a> for RestElement<'a> {
|
|||
|
||||
impl<'a> Format<'a> for ArrayPattern<'a> {
|
||||
fn format(&self, p: &mut Prettier<'a>) -> Doc<'a> {
|
||||
Doc::Line
|
||||
array::print_array(p, &Array::ArrayPattern(self))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue