1 line
54 KiB
JSON
1 line
54 KiB
JSON
{"repository_name":"CliGenerator","body":"# CliGenerator\n \nThis is a crystal project to manage setting up OptionParser objects based around \"Command\" objects and arguments you define inside them.\n\n## Installation\n\n1. Add the dependency to your `shard.yml`:\n\n ```yaml\n dependencies:\n cligen:\n git: https://git.arcanium.tech/tristan/cligen\n ```\n\n2. Run `shards install`\n\n\n## Usage\n```crystal\nrequire \"cligen\"\n```\n\n## Contributors\n\n- [Tristan Ancelet](https://git.arcanium.tech/tristan) - creator and maintainer\n","program":{"html_id":"CliGenerator/toplevel","path":"toplevel.html","kind":"module","full_name":"Top Level Namespace","name":"Top Level Namespace","abstract":false,"locations":[],"repository_name":"CliGenerator","program":true,"enum":false,"alias":false,"const":false,"types":[{"html_id":"CliGenerator/CliGen","path":"CliGen.html","kind":"module","full_name":"CliGen","name":"CliGen","abstract":false,"locations":[{"filename":"src/cligen.cr","line_number":10,"url":null},{"filename":"src/cligen/annotations.cr","line_number":1,"url":null},{"filename":"src/cligen/app.cr","line_number":5,"url":null},{"filename":"src/cligen/arg.cr","line_number":1,"url":null},{"filename":"src/cligen/command.cr","line_number":10,"url":null},{"filename":"src/cligen/command/argument.cr","line_number":1,"url":null},{"filename":"src/cligen/command/selection.cr","line_number":1,"url":null},{"filename":"src/cligen/command/subcommand.cr","line_number":1,"url":null},{"filename":"src/cligen/command/trigger.cr","line_number":1,"url":null},{"filename":"src/cligen/command_node.cr","line_number":4,"url":null},{"filename":"src/cligen/flag.cr","line_number":3,"url":null},{"filename":"src/cligen/generate.cr","line_number":2,"url":null},{"filename":"src/cligen/match_type.cr","line_number":1,"url":null}],"repository_name":"CliGenerator","program":false,"enum":false,"alias":false,"const":false,"constants":[{"id":"ADDITIONAL_DEFAULT_FLAGS","name":"ADDITIONAL_DEFAULT_FLAGS","value":"[] of AdditionalDefaultFlag"},{"id":"APPNAME","name":"APPNAME","value":"File.basename(PROGRAM_NAME)"},{"id":"VERSION","name":"VERSION","value":"\"0.1.0\""}],"class_methods":[{"html_id":"add_default_flag(short:String=\"\",long:String=\"\",description:String=\"\",&work:String->)-class-method","name":"add_default_flag","abstract":false,"args":[{"name":"short","default_value":"\"\"","external_name":"short","restriction":"String"},{"name":"long","default_value":"\"\"","external_name":"long","restriction":"String"},{"name":"description","default_value":"\"\"","external_name":"description","restriction":"String"}],"args_string":"(short : String = \"\", long : String = \"\", description : String = \"\", &work : String -> )","args_html":"(short : String = <span class=\"s\">""</span>, long : String = <span class=\"s\">""</span>, description : String = <span class=\"s\">""</span>, &work : String -> )","location":{"filename":"src/cligen.cr","line_number":23,"url":null},"def":{"name":"add_default_flag","args":[{"name":"short","default_value":"\"\"","external_name":"short","restriction":"String"},{"name":"long","default_value":"\"\"","external_name":"long","restriction":"String"},{"name":"description","default_value":"\"\"","external_name":"description","restriction":"String"}],"yields":1,"block_arity":1,"block_arg":{"name":"work","external_name":"work","restriction":"(String ->)"},"visibility":"Public","body":"if description.empty?\n raise(\"ERROR : add_default_flag : You must provide a description\")\nend\nADDITIONAL_DEFAULT_FLAGS << AdditionalDefaultFlag.new(short: short, long: long, description: description, work: work)\n"},"external_var":false}],"types":[{"html_id":"CliGenerator/CliGen/AdditionalDefaultFlag","path":"CliGen/AdditionalDefaultFlag.html","kind":"struct","full_name":"CliGen::AdditionalDefaultFlag","name":"AdditionalDefaultFlag","abstract":false,"superclass":{"html_id":"CliGenerator/Struct","kind":"struct","full_name":"Struct","name":"Struct"},"ancestors":[{"html_id":"CliGenerator/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"CliGenerator/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"CliGenerator/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/cligen.cr","line_number":15,"url":null}],"repository_name":"CliGenerator","program":false,"enum":false,"alias":false,"const":false,"namespace":{"html_id":"CliGenerator/CliGen","kind":"module","full_name":"CliGen","name":"CliGen"},"constructors":[{"html_id":"new(short:String,long:String,description:String,work:String->)-class-method","name":"new","abstract":false,"args":[{"name":"short","external_name":"short","restriction":"String"},{"name":"long","external_name":"long","restriction":"String"},{"name":"description","external_name":"description","restriction":"String"},{"name":"work","external_name":"work","restriction":"(String ->)"}],"args_string":"(short : String, long : String, description : String, work : String -> )","args_html":"(short : String, long : String, description : String, work : String -> )","location":{"filename":"src/cligen.cr","line_number":15,"url":null},"def":{"name":"new","args":[{"name":"short","external_name":"short","restriction":"String"},{"name":"long","external_name":"long","restriction":"String"},{"name":"description","external_name":"description","restriction":"String"},{"name":"work","external_name":"work","restriction":"(String ->)"}],"visibility":"Public","body":"_ = allocate\n_.initialize(short, long, description, work)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"},"external_var":false}],"instance_methods":[{"html_id":"clone-instance-method","name":"clone","abstract":false,"location":{"filename":"src/cligen.cr","line_number":15,"url":null},"def":{"name":"clone","visibility":"Public","body":"self.class.new(@short.clone, @long.clone, @description.clone, @work.clone)"},"external_var":false},{"html_id":"copy_with(short_short=@short,long_long=@long,description_description=@description,work_work=@work)-instance-method","name":"copy_with","abstract":false,"args":[{"name":"_short","default_value":"@short","external_name":"short","restriction":""},{"name":"_long","default_value":"@long","external_name":"long","restriction":""},{"name":"_description","default_value":"@description","external_name":"description","restriction":""},{"name":"_work","default_value":"@work","external_name":"work","restriction":""}],"args_string":"(short _short = @short, long _long = @long, description _description = @description, work _work = @work)","args_html":"(short _short = @short, long _long = @long, description _description = @description, work _work = @work)","location":{"filename":"src/cligen.cr","line_number":15,"url":null},"def":{"name":"copy_with","args":[{"name":"_short","default_value":"@short","external_name":"short","restriction":""},{"name":"_long","default_value":"@long","external_name":"long","restriction":""},{"name":"_description","default_value":"@description","external_name":"description","restriction":""},{"name":"_work","default_value":"@work","external_name":"work","restriction":""}],"visibility":"Public","body":"self.class.new(_short, _long, _description, _work)"},"external_var":false},{"html_id":"description:String-instance-method","name":"description","abstract":false,"def":{"name":"description","return_type":"String","visibility":"Public","body":"@description"},"external_var":false},{"html_id":"long:String-instance-method","name":"long","abstract":false,"def":{"name":"long","return_type":"String","visibility":"Public","body":"@long"},"external_var":false},{"html_id":"short:String-instance-method","name":"short","abstract":false,"def":{"name":"short","return_type":"String","visibility":"Public","body":"@short"},"external_var":false},{"html_id":"work:String->-instance-method","name":"work","abstract":false,"def":{"name":"work","return_type":"(String ->)","visibility":"Public","body":"@work"},"external_var":false}]},{"html_id":"CliGenerator/CliGen/App","path":"CliGen/App.html","kind":"class","full_name":"CliGen::App","name":"App","abstract":false,"superclass":{"html_id":"CliGenerator/CliGen/CommandNode","kind":"class","full_name":"CliGen::CommandNode","name":"CommandNode"},"ancestors":[{"html_id":"CliGenerator/CliGen/CommandNode","kind":"class","full_name":"CliGen::CommandNode","name":"CommandNode"},{"html_id":"CliGenerator/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"CliGenerator/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/cligen/app.cr","line_number":8,"url":null}],"repository_name":"CliGenerator","program":false,"enum":false,"alias":false,"const":false,"namespace":{"html_id":"CliGenerator/CliGen","kind":"module","full_name":"CliGen","name":"CliGen"},"doc":"This serves as the default App object, that holds a copy of all flags & \nhandles flag processing until it hands off to the user defined commands","summary":"<p>This serves as the default App object, that holds a copy of all flags & handles flag processing until it hands off to the user defined commands</p>","class_methods":[{"html_id":"process(args:Array(String)=ARGV)-class-method","name":"process","doc":"Serves as a convinence method for the user to call to begin processing an\nargument array provided by the user.\n\nThis defaults to ARGV for convinence if no arguments are passed through","summary":"<p>Serves as a convinence method for the user to call to begin processing an argument array provided by the user.</p>","abstract":false,"args":[{"name":"args","default_value":"ARGV","external_name":"args","restriction":"Array(String)"}],"args_string":"(args : Array(String) = ARGV)","args_html":"(args : Array(String) = <span class=\"t\">ARGV</span>)","location":{"filename":"src/cligen/app.cr","line_number":28,"url":null},"def":{"name":"process","args":[{"name":"args","default_value":"ARGV","external_name":"args","restriction":"Array(String)"}],"visibility":"Public","body":"if @@instance.nil?\n raise(\"ERROR : CliGen::App.process was called before an instance of App was defined\")\nend\n@@instance.process(args)\n"},"external_var":false}],"constructors":[{"html_id":"new(name,flags,commands,pre_run_commands,post_run_commands)-class-method","name":"new","abstract":false,"args":[{"name":"name","external_name":"name","restriction":""},{"name":"flags","external_name":"flags","restriction":""},{"name":"commands","external_name":"commands","restriction":""},{"name":"pre_run_commands","external_name":"pre_run_commands","restriction":""},{"name":"post_run_commands","external_name":"post_run_commands","restriction":""}],"args_string":"(name, flags, commands, pre_run_commands, post_run_commands)","args_html":"(name, flags, commands, pre_run_commands, post_run_commands)","location":{"filename":"src/cligen/app.cr","line_number":12,"url":null},"def":{"name":"new","args":[{"name":"name","external_name":"name","restriction":""},{"name":"flags","external_name":"flags","restriction":""},{"name":"commands","external_name":"commands","restriction":""},{"name":"pre_run_commands","external_name":"pre_run_commands","restriction":""},{"name":"post_run_commands","external_name":"post_run_commands","restriction":""}],"visibility":"Public","body":"_ = allocate\n_.initialize(name, flags, commands, pre_run_commands, post_run_commands)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"},"external_var":false}],"instance_methods":[{"html_id":"check!-instance-method","name":"check!","abstract":false,"location":{"filename":"src/cligen/app.cr","line_number":16,"url":null},"def":{"name":"check!","visibility":"Public","body":"CliGen::GLOBAL_FLAGS.each(&.check!)\n\n\ncheck_for_duplicates!([CliGen::GLOBAL_FLAGS, @flags].flatten)\n@commands.each(&.check!)\n"},"external_var":false}]},{"html_id":"CliGenerator/CliGen/Arg","path":"CliGen/Arg.html","kind":"class","full_name":"CliGen::Arg","name":"Arg","abstract":false,"superclass":{"html_id":"CliGenerator/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"CliGenerator/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"CliGenerator/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/cligen/arg.cr","line_number":15,"url":null}],"repository_name":"CliGenerator","program":false,"enum":false,"alias":false,"const":false,"namespace":{"html_id":"CliGenerator/CliGen","kind":"module","full_name":"CliGen","name":"CliGen"},"doc":"This class serves as a \"argument wrapper\" to force a fail-fast approach to\narg-parsing. \n\nIt wraps around the argument + index of the argument to do state tracking\nand ensure that each argument is only processed once (plus allows for\neasier filtering of processed arguments to avoid having to do index math)\n\n args.reject(&.processed?) # returns the args that haven't been processed yet\n\nIt expects each argument to only be processed once and will force a raise\nif the argument has Arg#processed called a second time. This is to force \nthe developer (me) to fix any processing issues during the development of\nthis framework.","summary":"<p>This class serves as a "argument wrapper" to force a fail-fast approach to arg-parsing.</p>","constructors":[{"html_id":"new(value:String,index:Int32)-class-method","name":"new","abstract":false,"args":[{"name":"value","external_name":"value","restriction":"::String"},{"name":"index","external_name":"index","restriction":"::Int32"}],"args_string":"(value : String, index : Int32)","args_html":"(value : String, index : Int32)","location":{"filename":"src/cligen/arg.cr","line_number":24,"url":null},"def":{"name":"new","args":[{"name":"value","external_name":"value","restriction":"::String"},{"name":"index","external_name":"index","restriction":"::Int32"}],"visibility":"Public","body":"_ = allocate\n_.initialize(value, index)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"},"external_var":false}],"instance_methods":[{"html_id":"index:Int32-instance-method","name":"index","doc":"The index of the argument in the array it was in","summary":"<p>The index of the argument in the array it was in</p>","abstract":false,"location":{"filename":"src/cligen/arg.cr","line_number":20,"url":null},"def":{"name":"index","return_type":"Int32","visibility":"Public","body":"@index"},"external_var":false},{"html_id":"processed-instance-method","name":"processed","doc":"This serves as a trigger that tells the object that it has been processed\n\nThis will raise an exception if it is re-called after already having been\nprocessed.","summary":"<p>This serves as a trigger that tells the object that it has been processed</p>","abstract":false,"location":{"filename":"src/cligen/arg.cr","line_number":31,"url":null},"def":{"name":"processed","visibility":"Public","body":"if @processed\n raise(\"ERROR : CliGen::Arg(index: #{@index}, value: #{@value})#processed : This arg was re-processed\")\nend\n@processed = true\n"},"external_var":false},{"html_id":"processed?:Bool-instance-method","name":"processed?","doc":"The \"flag\"/variable that tracks is the Arg has been processed yet","summary":"<p>The "flag"/variable that tracks is the Arg has been processed yet</p>","abstract":false,"location":{"filename":"src/cligen/arg.cr","line_number":22,"url":null},"def":{"name":"processed?","return_type":"Bool","visibility":"Public","body":"@processed"},"external_var":false},{"html_id":"value:String-instance-method","name":"value","doc":"The raw string argument provided from the user","summary":"<p>The raw string argument provided from the user</p>","abstract":false,"location":{"filename":"src/cligen/arg.cr","line_number":18,"url":null},"def":{"name":"value","return_type":"String","visibility":"Public","body":"@value"},"external_var":false}]},{"html_id":"CliGenerator/CliGen/Argument","path":"CliGen/Argument.html","kind":"annotation","full_name":"CliGen::Argument","name":"Argument","abstract":false,"locations":[{"filename":"src/cligen/annotations.cr","line_number":8,"url":null}],"repository_name":"CliGenerator","program":false,"enum":false,"alias":false,"const":false,"namespace":{"html_id":"CliGenerator/CliGen","kind":"module","full_name":"CliGen","name":"CliGen"}},{"html_id":"CliGenerator/CliGen/BaseFlag","path":"CliGen/BaseFlag.html","kind":"class","full_name":"CliGen::BaseFlag","name":"BaseFlag","abstract":true,"superclass":{"html_id":"CliGenerator/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"CliGenerator/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"CliGenerator/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/cligen/flag.cr","line_number":4,"url":null}],"repository_name":"CliGenerator","program":false,"enum":false,"alias":false,"const":false,"subclasses":[{"html_id":"CliGenerator/CliGen/Flag","kind":"class","full_name":"CliGen::Flag(T)","name":"Flag"}],"namespace":{"html_id":"CliGenerator/CliGen","kind":"module","full_name":"CliGen","name":"CliGen"},"constructors":[{"html_id":"new(var:String,short:String|Nil,long:String|Nil,env_var:String|Nil,description:String)-class-method","name":"new","abstract":false,"args":[{"name":"var","external_name":"var","restriction":"String"},{"name":"short","external_name":"short","restriction":"String | ::Nil"},{"name":"long","external_name":"long","restriction":"String | ::Nil"},{"name":"env_var","external_name":"env_var","restriction":"String | ::Nil"},{"name":"description","external_name":"description","restriction":"String"}],"args_string":"(var : String, short : String | Nil, long : String | Nil, env_var : String | Nil, description : String)","args_html":"(var : String, short : String | Nil, long : String | Nil, env_var : String | Nil, description : String)","location":{"filename":"src/cligen/flag.cr","line_number":12,"url":null},"def":{"name":"new","args":[{"name":"var","external_name":"var","restriction":"String"},{"name":"short","external_name":"short","restriction":"String | ::Nil"},{"name":"long","external_name":"long","restriction":"String | ::Nil"},{"name":"env_var","external_name":"env_var","restriction":"String | ::Nil"},{"name":"description","external_name":"description","restriction":"String"}],"visibility":"Public","body":"_ = allocate\n_.initialize(var, short, long, env_var, description)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"},"external_var":false}],"instance_methods":[{"html_id":"description:String-instance-method","name":"description","abstract":false,"location":{"filename":"src/cligen/flag.cr","line_number":10,"url":null},"def":{"name":"description","return_type":"String","visibility":"Public","body":"@description"},"external_var":false},{"html_id":"env_var:String|Nil-instance-method","name":"env_var","abstract":false,"location":{"filename":"src/cligen/flag.cr","line_number":9,"url":null},"def":{"name":"env_var","return_type":"String | ::Nil","visibility":"Public","body":"@env_var"},"external_var":false},{"html_id":"long:String|Nil-instance-method","name":"long","abstract":false,"location":{"filename":"src/cligen/flag.cr","line_number":7,"url":null},"def":{"name":"long","return_type":"String | ::Nil","visibility":"Public","body":"@long"},"external_var":false},{"html_id":"long_key:String-instance-method","name":"long_key","abstract":false,"location":{"filename":"src/cligen/flag.cr","line_number":8,"url":null},"def":{"name":"long_key","return_type":"String","visibility":"Public","body":"@long_key"},"external_var":false},{"html_id":"matches?(token:String):Bool-instance-method","name":"matches?","abstract":false,"args":[{"name":"token","external_name":"token","restriction":"String"}],"args_string":"(token : String) : Bool","args_html":"(token : String) : Bool","location":{"filename":"src/cligen/flag.cr","line_number":22,"url":null},"def":{"name":"matches?","args":[{"name":"token","external_name":"token","restriction":"String"}],"return_type":"Bool","visibility":"Public","body":"(token == @short) || (!@long_key.empty? && (token == @long_key))"},"external_var":false},{"html_id":"raw_value:String|Nil-instance-method","name":"raw_value","abstract":true,"location":{"filename":"src/cligen/flag.cr","line_number":28,"url":null},"def":{"name":"raw_value","return_type":"String | ::Nil","visibility":"Public","body":""},"external_var":false},{"html_id":"satisfied?:Bool-instance-method","name":"satisfied?","abstract":true,"location":{"filename":"src/cligen/flag.cr","line_number":26,"url":null},"def":{"name":"satisfied?","return_type":"Bool","visibility":"Public","body":""},"external_var":false},{"html_id":"short:String|Nil-instance-method","name":"short","abstract":false,"location":{"filename":"src/cligen/flag.cr","line_number":6,"url":null},"def":{"name":"short","return_type":"String | ::Nil","visibility":"Public","body":"@short"},"external_var":false},{"html_id":"validate!:Nil-instance-method","name":"validate!","abstract":true,"location":{"filename":"src/cligen/flag.cr","line_number":27,"url":null},"def":{"name":"validate!","return_type":"Nil","visibility":"Public","body":""},"external_var":false},{"html_id":"var:String-instance-method","name":"var","abstract":false,"location":{"filename":"src/cligen/flag.cr","line_number":5,"url":null},"def":{"name":"var","return_type":"String","visibility":"Public","body":"@var"},"external_var":false}]},{"html_id":"CliGenerator/CliGen/Command","path":"CliGen/Command.html","kind":"class","full_name":"CliGen::Command","name":"Command","abstract":false,"superclass":{"html_id":"CliGenerator/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"CliGenerator/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"CliGenerator/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/cligen/command.cr","line_number":11,"url":null},{"filename":"src/cligen/command/argument.cr","line_number":2,"url":null},{"filename":"src/cligen/command/selection.cr","line_number":2,"url":null},{"filename":"src/cligen/command/subcommand.cr","line_number":2,"url":null},{"filename":"src/cligen/command/trigger.cr","line_number":2,"url":null}],"repository_name":"CliGenerator","program":false,"enum":false,"alias":false,"const":false,"namespace":{"html_id":"CliGenerator/CliGen","kind":"module","full_name":"CliGen","name":"CliGen"},"macros":[{"html_id":"argument(variable,short,long,description,validation=nil)-macro","name":"argument","abstract":false,"args":[{"name":"variable","external_name":"variable","restriction":""},{"name":"short","external_name":"short","restriction":""},{"name":"long","external_name":"long","restriction":""},{"name":"description","external_name":"description","restriction":""},{"name":"validation","default_value":"nil","external_name":"validation","restriction":""}],"args_string":"(variable, short, long, description, validation = nil)","args_html":"(variable, short, long, description, validation = <span class=\"n\">nil</span>)","location":{"filename":"src/cligen/command/argument.cr","line_number":3,"url":null},"def":{"name":"argument","args":[{"name":"variable","external_name":"variable","restriction":""},{"name":"short","external_name":"short","restriction":""},{"name":"long","external_name":"long","restriction":""},{"name":"description","external_name":"description","restriction":""},{"name":"validation","default_value":"nil","external_name":"validation","restriction":""}],"visibility":"Public","body":" \n{% unless variable.is_a?(TypeDeclaration)\n raise(\"ERROR : CliGen::Command.argument : First argument (#{variable}) must be a TypeDeclaration (ex: '<var> : <type> [= val]')\")\nend %}\n\n \n{% name = variable.name %}\n\n \n{% type = variable.type %}\n\n \n{% unless short.is_a?(StringLiteral) || (string == nil)\n raise(\"ERROR : CliGen::Command.argument(#{name}) : Provided short must be a string\")\nend %}\n\n \n{% unless long.is_a?(StringLiteral) || (long == nil)\n raise(\"ERROR : CliGen::Command.argument(#{name}) : Provided long must be a string\")\nend %}\n\n \n{% unless long || short\n raise(\"ERROR : CliGen::Command.argument(#{name}) : You must provide a short or long\")\nend %}\n\n \n{% unless description\n raise(\"ERROR : CliGen::Command.argument(#{name}) : You must provide a description\")\nend %}\n\n \n{% unless description.is_a?(StringLiteral)\n raise(\"ERROR : CliGen::Command.argument(#{name}) : Provided description must be a String\")\nend %}\n\n \n{% unless validation.nil? %}\n {% unless validation.is_a?(ProcLiteral)\n raise(\"ERROR : CliGen::Command.argument(#{name}) : Provided validation must be a Proc\")\nend %}\n {% unless validation.return_type == Bool\n raise(\"ERROR : CliGen::Command.argument(#{name}) : Provided validation return type must be a Bool\")\nend %}\n {% if validation.args.empty?\n raise(\"ERROR : CliGen::Command.argument(#{name}) : Provided validation provided validation must have an input variable\")\nend %}\n {% arg = validation.args.first %}\n {% unless arg.restriction == type %}\n {% example = \"->(#{arg.name} : #{type}) : #{type} { #{validation.body} }\" %}\n {% raise(\"ERROR : CliGen::Command.argument(#{name}) : Provided validation input value must be #{type}. EX: #{example}\") %}\n {% end %}\n {% end %}\n\n\n @[CliGen::Argument(short: \n{{ short }}\n, long: \n{{ long }}\n, description: \n{{ description }}\n, validation: \n{{ validation }}\n, on_match: \n{{ on_match }}\n)]\n @\n{{ variable }}\n\n\n def \n{{ variable.name }}\n= (value : \n{{ type }}\n)\n \n{% unless validation.nil? %}\n raise \"ERROR : #{@type.name}##{@def.name} : Provided value #{value} is not passing validation\" unless {{ validation }}.call(value)\n {% end %}\n\n @\n{{ name }}\n = value\n \nend\n \n"}},{"html_id":"selection(variable,short,long,description,options)-macro","name":"selection","abstract":false,"args":[{"name":"variable","external_name":"variable","restriction":""},{"name":"short","external_name":"short","restriction":""},{"name":"long","external_name":"long","restriction":""},{"name":"description","external_name":"description","restriction":""},{"name":"options","external_name":"options","restriction":""}],"args_string":"(variable, short, long, description, options)","args_html":"(variable, short, long, description, options)","location":{"filename":"src/cligen/command/selection.cr","line_number":3,"url":null},"def":{"name":"selection","args":[{"name":"variable","external_name":"variable","restriction":""},{"name":"short","external_name":"short","restriction":""},{"name":"long","external_name":"long","restriction":""},{"name":"description","external_name":"description","restriction":""},{"name":"options","external_name":"options","restriction":""}],"visibility":"Public","body":" \n{% unless variable.is_a?(TypeDeclaration)\n raise(\"ERROR : CliGen::Command.selection : First selection must be a TypeDeclaration (ex: '<var> : <type> [= val]')\")\nend %}\n\n \n{% unless short.is_a?(StringLiteral) || (string == nil)\n raise(\"ERROR : CliGen::Command.selection : Provided short must be a string\")\nend %}\n\n \n{% unless long.is_a?(StringLiteral) || (long == nil)\n raise(\"ERROR : CliGen::Command.selection : Provided long must be a string\")\nend %}\n\n \n{% unless long || short\n raise(\"ERROR : CliGen::Command.selection : You must provide a short or long\")\nend %}\n\n \n{% unless description\n raise(\"ERROR : CliGen::Command.selection : You must provide a description\")\nend %}\n\n \n{% unless description.is_a?(StringLiteral)\n raise(\"ERROR : CliGen::Command.selection : Provided description must be a String\")\nend %}\n\n \n{% unless options\n raise(\"ERROR : CliGen::Command.selection : You must provide options\")\nend %}\n\n \n{% unless options\n raise(\"ERROR : CliGen::Command.selection : Provided options must be \")\nend %}\n\n \n"}},{"html_id":"subcommand(func,description,examples=nil,&block)-macro","name":"subcommand","abstract":false,"args":[{"name":"func","external_name":"func","restriction":""},{"name":"description","external_name":"description","restriction":""},{"name":"examples","default_value":"nil","external_name":"examples","restriction":""}],"args_string":"(func, description, examples = nil, &block)","args_html":"(func, description, examples = <span class=\"n\">nil</span>, &block)","location":{"filename":"src/cligen/command/subcommand.cr","line_number":3,"url":null},"def":{"name":"subcommand","args":[{"name":"func","external_name":"func","restriction":""},{"name":"description","external_name":"description","restriction":""},{"name":"examples","default_value":"nil","external_name":"examples","restriction":""}],"block_arg":{"name":"block","external_name":"block","restriction":""},"visibility":"Public","body":" \n{% unless variable.is_a?(TypeDeclaration)\n raise(\"ERROR : CliGen::Command.subcommand : First argument must be a TypeDeclaration (ex: '<var> : <type>')\")\nend %}\n\n \n{% unless description\n raise(\"ERROR : CliGen::Command.subcommand : You must provide a description\")\nend %}\n\n \n{% unless description.is_a?(StringLiteral)\n raise(\"ERROR : CliGen::Command.subcommand : Provided description must be a String\")\nend %}\n\n \n{% unless examples.nil? %}\n {% if examples.is_a?(Path)\n examples = examples.resolve\nend %}\n {% unless examples.is_a?(ArrayLiteral)\n raise(\"ERROR : CliGen::Command.subcommand : Provided example must be an Array\")\nend %}\n {% end %}\n\n \n{% unless block\n raise(\"ERROR : CliGen::Command.subcommand : You MUST provide a function body\")\nend %}\n\n\n @[CliGen::SubCommand(description: \n{{ description }}\n, \nexamples: \n{{ examples }}\n)]\n def \n{{ func }}\n\n \n{{ block.body }}\n\n \nend\n \n"}},{"html_id":"trigger(short,long,argument=nil,&on_match)-macro","name":"trigger","abstract":false,"args":[{"name":"short","external_name":"short","restriction":""},{"name":"long","external_name":"long","restriction":""},{"name":"argument","default_value":"nil","external_name":"argument","restriction":""}],"args_string":"(short, long, argument = nil, &on_match)","args_html":"(short, long, argument = <span class=\"n\">nil</span>, &on_match)","location":{"filename":"src/cligen/command/trigger.cr","line_number":3,"url":null},"def":{"name":"trigger","args":[{"name":"short","external_name":"short","restriction":""},{"name":"long","external_name":"long","restriction":""},{"name":"argument","default_value":"nil","external_name":"argument","restriction":""}],"block_arg":{"name":"on_match","external_name":"on_match","restriction":""},"visibility":"Public","body":" \n{% unless short.is_a?(StringLiteral)\n raise(\"ERROR : CliGen::Command.trigger : Provided short must be a string\")\nend %}\n\n \n{% unless long.is_a?(StringLiteral)\n raise(\"ERROR : CliGen::Command.trigger : Provided long must be a string\")\nend %}\n\n \n{% unless on_match\n raise(\"ERROR : CliGen::Command.trigger : Must provide a block for on_match trigger\")\nend %}\n\n \n{% name = long.gsub(/--/, \"\") %}\n\n\n @[CliGen::Trigger(short: \n{{ short }}\n, long: \n{{ long }}\n, argument: \n{{ argument }}\n)]\n \n{% if argument %}\n def self.__cligen_trigger__{{ name }}__({{ name }} : {{ argument }}) : Nil\n {{ on_match.body }}\n end\n {% else %}\n def self.__cligen_trigger__{{ name }}__ : Nil\n {{ on_match.body }}\n end\n {% end %}\n\n \n"}}]},{"html_id":"CliGenerator/CliGen/CommandInfo","path":"CliGen/CommandInfo.html","kind":"annotation","full_name":"CliGen::CommandInfo","name":"CommandInfo","abstract":false,"locations":[{"filename":"src/cligen/annotations.cr","line_number":5,"url":null}],"repository_name":"CliGenerator","program":false,"enum":false,"alias":false,"const":false,"namespace":{"html_id":"CliGenerator/CliGen","kind":"module","full_name":"CliGen","name":"CliGen"}},{"html_id":"CliGenerator/CliGen/CommandNode","path":"CliGen/CommandNode.html","kind":"class","full_name":"CliGen::CommandNode","name":"CommandNode","abstract":false,"superclass":{"html_id":"CliGenerator/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"CliGenerator/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"CliGenerator/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/cligen/command_node.cr","line_number":5,"url":null}],"repository_name":"CliGenerator","program":false,"enum":false,"alias":false,"const":false,"subclasses":[{"html_id":"CliGenerator/CliGen/App","kind":"class","full_name":"CliGen::App","name":"App"}],"namespace":{"html_id":"CliGenerator/CliGen","kind":"module","full_name":"CliGen","name":"CliGen"},"constructors":[{"html_id":"new(name:String,flags:Array(CliGen::BaseFlag),commands:Array(CliGen::CommandNode),pre_run_commands:Array(_),post_run_commands:Array(_))-class-method","name":"new","abstract":false,"args":[{"name":"name","external_name":"name","restriction":"::String"},{"name":"flags","external_name":"flags","restriction":"::Array(::CliGen::BaseFlag)"},{"name":"commands","external_name":"commands","restriction":"::Array(::CliGen::CommandNode)"},{"name":"pre_run_commands","external_name":"pre_run_commands","restriction":"::Array(_)"},{"name":"post_run_commands","external_name":"post_run_commands","restriction":"::Array(_)"}],"args_string":"(name : String, flags : Array(CliGen::BaseFlag), commands : Array(CliGen::CommandNode), pre_run_commands : Array(_), post_run_commands : Array(_))","args_html":"(name : String, flags : Array(<a href=\"../CliGen/BaseFlag.html\">CliGen::BaseFlag</a>), commands : Array(<a href=\"../CliGen/CommandNode.html\">CliGen::CommandNode</a>), pre_run_commands : Array(_), post_run_commands : Array(_))","location":{"filename":"src/cligen/command_node.cr","line_number":12,"url":null},"def":{"name":"new","args":[{"name":"name","external_name":"name","restriction":"::String"},{"name":"flags","external_name":"flags","restriction":"::Array(::CliGen::BaseFlag)"},{"name":"commands","external_name":"commands","restriction":"::Array(::CliGen::CommandNode)"},{"name":"pre_run_commands","external_name":"pre_run_commands","restriction":"::Array(_)"},{"name":"post_run_commands","external_name":"post_run_commands","restriction":"::Array(_)"}],"visibility":"Public","body":"_ = allocate\n_.initialize(name, flags, commands, pre_run_commands, post_run_commands)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"},"external_var":false}],"instance_methods":[{"html_id":"check!-instance-method","name":"check!","abstract":false,"location":{"filename":"src/cligen/command_node.cr","line_number":49,"url":null},"def":{"name":"check!","visibility":"Public","body":"@flags.each(&.check!)\ncheck_for_duplicates!(@flags)\n@commands.each(&.check!)\n"},"external_var":false},{"html_id":"check_for_duplicates!(flags:Array(BaseFlag))-instance-method","name":"check_for_duplicates!","abstract":false,"args":[{"name":"flags","external_name":"flags","restriction":"Array(BaseFlag)"}],"args_string":"(flags : Array(BaseFlag))","args_html":"(flags : Array(<a href=\"../CliGen/BaseFlag.html\">BaseFlag</a>))","location":{"filename":"src/cligen/command_node.cr","line_number":15,"url":null},"def":{"name":"check_for_duplicates!","args":[{"name":"flags","external_name":"flags","restriction":"Array(BaseFlag)"}],"visibility":"Public","body":"shorts = flags.compact_map(&.short)\nshort_duplicates = [] of String\nlongs = flags.compact_map do |f| if f.long_key.empty?\nelse\n f.long_key\nend end\nlong_duplicates = [] of String\n\nlast_short : String = \"\"\nshorts.sort.each do |short|\n if last_short == short\n short_duplicates << short\n end\n last_short = short\nend\n\nlast_long : String = \"\"\nlongs.sort.each do |long|\n if last_long == long\n long_duplicates << long\n end\n last_long = long\nend\n\nif long_duplicates.empty? && short_duplicates.empty?\nelse\n error_buffer = \"ERROR : CommandNode(%s)#check! : Found Duplicates : %s\"\n\n message = \"\"\n if long_duplicates.empty?\n else\n message = message + (\"\\nLong:\\n%s\\n\" % (long_duplicates.map do |f| \"- #{f}\" end.join(\"\\n\")))\n end\n\n if short_duplicates.empty?\n else\n message = message + (\"\\nShort:\\n%s\" % (short_duplicates.map do |f| \"- #{f}\" end.join(\"\\n\")))\n end\n\n raise(error_buffer % [@name, message])\nend\n"},"external_var":false},{"html_id":"find_match(arg:String)-instance-method","name":"find_match","abstract":false,"args":[{"name":"arg","external_name":"arg","restriction":"String"}],"args_string":"(arg : String)","args_html":"(arg : String)","location":{"filename":"src/cligen/command_node.cr","line_number":55,"url":null},"def":{"name":"find_match","args":[{"name":"arg","external_name":"arg","restriction":"String"}],"visibility":"Public","body":"case arg\nwhen CliGen::Regex::FLAG_REGEX\n if flg = @flags.find(&.matches?(arg))\n flg\n else\n CliGen::MatchType::NoMatch\n end\nwhen CliGen::Regex::FLAG_WITH_ARG\n CliGen::MatchType::FlagWithArg\nwhen CliGen::Regex::SHORT_WITH_INLINE_ARG\n CliGen::MatchType::ShortWithInlineArg\nwhen CliGen::Regex::FLAG_MULTIPLE_SHORT\n CliGen::MatchType::FlagMultipleShort\nelse\n if cmd = @commands.find do |c| c.name == arg end\n cmd\n else\n CliGen::MatchType::NoMatch\n end\nend"},"external_var":false},{"html_id":"process(args:Array(String))-instance-method","name":"process","doc":"This serves to just convert the arguments into a usable Array(Arg) format\nand pass it to the ACTUAL CommandNode#process method","summary":"<p>This serves to just convert the arguments into a usable Array(Arg) format and pass it to the ACTUAL CommandNode#process method</p>","abstract":false,"args":[{"name":"args","external_name":"args","restriction":"Array(String)"}],"args_string":"(args : Array(String))","args_html":"(args : Array(String))","location":{"filename":"src/cligen/command_node.cr","line_number":80,"url":null},"def":{"name":"process","args":[{"name":"args","external_name":"args","restriction":"Array(String)"}],"visibility":"Public","body":"new_args = [] of Arg\nargs.each_with_index do |arg, index|\n new_args << Arg.new(value: arg, index: index)\nend\n\n\nprocess(new_args)\n"},"external_var":false},{"html_id":"process(args:Array(Arg)):Nil-instance-method","name":"process","abstract":false,"args":[{"name":"args","external_name":"args","restriction":"Array(Arg)"}],"args_string":"(args : Array(Arg)) : Nil","args_html":"(args : Array(<a href=\"../CliGen/Arg.html\">Arg</a>)) : Nil","location":{"filename":"src/cligen/command_node.cr","line_number":90,"url":null},"def":{"name":"process","args":[{"name":"args","external_name":"args","restriction":"Array(Arg)"}],"return_type":"Nil","visibility":"Public","body":"check!\n\n@pre_run_commands.each(&.call)\n\nargs.each do |arg|\n if arg.processed?\n next\n end\n arg.processed\n\n case match = find_match(arg.value)\n when CommandNode\n match.process(args.reject(&.processed?))\n when BaseFlag\n if match.requires_arg?\n match.process(args.reject(&.processed?))\n else\n match.process\n end\n when MatchType::FlagWithArg\n if regex_match = CliGen::Regex::FLAG_WITH_ARG.match(arg.value)\n case flag_match = find_match(regex_match[\"flag\"])\n when BaseFlag\n flag_match.process([Arg.new(value: regex_match[\"arg\"], index: arg.index)])\n else\n raise(\"ERROR : CommandNode(#{@name}).run : There was no match for #{regex_match[\"flag\"]}\")\n end\n else\n raise(\"Oh good, you broke regex. How the hell did it match in find_match but not above? What the hell is going on\")\n end\n when MatchType::ShortWithInlineArg\n abort(\"#{CliGen::APPNAME}: invalid flag '#{arg.value}' — inline values are not supported. Did you mean '#{arg.value[0..1]} #{arg.value[2..]}' ?\")\n when MatchType::FlagMultipleShort\n (arg.value.gsub(/^-/, \"\")).chars.map do |c| \"-#{c}\" end.each do |flag|\n case match = find_match(flag)\n when BaseFlag\n if match.requires_arg?\n abort(\"#{CliGen::APPNAME}: cannot bundle flag that requires an argument: #{flag}\")\n end\n match.process\n when MatchType::NoMatch\n raise(\"ERROR : CommandNode(#{@name}).run : There was no match for #{flag}\")\n end\n end\n when MatchType::NoMatch\n raise(\"ERROR : CommandNode(#{@name}).run : There was no match for #{arg.value}\")\n end\nend\n\n@post_run_commands.each(&.call)\n"},"external_var":false}]},{"html_id":"CliGenerator/CliGen/DefaultFlag","path":"CliGen/DefaultFlag.html","kind":"annotation","full_name":"CliGen::DefaultFlag","name":"DefaultFlag","abstract":false,"locations":[{"filename":"src/cligen.cr","line_number":33,"url":null}],"repository_name":"CliGenerator","program":false,"enum":false,"alias":false,"const":false,"namespace":{"html_id":"CliGenerator/CliGen","kind":"module","full_name":"CliGen","name":"CliGen"}},{"html_id":"CliGenerator/CliGen/Flag","path":"CliGen/Flag.html","kind":"class","full_name":"CliGen::Flag(T)","name":"Flag","abstract":false,"superclass":{"html_id":"CliGenerator/CliGen/BaseFlag","kind":"class","full_name":"CliGen::BaseFlag","name":"BaseFlag"},"ancestors":[{"html_id":"CliGenerator/CliGen/BaseFlag","kind":"class","full_name":"CliGen::BaseFlag","name":"BaseFlag"},{"html_id":"CliGenerator/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"CliGenerator/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/cligen/flag.cr","line_number":31,"url":null}],"repository_name":"CliGenerator","program":false,"enum":false,"alias":false,"const":false,"namespace":{"html_id":"CliGenerator/CliGen","kind":"module","full_name":"CliGen","name":"CliGen"},"constructors":[{"html_id":"new(var:String,short:String|Nil,long:String|Nil,env_var:String|Nil,description:String,default:T|Nil=nil,options:Array(String)|Nil=nil,validate:T->Bool|Nil=nil,on_match:Proc(Nil)|Nil=nil)-class-method","name":"new","abstract":false,"args":[{"name":"var","external_name":"var","restriction":"String"},{"name":"short","external_name":"short","restriction":"String | ::Nil"},{"name":"long","external_name":"long","restriction":"String | ::Nil"},{"name":"env_var","external_name":"env_var","restriction":"String | ::Nil"},{"name":"description","external_name":"description","restriction":"String"},{"name":"default","default_value":"nil","external_name":"default","restriction":"T | ::Nil"},{"name":"options","default_value":"nil","external_name":"options","restriction":"Array(String) | ::Nil"},{"name":"validate","default_value":"nil","external_name":"validate","restriction":"(T -> Bool) | ::Nil"},{"name":"on_match","default_value":"nil","external_name":"on_match","restriction":"Proc(Nil) | ::Nil"}],"args_string":"(var : String, short : String | Nil, long : String | Nil, env_var : String | Nil, description : String, default : T | Nil = nil, options : Array(String) | Nil = nil, validate : T -> Bool | Nil = nil, on_match : Proc(Nil) | Nil = nil)","args_html":"(var : String, short : String | Nil, long : String | Nil, env_var : String | Nil, description : String, default : T | Nil = <span class=\"n\">nil</span>, options : Array(String) | Nil = <span class=\"n\">nil</span>, validate : T -> Bool | Nil = <span class=\"n\">nil</span>, on_match : Proc(Nil) | Nil = <span class=\"n\">nil</span>)","location":{"filename":"src/cligen/flag.cr","line_number":38,"url":null},"def":{"name":"new","args":[{"name":"var","external_name":"var","restriction":"String"},{"name":"short","external_name":"short","restriction":"String | ::Nil"},{"name":"long","external_name":"long","restriction":"String | ::Nil"},{"name":"env_var","external_name":"env_var","restriction":"String | ::Nil"},{"name":"description","external_name":"description","restriction":"String"},{"name":"default","default_value":"nil","external_name":"default","restriction":"T | ::Nil"},{"name":"options","default_value":"nil","external_name":"options","restriction":"Array(String) | ::Nil"},{"name":"validate","default_value":"nil","external_name":"validate","restriction":"(T -> Bool) | ::Nil"},{"name":"on_match","default_value":"nil","external_name":"on_match","restriction":"Proc(Nil) | ::Nil"}],"visibility":"Public","body":"_ = Flag(T).allocate\n_.initialize(var, short, long, env_var, description, default, options, validate, on_match)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"},"external_var":false}],"instance_methods":[{"html_id":"process(argv:Array(Arg)=[]ofArray(Arg)):Nil-instance-method","name":"process","abstract":false,"args":[{"name":"argv","default_value":"[] of Array(Arg)","external_name":"argv","restriction":"Array(Arg)"}],"args_string":"(argv : Array(Arg) = [] of Array(Arg)) : Nil","args_html":"(argv : Array(<a href=\"../CliGen/Arg.html\">Arg</a>) = <span class=\"o\">[]</span> <span class=\"k\">of</span> <span class=\"t\">Array</span>(<span class=\"t\">Arg</span>)) : Nil","location":{"filename":"src/cligen/flag.cr","line_number":56,"url":null},"def":{"name":"process","args":[{"name":"argv","default_value":"[] of Array(Arg)","external_name":"argv","restriction":"Array(Arg)"}],"return_type":"Nil","visibility":"Public","body":"if requires_arg?\n if argv.empty?\n raise(\"ERROR : Flag({{T}}) : Array requires an argument but provided array is empty\")\n end\nend\n\n{% if T == Bool %}\n @value = true\n {% elsif T <= Array %}\n {% if T.type_vars.size > 1\n raise(\"ERROR : Flag(#{T}) : You cannot define multiple types of array entries\")\nend %}\n {% elem = T.type_vars.first %}\n argv.each do |arg|\n break if arg.value.starts_with('-')\n {% if elem == Int32 %}\n (@value ||= [] of Int32) << arg.value.to_i\n {% else %}\n (@value ||= [] of String) << arg.value\n {% end %}\n arg.processed\n end\n {% elsif T == Int32 %}\n @value = argv.first.value.to_i\n argv.first.processed\n {% elsif T == Time %}\n @value = parse_time(argv.first.value)\n argv.first.processed\n {% else %} # String\n @value = argv.first.value\n argv.first.processed\n {% end %}\n@on_match.try(&.call)\n"},"external_var":false},{"html_id":"raw_value:String|Nil-instance-method","name":"raw_value","abstract":false,"location":{"filename":"src/cligen/flag.cr","line_number":104,"url":null},"def":{"name":"raw_value","return_type":"String | ::Nil","visibility":"Public","body":"{% if T == Bool %}\n @value.try(&.to_s)\n {% elsif T <= Array %}\n @value.try(&.join(\",\"))\n {% else %}\n @value.try(&.to_s)\n {% end %}"},"external_var":false},{"html_id":"requires_arg?:Bool-instance-method","name":"requires_arg?","abstract":false,"location":{"filename":"src/cligen/flag.cr","line_number":52,"url":null},"def":{"name":"requires_arg?","return_type":"Bool","visibility":"Public","body":"({{ T }}) != Bool"},"external_var":false},{"html_id":"satisfied?:Bool-instance-method","name":"satisfied?","abstract":false,"location":{"filename":"src/cligen/flag.cr","line_number":114,"url":null},"def":{"name":"satisfied?","return_type":"Bool","visibility":"Public","body":"if !@value.nil?\n return true\nend\nif @env_var && ENV[@env_var.not_nil!]?\n return true\nend\nif !@default.nil?\n return true\nend\nfalse\n"},"external_var":false},{"html_id":"validate!:Nil-instance-method","name":"validate!","abstract":false,"location":{"filename":"src/cligen/flag.cr","line_number":121,"url":null},"def":{"name":"validate!","return_type":"Nil","visibility":"Public","body":"v = value!\n\nif opts = @options\n str_v = v.to_s\n if opts.includes?(str_v)\n else\n abort(\"#{CliGen::APPNAME}: '#{str_v}' is not a valid value for #{@long_key.empty? ? @short : @long_key} (valid: #{opts.join(\", \")})\")\n end\nend\n\nif check = @validate\n if check.call(v)\n else\n abort(\"#{CliGen::APPNAME}: validation failed for #{@long_key.empty? ? @short : @long_key}\")\n end\nend\n"},"external_var":false},{"html_id":"value!:T-instance-method","name":"value!","abstract":false,"location":{"filename":"src/cligen/flag.cr","line_number":88,"url":null},"def":{"name":"value!","return_type":"T","visibility":"Public","body":"v = @value\n\n\nif v.nil? && @env_var\n if raw = ENV[@env_var.not_nil!]?\n v = coerce(raw)\n end\nend\n\nv || (v = @default)\n\nif v.nil?\n abort(\"#{CliGen::APPNAME}: required flag #{@long_key.empty? ? @short : @long_key} was not provided\")\nend\nv.not_nil!\n"},"external_var":false}]},{"html_id":"CliGenerator/CliGen/Format","path":"CliGen/Format.html","kind":"module","full_name":"CliGen::Format","name":"Format","abstract":false,"locations":[{"filename":"src/cligen/format.cr","line_number":1,"url":null}],"repository_name":"CliGenerator","program":false,"enum":false,"alias":false,"const":false,"constants":[{"id":"INPUT_DATE_FORMAT","name":"INPUT_DATE_FORMAT","value":"\"%Y-%m-%d\""},{"id":"INPUT_DATETIME_FORMAT","name":"INPUT_DATETIME_FORMAT","value":"\"%Y-%m-%d %H:%M:%S\""}],"namespace":{"html_id":"CliGenerator/CliGen","kind":"module","full_name":"CliGen","name":"CliGen"}},{"html_id":"CliGenerator/CliGen/MatchType","path":"CliGen/MatchType.html","kind":"enum","full_name":"CliGen::MatchType","name":"MatchType","abstract":false,"ancestors":[{"html_id":"CliGenerator/Enum","kind":"struct","full_name":"Enum","name":"Enum"},{"html_id":"CliGenerator/Comparable","kind":"module","full_name":"Comparable","name":"Comparable"},{"html_id":"CliGenerator/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"CliGenerator/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/cligen/match_type.cr","line_number":2,"url":null}],"repository_name":"CliGenerator","program":false,"enum":true,"alias":false,"const":false,"constants":[{"id":"FlagWithArg","name":"FlagWithArg","value":"0"},{"id":"FlagMultipleShort","name":"FlagMultipleShort","value":"1"},{"id":"ShortWithInlineArg","name":"ShortWithInlineArg","value":"2"},{"id":"NoMatch","name":"NoMatch","value":"3"}],"namespace":{"html_id":"CliGenerator/CliGen","kind":"module","full_name":"CliGen","name":"CliGen"},"instance_methods":[{"html_id":"flag_multiple_short?-instance-method","name":"flag_multiple_short?","doc":"Returns `true` if this enum value equals `FlagMultipleShort`","summary":"<p>Returns <code>true</code> if this enum value equals <code><a href=\"../CliGen/MatchType.html#FlagMultipleShort\">FlagMultipleShort</a></code></p>","abstract":false,"location":{"filename":"src/cligen/match_type.cr","line_number":4,"url":null},"def":{"name":"flag_multiple_short?","visibility":"Public","body":"self == FlagMultipleShort"},"external_var":false},{"html_id":"flag_with_arg?-instance-method","name":"flag_with_arg?","doc":"Returns `true` if this enum value equals `FlagWithArg`","summary":"<p>Returns <code>true</code> if this enum value equals <code><a href=\"../CliGen/MatchType.html#FlagWithArg\">FlagWithArg</a></code></p>","abstract":false,"location":{"filename":"src/cligen/match_type.cr","line_number":3,"url":null},"def":{"name":"flag_with_arg?","visibility":"Public","body":"self == FlagWithArg"},"external_var":false},{"html_id":"no_match?-instance-method","name":"no_match?","doc":"Returns `true` if this enum value equals `NoMatch`","summary":"<p>Returns <code>true</code> if this enum value equals <code><a href=\"../CliGen/MatchType.html#NoMatch\">NoMatch</a></code></p>","abstract":false,"location":{"filename":"src/cligen/match_type.cr","line_number":6,"url":null},"def":{"name":"no_match?","visibility":"Public","body":"self == NoMatch"},"external_var":false},{"html_id":"short_with_inline_arg?-instance-method","name":"short_with_inline_arg?","doc":"Returns `true` if this enum value equals `ShortWithInlineArg`","summary":"<p>Returns <code>true</code> if this enum value equals <code><a href=\"../CliGen/MatchType.html#ShortWithInlineArg\">ShortWithInlineArg</a></code></p>","abstract":false,"location":{"filename":"src/cligen/match_type.cr","line_number":5,"url":null},"def":{"name":"short_with_inline_arg?","visibility":"Public","body":"self == ShortWithInlineArg"},"external_var":false}]},{"html_id":"CliGenerator/CliGen/ProxyCommand","path":"CliGen/ProxyCommand.html","kind":"annotation","full_name":"CliGen::ProxyCommand","name":"ProxyCommand","abstract":false,"locations":[{"filename":"src/cligen/annotations.cr","line_number":2,"url":null}],"repository_name":"CliGenerator","program":false,"enum":false,"alias":false,"const":false,"namespace":{"html_id":"CliGenerator/CliGen","kind":"module","full_name":"CliGen","name":"CliGen"}},{"html_id":"CliGenerator/CliGen/Regex","path":"CliGen/Regex.html","kind":"module","full_name":"CliGen::Regex","name":"Regex","abstract":false,"locations":[{"filename":"src/cligen/regex.cr","line_number":1,"url":null}],"repository_name":"CliGenerator","program":false,"enum":false,"alias":false,"const":false,"constants":[{"id":"FLAG_MULTIPLE_SHORT","name":"FLAG_MULTIPLE_SHORT","value":"/^-[a-zA-Z]+$/"},{"id":"FLAG_REGEX","name":"FLAG_REGEX","value":"/^(-[a-zA-Z]|--[a-zA-Z-_]+)$/"},{"id":"FLAG_WITH_ARG","name":"FLAG_WITH_ARG","value":"/^(?<flag>(-[a-zA-Z]|--[a-zA-Z-_]+))=\"?(?<arg>\\S+?)\"?$/"},{"id":"INPUT_DATE_REGEX","name":"INPUT_DATE_REGEX","value":"/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/"},{"id":"INPUT_DATETIME_REGEX","name":"INPUT_DATETIME_REGEX","value":"/^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$/"},{"id":"SHORT_WITH_INLINE_ARG","name":"SHORT_WITH_INLINE_ARG","value":"/^-[a-zA-Z][a-zA-Z0-9]+$/"}],"namespace":{"html_id":"CliGenerator/CliGen","kind":"module","full_name":"CliGen","name":"CliGen"}},{"html_id":"CliGenerator/CliGen/Selection","path":"CliGen/Selection.html","kind":"annotation","full_name":"CliGen::Selection","name":"Selection","abstract":false,"locations":[{"filename":"src/cligen/annotations.cr","line_number":14,"url":null}],"repository_name":"CliGenerator","program":false,"enum":false,"alias":false,"const":false,"namespace":{"html_id":"CliGenerator/CliGen","kind":"module","full_name":"CliGen","name":"CliGen"}},{"html_id":"CliGenerator/CliGen/SubCommand","path":"CliGen/SubCommand.html","kind":"annotation","full_name":"CliGen::SubCommand","name":"SubCommand","abstract":false,"locations":[{"filename":"src/cligen/annotations.cr","line_number":17,"url":null}],"repository_name":"CliGenerator","program":false,"enum":false,"alias":false,"const":false,"namespace":{"html_id":"CliGenerator/CliGen","kind":"module","full_name":"CliGen","name":"CliGen"}},{"html_id":"CliGenerator/CliGen/Trigger","path":"CliGen/Trigger.html","kind":"annotation","full_name":"CliGen::Trigger","name":"Trigger","abstract":false,"locations":[{"filename":"src/cligen/annotations.cr","line_number":11,"url":null}],"repository_name":"CliGenerator","program":false,"enum":false,"alias":false,"const":false,"namespace":{"html_id":"CliGenerator/CliGen","kind":"module","full_name":"CliGen","name":"CliGen"}}]}]}} |