Sha256: fbe67314afc25b3f76392e43d7a36b317ed647526b09391ee8c9c81ce5e4318a

Contents?: true

Size: 1.94 KB

Versions: 5

Compression:

Stored size: 1.94 KB

Contents


# ESC [ Pl A
# カーソルをPl行上へ移動
# ESC [ Pl B
# カーソルをPl行下へ移動
# ESC [ Pc C
# カーソルをPc桁右へ移動
# ESC [ Pc D
#       カーソルをPc桁左へ移動
#       ESC E
# 改行、カーソルを次行の最初へ移動

# \e[nE	n行下の先頭に移動
# \e[nF	n行上の先頭に移動
# \e[nG	現在位置と関係なく左からnの場所に移動


class Curses
  @x = 0
  @y = 0
  
  def Curses.up(n = 1)
    STDOUT.print "\e[#{n}A"
    @y -= n
  end
  
  def Curses.down(n = 1)
    STDOUT.print "\e[#{n}B"
    @y += n
  end
  
  def Curses.right(n = 1)
    n = 1 unless n
    STDOUT.print "\e[#{n}C"
    @x += n
  end
  
  def Curses.left(n = 1)
    STDOUT.print "\e[#{n}D"
    @x -= n
  end
  
  def Curses.tol(n = 0) # 行頭からn文字目に移動
    STDOUT.print "\e[#{n+1}G"
    @x = n
  end
  
  #\e[nJ	画面消去
  #0(or省略)・・・カーソルより後ろを消去
  #1・・・カーソルより前を消去
  #2・・・画面全体を消去
  
  def Curses.clearline # カーソルより後を消去
    STDOUT.print "\e[J"
  end

  def Curses.move(yy,xx)
    if xx > @x
      Curses.right(xx-@x)
    end
    if xx < @x
      Curses.left(@x - xx)
    end
    if yy > @y
      Curses.down(yy - @y)
    end
    if yy < @y
      Curses.up(@y - yy)
    end
    @y = yy
    @x = xx
  end

  def Curses.dump
    puts @x
    puts @y
  end

  def Curses.print(s)
    STDOUT.print(s)
    # @x += s.length
    @x += s.encode("EUC-JP").bytesize
  end
  
  # \e[0m	指定をリセットし未指定状態に戻す(0は省略可)
  # \e[1m	太字
  # \e[2m	薄く表示
  # \e[3m	イタリック
  # \e[4m	アンダーライン
  # \e[5m	ブリンク
  # \e[6m	高速ブリンク
  # \e[7m	文字色と背景色の反転
  # \e[8m	表示を隠す(コピペ可能)
  # \e[9m	取り消し
  
  def Curses.print_inverse(s)
    print "\e[0m"
    print "\e[7m"
    print s
    print "\e[0m"
    @x += s.length
  end

end
  

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
helpline-0.1.4 lib/helpline/curses.rb
helpline-0.1.3 lib/helpline/curses.rb
helpline-0.1.2 lib/helpline/curses.rb
helpline-0.1.1 curses.rb
helpline-0.1.0 curses.rb