Skip to content

Commit

Permalink
handles array of tuples
Browse files Browse the repository at this point in the history
  • Loading branch information
diyaayay committed Feb 1, 2025
1 parent 4b9f065 commit 3b42124
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
4 changes: 2 additions & 2 deletions src/color/creating_reading.js
Original file line number Diff line number Diff line change
Expand Up @@ -1540,8 +1540,8 @@ function creatingReading(p5, fn){
* <a href="/reference/p5/colorMode/">colorMode()</a>.
*
* @method paletteLerp
* @param {[p5.Color|String|Number|Number[], Number][]} colors_stops color stops to interpolate from
* @param {Number} amt number to use to interpolate relative to color stops
* @param {Array.<Array.<(p5.Color|String|Number|Number[]), Number>>} colors_stops color stops to interpolate from
* @param {Number} amt number to use to interpolate relative to color stops
* @return {p5.Color} interpolated color.
*
* @example
Expand Down
22 changes: 21 additions & 1 deletion utils/generate-types.js
Original file line number Diff line number Diff line change
Expand Up @@ -212,14 +212,24 @@ function generateTypeFromTag(param) {
return normalizeTypeName(param.type.name);
case 'TypeApplication':
const baseType = normalizeTypeName(param.type.expression.name);

// Handle array cases
if (baseType === 'Array') {
const innerType = param.type.applications[0];
const innerTypeStr = generateTypeFromTag({ type: innerType });
return `${innerTypeStr}[]`;
}

// Regular type application
const typeParams = param.type.applications
.map(app => generateTypeFromTag({ type: app }))
.join(', ');
return `${baseType}<${typeParams}>`;
case 'UnionType':
return param.type.elements
const unionTypes = param.type.elements
.map(el => generateTypeFromTag({ type: el }))
.join(' | ');
return unionTypes;
case 'OptionalType':
return generateTypeFromTag({ type: param.type.expression });
case 'AllLiteral':
Expand All @@ -230,6 +240,16 @@ function generateTypeFromTag(param) {
return `'${param.type.value}'`;
case 'UndefinedLiteralType':
return 'undefined';
case 'ArrayType':
// Check if it's a tuple type (array with specific types for each position)
if (param.type.elements) {
const tupleTypes = param.type.elements
.map(el => generateTypeFromTag({ type: el }))
.join(', ');
return `[${tupleTypes}]`;
}
// Regular array type
return `${generateTypeFromTag({ type: param.type.elementType })}[]`;
default:
return 'any';
}
Expand Down

0 comments on commit 3b42124

Please sign in to comment.