curses-extension 1.1.4 → 1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/lib/README.md +31 -0
 - data/lib/curses-extension.rb +17 -1
 - data/lib/curses-template.rb +49 -18
 - metadata +6 -5
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 7a03325b4dbf6aa5c2cd506e50e642f62588a07cc543314d98eafce40cb7d2e3
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 2862dc209031c64df476ca07c3bd7fcba8f2929620966492f53f858903f30207
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: be4ab27081169af7f9219df23272012e287e3f838f78407bc495d7470f522d1c1fd9c945c7b3ce99ea9dd48a81930ab2a7411e76efbe0b11d75da18a86af425d
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 3eaa3fba2972af226cffa6380d55a3a3e034bc0ba8984c2893d6cec6cee7801eafdbbae023c711195217f5def9e48e34450dbf97229762d9a20d1f7b8ad4a6bd
         
     | 
    
        data/lib/README.md
    ADDED
    
    | 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Ruby-Curses-Class-Extension
         
     | 
| 
      
 2 
     | 
    
         
            +
            Extending the Ruby Curses module with some obvious functionality
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            ## Attributes
         
     | 
| 
      
 5 
     | 
    
         
            +
            Attribute           | Description
         
     | 
| 
      
 6 
     | 
    
         
            +
            --------------------|--------------------------------------------------------
         
     | 
| 
      
 7 
     | 
    
         
            +
            color               | Set the window's color to an already initiated color pair (with `init_pair(index, forground, backround`)
         
     | 
| 
      
 8 
     | 
    
         
            +
            fg                  | Foreground color for window (0-255)
         
     | 
| 
      
 9 
     | 
    
         
            +
            bg                  | Background color for window (0-255)
         
     | 
| 
      
 10 
     | 
    
         
            +
            attr                | Attributes for window (such as Curses::A_BOLD) - string with "\|" (such as Curses::A_BOLD \| Curses::A_UNDERLINE)
         
     | 
| 
      
 11 
     | 
    
         
            +
            update				| Whether to update the window on the next refresh
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            ## Functions
         
     | 
| 
      
 14 
     | 
    
         
            +
            Function							| Description
         
     | 
| 
      
 15 
     | 
    
         
            +
            ------------------------------------|--------------------------------------------------------
         
     | 
| 
      
 16 
     | 
    
         
            +
            clr									| Clears window without flicker (win.clear flickers)
         
     | 
| 
      
 17 
     | 
    
         
            +
            clr_to_cur_pos						| Clears the window up to the current line
         
     | 
| 
      
 18 
     | 
    
         
            +
            clr_from_cur_pos					| Clears the rest of the window after the current line
         
     | 
| 
      
 19 
     | 
    
         
            +
            fill								| Fill window with color as set by :color ( or :bg if not :color is set)
         
     | 
| 
      
 20 
     | 
    
         
            +
            fill_to_cur_pos						| Fill the window up to the current line
         
     | 
| 
      
 21 
     | 
    
         
            +
            fill_from_cur_pos					| Fill the rest of the window after the current line
         
     | 
| 
      
 22 
     | 
    
         
            +
            p(text)								| Write text to window with color or fg/bg and attributes (will handle the exceptions if no colors are set)
         
     | 
| 
      
 23 
     | 
    
         
            +
            pclr(text)							| As `p(text)` but also clears the rest of the window
         
     | 
| 
      
 24 
     | 
    
         
            +
            pa(fg, bg, attr, text)				| Write text to window with specified fg, bg and attribute(s)
         
     | 
| 
      
 25 
     | 
    
         
            +
            paclr(text)							| As `pa(text)` but also clears the rest of the window
         
     | 
| 
      
 26 
     | 
    
         
            +
            print(text, fg=255, bg=0, attr=0)	| Print text (from current position) with optional attributes
         
     | 
| 
      
 27 
     | 
    
         
            +
            puts(text, fg=255, bg=0, attr=0)	| Clears window and puts text with optional attributes
         
     | 
| 
      
 28 
     | 
    
         
            +
            format_text(text)					| Format text so that it linebreaks neatly inside window
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            ## Curses template
         
     | 
| 
      
 31 
     | 
    
         
            +
            The `curses_template.rb` includes the class extension and serves as the basis for my curses applications.
         
     | 
    
        data/lib/curses-extension.rb
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            class Curses::Window # CLASS EXTENSION 
         
     | 
| 
       2 
2 
     | 
    
         
             
              # General extensions (see https://github.com/isene/Ruby-Curses-Class-Extension)
         
     | 
| 
       3 
     | 
    
         
            -
              attr_accessor :color, :fg, :bg, :attr, :update
         
     | 
| 
      
 3 
     | 
    
         
            +
              attr_accessor :color, :fg, :bg, :attr, :update, :index
         
     | 
| 
       4 
4 
     | 
    
         
             
              # Set self.color for an already defined color pair such as: init_pair(1, 255, 3)
         
     | 
| 
       5 
5 
     | 
    
         
             
              # The color pair is defined like this: init_pair(index, foreground, background)
         
     | 
| 
       6 
6 
     | 
    
         
             
              # self.fg is set for the foreground color (and is used if self.color is not set)
         
     | 
| 
         @@ -88,4 +88,20 @@ class Curses::Window # CLASS EXTENSION 
     | 
|
| 
       88 
88 
     | 
    
         
             
                self.attron(color_pair(self.fg) | self.attr) { self << text }
         
     | 
| 
       89 
89 
     | 
    
         
             
                self.refresh
         
     | 
| 
       90 
90 
     | 
    
         
             
              end
         
     | 
| 
      
 91 
     | 
    
         
            +
              def puts(text, fg=255, bg=0, attr=0) # Clears window and puts text with optional attributes
         
     | 
| 
      
 92 
     | 
    
         
            +
                self.clr
         
     | 
| 
      
 93 
     | 
    
         
            +
                self.refresh
         
     | 
| 
      
 94 
     | 
    
         
            +
                self.setpos(0, 0)
         
     | 
| 
      
 95 
     | 
    
         
            +
                self.print(text, fg, bg, attr)
         
     | 
| 
      
 96 
     | 
    
         
            +
              end
         
     | 
| 
      
 97 
     | 
    
         
            +
              def print(text, fg=255, bg=0, attr=0) # Print text (from current position) with optional attributes
         
     | 
| 
      
 98 
     | 
    
         
            +
                init_pair(fg, fg, bg)
         
     | 
| 
      
 99 
     | 
    
         
            +
                self.attron(color_pair(fg) | attr) { self << text }
         
     | 
| 
      
 100 
     | 
    
         
            +
                self.refresh
         
     | 
| 
      
 101 
     | 
    
         
            +
              end
         
     | 
| 
      
 102 
     | 
    
         
            +
              def format_text(text) # Format text so that it linebreaks neatly inside window
         
     | 
| 
      
 103 
     | 
    
         
            +
                return "\n" + text.gsub(/(.{1,#{self.maxx}})( +|$\n?)|(.{1,#{self.maxx}})/, "\\1\\3\n")
         
     | 
| 
      
 104 
     | 
    
         
            +
              end
         
     | 
| 
       91 
105 
     | 
    
         
             
            end
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
            # vim: set sw=2 sts=2 et fdm=syntax fdn=2 fcs=fold\:\ :
         
     | 
    
        data/lib/curses-template.rb
    CHANGED
    
    | 
         @@ -16,20 +16,23 @@ 
     | 
|
| 
       16 
16 
     | 
    
         
             
            # | @w_b                          |
         
     | 
| 
       17 
17 
     | 
    
         
             
            # +-------------------------------+
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
            require ' 
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
      
 19 
     | 
    
         
            +
            begin #Basic setup
         
     | 
| 
      
 20 
     | 
    
         
            +
              require 'io/console'
         
     | 
| 
      
 21 
     | 
    
         
            +
              require 'io/wait'
         
     | 
| 
      
 22 
     | 
    
         
            +
              require 'curses'
         
     | 
| 
      
 23 
     | 
    
         
            +
              include  Curses
         
     | 
| 
       22 
24 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
            Curses.init_screen
         
     | 
| 
       24 
     | 
    
         
            -
            Curses.start_color
         
     | 
| 
       25 
     | 
    
         
            -
            Curses.curs_set(0)
         
     | 
| 
       26 
     | 
    
         
            -
            Curses.noecho
         
     | 
| 
       27 
     | 
    
         
            -
            Curses.cbreak
         
     | 
| 
       28 
     | 
    
         
            -
            Curses.stdscr.keypad = true
         
     | 
| 
      
 25 
     | 
    
         
            +
              Curses.init_screen
         
     | 
| 
      
 26 
     | 
    
         
            +
              Curses.start_color
         
     | 
| 
      
 27 
     | 
    
         
            +
              Curses.curs_set(0)
         
     | 
| 
      
 28 
     | 
    
         
            +
              Curses.noecho
         
     | 
| 
      
 29 
     | 
    
         
            +
              Curses.cbreak
         
     | 
| 
      
 30 
     | 
    
         
            +
              Curses.stdscr.keypad = true
         
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     | 
| 
       29 
32 
     | 
    
         | 
| 
       30 
33 
     | 
    
         
             
            class Curses::Window # CLASS EXTENSION 
         
     | 
| 
       31 
34 
     | 
    
         
             
              # General extensions (see https://github.com/isene/Ruby-Curses-Class-Extension)
         
     | 
| 
       32 
     | 
    
         
            -
              attr_accessor :color, :fg, :bg, :attr, :update
         
     | 
| 
      
 35 
     | 
    
         
            +
              attr_accessor :color, :fg, :bg, :attr, :update, :index
         
     | 
| 
       33 
36 
     | 
    
         
             
              # Set self.color for an already defined color pair such as: init_pair(1, 255, 3)
         
     | 
| 
       34 
37 
     | 
    
         
             
              # The color pair is defined like this: init_pair(index, foreground, background)
         
     | 
| 
       35 
38 
     | 
    
         
             
              # self.fg is set for the foreground color (and is used if self.color is not set)
         
     | 
| 
         @@ -117,15 +120,30 @@ class Curses::Window # CLASS EXTENSION 
     | 
|
| 
       117 
120 
     | 
    
         
             
                self.attron(color_pair(self.fg) | self.attr) { self << text }
         
     | 
| 
       118 
121 
     | 
    
         
             
                self.refresh
         
     | 
| 
       119 
122 
     | 
    
         
             
              end
         
     | 
| 
      
 123 
     | 
    
         
            +
              def puts(text, fg=255, bg=0, attr=0) # Clears window and puts text with optional attributes
         
     | 
| 
      
 124 
     | 
    
         
            +
                self.clr
         
     | 
| 
      
 125 
     | 
    
         
            +
                self.refresh
         
     | 
| 
      
 126 
     | 
    
         
            +
                self.setpos(0, 0)
         
     | 
| 
      
 127 
     | 
    
         
            +
                self.print(text, fg, bg, attr)
         
     | 
| 
      
 128 
     | 
    
         
            +
              end
         
     | 
| 
      
 129 
     | 
    
         
            +
              def print(text, fg=255, bg=0, attr=0) # Print text (from current position) with optional attributes
         
     | 
| 
      
 130 
     | 
    
         
            +
                init_pair(fg, fg, bg)
         
     | 
| 
      
 131 
     | 
    
         
            +
                self.attron(color_pair(fg) | attr) { self << text }
         
     | 
| 
      
 132 
     | 
    
         
            +
                self.refresh
         
     | 
| 
      
 133 
     | 
    
         
            +
              end
         
     | 
| 
      
 134 
     | 
    
         
            +
              def format_text(text) # Format text so that it linebreaks neatly inside window
         
     | 
| 
      
 135 
     | 
    
         
            +
                return "\n" + text.gsub(/(.{1,#{self.maxx}})( +|$\n?)|(.{1,#{self.maxx}})/, "\\1\\3\n")
         
     | 
| 
      
 136 
     | 
    
         
            +
              end
         
     | 
| 
       120 
137 
     | 
    
         
             
            end
         
     | 
| 
       121 
138 
     | 
    
         | 
| 
       122 
     | 
    
         
            -
            def getchr #  
     | 
| 
       123 
     | 
    
         
            -
              c = STDIN.getch 
     | 
| 
      
 139 
     | 
    
         
            +
            def getchr # Process key presses
         
     | 
| 
      
 140 
     | 
    
         
            +
              c = STDIN.getch
         
     | 
| 
      
 141 
     | 
    
         
            +
              #c = STDIN.getch(min: 0, time: 1) # Use this if you need to poll for user keys
         
     | 
| 
       124 
142 
     | 
    
         
             
              case c
         
     | 
| 
       125 
143 
     | 
    
         
             
              when "\e"    # ANSI escape sequences
         
     | 
| 
       126 
     | 
    
         
            -
                case  
     | 
| 
      
 144 
     | 
    
         
            +
                case STDIN.getc
         
     | 
| 
       127 
145 
     | 
    
         
             
                when '['   # CSI
         
     | 
| 
       128 
     | 
    
         
            -
                  case  
     | 
| 
      
 146 
     | 
    
         
            +
                  case STDIN.getc
         
     | 
| 
       129 
147 
     | 
    
         
             
                  when 'A' then chr = "UP"
         
     | 
| 
       130 
148 
     | 
    
         
             
                  when 'B' then chr = "DOWN"
         
     | 
| 
       131 
149 
     | 
    
         
             
                  when 'C' then chr = "RIGHT"
         
     | 
| 
         @@ -138,8 +156,8 @@ def getchr # PROCESS KEY PRESSES 
     | 
|
| 
       138 
156 
     | 
    
         
             
                  when '7' then chr = "HOME"   ; chr = "C-HOME"   if STDIN.getc == "^"
         
     | 
| 
       139 
157 
     | 
    
         
             
                  when '8' then chr = "END"    ; chr = "C-END"    if STDIN.getc == "^"
         
     | 
| 
       140 
158 
     | 
    
         
             
                  end
         
     | 
| 
       141 
     | 
    
         
            -
                when 'O'
         
     | 
| 
       142 
     | 
    
         
            -
                  case  
     | 
| 
      
 159 
     | 
    
         
            +
                when 'O'   # Set Ctrl+ArrowKey equal to ArrowKey; May be used for other purposes in the future
         
     | 
| 
      
 160 
     | 
    
         
            +
                  case STDIN.getc
         
     | 
| 
       143 
161 
     | 
    
         
             
                  when 'a' then chr = "C-UP"
         
     | 
| 
       144 
162 
     | 
    
         
             
                  when 'b' then chr = "C-DOWN"
         
     | 
| 
       145 
163 
     | 
    
         
             
                  when 'c' then chr = "C-RIGHT"
         
     | 
| 
         @@ -147,12 +165,22 @@ def getchr # PROCESS KEY PRESSES 
     | 
|
| 
       147 
165 
     | 
    
         
             
                  end
         
     | 
| 
       148 
166 
     | 
    
         
             
                end
         
     | 
| 
       149 
167 
     | 
    
         
             
              when "", "" then chr = "BACK"
         
     | 
| 
      
 168 
     | 
    
         
            +
              when "" then chr = "C-C"
         
     | 
| 
      
 169 
     | 
    
         
            +
              when "" then chr = "C-D"
         
     | 
| 
      
 170 
     | 
    
         
            +
              when "" then chr = "C-E"
         
     | 
| 
      
 171 
     | 
    
         
            +
              when "" then chr = "C-G"
         
     | 
| 
      
 172 
     | 
    
         
            +
              when "" then chr = "C-K"
         
     | 
| 
      
 173 
     | 
    
         
            +
              when "" then chr = "C-L"
         
     | 
| 
      
 174 
     | 
    
         
            +
              when "" then chr = "C-N"
         
     | 
| 
      
 175 
     | 
    
         
            +
              when "" then chr = "C-O"
         
     | 
| 
      
 176 
     | 
    
         
            +
              when "" then chr = "C-P"
         
     | 
| 
      
 177 
     | 
    
         
            +
              when "" then chr = "C-T"
         
     | 
| 
      
 178 
     | 
    
         
            +
              when "" then chr = "C-Y"
         
     | 
| 
       150 
179 
     | 
    
         
             
              when "" then chr = "WBACK"
         
     | 
| 
       151 
180 
     | 
    
         
             
              when "" then chr = "LDEL"
         
     | 
| 
       152 
     | 
    
         
            -
              when "" then chr = "C-T"
         
     | 
| 
       153 
181 
     | 
    
         
             
              when "\r" then chr = "ENTER"
         
     | 
| 
       154 
182 
     | 
    
         
             
              when "\t" then chr = "TAB"
         
     | 
| 
       155 
     | 
    
         
            -
              when  
     | 
| 
      
 183 
     | 
    
         
            +
              when /[[:print:]]/  then chr = c
         
     | 
| 
       156 
184 
     | 
    
         
             
              end
         
     | 
| 
       157 
185 
     | 
    
         
             
              return chr
         
     | 
| 
       158 
186 
     | 
    
         
             
            end
         
     | 
| 
         @@ -183,6 +211,9 @@ def main_getkey # GET KEY FROM USER 
     | 
|
| 
       183 
211 
     | 
    
         
             
              when 'q' # Exit 
         
     | 
| 
       184 
212 
     | 
    
         
             
                exit 0
         
     | 
| 
       185 
213 
     | 
    
         
             
              end
         
     | 
| 
      
 214 
     | 
    
         
            +
              while STDIN.ready?
         
     | 
| 
      
 215 
     | 
    
         
            +
                chr = STDIN.getc
         
     | 
| 
      
 216 
     | 
    
         
            +
              end
         
     | 
| 
       186 
217 
     | 
    
         
             
            end
         
     | 
| 
       187 
218 
     | 
    
         | 
| 
       188 
219 
     | 
    
         
             
            # TOP WINDOW FUNCTIONS 
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: curses-extension
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: '1.3'
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Geir Isene
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2023-07-02 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: curses
         
     | 
| 
         @@ -35,13 +35,14 @@ description: 'The Ruby curses library is sorely lacking some important features. 
     | 
|
| 
       35 
35 
     | 
    
         
             
              terminal curses applications in Ruby. See the Github page for information on what
         
     | 
| 
       36 
36 
     | 
    
         
             
              properties and functions are included: https://github.com/isene/Ruby-Curses-Class-Extension.
         
     | 
| 
       37 
37 
     | 
    
         
             
              The curses_template.rb is also installed in the lib directory and serves as the
         
     | 
| 
       38 
     | 
    
         
            -
              basis for my own curses applications. New in 1. 
     | 
| 
       39 
     | 
    
         
            -
               
     | 
| 
      
 38 
     | 
    
         
            +
              basis for my own curses applications. New in 1.3: Included :index as Class accessor
         
     | 
| 
      
 39 
     | 
    
         
            +
              and other improvements'
         
     | 
| 
       40 
40 
     | 
    
         
             
            email: g@isene.com
         
     | 
| 
       41 
41 
     | 
    
         
             
            executables: []
         
     | 
| 
       42 
42 
     | 
    
         
             
            extensions: []
         
     | 
| 
       43 
43 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       44 
44 
     | 
    
         
             
            files:
         
     | 
| 
      
 45 
     | 
    
         
            +
            - lib/README.md
         
     | 
| 
       45 
46 
     | 
    
         
             
            - lib/curses-extension.rb
         
     | 
| 
       46 
47 
     | 
    
         
             
            - lib/curses-template.rb
         
     | 
| 
       47 
48 
     | 
    
         
             
            homepage: https://isene.com/
         
     | 
| 
         @@ -64,7 +65,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       64 
65 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       65 
66 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       66 
67 
     | 
    
         
             
            requirements: []
         
     | 
| 
       67 
     | 
    
         
            -
            rubygems_version: 3. 
     | 
| 
      
 68 
     | 
    
         
            +
            rubygems_version: 3.3.5
         
     | 
| 
       68 
69 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       69 
70 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       70 
71 
     | 
    
         
             
            summary: Extending the Ruby Curses module with some obvious functionality
         
     |