Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
essenciary committed Oct 19, 2023
2 parents d10c763 + 7f53268 commit 8634640
Show file tree
Hide file tree
Showing 9 changed files with 64 additions and 52 deletions.
32 changes: 18 additions & 14 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,39 +21,43 @@ Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
Requires = "ae029012-a4dd-5104-9daa-d747884805df"
StructTypes = "856f2bd8-1eba-4b0a-8007-ebc267875bd4"
Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c"

[weakdeps]
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
OffsetArrays = "6fe1bfb0-de20-5000-8ca7-80f57d26f881"

[extensions]
StippleDataFramesExt = "DataFrames"
StippleOffsetArraysExt = "OffsetArrays"
Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c"

[compat]
DataFrames = "1"
FilePathsBase = "0.9"
Genie = "5.18"
GenieSession = "1"
GenieSessionFileSession = "1"
JSON = "0.20, 0.21"
JSON3 = "1.9"
MacroTools = "0.5"
Mixers = "0.1.2"
Observables = "0.3, 0.4, 0.5"
OffsetArrays = "1"
OrderedCollections = "1"
Parameters = "0.12"
Reexport = "1"
Requires = "1"
StructTypes = "1.8"
julia = "1.6"
OffsetArrays = "1"
DataFrames = "1"
Tables = "1"
julia = "1.6"

[extensions]
StippleDataFramesExt = "DataFrames"
StippleJSONExt = "JSON"
StippleOffsetArraysExt = "OffsetArrays"

[extras]
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
OffsetArrays = "6fe1bfb0-de20-5000-8ca7-80f57d26f881"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["Test", "DataFrames", "OffsetArrays"]
test = ["Test", "DataFrames", "JSON", "OffsetArrays"]

[weakdeps]
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
OffsetArrays = "6fe1bfb0-de20-5000-8ca7-80f57d26f881"
7 changes: 0 additions & 7 deletions ext/StippleDataFrames.jl

This file was deleted.

7 changes: 3 additions & 4 deletions ext/StippleDataFramesExt.jl
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
module StippleDataFramesExt

@static if isdefined(Base, :get_extension)
using Stipple
using DataFrames
end
using Stipple

isdefined(Base, :get_extension) ? using DataFrames : using ..DataFrames

function Stipple.stipple_parse(::Type{DF} where DF <: DataFrames.AbstractDataFrame, d::Vector)
isempty(d) ? DF() : reduce(vcat, DataFrames.DataFrame.(d))
Expand Down
21 changes: 21 additions & 0 deletions ext/StippleJSONExt.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
module StippleJSONExt

using Stipple

isdefined(Base, :get_extension) ? using JSON : using ..JSON

# garantee interoperability of different JSONTText definitions in Stipple and JSON
# for both JSON3 and JSON
# Note that `lower` for Stipple.JSONText is not defined as parse(json.s), because that would require
# pure proper JSON. For transmissions of bindings, though, we need to allow to pass object names.

JSON.JSONText(json::Stipple.JSONText) = JSON.JSONText(json.s)
JSON.show_json(io::JSON.Writer.CompactContext, ::JSON.Writer.CS, json::Stipple.JSONText) = write(io, json.s)
JSON.Writer.lower(json::Stipple.JSONText) = json.s

Stipple.JSONText(json::JSON.JSONText) = Stipple.JSONText(json.s)
@inline StructTypes.StructType(::Type{JSON.JSONText}) = JSON3.RawType()
@inline StructTypes.construct(::Type{JSON.JSONText}, json::JSON3.RawValue) = JSON.JSONText(string(json))
@inline JSON3.rawbytes(json::JSON.JSONText) = codeunits(json.s)

end
12 changes: 0 additions & 12 deletions ext/StippleOffsetArrays.jl

This file was deleted.

3 changes: 2 additions & 1 deletion ext/StippleOffsetArraysExt.jl
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
module StippleOffsetArraysExt

using Stipple
using OffsetArrays

isdefined(Base, :get_extension) ? using OffsetArrays : using ..OffsetArrays

function Stipple.convertvalue(targetfield::Union{Ref{T}, Reactive{T}}, value) where T <: OffsetArrays.OffsetArray
a = Stipple.stipple_parse(eltype(targetfield), value)
Expand Down
7 changes: 0 additions & 7 deletions ext/StippleTablesExt.jl

This file was deleted.

16 changes: 9 additions & 7 deletions src/Stipple.jl
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ existing Vue.js libraries.
"""
module Stipple

const PRECOMPILE = Ref(false)

"""
@using_except(expr)
Expand Down Expand Up @@ -206,15 +208,15 @@ function __init__()

@static if !isdefined(Base, :get_extension)
@require OffsetArrays = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" begin
# evaluate the code of the extension without the surrounding module
include(joinpath(@__DIR__, "..", "ext", "StippleOffsetArrays.jl"))
# Core.eval(@__MODULE__, Meta.parse(join(jl, ';')).args[3])
include(joinpath(@__DIR__, "..", "ext", "StippleOffsetArraysExt.jl"))
end

@require DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" begin
# evaluate the code of the extension without the surrounding module
include(joinpath(@__DIR__, "..", "ext", "StippleDataFrames.jl"))
# Core.eval(@__MODULE__, Meta.parse(join(jl, ';')).args[3])
include(joinpath(@__DIR__, "..", "ext", "StippleDataFramesExt.jl"))
end

@require JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" begin
include(joinpath(@__DIR__, "..", "ext", "StippleJSONExt.jl"))
end
end
end
Expand Down Expand Up @@ -443,7 +445,7 @@ function init(::Type{M};
# add a timer that checks if the model is outdated and if so prepare the model to be garbage collected
LAST_ACTIVITY[Symbol(getchannel(model))] = now()

Timer(setup_purge_checker(model), PURGE_CHECK_DELAY[], interval = PURGE_CHECK_DELAY[])
PRECOMPILE[] || Timer(setup_purge_checker(model), PURGE_CHECK_DELAY[], interval = PURGE_CHECK_DELAY[])

if is_channels_webtransport()
Genie.Assets.channels_subscribe(channel)
Expand Down
11 changes: 11 additions & 0 deletions test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -350,4 +350,15 @@ end
@test cell(sm = 9) == "<div class=\"st-col col col-sm-9\"></div>"

@test cell(col = -1, sm = 9) == "<div class=\"st-col col-sm-9\"></div>"
end

@testset "Compatibility of JSONText between JSON3 and JSON" begin
using JSON
using Stipple
jt1 = JSON.JSONText("json text 1")
jt2 = Stipple.JSONText("json text 2")
@test JSON.json(jt1) == "json text 1"
@test Stipple.json(jt1) == "json text 1"
@test JSON.json(jt2) == "json text 2"
@test Stipple.json(jt2) == "json text 2"
end

2 comments on commit 8634640

@essenciary
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Registration pull request created: JuliaRegistries/General/93713

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:

git tag -a v0.27.11 -m "<description of version>" 8634640f6439243971517870ea7349231ab87040
git push origin v0.27.11

Please sign in to comment.