Skip to content

Commit ce5f03a

Browse files
authored
Merge pull request #7183 from sproutleaf/dev-2.0
Fix missing parameter standardization
2 parents 3a5591c + 6d8f9af commit ce5f03a

File tree

3 files changed

+72
-27
lines changed

3 files changed

+72
-27
lines changed

src/events/acceleration.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,7 @@ p5.prototype.setMoveThreshold = function (val) {
461461
* the <a href="#/p5/deviceShaken">deviceShaken()</a> function. The default threshold is set to 30.
462462
*
463463
* @method setShakeThreshold
464-
* @param {number} value The threshold value
464+
* @param {Number} value The threshold value
465465
* @example
466466
* <div class="norender">
467467
* <code>

src/io/files.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1273,8 +1273,8 @@ p5.prototype.httpPost = function (...args) {
12731273
* @param {Object} options Request object options as documented in the
12741274
* "fetch" API
12751275
* <a href="https://developer.mozilla.org/en/docs/Web/API/Fetch_API">reference</a>
1276-
* @param {function} [callback]
1277-
* @param {function} [errorCallback]
1276+
* @param {Function} [callback]
1277+
* @param {Function} [errorCallback]
12781278
* @return {Promise}
12791279
*/
12801280
p5.prototype.httpDo = function (...args) {

utils/convert.js

Lines changed: 69 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -462,45 +462,90 @@ for (const key in constUsage) {
462462
// parameterData.json
463463
// ============================================================================
464464

465-
function buildParamDocs(docs) {
466-
let newClassItems = {};
467-
// the fields we need for the FES, discard everything else
468-
let allowed = new Set(['name', 'class', 'module', 'params', 'overloads']);
469-
for (let classitem of docs.classitems) {
470-
if (classitem.name && classitem.class) {
471-
for (let key in classitem) {
472-
if (!allowed.has(key)) {
473-
delete classitem[key];
474-
}
465+
function cleanUpClassItems(data) {
466+
for (const classItem in data) {
467+
if (typeof data[classItem] === 'object') {
468+
if (data[classItem].overloads) {
469+
delete data[classItem].name;
470+
delete data[classItem].class;
475471
}
476-
if (classitem.hasOwnProperty('overloads')) {
477-
for (let overload of classitem.overloads) {
478-
// remove line number and return type
479-
if (overload.line) {
480-
delete overload.line;
481-
}
472+
cleanUpClassItems(data[classItem]);
473+
}
474+
}
482475

483-
if (overload.return) {
484-
delete overload.return;
485-
}
486-
}
487-
}
488-
if (!newClassItems[classitem.class]) {
489-
newClassItems[classitem.class] = {};
476+
const flattenOverloads = funcObj => {
477+
const result = {};
478+
479+
for (const [key, value] of Object.entries(funcObj)) {
480+
if (value && typeof value === 'object' && value.overloads) {
481+
result[key] = {
482+
overloads: Object.values(value.overloads).map(overload => {
483+
if (overload.params) {
484+
return Object.values(overload.params).map(param => {
485+
let type = param.type;
486+
if (param.optional) {
487+
type += '?';
488+
}
489+
return type;
490+
});
491+
}
492+
return overload;
493+
})
494+
};
495+
} else {
496+
result[key] = value;
490497
}
498+
}
491499

500+
return result;
501+
};
502+
503+
for (const classItem in data) {
504+
if (typeof data[classItem] === 'object') {
505+
data[classItem] = flattenOverloads(data[classItem]);
506+
}
507+
}
508+
509+
return data;
510+
}
511+
512+
function buildParamDocs(docs) {
513+
let newClassItems = {};
514+
// the fields we need—note that `name` and `class` are needed at this step because it's used to group classitems together. They will be removed later in cleanUpClassItems.
515+
let allowed = new Set(['name', 'class', 'params', 'overloads']);
516+
517+
for (let classitem of docs.classitems) {
518+
// If `classitem` doesn't have overloads, then it's not a function—skip processing in this case
519+
if (classitem.name && classitem.class && classitem.hasOwnProperty('overloads')) {
520+
// Clean up fields that will not be used in each classitem's overloads
521+
classitem.overloads?.forEach(overload => {
522+
delete overload.line;
523+
delete overload.return;
524+
overload.params.forEach(param => {
525+
delete param.description;
526+
delete param.name;
527+
});
528+
});
529+
530+
Object.keys(classitem).forEach(key => {
531+
if (!allowed.has(key)) delete classitem[key];
532+
});
533+
534+
newClassItems[classitem.class] = newClassItems[classitem.class] || {};
492535
newClassItems[classitem.class][classitem.name] = classitem;
493536
}
494537
}
495538

539+
const cleanedClassItems = cleanUpClassItems(newClassItems);
540+
496541
let out = fs.createWriteStream(
497542
path.join(__dirname, '../docs/parameterData.json'),
498543
{
499544
flags: 'w',
500545
mode: '0644'
501546
}
502547
);
503-
out.write(JSON.stringify(newClassItems, null, 2));
548+
out.write(JSON.stringify(cleanedClassItems, null, 2));
504549
out.end();
505550
}
506551

0 commit comments

Comments
 (0)