зеркало из
				https://github.com/iharh/notes.git
				synced 2025-11-03 23:26:09 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			54 строки
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			54 строки
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
https://www.reddit.com/r/scala/comments/5gpujf/preloading_code_snippets_in_the_ammonite_repl_you/
 | 
						|
https://gist.github.com/lihaoyi/1ebdd89b065a741a1ea72b5d780b9ab1
 | 
						|
 | 
						|
lihaoyi Ammonite$ amm
 | 
						|
Loading...
 | 
						|
Welcome to the Ammonite Repl 0.8.0
 | 
						|
(Scala 2.11.8 Java 1.8.0_112)
 | 
						|
@ {
 | 
						|
  val funnyFilter = ammonite.terminal.Filter.simple(" ")((b, c, m) =>
 | 
						|
    if (FunnyFrontEnd.nextLine == Nil) (b.take(c) ++ " " ++ b.drop(c), c+1)
 | 
						|
    else {
 | 
						|
      val head :: tail = FunnyFrontEnd.nextLine
 | 
						|
      FunnyFrontEnd.nextReader = new java.io.StringReader(head)
 | 
						|
      FunnyFrontEnd.nextLine = tail
 | 
						|
      (b, c)
 | 
						|
    }
 | 
						|
  )
 | 
						|
  object FunnyFrontEnd extends  ammonite.repl.AmmoniteFrontEnd(funnyFilter){
 | 
						|
    var nextLine = List.empty[String]
 | 
						|
    var nextReader = new java.io.StringReader("")
 | 
						|
    def setNextLines(s: Seq[String]) = nextLine = s.toList
 | 
						|
    override def readLine(reader: java.io.Reader,
 | 
						|
                 output: java.io.OutputStream,
 | 
						|
                 prompt: String,
 | 
						|
                 colors: ammonite.util.Colors,
 | 
						|
                 compilerComplete: (Int, String) => (Int, Seq[String], Seq[String]),
 | 
						|
                 history: IndexedSeq[String]) = {
 | 
						|
      val readerX = new java.io.Reader{
 | 
						|
        def close() = {reader.close(); nextReader.close()}
 | 
						|
        def read(cbuf: Array[Char], off: Int, len: Int) = {
 | 
						|
          val preRead = nextReader.read(cbuf, off, len)
 | 
						|
          if(preRead == len) preRead
 | 
						|
          else{
 | 
						|
            val preReadNum = math.max(0, preRead)
 | 
						|
            val postRead = reader.read(cbuf, off + preReadNum, len - preReadNum)
 | 
						|
            if (postRead == -1) -1 else postRead + preReadNum
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
      super.readLine(readerX, output, prompt, colors, compilerComplete, history)
 | 
						|
    }
 | 
						|
  }
 | 
						|
  repl.frontEnd() = FunnyFrontEnd
 | 
						|
  }
 | 
						|
funnyFilter: AnyRef with ammonite.terminal.Filter{def op(ti: ammonite.terminal.TermInfo): Option[ammonite.terminal.TermState]} = $sess.cmd0.funnyFilter:1
 | 
						|
defined object FunnyFrontEnd
 | 
						|
@ FunnyFrontEnd.setNextLines(Seq("println(\"Hello\")", "println(\"World\")"))
 | 
						|
 | 
						|
@ println("Hello")
 | 
						|
Hello
 | 
						|
 | 
						|
@ println("World")
 | 
						|
World
 |