35 std::cerr <<
"token: '" << token->
lexeme 37 <<
" line: " << token->
line + 1
38 <<
" pos: " << token->
start + 1 << std::endl;
42 #define COLOR(x, c) (color ? colorString(x, c) : String(x)) 53 *pOut <<
COLOR(
"PROGRAM",
RED) << std::endl <<
" " << program.
name << std::endl;
56 *pOut <<
COLOR(
"USAGE",
RED) << std::endl;
64 *pOut <<
COLOR(
"SEE ALSO",
RED) << std::endl;
65 *pOut <<
" " << program.
seeAlso << std::endl;
71 *pOut <<
COLOR(
"OPTIONS",
RED) << std::endl;
72 for (
size_t i = 0;
i < program.
sections.size(); ++
i)
78 *pOut <<
COLOR(
"EXAMPLES",
RED) << std::endl;
96 if (section.
name.length() > 0)
98 for (
size_t i = 0;
i < section.
params.size(); ++
i)
105 if (!requires.empty())
107 *pOut <<
" ( requires ";
108 for (
size_t i = 0;
i < requires.size(); ++
i)
109 *pOut << requires[
i] <<
" ";
119 *pOut <<
" OR" << std::endl;
128 *pOut <<
COLOR(param.
name.c_str(), pColor);
130 for (
size_t i = 0;
i < param.
aliases.size(); ++
i)
150 *pOut <<
" where <" << arg.
name <<
"> can be:" << std::endl;
154 for (
size_t k = 0;
k < arg.
subParams[
j]->arguments.size(); ++
k)
159 printRequiresList(arg.
subParams[
j]->requires);
172 *pOut <<
"<" << argument.
name;
180 for (
size_t i = 0;
i < comments.
size(); ++
i)
182 *pOut <<
" " << comments.
comments[
i] << std::endl;
190 dir.append(
"/applications/scripts/program_gui/program_gui.py");
191 output = popen(dir.c_str(),
"w");
203 size_t numberOfComments = 0;
208 fprintf(output,
"%d\n", (
int)numberOfComments);
209 if (numberOfComments > 0)
216 for (
size_t i = 0;
i < program.
sections.size(); ++
i)
225 if (section.
name ==
" Common options ")
229 fprintf(output,
"section = self.addSection('%s');\n", section.
name.c_str());
230 bool first_group =
true;
231 for (
size_t i = 0;
i < section.
params.size(); ++
i)
233 if (section.
params[
i]->visible <= v)
235 if (!section.
params[
i]->orBefore)
237 const char * single = (
i < section.
params.size()-1 && section.
params[
i+1]->orBefore) ?
"False" :
"True";
240 fprintf(output,
"section.addGroup(group);\n");
243 fprintf(output,
"group = ParamsGroup(section, %s);\n", single);
251 fprintf(output,
"section.addGroup(group);\n");
263 fprintf(output,
"param = ParamWidget(group, \"%s\");\n", param.
name.c_str());
265 fprintf(output,
"param.notOptional = True; \n");
275 fprintf(output,
"param.endWithOptions();\n");
282 static String paramStr =
"param";
283 fprintf(output,
"%s.addOption(\"%s\", \"%s\", %d);\n",
290 fprintf(output,
"subparam = param.addSubParam(\"%s\");\n",
292 for (
size_t i = 0;
i < argument.
subParams[
j]->comments.size(); ++
i)
293 fprintf(output,
"subparam.addCommentLine('''%s''');\n", argument.
subParams[
j]->comments.comments[
i].c_str());
294 paramStr =
"subparam";
295 for (
size_t k = 0;
k < argument.
subParams[
j]->arguments.size(); ++
k)
314 *pOut <<
"%TOC%" << std::endl;
318 *pOut <<
"---++ Usage" << std::endl;
327 *pOut << std::endl <<
"*See also* %BR%" << std::endl;
330 for (
size_t i = 0;
i < links.size(); ++
i)
331 *pOut <<
"[[" << links[
i] <<
"_v" <<
XMIPP_MAJOR <<
"][" << links[
i] <<
"]] ";
332 *pOut <<
"%BR%" << std::endl;
337 *pOut << std::endl <<
"*Parameters*" << std::endl;
338 for (
size_t i = 0;
i < program.
sections.size(); ++
i)
344 *pOut <<
"---++ Examples and notes" << std::endl;
345 bool verbatim =
false;
352 *pOut <<
"<pre>" << std::endl;
360 *pOut <<
"</pre>" << std::endl;
367 *pOut <<
"</pre>" << std::endl;
370 *pOut <<
"---++ User's comments" << std::endl;
371 *pOut <<
"%COMMENT{type=\"tableappend\"}%" << std::endl;
376 if (section.
name !=
" Common options " 382 if (name.length() > 0)
383 *pOut <<
"_" << name <<
"_" << std::endl;
384 for (
size_t i = 0;
i < section.
params.size(); ++
i)
391 if (!requires.empty())
393 *pOut <<
" ( requires ";
394 for (
size_t i = 0;
i < requires.size(); ++
i)
395 *pOut << requires[
i] <<
" ";
413 *pOut <<
" =%" << color <<
"%" << param.
name;
415 for (
size_t i = 0;
i < param.
aliases.size(); ++
i)
423 *pOut <<
" %ENDCOLOR%=";
429 *pOut <<
"%BR%" << std::endl;
436 *pOut <<
" where <" << arg.
name <<
"> can be:" << std::endl;
439 *pOut <<
" * %MAROON% " << arg.
subParams[
j]->name;
440 for (
size_t k = 0;
k < arg.
subParams[
j]->arguments.size(); ++
k)
445 *pOut <<
" %ENDCOLOR%" << std::endl;
446 printRequiresList(arg.
subParams[
j]->requires);
459 *pOut <<
"<" << argument.
name;
468 for (
size_t i = 0;
i < comments.
size(); ++
i)
471 *pOut <<
"%BR%" << std::endl;
478 for (
size_t i = 0;
i <
n; ++
i)
479 if (argName.find(list[
i]) != String::npos)
486 const char* list[3] =
487 {
"file",
"metadata",
"selfile" 498 output = fopen(scriptfile,
"a");
512 const char * progStr = program.
name.c_str();
513 fprintf(output,
"_%s()\n", progStr);
515 fprintf(output,
"local cur prev opts base \n");
516 fprintf(output,
"COMPREPLY=() \n");
517 fprintf(output,
"cur=\"${COMP_WORDS[COMP_CWORD]}\" \n");
518 fprintf(output,
"prev=\"${COMP_WORDS[COMP_CWORD-1]}\" \n");
520 StringVector::const_iterator
iter;
521 std::vector<SectionDef*>::const_iterator siter;
522 std::vector<ParamDef*>::const_iterator piter;
525 fprintf(output,
"# Autocomplete options: \n");
526 fprintf(output,
"case \"${prev}\" in\n");
528 for (siter = program.
sections.begin(); siter != program.
sections.end(); siter++)
533 for (piter = section.
params.begin(); piter != section.
params.end(); ++piter)
536 opts += param.
name +
" ";
537 for (iter = param.
aliases.begin(); iter != param.
aliases.end(); iter++)
544 fprintf(output,
" *)\n ;;\nesac\n");
546 fprintf(output,
"# Options: \n");
547 fprintf(output,
"opts=\"%s\" \n", opts.c_str());
549 fprintf(output,
"COMPREPLY=($(compgen -W \"${opts}\" -- ${cur}))\n");
550 fprintf(output,
"return 0 \n");
553 fprintf(output,
"complete -o bashdefault -o default -o filenames -F _%s %s \n",
564 StringVector::const_iterator
iter;
566 for (iter = param.
aliases.begin(); iter != param.
aliases.end(); iter++)
567 caseStr +=
" | " + *iter;
568 fprintf(output,
" %s)\n", caseStr.c_str());
578 fprintf(output,
" local where_opts=\"%s\"\n", where_opts.c_str());
579 fprintf(output,
" COMPREPLY=( $(compgen -W \"${where_opts}\" -- ${cur}) )\n");
580 fprintf(output,
" return 0\n");
583 fprintf(output,
" return 0\n");
586 fprintf(output,
" COMPREPLY=()\n");
virtual void printArgument(const ArgumentDef &argument, int v=0)
ArgTokenType type
Type of the token.
virtual void printParam(const ParamDef ¶m, int v=0)
virtual void printSection(const SectionDef §ion, int v=0)
virtual void printCommentList(const CommentList &comments, int v=0)
#define REPORT_ERROR(nerr, ErrormMsg)
virtual void printToken(ArgToken *token)
void trim(std::string &s)
bool matchArgInList(const String &argName, size_t n, const char **list)
virtual void printArgument(const ArgumentDef &argument, int v=0)
virtual void printCommentList(const CommentList &comments, int v=0)=0
bool isArgFile(const String &argName)
Input/Output general error.
virtual void printParam(const ParamDef ¶m, int v=0)
std::vector< SectionDef * > sections
void printRequiresList(StringVector requires)
static const char * typeString(ArgTokenType type)
virtual void printParam(const ParamDef ¶m, int v=0)
std::vector< String > StringVector
void printRequiresList(StringVector requires)
ql0001_ & k(htemp+1),(cvec+1),(atemp+1),(bj+1),(bl+1),(bu+1),(x+1),(clamda+1), &iout, infoqp, &zero,(w+1), &lenw,(iw+1), &leniw, &glob_grd.epsmac
WikiPrinter(std::ostream &out=std::cout)
virtual void printArgument(const ArgumentDef &argument, int v=0)
int splitString(const String &input, const String &delimiter, StringVector &results, bool includeEmpties)
std::vector< ParamDef * > subParams
virtual void printArgument(const ArgumentDef &argument, int v=0)
virtual void printCommentList(const CommentList &comments, int v=0)
std::vector< ArgumentDef * > arguments
virtual void printCommentList(const CommentList &comments, int v=0)
virtual void printProgram(const ProgramDef &program, int v=0)
virtual void printSection(const SectionDef §ion, int v=0)
struct _parameter * param
AutocompletePrinter(const char *scriptfile, bool programGui=false)
std::vector< ParamDef * > params
All params defined for the program.
virtual void printSection(const SectionDef §ion, int v=0)=0
CommentList examples
examples of use
CommentList usageComments
comments of usage
virtual void printParam(const ParamDef ¶m, int v=0)=0
virtual void printArgument(const ArgumentDef &argument, int v=0)=0
int line
line where token was found
virtual void printProgram(const ProgramDef &program, int v=0)
virtual void printParam(const ParamDef ¶m, int v=0)
fprintf(glob_prnt.io, "\)
ConsolePrinter(std::ostream &out=std::cout, bool color=true)
virtual ~AutocompletePrinter()
virtual void printSection(const SectionDef §ion, int v=0)
virtual void printSection(const SectionDef §ion, int v=0)
String lexeme
the string literal value of the token
virtual void printProgram(const ProgramDef &program, int v=0)
virtual void printProgram(const ProgramDef &program, int v=0)