import { Collector, BaseCollector } from "../collector"; import { ToArrayCollector } from "../collections/toArray" export class JoiningCollector extends BaseCollector implements Collector { protected collector : ToArrayCollector = new ToArrayCollector(); protected separator : string; protected prefix : string; protected suffix : string; constructor ( separator : string = ',', prefix : string = '', suffix : string = '' ) { super(); this.separator = separator; this.prefix = prefix; this.suffix = suffix; } supply () : any[] { return this.collector.supply(); } accumulate ( container : any[], item : any ) : void { return this.collector.accumulate( container, item ); } combine ( container1 : any[], container2 : any[] ) : any[] { return this.collector.combine( container1, container2 ); } finish ( container : any[] ) : string { return this.prefix + this.collector.finish( container ).join( this.separator ) + this.suffix; } } export function joining ( separator : string = ',', prefix : string = '', suffix : string = '' ) : Collector { return new JoiningCollector( separator, prefix, suffix ); }