Advertisement
Guest User

Untitled

a guest
Jun 21st, 2014
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 3.75 KB | None | 0 0
  1. package pw.bowser.hysteria.commands.companion
  2.  
  3. import pw.hysteria.input.dashfoo.command.{Flag => FlagSpec}
  4. import java.util
  5. import pw.bowser.hysteria.engine.HysteriaBroker
  6. import pw.hysteria.input.dashfoo.command.parsing.CommandRegexProvider
  7. import scala.collection.convert.wrapAsJava.asJavaCollection
  8. import pw.bowser.hysteria.commands.HysteriaCommand
  9.  
  10. /**
  11.  * Create commands on the fly
  12.  * Date: 2/5/14
  13.  * Time: 9:26 PM
  14.  */
  15. object Command {
  16.  
  17.   /**
  18.    * Create a flags-only command OTF
  19.    * @param names command handles
  20.    * @param flags command flags
  21.    * @return command
  22.    */
  23.   def apply(names: Array[String], flags: FlagSpec*): HysteriaCommand = {
  24.     Command(names, {(cargs:Array[String], flags:util.Map[String, Array[String]]) =>}, flags:_*)
  25.   }
  26.  
  27.   /**
  28.    * Create a flags-only command OTF
  29.    * @param names command handles
  30.    * @param help  command help
  31.    * @param flags command flags
  32.    * @return      command
  33.    */
  34.   def apply(names: Array[String], help: String ,flags: FlagSpec*): HysteriaCommand = {
  35.     Command(names, {(cargs:Array[String], flags:util.Map[String, Array[String]]) =>}, help, flags:_*)
  36.   }
  37.  
  38.   /**
  39.    * Create a flags-only command OTF
  40.    * @param names       command handles
  41.    * @param help        command help
  42.    * @param description command description
  43.    * @param flags       command flags
  44.    * @return            command
  45.    */
  46.   def apply(names: Array[String], help: String, description: String,flags: FlagSpec*): HysteriaCommand = {
  47.     Command(names, {(cargs:Array[String], flags:util.Map[String, Array[String]]) =>}, help, description, flags:_*)
  48.   }
  49.  
  50.   /**
  51.    * Create a command OTF
  52.    * @param names   command handles
  53.    * @param action  command action
  54.    * @return        command
  55.    */
  56.   def apply(names: Array[String], action: (Array[String], util.Map[String, Array[String]]) => Unit): HysteriaCommand = {
  57.     Command(names, action, Array[FlagSpec]():_*)
  58.   }
  59.  
  60.   /**
  61.    * Create a command OTF
  62.    * @param names   command handles
  63.    * @param action  command action
  64.    * @param flags   command flags
  65.    * @return        command
  66.    */
  67.   def apply(names: Array[String], action: (Array[String], util.Map[String, Array[String]]) => Unit, flags: FlagSpec*): HysteriaCommand = {
  68.     Command(names, action, null.asInstanceOf[String], flags:_*)
  69.   }
  70.  
  71.   /**
  72.    * Create a command OTF
  73.    * @param names   command handles
  74.    * @param action  command action
  75.    * @param help    command help
  76.    * @param flags   command flags
  77.    * @return        command
  78.    */
  79.   def apply(names: Array[String], action: (Array[String], util.Map[String, Array[String]]) => Unit,
  80.             help: String, flags: FlagSpec*): HysteriaCommand = {
  81.     Command(names, action, help, null.asInstanceOf[String], flags:_*)
  82.   }
  83.  
  84.   /**
  85.    * Create a command OTF
  86.    * @param names       handles
  87.    * @param action      command action
  88.    * @param help        command help
  89.    * @param description command description
  90.    * @param flags       command flags
  91.    * @return            command
  92.    */
  93.   def apply(names: Array[String], action: (Array[String], util.Map[String, Array[String]]) => Unit,
  94.             help: String, description: String, flags: FlagSpec*): HysteriaCommand = {
  95.  
  96.     new HysteriaCommand(names, HysteriaBroker.hysteria.injector.getInstance(classOf[CommandRegexProvider])) {
  97.  
  98.       flagger.addAll(asJavaCollection(flags))
  99.  
  100.       def getDescription: String = description
  101.  
  102.       def getHelp: String = help
  103.  
  104.       /**
  105.        * Deferred command invocation
  106.        *
  107.        * @param commandArgs default flag arguments
  108.        * @param flags       flags and their arguments
  109.        */
  110.       override def onCommand(commandArgs: Array[String], flags: util.Map[String, Array[String]]): Unit = action(commandArgs, flags)
  111.     }
  112.  
  113.   }
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement