Skip to content

raineorshine/generate-contract-interface

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

generate-contract-interface

npm version

Generates an abstract contract in Solidity from a given contract.

Install

$ npm install --save generate-contract-interface

CLI Usage

$ generate-contract-interface < MyContract.sol

It does support inheritance, although it currently only works if you are doing one contract per file. You may specify a root directory for imports if it is different from the current working directory:

$ generate-contract-interface --importRoot ./contracts < MyContract.sol

MyContract.sol:

import './B.sol';

contract A is B {
  function a() {
  }
}

B.sol:

contract B {
  function b() {
  }
}

Output:

contract IA {
  function b();
  function a();
}

API Usage

const generateInterface = require('generate-contract-interface')

const src = `contract MyContract {
  function foo(uint a) constant public returns(uint) {
    return 0;
  }

  function bar(uint a, uint b) {
  }
}`

console.log(generateInterface(src))

/* Output:

contract IMyContract {
  function foo(uint a) constant public returns(uint);
  function bar(uint a, uint b);
}
*/

Issues

Before reporting, please makes sure your source is parseable via solidity-parser.

Contributing Opportunities

The following are known issues and great opportunities to make an open source contribution:

  • Does not handle multiple contracts per file.
  • Duplicates methods shadowing inherited methods.
  • Does not output multiple levels of inheritance properly.

License

ISC © Raine Revere

About

Generates an abstract contract in Solidity from a given contract.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published