Skip to content

A common library of ruleset definitions defining events and calculations

License

Notifications You must be signed in to change notification settings

RopeScore/rulesets

Repository files navigation

RopeScore Rulesets

codecov

RopeScore rulesets provides a vast and open library of calculations for Rope Skipping competition rules.

These rules are exposed on four different levels from this package:

  • Models
    A raw scoring model for a category or type of events, as defined by a specific rulebook. It is highly configurable and comes in two flavours:
    • Competition Event Model
      These provide a set of judges with description of their input fields and calculations for their judge score. These models also provide functions to calculate an entry score, entry ranks, and descriptions of result- and preview (shown to the tabulator) tables.
    • Overall Model
      These provide calculations to create ranks across several models, as well as descriptions of result tables.
  • Competition Events/Overalls
    This is a pre-configured model for a known competition event definition. There may be some configuration options still left available that are meant to be set on a per-competition level.
  • Rulesets
    This provides a filtered list of competition events and overalls relevant to a specific rulebook and version.

The scoring pipeline then goes as follows for a competition event:

  1. (Configure your competition event model or use a pre-configured model)
  2. Calculate every judge's score
  3. Take the result of that calculation and calculate every entry's score
  4. Take the result of that calculation and calculate the competition event's rankings.

For overalls the pipeline is somewhat similar:

  1. (Configure your competition event and overall models or use pre-configured models)
  2. Calculate every judge's score
    (you can likely use cached results from your competition event pipeline)
  3. Take the result of that calculation and calculate every entry's score
    (also likely cached)
  4. Determine who have competed in all required events.
    This library provides utility functions for this step.
  5. Take the result of that calculation and calculate each competition event's rankings. (This cannot be cached from the other pipeline)
  6. Take the result of that ranking and calculate the overall rankings.