oxc_ecmascript/
array_join.rs

1use oxc_ast::ast::*;
2
3use crate::{GlobalContext, ToJsString};
4
5pub trait ArrayJoin<'a> {
6    /// `Array.prototype.join ( separator )`
7    /// <https://tc39.es/ecma262/#sec-array.prototype.join>
8    fn array_join(&self, ctx: &impl GlobalContext<'a>, separator: Option<&str>) -> Option<String>;
9}
10
11impl<'a> ArrayJoin<'a> for ArrayExpression<'a> {
12    fn array_join(&self, ctx: &impl GlobalContext<'a>, separator: Option<&str>) -> Option<String> {
13        let strings = self.elements.iter().map(|e| e.to_js_string(ctx)).collect::<Option<Vec<_>>>();
14        strings
15            .map(|v| v.iter().map(AsRef::as_ref).collect::<Vec<_>>().join(separator.unwrap_or(",")))
16    }
17}