summaryrefslogtreecommitdiff
path: root/lib/Properties.hs (unfollow)
Commit message (Collapse)AuthorFilesLines
2021-12-14startLayer can actually be set to `false`stuebinm1-3/+2
(in which case it just doesn't do anything at all)
2021-12-13refuse doubled map propertiesstuebinm1-1/+2
2021-12-13complain if map links that don't go to .json filesstuebinm1-6/+14
2021-12-13add special warning for rc3 old-style linksstuebinm1-2/+5
(the format used last year is no longer applicable to this year's event)
2021-12-13changes to tiled map formatstuebinm1-1/+4
(found by running through rc3 2021 map submissions and looking at what failed)
2021-12-12downgrad mapCopyright lint to suggestionstuebinm1-1/+1
(as per today's discussion with tabascoeye, mapCopyright should not be required, though I've left it as recommended)
2021-12-12better lints for invalid linksstuebinm1-18/+15
2021-12-12lints for names that are used more than twicestuebinm1-7/+13
(previously it would just lint "can't use name twice" multiple times, which looks kind of silly)
2021-12-12handle text objects in objectgroup layersstuebinm1-16/+21
2021-12-12lint individual tile propertiesstuebinm1-1/+15
2021-12-08rudimentary linting for overlapping layersstuebinm1-0/+17
2021-12-08fix mapCopyright lintstuebinm1-3/+3
(forgot that `error` is the builtin haskell function; the one to create linter errors is called `complain`)
2021-12-07properties: copyright → tilesetCopyrightstuebinm1-2/+2
2021-12-07require mapCopyright to be setstuebinm1-0/+3
2021-12-04lots of code reorganising and some deduplicationstuebinm1-92/+117
it was kinda getting messy in places. Also found some accidental isomorphisms between types, so these are now only one type because the consequences were getting silly.
2021-12-04refuse doubled namesstuebinm1-15/+33
2021-12-02collect badges from object layersstuebinm1-9/+57
this includes a halfway-reasonable parsing of object layers, as well as some monad plumbing to get them all in the right place.
2021-12-02do (naïve) html escapingstuebinm1-6/+11
because we can't ever trust workadventure, apparently. why are we using that thing again?
2021-11-30prepend jitsi room names with assembly tagstuebinm1-2/+7
(to prevent name clashes between assemblies; shared jitsi rooms are still possible simply by letting their names start with "shared-")
2021-11-30jitsiRoomAdminTag: prepend "assembly-" before namestuebinm1-0/+2
(since otherwise we might run into namespace clashes for assemblies with funny names)
2021-11-30allow unknown propertiesstuebinm1-11/+2
since the scripting API can define new properties and we (for now) do not know what the script may or may not be able to do, the linter would otherwise reject potentially valid maps.
2021-11-30rudimentary emulation of bbbRoom etc.stuebinm1-4/+26
("rudimentary" since for now the best it can do is just replacing / prepending urls; presumably, it should also do a sanity check or something of the like)
2021-11-28various fixes to bugsstuebinm1-34/+34
Among them - always set correct exit codes - refuse to write out files if the out path already exists - calculate the overall severity correctly - slightly changed the json output schema - also output the text output format in json - make the default config.json suitable for a production environment
2021-11-20make link adjustments configurablestuebinm1-24/+35
this allows for creating custom URI "schemas" in the linter's config, which may be either allowed, prefixed, or translated according to some (domain-based) substitution.
2021-11-19add domain allow- and blocklists for weblinksstuebinm1-4/+14
(these use a rather crude regex for parsing, which may be possible to side-step, and which should probably be replaced by something that was actually written while following the relevant rfc)
2021-11-19add lint for empty group layersstuebinm1-0/+7
2021-11-19deal with group layersstuebinm1-5/+0
I have no idea why these even exist, but apparently they do, so here's some code to deal with them in a hopefully useful manner …
2021-11-18assorted lints for properties found in some mapsstuebinm1-17/+56
(mostly to do with the scripting API, but also some old ones which are already deprecated / not even mentioned in the documentation anymore)
2021-11-17add warnings for as-yet unlinted layer propertiesstuebinm1-0/+9
2021-11-17make map parser work with more mapsstuebinm1-2/+14
I found yet more properties that weren't really documented or weren't marked as optional, hurray!
2021-11-16reject map urls starting with /_/stuebinm1-3/+6
2021-11-16add adjustment: add prefix for openWebsitestuebinm1-2/+5
2021-11-14config options: implement script-related optionsstuebinm1-2/+13
2021-11-14Functional jitsiRoomAdminTag adjustmentstuebinm1-6/+11
also yet another typeclass™, because why not?
2021-11-10little code cleanupstuebinm1-1/+1
2021-11-09first example of a map adjustmentstuebinm1-10/+21
this also includes some more monad plumbing, and an option for the linter to actually write things out again. Some of the previous commit was reverted a bit since it turned out to be stupid, but overall it was suprisingly easy once I got around to it, so yay! i guess Also includes a fairly silly example of how to use it.
2021-11-02monad plumbing to let the linter modify thingsstuebinm1-1/+1
I'm not sure if this is the right approach tbh — it lets the LintWriter monad modify its own context, but maybe we might run into cases where lints and modifications depend on each other across longer "distances" than just the context of the linter (i.e. just across a property?)
2021-10-30better lint messagesstuebinm1-10/+10
2021-10-30re-enable dependency checkingstuebinm1-2/+3
2021-10-30make aeson instances agree with themselvesstuebinm1-14/+7
This cleans up all the old rubble that came from the Tiled package I originally took from hackage. It now uses generics instead of implementing all the ToJSON and FromJSON instances by hand, and (deserialize . serialise) will now actually return a (semantically) equivalent json. It'll now also reject keys that it doesn't know, which required adding some in several places which the tiled package didn't know about (or which were introduced after it was originally written, dunno). Several more Maybes are required now, to represent the difference between e.g. empty lists and on set value, which does make the code slightly weirder in other places …
2021-10-30more sensible msg for "property required by"-lintsstuebinm1-1/+8
the previous state appears to have been an oversight and made no sense at all.
2021-10-30add tileset property lintingstuebinm1-6/+23
this reorganised the whole linting for tilesets somewhat; it's now very similar to that linting layers, and it may be possible to abstract some of the code away ...
2021-10-30add warning for very large tileset imagesstuebinm1-2/+3
2021-09-30simple map-map link dependency checkingstuebinm1-1/+4
This is purely based on a set difference, i.e. it won't catch stupid things like a map linking to itself, a map link going only one-way, etc. Also, it only handles map links; it doesn't check if all ressource files referenced by a map actually exist.
2021-09-23very naïve handling of directoriesstuebinm1-1/+1
2021-09-20use PrettyPrinter morestuebinm1-4/+3
2021-09-20typechecking for path depths!stuebinm1-53/+67
This now checks if relative paths are still inside the repository, as a general safety mechanism to stop the linter from accidentally reading other things, as well as a nice hint for users.
2021-09-20rebuilding the core LintWriter monadstuebinm1-11/+11
it is no longer an Either since that wasn't used anyways, but is now also a Reader.
2021-09-20simple parsing of local dependency pathsstuebinm1-11/+16
2021-09-20moving code aroundstuebinm1-57/+69