From 2ae0c204fcefaabf3dc63d0d597b18a8a2e5189b Mon Sep 17 00:00:00 2001 From: Clement Lakhal Date: Sat, 30 Nov 2019 20:08:28 +0100 Subject: [PATCH 1/7] Update version number --- index.js | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 835ee05..78baca3 100644 --- a/index.js +++ b/index.js @@ -6,7 +6,7 @@ const createDocumentationFor = require('./src/documentationGenerator'); const program = new commander.Command(); -program.version('0.0.9'); +program.version('0.0.8'); const defaultTemplatePath = path.join(__dirname, 'templates', 'default.sqrl'); diff --git a/package.json b/package.json index 17c0cd4..5eac2fb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "leafleth", - "version": "0.0.9", + "version": "0.0.8", "description": "Documentation generator for Solidity", "main": "./index.js", "bin": "./bin/leafleth", From 7ac143e080d1401b1d4ff9a39dcd126820d7a5be Mon Sep 17 00:00:00 2001 From: Clement Lakhal Date: Sat, 30 Nov 2019 20:40:41 +0100 Subject: [PATCH 2/7] Update new version --- index.js | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 78baca3..835ee05 100644 --- a/index.js +++ b/index.js @@ -6,7 +6,7 @@ const createDocumentationFor = require('./src/documentationGenerator'); const program = new commander.Command(); -program.version('0.0.8'); +program.version('0.0.9'); const defaultTemplatePath = path.join(__dirname, 'templates', 'default.sqrl'); diff --git a/package.json b/package.json index 5eac2fb..17c0cd4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "leafleth", - "version": "0.0.8", + "version": "0.0.9", "description": "Documentation generator for Solidity", "main": "./index.js", "bin": "./bin/leafleth", From d02ff4b2602e53cd32fbb4985df8144f15a0a981 Mon Sep 17 00:00:00 2001 From: leekt216 Date: Tue, 25 Feb 2020 13:24:22 +0900 Subject: [PATCH 3/7] fixed multi parameter parse error --- src/documentationGenerator.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/documentationGenerator.js b/src/documentationGenerator.js index 96994d4..35e8131 100644 --- a/src/documentationGenerator.js +++ b/src/documentationGenerator.js @@ -71,17 +71,22 @@ function createDocumentationFor( data.methods[methodName].author = value.author; if (value.params) { - for (const [parameter, description] of Object.entries(value.params)) { - data.methods[methodName].params = {}; - data.methods[methodName].params[parameter] = {}; - data.methods[methodName].params[parameter].description = description; - } + //todo change to array + + const abi = content.abi.filter(x => x.name == methodName); + + data.methods[methodName].params = []; const parametersTypesString = fragments[1].substring(0, fragments[1].length - 1); const parametersTypes = parametersTypesString.split(','); const parametersKeys = Object.keys(data.methods[methodName].params); + abi[0].inputs.forEach(x => { + x.description = value.params[x.name]; + data.methods[methodName].params.push(x) + }); + for (let i = 0; i < parametersKeys.length; i += 1) { data.methods[methodName].params[parametersKeys[i]].type = parametersTypes[i]; } From 1c4ffbaf0039cfdff44ccc5be4fd8fae821276eb Mon Sep 17 00:00:00 2001 From: leekt216 Date: Tue, 25 Feb 2020 20:22:57 +0900 Subject: [PATCH 4/7] chore: removed unused parts --- src/documentationGenerator.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/documentationGenerator.js b/src/documentationGenerator.js index 35e8131..ea82e95 100644 --- a/src/documentationGenerator.js +++ b/src/documentationGenerator.js @@ -86,10 +86,6 @@ function createDocumentationFor( x.description = value.params[x.name]; data.methods[methodName].params.push(x) }); - - for (let i = 0; i < parametersKeys.length; i += 1) { - data.methods[methodName].params[parametersKeys[i]].type = parametersTypes[i]; - } } } } From fd5ea7eb0c9856eb88d5e2aa846ba5248ebf5012 Mon Sep 17 00:00:00 2001 From: leekt216 Date: Thu, 27 Feb 2020 17:49:57 +0900 Subject: [PATCH 5/7] feat: now gets full abi of method --- src/documentationGenerator.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/documentationGenerator.js b/src/documentationGenerator.js index ea82e95..4f067dd 100644 --- a/src/documentationGenerator.js +++ b/src/documentationGenerator.js @@ -69,10 +69,9 @@ function createDocumentationFor( data.methods[methodName].details = value.details; data.methods[methodName].return = value.return; data.methods[methodName].author = value.author; + data.methods[methodName].fullName = key; if (value.params) { - //todo change to array - const abi = content.abi.filter(x => x.name == methodName); data.methods[methodName].params = []; From 461668d3a20f546761dc885f5c0cac1c23d617e7 Mon Sep 17 00:00:00 2001 From: leekt216 Date: Thu, 27 Feb 2020 18:19:26 +0900 Subject: [PATCH 6/7] feat: now supports method signature --- src/documentationGenerator.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/documentationGenerator.js b/src/documentationGenerator.js index 4f067dd..99094fb 100644 --- a/src/documentationGenerator.js +++ b/src/documentationGenerator.js @@ -4,6 +4,12 @@ const fs = require('fs'); const path = require('path'); const Sqrl = require('squirrelly'); +function signatureFromABI(method) { + const types = method.inputs.map(x => x.type); + const packed = types.join(); + return method.name+"("+packed+")"; +} + function createDocumentationFor( sourcePath, outputDir, @@ -37,6 +43,7 @@ function createDocumentationFor( payable: method.payable, stateMutability: method.stateMutability, outputs: method.outputs, + signature: signatureFromABI(method) }; } }); @@ -56,7 +63,6 @@ function createDocumentationFor( if (key !== 'constructor') { const fragments = key.split('('); const methodName = fragments[0]; - data.methods[methodName].notice = value.notice; } } @@ -69,7 +75,6 @@ function createDocumentationFor( data.methods[methodName].details = value.details; data.methods[methodName].return = value.return; data.methods[methodName].author = value.author; - data.methods[methodName].fullName = key; if (value.params) { const abi = content.abi.filter(x => x.name == methodName); From fd0c0f02b489baac9f4c1b34fff4e2352c9140df Mon Sep 17 00:00:00 2001 From: leekt216 Date: Wed, 4 Mar 2020 22:35:25 +0900 Subject: [PATCH 7/7] feat: solidity 0.6 support --- src/documentationGenerator.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/documentationGenerator.js b/src/documentationGenerator.js index 99094fb..f271eef 100644 --- a/src/documentationGenerator.js +++ b/src/documentationGenerator.js @@ -74,6 +74,8 @@ function createDocumentationFor( data.methods[methodName].details = value.details; data.methods[methodName].return = value.return; + //from solidity 0.6, now supports multiple return value on natspec + data.methods[methodName].returns = value.returns; data.methods[methodName].author = value.author; if (value.params) { @@ -91,6 +93,13 @@ function createDocumentationFor( data.methods[methodName].params.push(x) }); } + + if (value.returns) { + data.methods[methodName].outputs.forEach(x => { + if (value.returns[x.name]) + x.description = value.returns[x.name]; + }); + } } }