Skip to content

Commit 18e3441

Browse files
authored
Merge pull request #17 from falcoframework/task/rc_7
Task/rc 7
2 parents e965f01 + 761a4f9 commit 18e3441

4 files changed

Lines changed: 46 additions & 19 deletions

File tree

src/Falco.Datastar/Ds.fs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ open StarFederation.Datastar.FSharp
1010
[<AbstractClass; Sealed; RequireQualifiedAccess>]
1111
type Ds =
1212
static member cdnSrc =
13-
@"https://cdn.jsdelivr.net/gh/starfederation/datastar@1.0.0-RC.6/bundles/datastar.js"
13+
@"https://cdn.jsdelivr.net/gh/starfederation/datastar@1.0.0-RC.7/bundles/datastar.js"
1414

1515
/// <summary>
1616
/// Shorthand for `Elem.script [ Attr.type' "module"; Attr.src cdnSrc ] []`
@@ -215,7 +215,7 @@ type Ds =
215215
/// <param name="terse">Single line output</param>
216216
static member jsonSignalsOptions (?signalsFilter:SignalsFilter, ?terse:bool) =
217217
let addSignalsFilter signalsFilter dsAttr =
218-
if signalsFilter = SignalsFilter.None
218+
if signalsFilter <> SignalsFilter.None
219219
then dsAttr |> DsAttr.addValue (signalsFilter |> SignalsFilter.Serialize)
220220
else dsAttr
221221
DsAttr.start "json-signals"

src/Falco.Datastar/Falco.Datastar.fsproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
<GenerateDocumentationFile>true</GenerateDocumentationFile>
1919

2020
<!-- NuGet config -->
21-
<PackageId>Falco.Datastar</PackageId>
22-
<PackageVersion>1.2.0</PackageVersion>
21+
<PackageId>SpiralOSS.Falco.Datastar</PackageId>
22+
<PackageVersion>1.2.1</PackageVersion>
2323
<PackageTags>fsharp;web;falco;falco-sharp;data-star</PackageTags>
2424
<PackageProjectUrl>https://github.com/falcoframework/Falco.Datastar</PackageProjectUrl>
2525
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>

src/Falco.Datastar/Types.fs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,13 @@ type SignalsFilter =
2525
StringBuilder()
2626
|> _.Append("{ ")
2727
|> (fun sb ->
28-
let _ =
29-
match signalFilter.IncludePattern with
30-
| ValueSome includeExp -> sb.Append($"include: /{includeExp}/")
31-
| _ -> sb
32-
let _ =
33-
match signalFilter.ExcludePattern with
34-
| ValueSome excludeExp -> sb.Append($"exclude: /{excludeExp}/")
35-
| _ -> sb
36-
sb
28+
let filters = seq {
29+
if (signalFilter.IncludePattern <> ValueNone) then
30+
signalFilter.IncludePattern |> ValueOption.get |> (fun incStr -> $"include: /{incStr}/")
31+
if (signalFilter.ExcludePattern <> ValueNone) then
32+
signalFilter.ExcludePattern |> ValueOption.get |> (fun excStr -> $"exclude: /{excStr}/")
33+
}
34+
sb.AppendJoin(',', filters)
3735
)
3836
|> _.Append(" }")
3937
|> _.ToString()

test/Falco.Datastar.Tests/DsTests.fs

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,56 @@ open Xunit
77

88
[<AutoOpen>]
99
module private Common =
10-
let testElem attr =
11-
Elem.div attr [ Text.raw "div" ]
10+
let renderAttr attr =
11+
Elem.div [ attr ] [ ]
1212
|> renderNode
1313

1414
module DsTests =
1515
[<Fact>]
1616
let ``Ds.bind should create an attribute`` () =
17-
testElem [ Ds.bind "signalPath" ]
18-
|> should equal """<div data-bind:signal-path>div</div>"""
17+
renderAttr (Ds.bind "signalPath")
18+
|> should equal """<div data-bind:signal-path></div>"""
1919

2020
[<Fact>]
2121
let ``Ds.post`` () =
2222
Ds.post "/channel"
2323
|> should equal """@post('/channel')"""
2424

2525
[<Fact>]
26-
let ``Ds.post with Form `` () =
26+
let ``Ds.post with Form`` () =
2727
Ds.post ("/channel", { RequestOptions.Defaults with ContentType = Form })
2828
|> should equal """@post('/channel',{&quot;contentType&quot;:&quot;form&quot;})"""
2929

3030
[<Fact>]
31-
let ``Ds.post with SelectedForm `` () =
31+
let ``Ds.post with SelectedForm`` () =
3232
Ds.post ("/channel", { RequestOptions.Defaults with ContentType = (SelectedForm "myForm") })
3333
|> should equal """@post('/channel',{&quot;contentType&quot;:&quot;form&quot;,&quot;selector&quot;:&quot;myForm&quot;})"""
34+
35+
[<Fact>]
36+
let ``Ds.jsonSignalsOptions Exclude`` () =
37+
let filterFiles : SignalsFilter = { IncludePattern = ValueNone; ExcludePattern = ValueSome "files" }
38+
renderAttr (Ds.jsonSignalsOptions filterFiles)
39+
|> should equal """<div data-json-signals="{ exclude: /files/ }"></div>"""
40+
41+
[<Fact>]
42+
let ``Ds.jsonSignalsOptions Include`` () =
43+
let filterFiles : SignalsFilter = { IncludePattern = ValueSome "files"; ExcludePattern = ValueNone }
44+
renderAttr (Ds.jsonSignalsOptions filterFiles)
45+
|> should equal """<div data-json-signals="{ include: /files/ }"></div>"""
46+
47+
[<Fact>]
48+
let ``Ds.jsonSignalsOptions Both`` () =
49+
let filterFiles : SignalsFilter = { IncludePattern = ValueSome "files$"; ExcludePattern = ValueSome "^files" }
50+
renderAttr (Ds.jsonSignalsOptions filterFiles)
51+
|> should equal """<div data-json-signals="{ include: /files$/,exclude: /^files/ }"></div>"""
52+
53+
[<Fact>]
54+
let ``Ds.jsonSignalsOptions Terse`` () =
55+
renderAttr (Ds.jsonSignalsOptions (terse = true))
56+
|> should equal """<div data-json-signals__terse></div>"""
57+
58+
[<Fact>]
59+
let ``Ds.jsonSignalsOptions Terse and Both Filters`` () =
60+
let filterFiles : SignalsFilter = { IncludePattern = ValueSome "files$"; ExcludePattern = ValueSome "^files" }
61+
renderAttr (Ds.jsonSignalsOptions (filterFiles, terse = true))
62+
|> should equal """<div data-json-signals__terse="{ include: /files$/,exclude: /^files/ }"></div>"""

0 commit comments

Comments
 (0)