From 590b71a0aaaa00d42b38215464398f6f91f25bf9 Mon Sep 17 00:00:00 2001 From: Andrew Sliwinski Date: Mon, 17 Dec 2018 18:11:08 -0500 Subject: [PATCH 1/7] Initial working version --- .eslintignore | 3 + .eslintrc | 3 + .gitignore | 11 ++ README.md | 45 ++++++ analyze.js | 201 +++++++++++++++++++++++ lib/index.js | 25 +++ lib/sb2.js | 200 +++++++++++++++++++++++ lib/sb3.js | 110 +++++++++++++ lib/utility.js | 23 +++ package.json | 30 ++++ test/analyze.js | 42 +++++ test/fixtures/invalid/garbage.jpg | Bin 0 -> 15675 bytes test/fixtures/sb2/complex.sb2 | Bin 0 -> 60950 bytes test/fixtures/sb2/default.json | 71 ++++++++ test/fixtures/sb2/default.sb2 | Bin 0 -> 54681 bytes test/fixtures/sb3/complex.sb3 | Bin 0 -> 46610 bytes test/fixtures/sb3/default.json | 103 ++++++++++++ test/fixtures/sb3/default.sb3 | Bin 0 -> 41939 bytes test/unit/error.js | 24 +++ test/unit/sb2.js | 256 +++++++++++++++++++++++++++++ test/unit/sb3.js | 260 ++++++++++++++++++++++++++++++ test/unit/spec.js | 7 + 22 files changed, 1414 insertions(+) create mode 100644 .eslintignore create mode 100644 .eslintrc create mode 100644 .gitignore create mode 100644 README.md create mode 100644 analyze.js create mode 100644 lib/index.js create mode 100644 lib/sb2.js create mode 100644 lib/sb3.js create mode 100644 lib/utility.js create mode 100644 package.json create mode 100644 test/analyze.js create mode 100644 test/fixtures/invalid/garbage.jpg create mode 100644 test/fixtures/sb2/complex.sb2 create mode 100644 test/fixtures/sb2/default.json create mode 100644 test/fixtures/sb2/default.sb2 create mode 100644 test/fixtures/sb3/complex.sb3 create mode 100644 test/fixtures/sb3/default.json create mode 100644 test/fixtures/sb3/default.sb3 create mode 100644 test/unit/error.js create mode 100644 test/unit/sb2.js create mode 100644 test/unit/sb3.js create mode 100644 test/unit/spec.js diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..58a4708 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,3 @@ +/node_modules +/.nyc_output +/coverage diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..c893eab --- /dev/null +++ b/.eslintrc @@ -0,0 +1,3 @@ +{ + "extends": ["scratch", "scratch/node"] +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..daf35a7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +## OSX +.DS_Store + +## NPM +/node_modules +npm-* +package-lock.json + +## Code Coverage +.nyc_output/ +coverage/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..afb20c5 --- /dev/null +++ b/README.md @@ -0,0 +1,45 @@ +## scratch-analysis +#### Analysis tool for summarizing the structure, composition, and complexity of [Scratch](https://scratch.mit.edu) programs. + +## Getting Started +```bash +npm install scratch-analysis +``` + +```js +const analysis = require('scratch-analysis'); +analysis(buffer, function (err, result) { + // handle any validation errors and ... + // do something interesting with the results! +}); +``` + +## Analysis Modules +### General +The `scratch-analysis` module will return an object containing high-level summary information about the project: + +| Key | Attributes | +| ----------------- | -------------------------------------------------------- | +| `scripts` | `count` | +| `blocks` | `count`, `unique`, `list`, `frequency` | +| `sprites` | `count` | +| `variables` | `count` | +| `lists` | `count` | +| `costumes` | `count`, `list`, `hash` | +| `sounds` | `count`, `list`, `hash` | +| `extensions` | `count`, `list` | +| `comments` | `count` | + +### Concepts +**Coming Soon** + +### Complexity +**Coming Soon** + +### Classification +**Coming Soon** + +## References +### New Frameworks for Studying and Assessing the Development of Computational Thinking +Author(s): Karen Brennan, Mitchel Resnick +PDF: [Download](https://web.media.mit.edu/~kbrennan/files/Brennan_Resnick_AERA2012_CT.pdf) diff --git a/analyze.js b/analyze.js new file mode 100644 index 0000000..8904e00 --- /dev/null +++ b/analyze.js @@ -0,0 +1,201 @@ +/** + * Returns an array of items matching the specified attribute. + * @param {object} project JSON representation of project + * @param {string} attribute Attribute to extract and flatten + * @return {Array} Array of items matching attribute + */ +const flatten = function (project, attribute) { + // Storage object + let result = []; + + // If attribute exists at the top level of the project, append it + if (typeof project[attribute] !== 'undefined') { + result = project[attribute]; + } + + // Iterate over child elements and append to result array + for (var i in project.children) { + var child = project.children[i]; + if (typeof child[attribute] !== 'undefined') { + result = result.concat(child[attribute]); + } + } + + return result; +}; + +/** + * Extract summary information from a specific project attribute. Will attempt + * to concatinate all children when generating summary. + * @param {object} project JSON representation of project + * @param {string} attribute Attribute key + * @param {string} id "id" key + * @param {string} hash "hash" key + * @return {object} Summary + */ +const extract = function (project, attribute, id, hash) { + // Create storage objects and flatten project + var idList = null; + var hashList = null; + var elements = flatten(project, attribute); + + // Extract ids if specified + if (typeof id !== 'undefined') { + idList = []; + for (var x in elements) { + idList.push(elements[x][id]); + } + } + + // Extract hashes if specified + if (typeof hash !== 'undefined') { + hashList = []; + for (var y in elements) { + hashList.push(elements[y][hash]); + } + } + + // Build result and return + var result = { + count: elements.length + }; + if (idList !== null) result.id = idList; + if (hashList !== null) result.hash = hashList; + + return result; +}; + +/** + * Extract number of sprites from a project object. Will attempt to ignore + * "children" which are not sprites. + * @param {object} input Project object + * @return {object} Sprite information + */ +const sprites = function (input) { + let result = 0; + + for (var i in input.children) { + if (input.children[i].hasOwnProperty('spriteInfo')) result++; + } + + return {count: result}; +}; + +/** + * Tallys term frequency from an array of strings. + * @param {array} input Array of strings + * @return {object} Hash of unique strings with frequency values + */ +const frequency = function (input) { + var result = Object.create(null); + + for (var i in input) { + var term = input[i]; + if (typeof result[term] === 'undefined') result[term] = 0; + result[term]++; + } + + return result; +}; + +/** + * Extract blocks and generate frequency count. + * @param {object} project JSON representation of project + * @return {object} All blocks in the projects with frequency counts + */ +const blocks = function (project) { + // Storage objects + var result = []; + + /** + * Walk scripts array(s) and build block list. + * @param {array} stack Stack of blocks + * @return {void} + */ + var walk = function (stack) { + for (var i in stack) { + // Skip if item is not array + if (!Array.isArray(stack[i])) continue; + + // Recurse if first item is not a string + if (typeof stack[i][0] !== 'string') { + walk(stack[i]); + continue; + } + + // Add to block list + result.push(stack[i][0]); + + // Don't pull in params from procedures + if (stack[i][0] === 'procDef') continue; + + // Move to next item and walk + walk(stack[i].slice(1)); + } + }; + walk(flatten(project, 'scripts')); + + // Generate frequency count + var freq = frequency(result); + + // Build result and return + return { + count: result.length, + unique: Object.keys(freq).length, + id: result, + frequency: freq + }; +}; + +/** + * Extract extensions list. + * @param {object} project JSON representation of project + * @return {object} List of used extensions + */ +const extensions = function (project) { + var result = {count: 0, id: []}; + + // Check to ensure project includes any extensions + if (typeof project.info.savedExtensions === 'undefined') return result; + + // Iterate over extensions and build list + var ext = project.info.savedExtensions; + for (var i in ext) { + result.id.push(ext[i].extensionName); + } + + // Count and return + result.count = result.id.length; + return result; +}; + +/** + * Analyzes project and appends metadata to the project object (_meta). + * @param {object} project JSON representation of project + * @param {Function} callback Error and project JSON with metadata attached. + * @return {void} + */ +module.exports = function (project, callback) { + // Create metadata object + var meta = { + scripts: extract(project, 'scripts'), + variables: extract(project, 'variables', 'name'), + lists: extract(project, 'lists', 'listName'), + comments: extract(project, 'scriptComments'), + sounds: extract(project, 'sounds', 'soundName', 'md5'), + costumes: extract(project, 'costumes', 'costumeName', 'baseLayerMD5') + }; + + // Sprites + meta.sprites = sprites(project); + + // Blocks + meta.blocks = blocks(project); + + // Extensions + meta.extensions = extensions(project); + + // Bind metadata to project and return + project._meta = meta; + callback(null, project); +}; diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 0000000..3a1b131 --- /dev/null +++ b/lib/index.js @@ -0,0 +1,25 @@ +const parser = require('scratch-parser'); + +const sb2 = require('./sb2'); +const sb3 = require('./sb3'); + +module.exports = function (buffer, callback) { + parser(buffer, false, (err, project) => { + if (err) return callback(err); + + // Flatten array + project = project[0]; + + // Push project object to the appropriate analysis handler + switch (project.projectVersion) { + case 2: + sb2(project, callback); + break; + case 3: + sb3(project, callback); + break; + default: + throw new Error('Unsupported project version'); + } + }); +}; diff --git a/lib/sb2.js b/lib/sb2.js new file mode 100644 index 0000000..9902514 --- /dev/null +++ b/lib/sb2.js @@ -0,0 +1,200 @@ +/** + * Returns an array of items matching the specified attribute. + * @param {object} project Project object (SB2 format) + * @param {string} attribute Attribute to extract and flatten + * @return {array} Array of specified attribute + */ +const flatten = function (project, attribute) { + // Storage object + let result = []; + + // If attribute exists at the top level of the project, append it + if (typeof project[attribute] !== 'undefined') { + result = project[attribute]; + } + + // Iterate over child elements and append to result array + for (let i in project.children) { + const child = project.children[i]; + if (typeof child[attribute] !== 'undefined') { + result = result.concat(child[attribute]); + } + } + + return result; +}; + +/** + * Extract summary information from a specific project attribute. Will attempt + * to concatinate all children when generating summary. + * @param {object} project Project object (SB2 format) + * @param {string} attribute Attribute key + * @param {string} id "id" key + * @param {string} hash "hash" key + * @return {object} Summary information + */ +const extract = function (project, attribute, id, hash) { + // Create storage objects and flatten project + let idList = null; + let hashList = null; + let elements = flatten(project, attribute); + + // Extract ids if specified + if (typeof id !== 'undefined') { + idList = []; + for (var x in elements) { + idList.push(elements[x][id]); + } + } + + // Extract hashes if specified + if (typeof hash !== 'undefined') { + hashList = []; + for (var y in elements) { + hashList.push(elements[y][hash]); + } + } + + // Build result and return + var result = { + count: elements.length + }; + if (idList !== null) result.id = idList; + if (hashList !== null) result.hash = hashList; + + return result; +}; + +/** + * Extract number of sprites from a project object. Will attempt to ignore + * "children" which are not sprites. + * @param {object} input Project object (SB2 format) + * @return {object} Sprite information + */ +const sprites = function (input) { + let result = 0; + + for (let i in input.children) { + if (input.children[i].hasOwnProperty('spriteInfo')) result++; + } + + return {count: result}; +}; + +/** + * Tallys term frequency from an array of strings. + * @param {array} input Array of strings + * @return {object} Frequency information + */ +const frequency = function (input) { + const result = Object.create(null); + + for (let i in input) { + var term = input[i]; + if (typeof result[term] === 'undefined') result[term] = 0; + result[term]++; + } + + return result; +}; + +/** + * Extracts all blocks and generates a frequency count. + * @param {object} project Project object (SB2 format) + * @return {object} Block information + */ +const blocks = function (project) { + // Storage objects + const result = []; + + /** + * Walk scripts array(s) and build block list. + * @param {array} stack Stack of blocks + * @return {void} + */ + const walk = function (stack) { + for (let i in stack) { + // Skip if item is not array + if (!Array.isArray(stack[i])) continue; + + // Recurse if first item is not a string + if (typeof stack[i][0] !== 'string') { + walk(stack[i]); + continue; + } + + // Add to block list + result.push(stack[i][0]); + + // Don't pull in params from procedures + if (stack[i][0] === 'procDef') continue; + + // Move to next item and walk + walk(stack[i].slice(1)); + } + }; + walk(flatten(project, 'scripts')); + + // Generate frequency count + const freq = frequency(result); + + // Build result and return + return { + count: result.length, + unique: Object.keys(freq).length, + id: result, + frequency: freq + }; +}; + +/** + * Extracts extension information. + * @param {object} project Project object (SB2 format) + * @return {object} Extension information + */ +const extensions = function (project) { + const result = {count: 0, id: []}; + + // Check to ensure project includes any extensions + if (typeof project.info.savedExtensions === 'undefined') return result; + + // Iterate over extensions and build list + var ext = project.info.savedExtensions; + for (let i in ext) { + result.id.push(ext[i].extensionName); + } + + // Count and return + result.count = result.id.length; + return result; +}; + +/** + * Analyzes a project and returns summary information about the project. + * @param {object} project Project object (SB2 format) + * @param {Function} callback Callback function + * @return {void} + */ +module.exports = function (project, callback) { + // Create metadata object + const meta = { + scripts: extract(project, 'scripts'), + variables: extract(project, 'variables', 'name'), + lists: extract(project, 'lists', 'listName'), + comments: extract(project, 'scriptComments'), + sounds: extract(project, 'sounds', 'soundName', 'md5'), + costumes: extract(project, 'costumes', 'costumeName', 'baseLayerMD5') + }; + + // Sprites + meta.sprites = sprites(project); + + // Blocks + meta.blocks = blocks(project); + + // Extensions + meta.extensions = extensions(project); + + // Return all metadata + return callback(null, meta); +}; diff --git a/lib/sb3.js b/lib/sb3.js new file mode 100644 index 0000000..e4c2403 --- /dev/null +++ b/lib/sb3.js @@ -0,0 +1,110 @@ +const utility = require('./utility'); + +const scripts = function (targets) { + // Storage objects + let occurances = 0; + + // Iterate over all blocks in each target, and look for "top level" blocks + for (let t in targets) { + for (let b in targets[t].blocks) { + if (targets[t].blocks[b].topLevel) occurances++; + } + }; + + return { + count: occurances + }; +}; + +const variables = function (targets, attribute) { + // Storage objects + let occurances = 0; + let idList = []; + + for (let t in targets) { + for (let a in targets[t][attribute]) { + const variable = targets[t][attribute][a]; + occurances++; + idList.push(variable[0]); + } + }; + + return { + count: occurances, + id: idList + }; +}; + +// Iterate over targets, extract attribute, and aggregate results +const extract = function (targets, attribute, id, hash) { + // Storage objects + let occurances = 0; + let idList = []; + let hashList = []; + + for (let t in targets) { + for (let a in targets[t][attribute]) { + const asset = targets[t][attribute][a]; + occurances++; + if (typeof id !== 'undefined') idList.push(asset[id]); + if (typeof hash !== 'undefined') hashList.push(asset[hash]); + } + }; + + const result = {count: occurances}; + if (typeof id !== 'undefined') result.id = idList; + if (typeof hash !== 'undefined') result.hash = hashList; + return result; +}; + +const sprites = function (targets) { + return { + count: targets.length - 1 + }; +} + +const blocks = function (targets) { + // Storage object + let result = []; + + for (let t in targets) { + for (let a in targets[t].blocks) { + const block = targets[t].blocks[a]; + if (!block.shadow) result.push(block.opcode); + } + } + + // Calculate block frequency + const freq = utility.frequency(result); + + // Return summary + return { + count: result.length, + unique: Object.keys(freq).length, + id: result, + frequency: freq + }; +}; + +const extensions = function (extensions) { + return { + count: extensions.length, + id: extensions + }; +}; + +module.exports = function (project, callback) { + const meta = { + scripts: scripts(project.targets), + variables: variables(project.targets, 'variables'), + lists: variables(project.targets, 'lists'), + comments: extract(project.targets, 'comments'), + sounds: extract(project.targets, 'sounds', 'name', 'md5ext'), + costumes: extract(project.targets, 'costumes', 'name', 'md5ext'), + sprites: sprites(project.targets), + blocks: blocks(project.targets), + extensions: extensions(project.extensions) + }; + + callback(null, meta); +}; diff --git a/lib/utility.js b/lib/utility.js new file mode 100644 index 0000000..952b210 --- /dev/null +++ b/lib/utility.js @@ -0,0 +1,23 @@ +/** + * Utility methods for costructing Scratch project summaries. + */ +class Utility { + /** + * Tallys term frequency from an array of strings. + * @param {array} input Array of strings + * @return {object} Frequency information + */ + static frequency (input) { + const result = Object.create(null); + + for (let i in input) { + var term = input[i]; + if (typeof result[term] === 'undefined') result[term] = 0; + result[term]++; + } + + return result; + }; +} + +module.exports = Utility; diff --git a/package.json b/package.json new file mode 100644 index 0000000..7a44664 --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "scratch-analysis", + "version": "1.0.0", + "description": "Analysis tool for summarizing the structure, composition, and complexity of Scratch programs.", + "main": "lib/index.js", + "directories": { + "bin": "bin", + "lib": "lib", + "test": "test" + }, + "scripts": { + "test": "npm run test:lint && npm run test:unit && npm run test:integration", + "test:lint": "eslint .", + "test:unit": "tap test/unit/*.js", + "test:integration": "tap test/integration/*.js", + "test:coverage": "tap test/{unit,integration}/*.js --coverage --coverage-report=lcov" + }, + "author": "Scratch Foundation", + "license": "BSD-3-Clause", + "dependencies": { + "scratch-parser": "4.3.2", + "yargs": "12.0.5" + }, + "devDependencies": { + "babel-eslint": "^10.0.1", + "eslint": "^5.10.0", + "eslint-config-scratch": "^5.0.0", + "tap": "^12.1.1" + } +} diff --git a/test/analyze.js b/test/analyze.js new file mode 100644 index 0000000..561cc95 --- /dev/null +++ b/test/analyze.js @@ -0,0 +1,42 @@ +var test = require('tap').test; +var data = require('../fixtures/data'); +var analyze = require('../../lib/analyze'); + +test('spec', function (t) { + t.type(analyze, 'function'); + t.end(); +}); + +test('empty project', function (t) { + t.end(); +}); + +test('example project', function (t) { + analyze(JSON.parse(data.example.json.toString()), function (err, res) { + t.equal(err, null); + t.type(res, 'object'); + t.type(res._meta, 'object'); + t.type(res._meta.sprites, 'object'); + t.type(res._meta.scripts, 'object'); + t.type(res._meta.variables, 'object'); + t.type(res._meta.lists, 'object'); + t.type(res._meta.comments, 'object'); + t.type(res._meta.sounds, 'object'); + t.type(res._meta.costumes, 'object'); + t.type(res._meta.blocks, 'object'); + t.type(res._meta.extensions, 'object'); + + t.equal(res._meta.sprites.count, 2, 'expected number of sprites'); + t.equal(res._meta.scripts.count, 5, 'expected number of scripts'); + t.equal(res._meta.variables.count, 2, 'expected number of variables'); + t.equal(res._meta.lists.count, 2, 'expected number of lists'); + t.equal(res._meta.comments.count, 1, 'expected number of comments'); + t.equal(res._meta.sounds.count, 4, 'expected number of sounds'); + t.equal(res._meta.costumes.count, 16, 'expected number of costumes'); + t.equal(res._meta.blocks.count, 16, 'expected number of blocks'); + t.equal(res._meta.blocks.unique, 11, 'exepected number of blocks'); + t.equal(res._meta.extensions.count, 1, 'expected number of extensions'); + + t.end(); + }); +}); diff --git a/test/fixtures/invalid/garbage.jpg b/test/fixtures/invalid/garbage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0cde843629b89391b3947ad4edb22b93883d702e GIT binary patch literal 15675 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/sb2/default.json b/test/fixtures/sb2/default.json new file mode 100644 index 0000000..af478a4 --- /dev/null +++ b/test/fixtures/sb2/default.json @@ -0,0 +1,71 @@ +{ + "objName": "Stage", + "sounds": [{ + "soundName": "pop", + "soundID": -1, + "md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav", + "sampleCount": 258, + "rate": 11025, + "format": "" + }], + "costumes": [{ + "costumeName": "backdrop1", + "baseLayerID": -1, + "baseLayerMD5": "739b5e2a2435f6e1ec2993791b423146.png", + "bitmapResolution": 1, + "rotationCenterX": 240, + "rotationCenterY": 180 + }], + "currentCostumeIndex": 0, + "penLayerMD5": "5c81a336fab8be57adc039a8a2b33ca9.png", + "penLayerID": -1, + "tempoBPM": 60, + "videoAlpha": 0.5, + "children": [{ + "objName": "Sprite1", + "sounds": [{ + "soundName": "meow", + "soundID": -1, + "md5": "83c36d806dc92327b9e7049a565c6bff.wav", + "sampleCount": 18688, + "rate": 22050, + "format": "" + }], + "costumes": [{ + "costumeName": "costume1", + "baseLayerID": -1, + "baseLayerMD5": "09dc888b0b7df19f70d81588ae73420e.svg", + "bitmapResolution": 1, + "rotationCenterX": 47, + "rotationCenterY": 55 + }, + { + "costumeName": "costume2", + "baseLayerID": -1, + "baseLayerMD5": "3696356a03a8d938318876a593572843.svg", + "bitmapResolution": 1, + "rotationCenterX": 47, + "rotationCenterY": 55 + }], + "currentCostumeIndex": 0, + "scratchX": 0, + "scratchY": 0, + "scale": 1, + "direction": 90, + "rotationStyle": "normal", + "isDraggable": false, + "indexInLibrary": 1, + "visible": true, + "spriteInfo": { + } + }], + "info": { + "videoOn": false, + "userAgent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/50.0.2661.102 Safari\/537.36", + "swfVersion": "v446", + "scriptCount": 0, + "spriteCount": 1, + "hasCloudData": false, + "flashVersion": "MAC 21,0,0,242" + } +} diff --git a/test/fixtures/sb2/default.sb2 b/test/fixtures/sb2/default.sb2 new file mode 100644 index 0000000000000000000000000000000000000000..fe7426ff77fe3599f33c7d672bf7375de89e5fa9 GIT binary patch literal 54681 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

P4^L5|1b!*j4$bScdX#!xc- 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 Uh8%De{bL*kf`(_i{r9K;2P=V+EdT%j literal 0 HcmV?d00001 diff --git a/test/fixtures/sb3/complex.sb3 b/test/fixtures/sb3/complex.sb3 new file mode 100644 index 0000000000000000000000000000000000000000..b4a300bb037a0cba5fa52ab8039d17cc1afcd8b1 GIT binary patch literal 46610 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 @zVtf}~2QQ8}k)EmZ(V2m- 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 { + analysis('{}', (err, result) => { + t.type(err, 'object'); + t.type(result, 'undefined'); + t.end(); + }); +}); + +test('invalid binary', t => { + analysis(invalidBinary, (err, result) => { + t.type(err, 'string'); + t.type(result, 'undefined'); + t.end(); + }); +}); diff --git a/test/unit/sb2.js b/test/unit/sb2.js new file mode 100644 index 0000000..f6ab269 --- /dev/null +++ b/test/unit/sb2.js @@ -0,0 +1,256 @@ +const fs = require('fs'); +const path = require('path'); +const test = require('tap').test; +const analysis = require('../../lib/index'); + +const defaultObject = fs.readFileSync( + path.resolve(__dirname, '../fixtures/sb2/default.json') +); +const defaultBinary = fs.readFileSync( + path.resolve(__dirname, '../fixtures/sb2/default.sb2') +); +const complexBinary = fs.readFileSync( + path.resolve(__dirname, '../fixtures/sb2/complex.sb2') +); + +test('defalt (object)', t => { + analysis(defaultObject, (err, result) => { + t.true(typeof err === 'undefined' || err === null); + t.type(result, 'object'); + + t.type(result.scripts, 'object'); + t.equal(result.scripts.count, 0); + + t.type(result.variables, 'object'); + t.equal(result.variables.count, 0); + t.deepEqual(result.variables.id, []); + + t.type(result.lists, 'object'); + t.equal(result.lists.count, 0); + t.deepEqual(result.lists.id, []); + + t.type(result.comments, 'object'); + t.equal(result.comments.count, 0); + + t.type(result.sounds, 'object'); + t.equal(result.sounds.count, 2); + t.deepEqual(result.sounds.id, [ + 'pop', + 'meow' + ]); + t.deepEqual(result.sounds.hash, [ + '83a9787d4cb6f3b7632b4ddfebf74367.wav', + '83c36d806dc92327b9e7049a565c6bff.wav' + ]); + + t.type(result.costumes, 'object'); + t.equal(result.costumes.count, 3); + t.deepEqual(result.costumes.id, [ + 'backdrop1', + 'costume1', + 'costume2' + ]); + t.deepEqual(result.costumes.hash, [ + '739b5e2a2435f6e1ec2993791b423146.png', + '09dc888b0b7df19f70d81588ae73420e.svg', + '3696356a03a8d938318876a593572843.svg' + ]); + + t.type(result.sprites, 'object'); + t.equal(result.sprites.count, 1); + + t.type(result.blocks, 'object'); + t.equal(result.blocks.count, 0); + t.equal(result.blocks.unique, 0); + t.deepEqual(result.blocks.id, []); + t.deepEqual(result.blocks.frequency, {}); + + t.type(result.extensions, 'object'); + t.equal(result.extensions.count, 0); + t.deepEqual(result.extensions.id, []); + + t.end(); + }); +}); + +test('defalt (binary)', t => { + analysis(defaultBinary, (err, result) => { + t.true(typeof err === 'undefined' || err === null); + t.type(result, 'object'); + + t.type(result.scripts, 'object'); + t.equal(result.scripts.count, 0); + + t.type(result.variables, 'object'); + t.equal(result.variables.count, 0); + t.deepEqual(result.variables.id, []); + + t.type(result.lists, 'object'); + t.equal(result.lists.count, 0); + t.deepEqual(result.lists.id, []); + + t.type(result.comments, 'object'); + t.equal(result.comments.count, 0); + + t.type(result.sounds, 'object'); + t.equal(result.sounds.count, 2); + t.deepEqual(result.sounds.id, [ + 'pop', + 'meow' + ]); + t.deepEqual(result.sounds.hash, [ + '83a9787d4cb6f3b7632b4ddfebf74367.wav', + '83c36d806dc92327b9e7049a565c6bff.wav' + ]); + + t.type(result.costumes, 'object'); + t.equal(result.costumes.count, 3); + t.deepEqual(result.costumes.id, [ + 'backdrop1', + 'costume1', + 'costume2' + ]); + t.deepEqual(result.costumes.hash, [ + '739b5e2a2435f6e1ec2993791b423146.png', + 'f9a1c175dbe2e5dee472858dd30d16bb.svg', + '6e8bd9ae68fdb02b7e1e3df656a75635.svg' + ]); + + t.type(result.sprites, 'object'); + t.equal(result.sprites.count, 1); + + t.type(result.blocks, 'object'); + t.equal(result.blocks.count, 0); + t.equal(result.blocks.unique, 0); + t.deepEqual(result.blocks.id, []); + t.deepEqual(result.blocks.frequency, {}); + + t.type(result.extensions, 'object'); + t.equal(result.extensions.count, 0); + t.deepEqual(result.extensions.id, []); + + t.end(); + }); +}); + +test('complex (binary)', t => { + analysis(complexBinary, (err, result) => { + t.true(typeof err === 'undefined' || err === null); + t.type(result, 'object'); + + t.type(result.scripts, 'object'); + t.equal(result.scripts.count, 6); + + t.type(result.variables, 'object'); + t.equal(result.variables.count, 2); + t.deepEqual(result.variables.id, [ + 'global', + 'local' + ]); + + t.type(result.lists, 'object'); + t.equal(result.lists.count, 2); + t.deepEqual(result.lists.id, [ + 'globallist', + 'locallist' + ]); + + t.type(result.comments, 'object'); + t.equal(result.comments.count, 0); + + t.type(result.sounds, 'object'); + t.equal(result.sounds.count, 2); + t.deepEqual(result.sounds.id, [ + 'pop', + 'meow' + ]); + t.deepEqual(result.sounds.hash, [ + '83a9787d4cb6f3b7632b4ddfebf74367.wav', + '83c36d806dc92327b9e7049a565c6bff.wav' + ]); + + t.type(result.costumes, 'object'); + t.equal(result.costumes.count, 3); + t.deepEqual(result.costumes.id, [ + 'backdrop1', + 'costume1', + 'costume2' + ]); + t.deepEqual(result.costumes.hash, [ + '5b465b3b07d39019109d8dc6d6ee6593.svg', + 'f9a1c175dbe2e5dee472858dd30d16bb.svg', + '6e8bd9ae68fdb02b7e1e3df656a75635.svg' + ]); + + t.type(result.sprites, 'object'); + t.equal(result.sprites.count, 1); + + t.type(result.blocks, 'object'); + t.equal(result.blocks.count, 34); + t.equal(result.blocks.unique, 18); + t.deepEqual(result.blocks.id, [ + "whenGreenFlag", + "doForever", + "changeGraphicEffect:by:", + "whenGreenFlag", + "deleteLine:ofList:", + "deleteLine:ofList:", + "doForever", + "forward:", + "turnRight:", + "randomFrom:to:", + "bounceOffEdge", + "whenGreenFlag", + "doForever", + "setGraphicEffect:to:", + "xpos", + "whenGreenFlag", + "doForever", + "call", + "randomFrom:to:", + "heading", + "randomFrom:to:", + "heading", + "procDef", + "setVar:to:", + "getParam", + "setVar:to:", + "getParam", + "append:toList:", + "getParam", + "append:toList:", + "getParam", + "LEGO WeDo 2.0\u001FwhenTilted", + "LEGO WeDo 2.0\u001FsetLED", + "randomFrom:to:" + ]); + t.deepEqual(result.blocks.frequency, { + "LEGO WeDo 2.0\u001FsetLED": 1, + "LEGO WeDo 2.0\u001FwhenTilted": 1, + "bounceOffEdge": 1, + "call": 1, + "changeGraphicEffect:by:": 1, + "doForever": 4, + "deleteLine:ofList:": 2, + "forward:": 1, + "getParam": 4, + "heading": 2, + "procDef": 1, + "append:toList:": 2, + "randomFrom:to:": 4, + "setGraphicEffect:to:": 1, + "setVar:to:": 2, + "turnRight:": 1, + "whenGreenFlag": 4, + "xpos": 1 + }); + + t.type(result.extensions, 'object'); + t.equal(result.extensions.count, 1); + t.deepEqual(result.extensions.id, [ + 'LEGO WeDo 2.0' + ]); + + t.end(); + }); +}); diff --git a/test/unit/sb3.js b/test/unit/sb3.js new file mode 100644 index 0000000..0b8bf1f --- /dev/null +++ b/test/unit/sb3.js @@ -0,0 +1,260 @@ +const fs = require('fs'); +const path = require('path'); +const test = require('tap').test; +const analysis = require('../../lib/index'); + +const defaultObject = fs.readFileSync( + path.resolve(__dirname, '../fixtures/sb3/default.json') +); +const defaultBinary = fs.readFileSync( + path.resolve(__dirname, '../fixtures/sb3/default.sb3') +); +const complexBinary = fs.readFileSync( + path.resolve(__dirname, '../fixtures/sb3/complex.sb3') +); + +test('defalt (object)', t => { + analysis(defaultObject, (err, result) => { + t.true(typeof err === 'undefined' || err === null); + t.type(result, 'object'); + + t.type(result.scripts, 'object'); + t.equal(result.scripts.count, 0); + + t.type(result.variables, 'object'); + t.equal(result.variables.count, 1); + t.deepEqual(result.variables.id, [ + 'my variable' + ]); + + t.type(result.lists, 'object'); + t.equal(result.lists.count, 0); + t.deepEqual(result.lists.id, []); + + t.type(result.comments, 'object'); + t.equal(result.comments.count, 0); + + t.type(result.sounds, 'object'); + t.equal(result.sounds.count, 2); + t.deepEqual(result.sounds.id, [ + 'pop', + 'Meow' + ]); + t.deepEqual(result.sounds.hash, [ + '83a9787d4cb6f3b7632b4ddfebf74367.wav', + '83c36d806dc92327b9e7049a565c6bff.wav' + ]); + + t.type(result.costumes, 'object'); + t.equal(result.costumes.count, 3); + t.deepEqual(result.costumes.id, [ + 'backdrop1', + 'costume1', + 'costume2' + ]); + t.deepEqual(result.costumes.hash, [ + 'cd21514d0531fdffb22204e0ec5ed84a.svg', + 'b7853f557e4426412e64bb3da6531a99.svg', + 'e6ddc55a6ddd9cc9d84fe0b4c21e016f.svg' + ]); + + t.type(result.sprites, 'object'); + t.equal(result.sprites.count, 1); + + t.type(result.blocks, 'object'); + t.equal(result.blocks.count, 0); + t.equal(result.blocks.unique, 0); + t.deepEqual(result.blocks.id, []); + t.deepEqual(result.blocks.frequency, {}); + + t.type(result.extensions, 'object'); + t.equal(result.extensions.count, 0); + t.deepEqual(result.extensions.id, []); + + t.end(); + }); +}); + +test('defalt (binary)', t => { + analysis(defaultBinary, (err, result) => { + t.true(typeof err === 'undefined' || err === null); + t.type(result, 'object'); + + t.type(result.scripts, 'object'); + t.equal(result.scripts.count, 0); + + t.type(result.variables, 'object'); + t.equal(result.variables.count, 1); + t.deepEqual(result.variables.id, [ + 'my variable' + ]); + + t.type(result.lists, 'object'); + t.equal(result.lists.count, 0); + t.deepEqual(result.lists.id, []); + + t.type(result.comments, 'object'); + t.equal(result.comments.count, 0); + + t.type(result.sounds, 'object'); + t.equal(result.sounds.count, 2); + t.deepEqual(result.sounds.id, [ + 'pop', + 'Meow' + ]); + t.deepEqual(result.sounds.hash, [ + '83a9787d4cb6f3b7632b4ddfebf74367.wav', + '83c36d806dc92327b9e7049a565c6bff.wav' + ]); + + t.type(result.costumes, 'object'); + t.equal(result.costumes.count, 3); + t.deepEqual(result.costumes.id, [ + 'backdrop1', + 'costume1', + 'costume2' + ]); + t.deepEqual(result.costumes.hash, [ + 'cd21514d0531fdffb22204e0ec5ed84a.svg', + 'b7853f557e4426412e64bb3da6531a99.svg', + 'e6ddc55a6ddd9cc9d84fe0b4c21e016f.svg' + ]); + + t.type(result.sprites, 'object'); + t.equal(result.sprites.count, 1); + + t.type(result.blocks, 'object'); + t.equal(result.blocks.count, 0); + t.equal(result.blocks.unique, 0); + t.deepEqual(result.blocks.id, []); + t.deepEqual(result.blocks.frequency, {}); + + t.type(result.extensions, 'object'); + t.equal(result.extensions.count, 0); + t.deepEqual(result.extensions.id, []); + + t.end(); + }); +}); + +test('complex (binary)', t => { + analysis(complexBinary, (err, result) => { + t.true(typeof err === 'undefined' || err === null); + t.type(result, 'object'); + + t.type(result.scripts, 'object'); + t.equal(result.scripts.count, 6); + + t.type(result.variables, 'object'); + t.equal(result.variables.count, 2); + t.deepEqual(result.variables.id, [ + 'global', + 'local' + ]); + + t.type(result.lists, 'object'); + t.equal(result.lists.count, 2); + t.deepEqual(result.lists.id, [ + 'globallist', + 'locallist' + ]); + + t.type(result.comments, 'object'); + t.equal(result.comments.count, 0); + + t.type(result.sounds, 'object'); + t.equal(result.sounds.count, 2); + t.deepEqual(result.sounds.id, [ + 'pop', + 'meow' + ]); + t.deepEqual(result.sounds.hash, [ + '83a9787d4cb6f3b7632b4ddfebf74367.wav', + '83c36d806dc92327b9e7049a565c6bff.wav' + ]); + + t.type(result.costumes, 'object'); + t.equal(result.costumes.count, 3); + t.deepEqual(result.costumes.id, [ + 'backdrop1', + 'costume1', + 'costume2' + ]); + t.deepEqual(result.costumes.hash, [ + '7633d36de03d1df75808f581bbccc742.svg', + 'e6bcb4046c157f60c9f5c3bb5f299fce.svg', + '64208764c777be25d34d813dc0b743c7.svg' + ]); + + t.type(result.sprites, 'object'); + t.equal(result.sprites.count, 1); + + t.type(result.blocks, 'object'); + t.equal(result.blocks.count, 34); + t.equal(result.blocks.unique, 18); + t.deepEqual(result.blocks.id, [ + "event_whenflagclicked", + "control_forever", + "looks_changeeffectby", + "event_whenflagclicked", + "data_deleteoflist", + "data_deleteoflist", + "control_forever", + "motion_movesteps", + "motion_turnright", + "operator_random", + "motion_ifonedgebounce", + "event_whenflagclicked", + "control_forever", + "looks_seteffectto", + "motion_xposition", + "event_whenflagclicked", + "control_forever", + "procedures_call", + "operator_random", + "motion_direction", + "operator_random", + "motion_direction", + "procedures_definition", + "data_setvariableto", + "argument_reporter_string_number", + "data_setvariableto", + "argument_reporter_string_number", + "data_addtolist", + "argument_reporter_string_number", + "data_addtolist", + "argument_reporter_string_number", + "wedo2_whenTilted", + "wedo2_setLightHue", + "operator_random" + ]); + t.deepEqual(result.blocks.frequency, { + "argument_reporter_string_number": 4, + "control_forever": 4, + "data_addtolist": 2, + "data_deleteoflist": 2, + "data_setvariableto": 2, + "event_whenflagclicked": 4, + "looks_changeeffectby": 1, + "looks_seteffectto": 1, + "motion_direction": 2, + "motion_ifonedgebounce": 1, + "motion_movesteps": 1, + "motion_turnright": 1, + "motion_xposition": 1, + "operator_random": 4, + "procedures_call": 1, + "procedures_definition": 1, + "wedo2_setLightHue": 1, + "wedo2_whenTilted": 1 + }); + + t.type(result.extensions, 'object'); + t.equal(result.extensions.count, 1); + t.deepEqual(result.extensions.id, [ + 'wedo2' + ]); + + t.end(); + }); +}); diff --git a/test/unit/spec.js b/test/unit/spec.js new file mode 100644 index 0000000..d9e1d0a --- /dev/null +++ b/test/unit/spec.js @@ -0,0 +1,7 @@ +const test = require('tap').test; +const analysis = require('../../lib/index'); + +test('spec', t => { + t.type(analysis, 'function'); + t.end(); +}); From 89e912463c98d363d3f42276a285baea60d17d30 Mon Sep 17 00:00:00 2001 From: Andrew Sliwinski Date: Mon, 17 Dec 2018 18:14:30 -0500 Subject: [PATCH 2/7] Clean-up package file --- package.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/package.json b/package.json index 7a44664..5308d51 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,6 @@ "description": "Analysis tool for summarizing the structure, composition, and complexity of Scratch programs.", "main": "lib/index.js", "directories": { - "bin": "bin", "lib": "lib", "test": "test" }, @@ -18,8 +17,7 @@ "author": "Scratch Foundation", "license": "BSD-3-Clause", "dependencies": { - "scratch-parser": "4.3.2", - "yargs": "12.0.5" + "scratch-parser": "4.3.2" }, "devDependencies": { "babel-eslint": "^10.0.1", From bc9c3e0ab31ddef92bdb2e6cacb077d16042ff65 Mon Sep 17 00:00:00 2001 From: Andrew Sliwinski Date: Mon, 17 Dec 2018 18:15:07 -0500 Subject: [PATCH 3/7] Remove cruft-y test --- test/analyze.js | 42 ------------------------------------------ 1 file changed, 42 deletions(-) delete mode 100644 test/analyze.js diff --git a/test/analyze.js b/test/analyze.js deleted file mode 100644 index 561cc95..0000000 --- a/test/analyze.js +++ /dev/null @@ -1,42 +0,0 @@ -var test = require('tap').test; -var data = require('../fixtures/data'); -var analyze = require('../../lib/analyze'); - -test('spec', function (t) { - t.type(analyze, 'function'); - t.end(); -}); - -test('empty project', function (t) { - t.end(); -}); - -test('example project', function (t) { - analyze(JSON.parse(data.example.json.toString()), function (err, res) { - t.equal(err, null); - t.type(res, 'object'); - t.type(res._meta, 'object'); - t.type(res._meta.sprites, 'object'); - t.type(res._meta.scripts, 'object'); - t.type(res._meta.variables, 'object'); - t.type(res._meta.lists, 'object'); - t.type(res._meta.comments, 'object'); - t.type(res._meta.sounds, 'object'); - t.type(res._meta.costumes, 'object'); - t.type(res._meta.blocks, 'object'); - t.type(res._meta.extensions, 'object'); - - t.equal(res._meta.sprites.count, 2, 'expected number of sprites'); - t.equal(res._meta.scripts.count, 5, 'expected number of scripts'); - t.equal(res._meta.variables.count, 2, 'expected number of variables'); - t.equal(res._meta.lists.count, 2, 'expected number of lists'); - t.equal(res._meta.comments.count, 1, 'expected number of comments'); - t.equal(res._meta.sounds.count, 4, 'expected number of sounds'); - t.equal(res._meta.costumes.count, 16, 'expected number of costumes'); - t.equal(res._meta.blocks.count, 16, 'expected number of blocks'); - t.equal(res._meta.blocks.unique, 11, 'exepected number of blocks'); - t.equal(res._meta.extensions.count, 1, 'expected number of extensions'); - - t.end(); - }); -}); From b164232b3f5cf6301f660c4ade9789c880ce3e7d Mon Sep 17 00:00:00 2001 From: Andrew Sliwinski Date: Mon, 17 Dec 2018 20:05:13 -0500 Subject: [PATCH 4/7] Clean up tests --- lib/sb2.js | 21 ++-------- lib/sb3.js | 14 +++---- lib/utility.js | 2 +- test/unit/sb2.js | 104 +++++++++++++++++++++++------------------------ test/unit/sb3.js | 104 +++++++++++++++++++++++------------------------ 5 files changed, 115 insertions(+), 130 deletions(-) diff --git a/lib/sb2.js b/lib/sb2.js index 9902514..73ae754 100644 --- a/lib/sb2.js +++ b/lib/sb2.js @@ -1,3 +1,5 @@ +const utility = require('./utility'); + /** * Returns an array of items matching the specified attribute. * @param {object} project Project object (SB2 format) @@ -81,23 +83,6 @@ const sprites = function (input) { return {count: result}; }; -/** - * Tallys term frequency from an array of strings. - * @param {array} input Array of strings - * @return {object} Frequency information - */ -const frequency = function (input) { - const result = Object.create(null); - - for (let i in input) { - var term = input[i]; - if (typeof result[term] === 'undefined') result[term] = 0; - result[term]++; - } - - return result; -}; - /** * Extracts all blocks and generates a frequency count. * @param {object} project Project object (SB2 format) @@ -136,7 +121,7 @@ const blocks = function (project) { walk(flatten(project, 'scripts')); // Generate frequency count - const freq = frequency(result); + const freq = utility.frequency(result); // Build result and return return { diff --git a/lib/sb3.js b/lib/sb3.js index e4c2403..ba7b9db 100644 --- a/lib/sb3.js +++ b/lib/sb3.js @@ -9,7 +9,7 @@ const scripts = function (targets) { for (let b in targets[t].blocks) { if (targets[t].blocks[b].topLevel) occurances++; } - }; + } return { count: occurances @@ -27,7 +27,7 @@ const variables = function (targets, attribute) { occurances++; idList.push(variable[0]); } - }; + } return { count: occurances, @@ -49,7 +49,7 @@ const extract = function (targets, attribute, id, hash) { if (typeof id !== 'undefined') idList.push(asset[id]); if (typeof hash !== 'undefined') hashList.push(asset[hash]); } - }; + } const result = {count: occurances}; if (typeof id !== 'undefined') result.id = idList; @@ -61,7 +61,7 @@ const sprites = function (targets) { return { count: targets.length - 1 }; -} +}; const blocks = function (targets) { // Storage object @@ -86,10 +86,10 @@ const blocks = function (targets) { }; }; -const extensions = function (extensions) { +const extensions = function (list) { return { - count: extensions.length, - id: extensions + count: list.length, + id: list }; }; diff --git a/lib/utility.js b/lib/utility.js index 952b210..6ef2bb4 100644 --- a/lib/utility.js +++ b/lib/utility.js @@ -17,7 +17,7 @@ class Utility { } return result; - }; + } } module.exports = Utility; diff --git a/test/unit/sb2.js b/test/unit/sb2.js index f6ab269..261211c 100644 --- a/test/unit/sb2.js +++ b/test/unit/sb2.js @@ -189,60 +189,60 @@ test('complex (binary)', t => { t.equal(result.blocks.count, 34); t.equal(result.blocks.unique, 18); t.deepEqual(result.blocks.id, [ - "whenGreenFlag", - "doForever", - "changeGraphicEffect:by:", - "whenGreenFlag", - "deleteLine:ofList:", - "deleteLine:ofList:", - "doForever", - "forward:", - "turnRight:", - "randomFrom:to:", - "bounceOffEdge", - "whenGreenFlag", - "doForever", - "setGraphicEffect:to:", - "xpos", - "whenGreenFlag", - "doForever", - "call", - "randomFrom:to:", - "heading", - "randomFrom:to:", - "heading", - "procDef", - "setVar:to:", - "getParam", - "setVar:to:", - "getParam", - "append:toList:", - "getParam", - "append:toList:", - "getParam", - "LEGO WeDo 2.0\u001FwhenTilted", - "LEGO WeDo 2.0\u001FsetLED", - "randomFrom:to:" + 'whenGreenFlag', + 'doForever', + 'changeGraphicEffect:by:', + 'whenGreenFlag', + 'deleteLine:ofList:', + 'deleteLine:ofList:', + 'doForever', + 'forward:', + 'turnRight:', + 'randomFrom:to:', + 'bounceOffEdge', + 'whenGreenFlag', + 'doForever', + 'setGraphicEffect:to:', + 'xpos', + 'whenGreenFlag', + 'doForever', + 'call', + 'randomFrom:to:', + 'heading', + 'randomFrom:to:', + 'heading', + 'procDef', + 'setVar:to:', + 'getParam', + 'setVar:to:', + 'getParam', + 'append:toList:', + 'getParam', + 'append:toList:', + 'getParam', + 'LEGO WeDo 2.0\u001FwhenTilted', + 'LEGO WeDo 2.0\u001FsetLED', + 'randomFrom:to:' ]); t.deepEqual(result.blocks.frequency, { - "LEGO WeDo 2.0\u001FsetLED": 1, - "LEGO WeDo 2.0\u001FwhenTilted": 1, - "bounceOffEdge": 1, - "call": 1, - "changeGraphicEffect:by:": 1, - "doForever": 4, - "deleteLine:ofList:": 2, - "forward:": 1, - "getParam": 4, - "heading": 2, - "procDef": 1, - "append:toList:": 2, - "randomFrom:to:": 4, - "setGraphicEffect:to:": 1, - "setVar:to:": 2, - "turnRight:": 1, - "whenGreenFlag": 4, - "xpos": 1 + 'LEGO WeDo 2.0\u001FsetLED': 1, + 'LEGO WeDo 2.0\u001FwhenTilted': 1, + 'bounceOffEdge': 1, + 'call': 1, + 'changeGraphicEffect:by:': 1, + 'doForever': 4, + 'deleteLine:ofList:': 2, + 'forward:': 1, + 'getParam': 4, + 'heading': 2, + 'procDef': 1, + 'append:toList:': 2, + 'randomFrom:to:': 4, + 'setGraphicEffect:to:': 1, + 'setVar:to:': 2, + 'turnRight:': 1, + 'whenGreenFlag': 4, + 'xpos': 1 }); t.type(result.extensions, 'object'); diff --git a/test/unit/sb3.js b/test/unit/sb3.js index 0b8bf1f..8edf126 100644 --- a/test/unit/sb3.js +++ b/test/unit/sb3.js @@ -193,60 +193,60 @@ test('complex (binary)', t => { t.equal(result.blocks.count, 34); t.equal(result.blocks.unique, 18); t.deepEqual(result.blocks.id, [ - "event_whenflagclicked", - "control_forever", - "looks_changeeffectby", - "event_whenflagclicked", - "data_deleteoflist", - "data_deleteoflist", - "control_forever", - "motion_movesteps", - "motion_turnright", - "operator_random", - "motion_ifonedgebounce", - "event_whenflagclicked", - "control_forever", - "looks_seteffectto", - "motion_xposition", - "event_whenflagclicked", - "control_forever", - "procedures_call", - "operator_random", - "motion_direction", - "operator_random", - "motion_direction", - "procedures_definition", - "data_setvariableto", - "argument_reporter_string_number", - "data_setvariableto", - "argument_reporter_string_number", - "data_addtolist", - "argument_reporter_string_number", - "data_addtolist", - "argument_reporter_string_number", - "wedo2_whenTilted", - "wedo2_setLightHue", - "operator_random" + 'event_whenflagclicked', + 'control_forever', + 'looks_changeeffectby', + 'event_whenflagclicked', + 'data_deleteoflist', + 'data_deleteoflist', + 'control_forever', + 'motion_movesteps', + 'motion_turnright', + 'operator_random', + 'motion_ifonedgebounce', + 'event_whenflagclicked', + 'control_forever', + 'looks_seteffectto', + 'motion_xposition', + 'event_whenflagclicked', + 'control_forever', + 'procedures_call', + 'operator_random', + 'motion_direction', + 'operator_random', + 'motion_direction', + 'procedures_definition', + 'data_setvariableto', + 'argument_reporter_string_number', + 'data_setvariableto', + 'argument_reporter_string_number', + 'data_addtolist', + 'argument_reporter_string_number', + 'data_addtolist', + 'argument_reporter_string_number', + 'wedo2_whenTilted', + 'wedo2_setLightHue', + 'operator_random' ]); t.deepEqual(result.blocks.frequency, { - "argument_reporter_string_number": 4, - "control_forever": 4, - "data_addtolist": 2, - "data_deleteoflist": 2, - "data_setvariableto": 2, - "event_whenflagclicked": 4, - "looks_changeeffectby": 1, - "looks_seteffectto": 1, - "motion_direction": 2, - "motion_ifonedgebounce": 1, - "motion_movesteps": 1, - "motion_turnright": 1, - "motion_xposition": 1, - "operator_random": 4, - "procedures_call": 1, - "procedures_definition": 1, - "wedo2_setLightHue": 1, - "wedo2_whenTilted": 1 + argument_reporter_string_number: 4, + control_forever: 4, + data_addtolist: 2, + data_deleteoflist: 2, + data_setvariableto: 2, + event_whenflagclicked: 4, + looks_changeeffectby: 1, + looks_seteffectto: 1, + motion_direction: 2, + motion_ifonedgebounce: 1, + motion_movesteps: 1, + motion_turnright: 1, + motion_xposition: 1, + operator_random: 4, + procedures_call: 1, + procedures_definition: 1, + wedo2_setLightHue: 1, + wedo2_whenTilted: 1 }); t.type(result.extensions, 'object'); From f95001ffec83524391399a6c0c7ca57d9ab8987b Mon Sep 17 00:00:00 2001 From: Andrew Sliwinski Date: Mon, 17 Dec 2018 20:12:21 -0500 Subject: [PATCH 5/7] Clean-up utility module / tests --- lib/utility.js | 2 +- test/unit/utility.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 test/unit/utility.js diff --git a/lib/utility.js b/lib/utility.js index 6ef2bb4..cb83509 100644 --- a/lib/utility.js +++ b/lib/utility.js @@ -3,7 +3,7 @@ */ class Utility { /** - * Tallys term frequency from an array of strings. + * Tallies term frequency from an array of strings. * @param {array} input Array of strings * @return {object} Frequency information */ diff --git a/test/unit/utility.js b/test/unit/utility.js new file mode 100644 index 0000000..ee220bd --- /dev/null +++ b/test/unit/utility.js @@ -0,0 +1,19 @@ +const test = require('tap').test; +const utility = require('../../lib/utility'); + +test('spec', t => { + t.type(utility, 'function'); + t.type(utility.frequency, 'function'); + t.end(); +}); + +test('frequency', t => { + const input = ['foo', 'foo', 'foo', 'bar', 'bar', 'baz']; + const result = utility.frequency(input); + t.deepEqual(result, { + foo: 3, + bar: 2, + baz: 1 + }); + t.end(); +}); From 020d3ea16777448b850b0003dc0df72d700969a6 Mon Sep 17 00:00:00 2001 From: Andrew Sliwinski Date: Tue, 18 Dec 2018 11:00:22 -0500 Subject: [PATCH 6/7] Remove cruft --- analyze.js | 201 ----------------------------------------------------- 1 file changed, 201 deletions(-) delete mode 100644 analyze.js diff --git a/analyze.js b/analyze.js deleted file mode 100644 index 8904e00..0000000 --- a/analyze.js +++ /dev/null @@ -1,201 +0,0 @@ -/** - * Returns an array of items matching the specified attribute. - * @param {object} project JSON representation of project - * @param {string} attribute Attribute to extract and flatten - * @return {Array} Array of items matching attribute - */ -const flatten = function (project, attribute) { - // Storage object - let result = []; - - // If attribute exists at the top level of the project, append it - if (typeof project[attribute] !== 'undefined') { - result = project[attribute]; - } - - // Iterate over child elements and append to result array - for (var i in project.children) { - var child = project.children[i]; - if (typeof child[attribute] !== 'undefined') { - result = result.concat(child[attribute]); - } - } - - return result; -}; - -/** - * Extract summary information from a specific project attribute. Will attempt - * to concatinate all children when generating summary. - * @param {object} project JSON representation of project - * @param {string} attribute Attribute key - * @param {string} id "id" key - * @param {string} hash "hash" key - * @return {object} Summary - */ -const extract = function (project, attribute, id, hash) { - // Create storage objects and flatten project - var idList = null; - var hashList = null; - var elements = flatten(project, attribute); - - // Extract ids if specified - if (typeof id !== 'undefined') { - idList = []; - for (var x in elements) { - idList.push(elements[x][id]); - } - } - - // Extract hashes if specified - if (typeof hash !== 'undefined') { - hashList = []; - for (var y in elements) { - hashList.push(elements[y][hash]); - } - } - - // Build result and return - var result = { - count: elements.length - }; - if (idList !== null) result.id = idList; - if (hashList !== null) result.hash = hashList; - - return result; -}; - -/** - * Extract number of sprites from a project object. Will attempt to ignore - * "children" which are not sprites. - * @param {object} input Project object - * @return {object} Sprite information - */ -const sprites = function (input) { - let result = 0; - - for (var i in input.children) { - if (input.children[i].hasOwnProperty('spriteInfo')) result++; - } - - return {count: result}; -}; - -/** - * Tallys term frequency from an array of strings. - * @param {array} input Array of strings - * @return {object} Hash of unique strings with frequency values - */ -const frequency = function (input) { - var result = Object.create(null); - - for (var i in input) { - var term = input[i]; - if (typeof result[term] === 'undefined') result[term] = 0; - result[term]++; - } - - return result; -}; - -/** - * Extract blocks and generate frequency count. - * @param {object} project JSON representation of project - * @return {object} All blocks in the projects with frequency counts - */ -const blocks = function (project) { - // Storage objects - var result = []; - - /** - * Walk scripts array(s) and build block list. - * @param {array} stack Stack of blocks - * @return {void} - */ - var walk = function (stack) { - for (var i in stack) { - // Skip if item is not array - if (!Array.isArray(stack[i])) continue; - - // Recurse if first item is not a string - if (typeof stack[i][0] !== 'string') { - walk(stack[i]); - continue; - } - - // Add to block list - result.push(stack[i][0]); - - // Don't pull in params from procedures - if (stack[i][0] === 'procDef') continue; - - // Move to next item and walk - walk(stack[i].slice(1)); - } - }; - walk(flatten(project, 'scripts')); - - // Generate frequency count - var freq = frequency(result); - - // Build result and return - return { - count: result.length, - unique: Object.keys(freq).length, - id: result, - frequency: freq - }; -}; - -/** - * Extract extensions list. - * @param {object} project JSON representation of project - * @return {object} List of used extensions - */ -const extensions = function (project) { - var result = {count: 0, id: []}; - - // Check to ensure project includes any extensions - if (typeof project.info.savedExtensions === 'undefined') return result; - - // Iterate over extensions and build list - var ext = project.info.savedExtensions; - for (var i in ext) { - result.id.push(ext[i].extensionName); - } - - // Count and return - result.count = result.id.length; - return result; -}; - -/** - * Analyzes project and appends metadata to the project object (_meta). - * @param {object} project JSON representation of project - * @param {Function} callback Error and project JSON with metadata attached. - * @return {void} - */ -module.exports = function (project, callback) { - // Create metadata object - var meta = { - scripts: extract(project, 'scripts'), - variables: extract(project, 'variables', 'name'), - lists: extract(project, 'lists', 'listName'), - comments: extract(project, 'scriptComments'), - sounds: extract(project, 'sounds', 'soundName', 'md5'), - costumes: extract(project, 'costumes', 'costumeName', 'baseLayerMD5') - }; - - // Sprites - meta.sprites = sprites(project); - - // Blocks - meta.blocks = blocks(project); - - // Extensions - meta.extensions = extensions(project); - - // Bind metadata to project and return - project._meta = meta; - callback(null, project); -}; From 1181cd83139aac18941bb7b2d034bf21a26d620b Mon Sep 17 00:00:00 2001 From: Andrew Sliwinski Date: Tue, 18 Dec 2018 12:26:14 -0500 Subject: [PATCH 7/7] Address feedback from PR review --- lib/index.js | 8 +++----- lib/sb2.js | 4 ++-- lib/sb3.js | 18 +++++++++--------- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/lib/index.js b/lib/index.js index 3a1b131..8a26121 100644 --- a/lib/index.js +++ b/lib/index.js @@ -4,11 +4,11 @@ const sb2 = require('./sb2'); const sb3 = require('./sb3'); module.exports = function (buffer, callback) { - parser(buffer, false, (err, project) => { + parser(buffer, false, (err, result) => { if (err) return callback(err); - // Flatten array - project = project[0]; + // Extract only the project object from the parser results + const project = result[0]; // Push project object to the appropriate analysis handler switch (project.projectVersion) { @@ -18,8 +18,6 @@ module.exports = function (buffer, callback) { case 3: sb3(project, callback); break; - default: - throw new Error('Unsupported project version'); } }); }; diff --git a/lib/sb2.js b/lib/sb2.js index 73ae754..4831957 100644 --- a/lib/sb2.js +++ b/lib/sb2.js @@ -139,12 +139,12 @@ const blocks = function (project) { */ const extensions = function (project) { const result = {count: 0, id: []}; + const ext = project.info.savedExtensions; // Check to ensure project includes any extensions - if (typeof project.info.savedExtensions === 'undefined') return result; + if (typeof ext === 'undefined') return result; // Iterate over extensions and build list - var ext = project.info.savedExtensions; for (let i in ext) { result.id.push(ext[i].extensionName); } diff --git a/lib/sb3.js b/lib/sb3.js index ba7b9db..b9c910c 100644 --- a/lib/sb3.js +++ b/lib/sb3.js @@ -2,35 +2,35 @@ const utility = require('./utility'); const scripts = function (targets) { // Storage objects - let occurances = 0; + let occurrences = 0; // Iterate over all blocks in each target, and look for "top level" blocks for (let t in targets) { for (let b in targets[t].blocks) { - if (targets[t].blocks[b].topLevel) occurances++; + if (targets[t].blocks[b].topLevel) occurrences++; } } return { - count: occurances + count: occurrences }; }; const variables = function (targets, attribute) { // Storage objects - let occurances = 0; + let occurrences = 0; let idList = []; for (let t in targets) { for (let a in targets[t][attribute]) { const variable = targets[t][attribute][a]; - occurances++; + occurrences++; idList.push(variable[0]); } } return { - count: occurances, + count: occurrences, id: idList }; }; @@ -38,20 +38,20 @@ const variables = function (targets, attribute) { // Iterate over targets, extract attribute, and aggregate results const extract = function (targets, attribute, id, hash) { // Storage objects - let occurances = 0; + let occurrences = 0; let idList = []; let hashList = []; for (let t in targets) { for (let a in targets[t][attribute]) { const asset = targets[t][attribute][a]; - occurances++; + occurrences++; if (typeof id !== 'undefined') idList.push(asset[id]); if (typeof hash !== 'undefined') hashList.push(asset[hash]); } } - const result = {count: occurances}; + const result = {count: occurrences}; if (typeof id !== 'undefined') result.id = idList; if (typeof hash !== 'undefined') result.hash = hashList; return result;