diff --git a/lib/compile/parse-abi.js b/lib/compile/parse-abi.js index 694eeea..2aa13a6 100644 --- a/lib/compile/parse-abi.js +++ b/lib/compile/parse-abi.js @@ -25,12 +25,14 @@ exports.default = function (contract) { // don't write this delete devDocs.params; - var outputs = void 0; + var outputs = []; try { - var outputParams = JSON.parse(devDocs.return); - outputs = method.outputs.map(function (param) { - return _extends({}, param, { description: outputParams[param.name] }); - }); + if (typeof devDocs.return !== 'undefined') { + var outputParams = JSON.parse(devDocs.return); + outputs = method.outputs.map(function (param) { + return _extends({}, param, { description: outputParams[param.name] }); + }); + } } catch (e) { process.stderr.write('warning: invalid @return for ' + method.name + ' - output may be effected\n'); outputs = method.outputs; diff --git a/lib/template.js b/lib/template.js index d63d57c..981248c 100644 --- a/lib/template.js +++ b/lib/template.js @@ -10,7 +10,7 @@ var _dot2 = _interopRequireDefault(_dot); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var template = '\n# {{=it.name}}\n{{? it.author }}\n{{=it.author}}{{?}}\n{{~it.abiDocs :docItem:index}}{{? docItem.type === \'function\'}}\n## *{{=docItem.type}}* {{=docItem.name}}\n\n{{=it.name}}.{{=docItem.name}}({{=docItem.argumentList}}){{?docItem.payable}}`payable`{{?}} `{{=docItem.signatureHash}}`\n{{?docItem.notice}}\n**{{=docItem.notice}}**\n{{?}}\n{{?docItem.details}}> {{=docItem.details}}\n{{?}}\n{{? docItem.inputs.length > 0 }}Inputs\n\n| | | |\n|-|-|-|{{~docItem.inputs :input}}\n| *{{=input.type}}* | {{=input.name}} | {{=input.description}} |{{~}}{{?}}\n{{? docItem.outputs.length > 0 }}Outputs\n\n| | | |\n|-|-|-|{{~docItem.outputs :output}}\n| *{{=output.type}}* | {{=output.name}} | {{=output.description}} |{{~}}{{?}}{{?}}\n{{~}}\n---'; +var template = '\n# {{=it.name}}\n{{? it.author }}\n{{=it.author}}{{?}}\n{{~it.abiDocs :docItem:index}}{{? docItem.type === \'function\'}}\n## *{{=docItem.type}}* {{=docItem.name}}\n\n{{=it.name}}.{{=docItem.name}}({{=docItem.argumentList}}){{?docItem.payable}}`payable`{{?}} `{{=docItem.signatureHash}}`\n{{?docItem.notice}}\n**{{=docItem.notice}}**\n{{?}}\n{{?docItem.details}}> {{=docItem.details}}\n{{?}}\n{{? docItem.inputs.length > 0 }}Inputs\n\n| | | |\n|-|-|-|{{~docItem.inputs :input}}\n| *{{=input.type}}* | {{=input.name}} | {{=input.description}} |{{~}}{{?}}\n{{? docItem.outputs.length > 0 }}\nOutputs\n\n| | | |\n|-|-|-|{{~docItem.outputs :output}}\n| *{{=output.type}}* | {{=output.name}} | {{=output.description}} |{{~}}{{?}}{{?}}\n{{~}}\n---'; _dot2.default.templateSettings.strip = false; diff --git a/package-lock.json b/package-lock.json index 3d031a0..c98c817 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "solmd", - "version": "0.1.2", + "version": "0.1.4", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 7e6e716..49972a3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "solmd", - "version": "0.1.3", + "version": "0.1.4", "description": "Markdown documentation generator for Solidity", "engines": { "node": ">=4" diff --git a/src/compile/parse-abi.js b/src/compile/parse-abi.js index 9297d19..fffdb76 100644 --- a/src/compile/parse-abi.js +++ b/src/compile/parse-abi.js @@ -13,10 +13,14 @@ export default function (contract) { // don't write this delete devDocs.params; - let outputs; + let outputs = []; try { - const outputParams = JSON.parse(devDocs.return); - outputs = method.outputs.map(param => ({ ...param, description: outputParams[param.name] })); + if (typeof devDocs.return !== 'undefined') { + const outputParams = JSON.parse(devDocs.return); + outputs = method.outputs.map(param => ( + { ...param, description: outputParams[param.name] } + )); + } } catch (e) { process.stderr.write(`warning: invalid @return for ${method.name} - output may be effected\n`); outputs = method.outputs; diff --git a/src/template.js b/src/template.js index 9cddede..c6a56dd 100644 --- a/src/template.js +++ b/src/template.js @@ -18,7 +18,8 @@ const template = ` | | | | |-|-|-|{{~docItem.inputs :input}} | *{{=input.type}}* | {{=input.name}} | {{=input.description}} |{{~}}{{?}} -{{? docItem.outputs.length > 0 }}Outputs +{{? docItem.outputs.length > 0 }} +Outputs | | | | |-|-|-|{{~docItem.outputs :output}} diff --git a/test/contracts/GavCoin.sol b/test/contracts/GavCoin.sol index 55fc1e8..667169a 100644 --- a/test/contracts/GavCoin.sol +++ b/test/contracts/GavCoin.sol @@ -27,4 +27,18 @@ contract GavCoin { balances[msg.sender] -= valueInmGAV; } } + + /** + @notice change owner + @dev dev + @param _owner this is the owner + @return { + "previousOwner": "the previous owner" + } + */ + function setOwner(address _owner) returns (address previousOwner) { + previousOwner = owner; + owner = _owner; + return previousOwner; + } } diff --git a/test/expected.js b/test/expected.js index ad4e9eb..2641eb2 100644 --- a/test/expected.js +++ b/test/expected.js @@ -3,21 +3,37 @@ const GavCoin = ` Gavin Wood -## *function* balances +## *function* setOwner -GavCoin.balances() \`27e235e3\` +GavCoin.setOwner(_owner) \`13af4035\` + +**change owner** +> dev Inputs | | | | |-|-|-| -| *address* | | undefined | +| *address* | _owner | this is the owner | + Outputs | | | | |-|-|-| -| *uint256* | | undefined | +| *address* | previousOwner | the previous owner | + +## *function* balances + +GavCoin.balances() \`27e235e3\` + + +Inputs + +| | | | +|-|-|-| +| *address* | | undefined | + ## *function* send