@@ -2,11 +2,15 @@ import type { Actor, Ballot, VoteCandidate, VoteCommit } from "../vote";
22import type { CandidateScores } from "../votingMethods/VotingMethodImplementation" ;
33import cleanMarkdown from "../utils/cleanMarkdown.js" ;
44
5- function displayWinners ( winners : VoteCandidate [ ] ) {
5+ function displayWinners ( winners : VoteCandidate [ ] , keepOnlyFirstLineInSummary ?: boolean ) {
66 if ( winners . length === 0 ) return "None." ;
7- if ( winners . length === 1 ) return cleanMarkdown ( winners [ 0 ] ) ;
7+ if ( winners . length === 1 ) return cleanMarkdown ( winners [ 0 ] , keepOnlyFirstLineInSummary ) ;
88 const delimiter = "\n - " ;
9- return delimiter + winners . map ( cleanMarkdown ) . join ( delimiter ) ;
9+ return delimiter + winners . map (
10+ keepOnlyFirstLineInSummary
11+ ? l => cleanMarkdown ( l , keepOnlyFirstLineInSummary )
12+ : l => cleanMarkdown ( l ) . split ( "\n" ) . join ( "\n " ) ,
13+ ) . join ( delimiter ) ;
1014}
1115
1216export interface DiscardedCommit {
@@ -23,6 +27,7 @@ export interface ElectionSummaryOptions {
2327 ballots : Ballot [ ] ;
2428 privateKey : string ;
2529 discardedCommits ?: DiscardedCommit [ ] ;
30+ keepOnlyFirstLineInSummary ?: boolean ;
2631}
2732export default abstract class ElectionSummary {
2833 subject : string ;
@@ -35,6 +40,7 @@ export default abstract class ElectionSummary {
3540 privateKey : string ;
3641 participants : Actor [ ] ;
3742 discardedCommits : DiscardedCommit [ ] ;
43+ keepOnlyFirstLineInSummary : boolean ;
3844
3945 abstract scoreText : string ;
4046
@@ -48,6 +54,7 @@ export default abstract class ElectionSummary {
4854 ballots : unsortedBallots ,
4955 privateKey,
5056 discardedCommits,
57+ keepOnlyFirstLineInSummary,
5158 } : ElectionSummaryOptions ) {
5259 this . subject = subject ;
5360 this . startDate = startDate ;
@@ -56,6 +63,7 @@ export default abstract class ElectionSummary {
5663 this . winners = winners ;
5764 this . result = result ;
5865 this . discardedCommits = discardedCommits ;
66+ this . keepOnlyFirstLineInSummary = ! ! keepOnlyFirstLineInSummary ;
5967
6068 this . sortedBallots = unsortedBallots
6169 . slice ( )
@@ -80,6 +88,7 @@ ${this.startDate ? `**Start date**: ${this.startDate} \n` : ""}**End date**: ${
8088
8189**Winning candidate${ this . winners . length === 1 ? "" : "s" } **: ${ displayWinners (
8290 this . winners ,
91+ this . keepOnlyFirstLineInSummary ,
8392) }
8493
8594### Table of results
@@ -88,7 +97,7 @@ ${this.startDate ? `**Start date**: ${this.startDate} \n` : ""}**End date**: ${
8897| --------- | ------------------- |
8998${ Array . from ( this . result )
9099 . sort ( ( [ , scoreA ] , [ , scoreB ] ) => scoreB - scoreA )
91- . map ( result => `| ${ cleanMarkdown ( result [ 0 ] ) } | ${ result [ 1 ] } |` )
100+ . map ( result => `| ${ cleanMarkdown ( result [ 0 ] , this . keepOnlyFirstLineInSummary ) } | ${ result [ 1 ] } |` )
92101 . join ( "\n" ) }
93102
94103## Voting data
0 commit comments