<commit_before>class ParsedUsage {

	constructor(client, command) {
		Object.defineProperty(this, 'client', { value: client });
		this.names = [command.name, ...command.aliases];
		this.commands = this.names.length === 1 ? this.names[0] : `(${this.names.join('|')})`;
		this.deliminatedUsage = command.usageString !== '' ? ` ${command.usageString.split(' ').join(command.usageDelim)}` : '';
		this.usageString = command.usageString;
		this.parsedUsage = this.parseUsage();
		this.nearlyFullUsage = `${this.commands}${this.deliminatedUsage}`;
	}

	fullUsage(msg) {
		const prefix = msg.guildSettings.prefix;
		return `${prefix.length !== 1 ? `${prefix} ` : prefix}${this.nearlyFullUsage}`;
	}

	parseUsage() {
		let usage = {
			tags: [],
			opened: 0,
			current: '',
			openReq: false,
			last: false,
			char: 0,
			from: 0,
			at: '',
			fromto: ''
		};<commit_msg>document parsedUsage<commit_after>/**
 * Converts usage strings into objects to compare against later
 */
class ParsedUsage {

	/**
	 * @param {KlasaClient} client The klasa client
	 * @param {Command} command The command this parsed usage is for
	 */
	constructor(client, command) {
		Object.defineProperty(this, 'client', { value: client });
		this.names = [command.name, ...command.aliases];
		this.commands = this.names.length === 1 ? this.names[0] : `(${this.names.join('|')})`;
		this.deliminatedUsage = command.usageString !== '' ? ` ${command.usageString.split(' ').join(command.usageDelim)}` : '';
		this.usageString = command.usageString;
		this.parsedUsage = this.parseUsage();
		this.nearlyFullUsage = `${this.commands}${this.deliminatedUsage}`;
	}

	/**
	 * Creates a full usage string including prefix and commands/aliases for documentation/help purposes
	 * @param {external:Message} msg a message to check to get the current prefix
	 * @returns {string}
	 */
	fullUsage(msg) {
		const prefix = msg.guildSettings.prefix;
		return `${prefix.length !== 1 ? `${prefix} ` : prefix}${this.nearlyFullUsage}`;
	}

	/**
	 * Method responsible for building the usage object to check against
	 * @private
	 * @returns {Object}
	 */
	parseUsage() {
		let usage = {
			tags: [],
			opened: 0,
			current: '',
			openReq: false,
			last: false,
			char: 0,
			from: 0,
			at: '',
			fromto: ''
		};
{'fraction_non_alphanumeric': 0.1710758377425044, 'fraction_numerical': 0.005291005291005291, 'mean_word_length': 3.869098712446352, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5192342', 'n_tokens_mistral': 811, 'n_tokens_neox': 732, 'n_words': 170}