Skip to content

Things to clean up in v2.0 #75

Open

Description

@odow

Formatting

I can't deal with code that isn't formatted anymore.

Tests

Get back to 100% code coverage (or as near to it as possible). There is currently a bunch of untested code.

Code style

There are many isa when we can use dispatch. Here's one example:

function Schema(spec)
spec_obj = spec isa Object ? spec : Object{String, Any}(spec)
return Schema{Any}(Any, spec_obj, nothing)
end

I don't know what the point of this part is

JSONSchema.jl/src/schema.jl

Lines 302 to 304 in 3c5bb85

elseif T === Int || T === Int64 || T === Int32 || T === Int16 || T === Int8 ||
T === UInt || T === UInt64 || T === UInt32 || T === UInt16 || T === UInt8 ||
T <: Integer

Surely it's just T <: Integer

Split schema validation and schema generation

There are really two separate things here. The current file is a bit confusing to me

The validation code

v2 has changed how we structure the validation code. I used to use dispatch to separate out each thing in the schema:

###
### Core JSON Schema
###
# 9.2.1.1
function _validate(x, schema, ::Val{:allOf}, val::AbstractVector, path::String)
for v in val
ret = _validate(x, v, path)
if ret !== nothing
return ret
end
end
return
end

This made it easy to reason about what parts of the schema were covered and not. I think it's a shame to loose that.

Activity

  1. odow commented on Jan 14, 2026

    @odow
    CollaboratorAuthor

    Would it have been possible to add the Schema generation stuff in a non-breaking way?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions