Skip to content

Commit 87229d4

Browse files
committed
Add CalendarBuilder and CalendarEventBuilder
1 parent 8faa6b5 commit 87229d4

12 files changed

+114
-32
lines changed

src/FsSpectre/FsSpectre.fsproj

+2
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@
5050
<Compile Include="Widgets/TableTitleBuilder.fs" />
5151
<Compile Include="Widgets/TableColumnBuilder.fs" />
5252
<Compile Include="Widgets/TableBuilder.fs" />
53+
<Compile Include="Widgets/CalendarEventBuilder.fs" />
54+
<Compile Include="Widgets/CalendarBuilder.fs" />
5355
<Compile Include="Extras/ColorBox.fs" />
5456
</ItemGroup>
5557
</Project>

src/FsSpectre/Prompts/TextPromptBuilder.fs

+7-7
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ module TextPromptBuilder =
1313
member __.Title(_, text: string) = TextPrompt<'T>(text)
1414

1515
[<CustomOperation "prompt_style">]
16-
member __.PromptStyle(textPrompt: TextPrompt<'T>, style: Style) =
16+
member __.PromptStyle(textPrompt: TextPrompt<'T>, style: Style) =
1717
textPrompt.PromptStyle <- style
1818
textPrompt
1919

@@ -27,18 +27,18 @@ module TextPromptBuilder =
2727
member __.HideInput(textPrompt: TextPrompt<'T>) = textPrompt.Secret(Nullable())
2828

2929
[<CustomOperation "allow_empty">]
30-
member __.AllowEmpty(textPrompt: TextPrompt<'T>) =
30+
member __.AllowEmpty(textPrompt: TextPrompt<'T>) =
3131
textPrompt.AllowEmpty <- true
3232
textPrompt
33-
33+
3434
[<CustomOperation "validation_error_message">]
35-
member __.ValidationErrorMessage(textPrompt: TextPrompt<'T>, validationErrorMessage: string) =
35+
member __.ValidationErrorMessage(textPrompt: TextPrompt<'T>, validationErrorMessage: string) =
3636
textPrompt.ValidationErrorMessage <- validationErrorMessage
3737
textPrompt
38-
38+
3939
[<CustomOperation "validate">]
40-
member __.Validate(textPrompt: TextPrompt<'T>, validator: 'T -> ValidationResult) =
40+
member __.Validate(textPrompt: TextPrompt<'T>, validator: 'T -> ValidationResult) =
4141
textPrompt.Validator <- validator
4242
textPrompt
4343

44-
let textPrompt<'T> = TextPromptBuilder<'T>()
44+
let textPrompt<'T> = TextPromptBuilder<'T>()

src/FsSpectre/Widgets/BarChartBuilder.fs

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ module BarChartBuilder =
99
member __.Yield _ = BarChart()
1010

1111
[<CustomOperation "label">]
12-
member __.FullSize(barChart: BarChart, label: string) =
12+
member __.FullSize(barChart: BarChart, label: string) =
1313
barChart.Label <- label
1414
barChart
1515

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
namespace FsSpectre
2+
3+
open System
4+
open System.Globalization
5+
open Spectre.Console
6+
7+
[<AutoOpen>]
8+
module CalendarBuilder =
9+
10+
type CalendarBuilder() =
11+
member __.Yield _ = Calendar(DateTime.Now)
12+
13+
[<CustomOperation "year">]
14+
member __.Year(calendar: Calendar, year: int) =
15+
calendar.Year <- year
16+
calendar
17+
18+
[<CustomOperation "month">]
19+
member __.Month(calendar: Calendar, month: int) =
20+
calendar.Month <- month
21+
calendar
22+
23+
[<CustomOperation "day">]
24+
member __.Day(calendar: Calendar, day: int) =
25+
calendar.Day <- day
26+
calendar
27+
28+
[<CustomOperation "culture">]
29+
member __.Culture(calendar: Calendar, cultureInfo: CultureInfo) =
30+
calendar.Culture <- cultureInfo
31+
calendar
32+
33+
[<CustomOperation "hide_header">]
34+
member __.HideHeader(calendar: Calendar) = calendar.HideHeader()
35+
36+
[<CustomOperation "event">]
37+
member __.Event(calendar: Calendar, event: CalendarEvent) =
38+
calendar.CalendarEvents.Add(event)
39+
calendar
40+
41+
[<CustomOperation "events">]
42+
member __.Events(calendar: Calendar, events: CalendarEvent array) =
43+
events |> Array.map calendar.CalendarEvents.Add |> ignore
44+
calendar
45+
46+
let calendar = CalendarBuilder()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
namespace FsSpectre
2+
3+
open System
4+
open Spectre.Console
5+
6+
[<AutoOpen>]
7+
module CalendarEventBuilder =
8+
9+
type CalendarEventBuilder() =
10+
member __.Yield _ =
11+
let now = DateTime.Now
12+
CalendarEvent(now.Year, now.Month, now.Day)
13+
14+
[<CustomOperation "year">]
15+
member __.Year(calendarEvent: CalendarEvent, year: int) =
16+
CalendarEvent(calendarEvent.Description, year, calendarEvent.Month, calendarEvent.Day)
17+
18+
[<CustomOperation "month">]
19+
member __.Month(calendarEvent: CalendarEvent, month: int) =
20+
CalendarEvent(calendarEvent.Description, calendarEvent.Year, month, calendarEvent.Day)
21+
22+
[<CustomOperation "day">]
23+
member __.Day(calendarEvent: CalendarEvent, day: int) =
24+
CalendarEvent(calendarEvent.Description, calendarEvent.Year, calendarEvent.Month, day)
25+
26+
[<CustomOperation "year_month_day">]
27+
member __.Year(calendarEvent: CalendarEvent, year: int, month: int, day: int) =
28+
CalendarEvent(calendarEvent.Description, year, month, day)
29+
30+
[<CustomOperation "description">]
31+
member __.Description(calendarEvent: CalendarEvent, description: string) =
32+
CalendarEvent(description, calendarEvent.Year, calendarEvent.Month, calendarEvent.Day)
33+
34+
let calendarEvent = CalendarEventBuilder()

src/FsSpectre/Widgets/GridColumnBuilder.fs

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,4 @@ module GridColumnBuilder =
3939
[<CustomOperation "pad_bottom">]
4040
member __.PadBottom(gridColumn: GridColumn, pad: int) = gridColumn.PadBottom(pad)
4141

42-
let gridColumn = GridColumnBuilder()
42+
let gridColumn = GridColumnBuilder()

src/FsSpectre/Widgets/PanelHeaderBuilder.fs

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ module PanelHeaderBuilder =
1313
member __.Text(_, text: string) = PanelHeader(text)
1414

1515
[<CustomOperation "justification">]
16-
member __.Justification(panelHeader: PanelHeader, justify: Justify) =
16+
member __.Justification(panelHeader: PanelHeader, justify: Justify) =
1717
panelHeader.Justification <- justify
1818
panelHeader
1919

20-
let panelHeader = PanelHeaderBuilder()
20+
let panelHeader = PanelHeaderBuilder()

src/FsSpectre/Widgets/RuleBuilder.fs

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ module RuleBuilder =
1212
member __.Empty(rule: Rule) = rule
1313

1414
[<CustomOperation "title">]
15-
member __.Title(rule: Rule, title: string) =
15+
member __.Title(rule: Rule, title: string) =
1616
rule.Title <- title
1717
rule
1818

1919
[<CustomOperation "justification">]
20-
member __.Justification(rule: Rule, justify: Justify) =
20+
member __.Justification(rule: Rule, justify: Justify) =
2121
rule.Justification <- justify
2222
rule
2323

src/FsSpectre/Widgets/TableBuilder.fs

+7-7
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@ module TableBuilder =
1111
member __.Yield _ = Table()
1212

1313
[<CustomOperation "title">]
14-
member __.Title(table: Table, title: TableTitle) =
14+
member __.Title(table: Table, title: TableTitle) =
1515
table.Title <- title
1616
table
1717

1818
[<CustomOperation "title_text">]
19-
member __.TitleText(table: Table, text: string) =
19+
member __.TitleText(table: Table, text: string) =
2020
table.Title <- TableTitle(text)
2121
table
22-
22+
2323
[<CustomOperation "width">]
24-
member __.Width(table: Table, width: int) =
24+
member __.Width(table: Table, width: int) =
2525
table.Width <- width
2626
table
2727

@@ -44,7 +44,7 @@ module TableBuilder =
4444
member __.NoFooters(table: Table) = table.HideFooters()
4545

4646
[<CustomOperation "border">]
47-
member __.Border(table: Table, tableBorder: TableBorder) =
47+
member __.Border(table: Table, tableBorder: TableBorder) =
4848
table.Border <- tableBorder
4949
table
5050

@@ -72,5 +72,5 @@ module TableBuilder =
7272
[<CustomOperation "row_text">]
7373
member __.RowText(table: Table, columns: string array) = table.AddRow(columns)
7474

75-
76-
let table = TableBuilder()
75+
76+
let table = TableBuilder()

src/FsSpectre/Widgets/TableColumnBuilder.fs

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ module TableColumnBuilder =
1818
member __.HeaderRenderable(_, renderable: IRenderable) = TableColumn(renderable)
1919

2020
[<CustomOperation "footer">]
21-
member __.Footer(tableColumn: TableColumn, footer: string) =
21+
member __.Footer(tableColumn: TableColumn, footer: string) =
2222
tableColumn.Footer <- Markup(footer)
2323
tableColumn
2424

2525
[<CustomOperation "footer_renderable">]
26-
member __.FooterRenderable(tableColumn: TableColumn, renderable: IRenderable) =
26+
member __.FooterRenderable(tableColumn: TableColumn, renderable: IRenderable) =
2727
tableColumn.Footer <- renderable
2828
tableColumn
2929

src/FsSpectre/Widgets/TreeBuilder.fs

+6-6
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,23 @@ module TreeBuilder =
1717
member __.LabelRenderable(_, renderable: IRenderable) = Tree(renderable)
1818

1919
[<CustomOperation "node">]
20-
member __.Node(tree: Tree, subNode: TreeNode) =
20+
member __.Node(tree: Tree, subNode: TreeNode) =
2121
tree.AddNode(subNode) |> ignore
2222
tree
2323

2424
[<CustomOperation "nodes">]
25-
member __.Nodes(tree: Tree, subNodes: TreeNode array) =
25+
member __.Nodes(tree: Tree, subNodes: TreeNode array) =
2626
tree.AddNodes(subNodes) |> ignore
2727
tree
2828

2929
[<CustomOperation "node_renderable">]
30-
member __.NodeRenderable(tree: Tree, renderable: IRenderable) =
30+
member __.NodeRenderable(tree: Tree, renderable: IRenderable) =
3131
tree.AddNode(renderable) |> ignore
3232
tree
3333

3434
[<CustomOperation "node_text">]
35-
member __.NodeText(tree: Tree, text: string) =
35+
member __.NodeText(tree: Tree, text: string) =
3636
tree.AddNode(text) |> ignore
3737
tree
38-
39-
let tree = TreeBuilder()
38+
39+
let tree = TreeBuilder()

src/FsSpectre/Widgets/TreeNodeBuilder.fs

+4-4
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,22 @@ module TreeNodeBuilder =
1717
member __.RootText(_, text: string) = TreeNode(Markup(text))
1818

1919
[<CustomOperation "node">]
20-
member __.Node(node: TreeNode, subNode: TreeNode) =
20+
member __.Node(node: TreeNode, subNode: TreeNode) =
2121
node.AddNode(subNode) |> ignore
2222
node
2323

2424
[<CustomOperation "nodes">]
25-
member __.Nodes(node: TreeNode, subNodes: TreeNode array) =
25+
member __.Nodes(node: TreeNode, subNodes: TreeNode array) =
2626
node.AddNodes(subNodes) |> ignore
2727
node
2828

2929
[<CustomOperation "node_renderable">]
30-
member __.NodeRenderable(node: TreeNode, renderable: IRenderable) =
30+
member __.NodeRenderable(node: TreeNode, renderable: IRenderable) =
3131
node.AddNode(renderable) |> ignore
3232
node
3333

3434
[<CustomOperation "node_text">]
35-
member __.NodeText(node: TreeNode, text: string) =
35+
member __.NodeText(node: TreeNode, text: string) =
3636
node.AddNode(text) |> ignore
3737
node
3838

0 commit comments

Comments
 (0)