adding more docstrings

This commit is contained in:
2023-08-05 18:36:31 +02:00
parent 2a0ac626d0
commit 9085088948
3 changed files with 34 additions and 8 deletions

View File

@ -4,6 +4,15 @@ import type { File } from './AppSettings';
const delay = (ms: number) => new Promise((_, reject) => setTimeout(() => reject(new Error('Operation took too long')), ms));
const tryCatchWrapper = (application: Editor, code: string): Promise<boolean> => {
/**
* This function wraps a string of code in a try/catch block and returns a promise
* that resolves to true if the code is valid and false if the code is invalid after
* being evaluated.
*
* @param application - The main application instance
* @param code - The string of code to wrap and evaluate
* @returns A promise that resolves to true if the code is valid and false if the code is invalid
*/
return new Promise((resolve, _) => {
try {
Function(`with (this) {try{${code}} catch (e) {console.log(e)}};`).call(application.api);
@ -16,6 +25,16 @@ const tryCatchWrapper = (application: Editor, code: string): Promise<boolean> =>
}
export const tryEvaluate = async (
/**
* This function attempts to evaluate a string of code in the context of user API.
* If the code is invalid, it will attempt to evaluate the previous valid code.
*
* @param application - The main application instance
* @param code - The set of files to evaluate
* @param timeout - The timeout in milliseconds
* @returns A promise that resolves to void
*
*/
application: Editor,
code: File,
timeout = 5000
@ -38,6 +57,14 @@ export const tryEvaluate = async (
}
export const evaluate = async (application: Editor, code: File, timeout = 1000): Promise<void> => {
/**
* This function evaluates a string of code in the context of user API.
*
* @param application - The main application instance
* @param code - The set of files to evaluate
* @param timeout - The timeout in milliseconds
* @returns A promise that resolves to void
*/
try {
await Promise.race([tryCatchWrapper(application, code.committed as string), delay(timeout)]);
if (code.evaluations)
@ -46,11 +73,3 @@ export const evaluate = async (application: Editor, code: File, timeout = 1000):
console.log(error);
}
}
export const evaluateCommand = async (application: Editor, command: string, timeout = 5000): Promise<void> => {
try {
await Promise.race([tryCatchWrapper(application, command), delay(timeout)]);
} catch (error) {
console.log(error);
}
}

View File

@ -54,6 +54,13 @@ const SCALES: Record<string, number[]> = {
};
export function scale(n: number, scaleName: string = 'major', octave: number = 4): number {
/**
* Returns the MIDI note number for the given scale degree in the given scale.
* @param {number} n - The scale degree, where 0 is the tonic.
* @param {string} scaleName - The name of the scale.
* @param {number} octave - The octave number.
* @returns {number} The MIDI note number.
*/
const scale = SCALES[scaleName];
if (!scale) {

View File