module AnimeTitleParser::Util

Defined in:

util/regexes.cr
util/util.cr

Constant Summary

BRACKETS = { {'(', ')'}, {'[', ']'}, {'{', '}'}, {'「', '」'}, {'『', '』'}, {'【', '】'}, {'(', ')'} }
CLOSING_BRACKETS = {% if true %} { {{ BRACKETS.map(&.[](1)).splat }} } {% end %}
COMBINED = /(?:s(?<season>\d{1,3}))(?:e(?<episode>\d{1,4}))(?:(?:(?:v)|(?:ver))?\d{1})?(?:-)?/i
DELIMITERS_BASE = /_/
DELIMITERS_DOT = /_|\./
EPISODE_NUMBER = /^(?:(?:e)|(?:ep)|(?:episode))(?<episode>\d{1,4})(?:(?:(?:v)|(?:ver))?\d{1})?(?:-)?$/i
GENERAL_NUMBER = /^(?<tentative>\d{1,4})(?:(?:(?:v)|(?:ver))?\d{1})?(?:-)?$/i
NUMBER_INFORMATION = ((((SEASON_NUMBER + EPISODE_NUMBER) + COMBINED) + SEASON_X_EPISODE) + GENERAL_NUMBER) + VERSION_ONLY
OPENING_BRACKETS = {% if true %} { {{ BRACKETS.map(&.first).splat }} } {% end %}
SEASON_NUMBER = /^(?:(?:s)|(?:se)|(?:season))(?<season>\d{1,3})(?:-)?$/i

NOTE All of these are case insensitive

SEASON_X_EPISODE = /^(?<season>\d{1,2})x(?<episode>\d{1,4})(?:(?:(?:v)|(?:ver))?\d{1})?(?:-)?$/i
VERSION_ONLY = /^v\d{1}(?:-)?$/i