/* This file is part of solidity. solidity is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. solidity is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with solidity. If not, see <http://www.gnu.org/licenses/>. */ /** * @author Lefteris <lefteris@ethdev.com> * @date 2014 * Takes the parsed AST and produces the Natspec * documentation and the ABI interface * https://github.com/ethereum/wiki/wiki/Ethereum-Natural-Specification-Format * * Can generally deal with JSON files */ #pragma once #include <string> #include <memory> #include <json/json.h> namespace dev { namespace solidity { // Forward declarations class ContractDefinition; struct DocTag; enum class DocumentationType: uint8_t; enum class DocTagType: uint8_t { None = 0, Dev, Notice, Param, Return, Author, Title }; enum class CommentOwner { Contract, Function }; class InterfaceHandler { public: /// Get the given type of documentation /// @param _contractDef The contract definition /// @param _type The type of the documentation. Can be one of the /// types provided by @c DocumentationType /// @return A JSON representation of provided type static Json::Value documentation( ContractDefinition const& _contractDef, DocumentationType _type ); /// Get the ABI Interface of the contract /// @param _contractDef The contract definition /// @return A JSONrepresentation of the contract's ABI Interface static Json::Value abiInterface(ContractDefinition const& _contractDef); /// Get the User documentation of the contract /// @param _contractDef The contract definition /// @return A JSON representation of the contract's user documentation static Json::Value userDocumentation(ContractDefinition const& _contractDef); /// Genereates the Developer's documentation of the contract /// @param _contractDef The contract definition /// @return A JSON representation /// of the contract's developer documentation static Json::Value devDocumentation(ContractDefinition const& _contractDef); private: /// @returns concatenation of all content under the given tag name. static std::string extractDoc(std::multimap<std::string, DocTag> const& _tags, std::string const& _name); }; } //solidity NS } // dev NS devel/electron4/files/node-fetch-2.6.1'>dependabot/npm_and_yarn/devel/electron4/files/node-fetch-2.6.1</option> <option value='dependabot/npm_and_yarn/devel/electron4/files/serve-10.1.2'>dependabot/npm_and_yarn/devel/electron4/files/serve-10.1.2</option> <option value='dependabot/npm_and_yarn/devel/electron4/files/y18n-3.2.2'>dependabot/npm_and_yarn/devel/electron4/files/y18n-3.2.2</option> <option value='dependabot/npm_and_yarn/devel/electron6/files/elliptic-6.5.3'>dependabot/npm_and_yarn/devel/electron6/files/elliptic-6.5.3</option> <option value='dependabot/npm_and_yarn/devel/electron6/files/elliptic-6.5.4'>dependabot/npm_and_yarn/devel/electron6/files/elliptic-6.5.4</option> <option value='dependabot/npm_and_yarn/devel/electron6/files/ini-1.3.8'>dependabot/npm_and_yarn/devel/electron6/files/ini-1.3.8</option> <option value='dependabot/npm_and_yarn/devel/electron6/files/lodash-4.17.19'>dependabot/npm_and_yarn/devel/electron6/files/lodash-4.17.19</option> <option value='dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2' selected='selected'>dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2</option> <option value='dependabot/npm_and_yarn/devel/electron6/files/node-fetch-2.6.1'>dependabot/npm_and_yarn/devel/electron6/files/node-fetch-2.6.1</option> <option value='dependabot/npm_and_yarn/devel/electron6/files/serve-10.1.2'>dependabot/npm_and_yarn/devel/electron6/files/serve-10.1.2</option> <option value='gnome-3.22'>gnome-3.22</option> <option value='gnome-3.24'>gnome-3.24</option> <option value='gnome-3.26'>gnome-3.26</option> <option value='gnome-3.28'>gnome-3.28</option> <option value='gnome-3.32'>gnome-3.32</option> <option value='gnome-3.36'>gnome-3.36</option> <option value='gstreamer'>gstreamer</option> <option value='gstreamer-1.16'>gstreamer-1.16</option> <option value='gstreamer0.10-removal'>gstreamer0.10-removal</option> <option value='main'>main</option> <option value='master'>master</option> <option value='mate-1.16'>mate-1.16</option> <option value='mate-1.18'>mate-1.18</option> <option value='mate-1.20'>mate-1.20</option> <option value='mate-1.22'>mate-1.22</option> </select> <input type='submit' value='switch'/></form></td></tr> <tr><td class='sub'>FreeBSD GNOME current development ports (https://github.com/freebsd/freebsd-ports-gnome)</td><td class='sub right'></td></tr></table> <table class='tabs'><tr><td> <a href='/~lantw44/cgit/freebsd-ports-gnome/about/?h=dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2'>about</a><a href='/~lantw44/cgit/freebsd-ports-gnome/?h=dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2'>summary</a><a href='/~lantw44/cgit/freebsd-ports-gnome/refs/?h=dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2&id=84fe854d95bcfff04b1f473220f8fe354cf9ac6d'>refs</a><a class='active' href='/~lantw44/cgit/freebsd-ports-gnome/log/lang/scm?h=dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2'>log</a><a href='/~lantw44/cgit/freebsd-ports-gnome/tree/lang/scm?h=dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2&id=84fe854d95bcfff04b1f473220f8fe354cf9ac6d'>tree</a><a href='/~lantw44/cgit/freebsd-ports-gnome/commit/lang/scm?h=dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2&id=84fe854d95bcfff04b1f473220f8fe354cf9ac6d'>commit</a><a href='/~lantw44/cgit/freebsd-ports-gnome/diff/lang/scm?h=dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2&id=84fe854d95bcfff04b1f473220f8fe354cf9ac6d'>diff</a><a href='/~lantw44/cgit/freebsd-ports-gnome/stats/lang/scm?h=dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2'>stats</a></td><td class='form'><form class='right' method='get' action='/~lantw44/cgit/freebsd-ports-gnome/log/lang/scm'> <input type='hidden' name='h' value='dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2'/><input type='hidden' name='id' value='84fe854d95bcfff04b1f473220f8fe354cf9ac6d'/><select name='qt'> <option value='grep'>log msg</option> <option value='author'>author</option> <option value='committer'>committer</option> <option value='range'>range</option> </select> <input class='txt' type='search' size='10' name='q' value=''/> <input type='submit' value='search'/> </form> </td></tr></table> <div class='path'>path: <a href='/~lantw44/cgit/freebsd-ports-gnome/log/?h=dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2&id=84fe854d95bcfff04b1f473220f8fe354cf9ac6d'>root</a>/<a href='/~lantw44/cgit/freebsd-ports-gnome/log/lang?h=dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2&id=84fe854d95bcfff04b1f473220f8fe354cf9ac6d'>lang</a>/<a href='/~lantw44/cgit/freebsd-ports-gnome/log/lang/scm?h=dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2&id=84fe854d95bcfff04b1f473220f8fe354cf9ac6d'>scm</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th></th><th class='left'>Commit message (<a href='/~lantw44/cgit/freebsd-ports-gnome/log/lang/scm?h=dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2&id=84fe854d95bcfff04b1f473220f8fe354cf9ac6d&showmsg=1'>Expand</a>)</th><th class='left'>Author</th><th class='left'>Age</th><th class='left'>Files</th><th class='left'>Lines</th></tr>