Skip to content

Commit bc9aa61

Browse files
committed
Move the alignment markers into their own files and add tests
1 parent 3ed99e7 commit bc9aa61

14 files changed

Lines changed: 246 additions & 53 deletions

src/viewModelFactories/alignmentMarker.ts

Lines changed: 0 additions & 41 deletions
This file was deleted.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export interface IAlignmentMarker {
2+
mark(padding: string): string;
3+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { Alignment } from "../../models/alignment";
2+
import { IAlignmentMarker, LeftAlignmentMarker, RightAlignmentMarker, CenterAlignmentMarker, NotSetAlignmentMarker } from ".";
3+
4+
5+
export class AlignmentMarkerStrategy {
6+
7+
public marker(alignment: Alignment): IAlignmentMarker {
8+
switch (alignment) {
9+
case Alignment.Left: return new LeftAlignmentMarker();
10+
case Alignment.Right: return new RightAlignmentMarker();
11+
case Alignment.Center: return new CenterAlignmentMarker();
12+
default: return new NotSetAlignmentMarker();
13+
}
14+
}
15+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { IAlignmentMarker } from ".";
2+
3+
export class CenterAlignmentMarker implements IAlignmentMarker {
4+
public mark(padding: string): string {
5+
if (padding == null || padding.length < 2)
6+
return padding;
7+
8+
return ":" + padding.substring(1, padding.length - 1) + ":";
9+
}
10+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export * from "./alignmentMarker"
2+
export * from "./alignmentMarkerStrategy"
3+
export * from "./centerAlignmentMarker"
4+
export * from "./leftAlignmentMarker"
5+
export * from "./notSetAlignmentMarker"
6+
export * from "./rightAlignmentMarker"
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { IAlignmentMarker } from ".";
2+
3+
export class LeftAlignmentMarker implements IAlignmentMarker {
4+
constructor() {
5+
}
6+
public mark(padding: string): string {
7+
if (padding == null || padding.length < 2)
8+
return padding;
9+
return ":" + padding.substr(1);
10+
}
11+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { IAlignmentMarker } from "./alignmentMarker";
2+
3+
export class NotSetAlignmentMarker implements IAlignmentMarker {
4+
public mark(padding: string): string {
5+
return padding;
6+
}
7+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { IAlignmentMarker } from ".";
2+
3+
export class RightAlignmentMarker implements IAlignmentMarker {
4+
public mark(padding: string): string {
5+
if (padding == null || padding.length < 2)
6+
return padding;
7+
return padding.substring(0, padding.length - 1) + ":";
8+
}
9+
}

src/viewModelFactories/rowViewModelFactory.ts

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { RowViewModel } from "../viewModels/rowViewModel";
22
import { PadCalculator } from "../padCalculation/padCalculator";
33
import { Table } from "../models/table";
44
import { Alignment } from "../models/alignment";
5-
import { AlignmentMarkerStrategy } from "./alignmentMarker";
5+
import { AlignmentMarkerStrategy } from "./alignmentMarking";
66

77
export class RowViewModelFactory {
88

@@ -38,15 +38,4 @@ export class RowViewModelFactory {
3838

3939
return new RowViewModel(resultRow);
4040
}
41-
/*
42-
private withAlignmentMarkers(padding: string, alignment: Alignment): string {
43-
if (alignment == Alignment.NotSet || padding == null)
44-
return padding;
45-
if (alignment == Alignment.Left)
46-
return ":" + padding.substr(1);
47-
if (alignment == Alignment.Right)
48-
return padding.substring(0, padding.length - 1) + ":";
49-
50-
return ":" + padding.substring(1, padding.length - 1) + ":";
51-
}*/
5241
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import * as assert from 'assert';
2+
import { AlignmentMarkerStrategy, IAlignmentMarker } from '../../../../src/viewModelFactories/alignmentMarking';
3+
import { Alignment } from '../../../../src/models/alignment';
4+
5+
suite("AlignmentMarkerStrategy tests", () => {
6+
7+
test("marker() returns a different marker strategy for the different alignemnts", () => {
8+
const sut = new AlignmentMarkerStrategy();
9+
const alignments = [ Alignment.NotSet, Alignment.Left, Alignment.Center, Alignment.Right ];
10+
11+
const markers: IAlignmentMarker[] = alignments.map(sut.marker);
12+
13+
const distinctMarkers = markers.filter((v, i, a) => a.indexOf(v) == i);
14+
15+
assert.equal(distinctMarkers.length, markers.length);
16+
});
17+
18+
});

0 commit comments

Comments
 (0)