return *rootNode;
}
+namespace {
+ void dodump(std::ostream & output, unsigned level, senf::console::DirectoryNode & node)
+ {
+ std::string pad (2*level, ' ');
+ senf::console::DirectoryNode::child_iterator i (node.children().begin());
+ senf::console::DirectoryNode::child_iterator const i_end (node.children().end());
+ for (; i != i_end; ++i) {
+ output << pad << i->first;
+ if (i->second->isDirectory()) {
+ output << "/\n";
+ dodump(output, level+1,static_cast<senf::console::DirectoryNode&>(*i->second));
+ }
+ else if (i->second->isLink())
+ output << "@ -> " << i->second->followLink().path() << '\n';
+ else
+ output << '\n';
+ }
+ }
+}
+
+prefix_ void senf::console::dump(std::ostream & os, DirectoryNode & dir)
+{
+ dodump(os,0,dir);
+}
+
///////////////////////////////////////////////////////////////////////////
// senf::console::GenericNode
prefix_ void senf::console::LinkNode::v_help(std::ostream & os)
const
{
- os << "link to ";
follow().help(os);
}
+prefix_ std::string senf::console::LinkNode::v_shorthelp()
+ const
+{
+ return follow().shorthelp();
+}
+
///////////////////////////////////////////////////////////////////////////
//senf::console::DirectoryNode
output << doc_ << "\n";
}
+prefix_ std::string senf::console::DirectoryNode::v_shorthelp()
+ const
+{
+ if (! shortdoc_.empty())
+ return shortdoc_;
+ return doc_.substr(0,doc_.find('\n'));
+}
+
///////////////////////////////////////////////////////////////////////////
// senf::console::detail::NodeTraverser
+#ifndef DOXYGEN
prefix_ void senf::console::detail::NodeTraverser::operator()(std::string const & name)
{
else
return * dir_;
}
+#endif
///////////////////////////////////////////////////////////////////////////
// senf::console::SimpleCommandNode
output << doc_ << "\n";
}
+prefix_ std::string senf::console::SimpleCommandNode::v_shorthelp()
+ const
+{
+ if (! shortdoc_.empty())
+ return shortdoc_;
+ return doc_.substr(0,doc_.find('\n'));
+}
+
prefix_ void senf::console::SimpleCommandNode::v_execute(boost::any & rv, std::ostream & os,
ParseCommandInfo const & command)
const