vedeu 0.0.24 → 0.0.25
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/README.md +75 -2
- data/bin/composition +3 -1
- data/examples/single_interface_app.rb +46 -0
- data/lib/vedeu.rb +16 -4
- data/lib/vedeu/application.rb +34 -3
- data/lib/vedeu/configuration.rb +31 -0
- data/lib/vedeu/launcher.rb +11 -1
- data/lib/vedeu/output/colour.rb +3 -7
- data/lib/vedeu/output/cursor.rb +2 -6
- data/lib/vedeu/output/esc.rb +0 -1
- data/lib/vedeu/output/geometry.rb +0 -4
- data/lib/vedeu/output/menu.rb +26 -0
- data/lib/vedeu/process/process.rb +1 -1
- data/lib/vedeu/repository/command.rb +5 -4
- data/lib/vedeu/repository/command_repository.rb +5 -6
- data/lib/vedeu/repository/storage.rb +3 -1
- data/lib/vedeu/support/options.rb +4 -0
- data/lib/vedeu/support/queue.rb +0 -1
- data/lib/vedeu/support/terminal.rb +2 -2
- data/lib/vedeu/version.rb +1 -1
- data/logs/.gitkeep +0 -0
- data/test/lib/vedeu/application_test.rb +18 -3
- data/test/lib/vedeu/configuration_test.rb +38 -0
- data/test/lib/vedeu/output/compositor_test.rb +1 -1
- data/test/lib/vedeu/output/cursor_test.rb +4 -4
- data/test/lib/vedeu/output/menu_test.rb +13 -0
- data/test/lib/vedeu/process/process_test.rb +2 -2
- data/test/lib/vedeu/repository/command_test.rb +11 -4
- data/test/lib/vedeu/support/json_parser_test.rb +2 -3
- data/test/test_helper.rb +1 -0
- data/vedeu.gemspec +1 -1
- metadata +12 -10
- data/.rubocop.yml +0 -2
- data/lib/vedeu/output/renderer.rb +0 -6
- data/lib/vedeu/support/event_loop.rb +0 -33
- data/test/lib/vedeu/output/renderer_test.rb +0 -13
- data/test/lib/vedeu/support/event_loop_test.rb +0 -39
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 5a6b5d80f3321da207ef185b7437f50b5e31aaaf
         | 
| 4 | 
            +
              data.tar.gz: b6ca2fdd18c9912f54bfcf5629d293e9dd2e5468
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 6411a9e56a0eb82187442214a9fe95cbde95cdba99370e94888ce60f23dfa1383d9d966d9d3114fcf5e52f769044a6430e69ad7fd4f95d15f6dd13fb83700fe2
         | 
| 7 | 
            +
              data.tar.gz: db041a47634fbe157be6f23c4ddb920a6b853aa1be20b4bb6528229e64bc3abdcd535deb9b0965ce3a8191c3673b089c8c94d9ecdf6a4b3d6526a8941676e2c9
         | 
    
        data/README.md
    CHANGED
    
    | @@ -2,7 +2,7 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            # Vedeu
         | 
| 4 4 |  | 
| 5 | 
            -
            Vedeu is my attempt at creating a terminal based application framework without the need for Ncurses.
         | 
| 5 | 
            +
            Vedeu is my attempt at creating a terminal based application framework without the need for Ncurses. I've tried to make Vedeu as simple and flexible as possible.
         | 
| 6 6 |  | 
| 7 7 |  | 
| 8 8 | 
             
            ## Installation
         | 
| @@ -17,7 +17,80 @@ And then execute: | |
| 17 17 |  | 
| 18 18 | 
             
            ## Usage
         | 
| 19 19 |  | 
| 20 | 
            -
            Expect documentation soon!
         | 
| 20 | 
            +
            Expect proper documentation soon!
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            ### Getting Started
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                require 'vedeu'
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                class MyApp
         | 
| 27 | 
            +
                  include Vedeu
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  interface :main, { }
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  command   :exit, { entity:   SomeClass,
         | 
| 32 | 
            +
                                     keypress: 'q',
         | 
| 33 | 
            +
                                     keyword:  'quit' }
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            ### On Defining Interfaces
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                interface :main, {
         | 
| 39 | 
            +
                            y:          1,
         | 
| 40 | 
            +
                            x:          1,
         | 
| 41 | 
            +
                            width:      :auto, # will set to terminal width
         | 
| 42 | 
            +
                            height:     10,    # also accepts :auto
         | 
| 43 | 
            +
                            foreground: :white,
         | 
| 44 | 
            +
                            background: :black,
         | 
| 45 | 
            +
                            cursor:     false,
         | 
| 46 | 
            +
                            layer:      0 }
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            Referring to the above example, interfaces have a name, and various default attributes.
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            `:y`          sets the starting row point. (See Geometry)
         | 
| 51 | 
            +
            `:x`          sets the starting column point.
         | 
| 52 | 
            +
            `:width`      sets how many characters wide the interface will be.
         | 
| 53 | 
            +
            `:height`     sets how many characters tall the interface will be.
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            `:foreground` sets the default foreground colour. (See Colours)
         | 
| 56 | 
            +
            `:background` sets the default background colour.
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            `:cursor`     a boolean specifying whether the cursor should show.
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            `:layer`      an integer specifying the z-index of the interface.
         | 
| 61 | 
            +
                          (See Layers)
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            ### On Defining Commands
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                command :do_something, {
         | 
| 66 | 
            +
                          entity:    SomeClass,
         | 
| 67 | 
            +
                          keypress:  's',
         | 
| 68 | 
            +
                          keyword:   'start',
         | 
| 69 | 
            +
                          arguments: [:some, { :values => :here }, "etc"] }
         | 
| 70 | 
            +
             | 
| 71 | 
            +
            As above, commands have a name, a class which performs the action
         | 
| 72 | 
            +
            (you define this), and they can be invoked with a keypress or a keyword. At this time, Vedeu will call the `.dispatch` method on your class, passing any arguments you originally defined in the command. In the future, both the method called and the arguments could be dynamic.
         | 
| 73 | 
            +
             | 
| 74 | 
            +
             | 
| 75 | 
            +
            ### Geometry
         | 
| 76 | 
            +
             | 
| 77 | 
            +
            Geometry for Vedeu, as the same for ANSI terminals, is set top-left, which is point 1, 1. Interfaces have internal geometry which is handled automatically. Unless you are doing something special, you will probably only set it on a per-interface basis.
         | 
| 78 | 
            +
             | 
| 79 | 
            +
             | 
| 80 | 
            +
            ### Colours
         | 
| 81 | 
            +
             | 
| 82 | 
            +
            Vedeu uses the standard ANSI terminal colours, though you can also set arbitrary colours using HTML/CSS style notation (i.e. '#aadd00').
         | 
| 83 | 
            +
             | 
| 84 | 
            +
                :black, :red, :green, :yellow, :blue, :magenta, :cyan, :white, :default
         | 
| 85 | 
            +
             | 
| 86 | 
            +
             | 
| 87 | 
            +
            ### Layers
         | 
| 88 | 
            +
             | 
| 89 | 
            +
            Vedeu allows the overlaying of interfaces. To render these correctly,
         | 
| 90 | 
            +
            Vedeu uses two rules.
         | 
| 91 | 
            +
             | 
| 92 | 
            +
              1) The :layer value. 0 would be default, or bottom. 1 would be placed on top of 0. 2 on top of 1, and so on.
         | 
| 93 | 
            +
              2) If two interfaces occupy the same 'space', the interface which was defined last, wins.
         | 
| 21 94 |  | 
| 22 95 |  | 
| 23 96 | 
             
            ## Contributing
         | 
    
        data/bin/composition
    CHANGED
    
    | @@ -1,5 +1,7 @@ | |
| 1 1 | 
             
            #!/usr/bin/env ruby
         | 
| 2 | 
            -
             | 
| 2 | 
            +
            lib_dir = File.dirname(__FILE__) + '/../lib'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            $LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
         | 
| 3 5 |  | 
| 4 6 | 
             
            -> { its -> { a } }
         | 
| 5 7 | 
             
            trap('INT') { exit! }
         | 
| @@ -0,0 +1,46 @@ | |
| 1 | 
            +
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'vedeu'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            class SingleInterfaceApp
         | 
| 6 | 
            +
              include Vedeu
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              interface :main, {
         | 
| 9 | 
            +
                          y:          1,
         | 
| 10 | 
            +
                          x:          1,
         | 
| 11 | 
            +
                          width:      :auto,
         | 
| 12 | 
            +
                          height:     :auto,
         | 
| 13 | 
            +
                          foreground: :white,
         | 
| 14 | 
            +
                          background: :black,
         | 
| 15 | 
            +
                          cursor:     true,
         | 
| 16 | 
            +
                          layer:      0 }
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              command   :refresh, {
         | 
| 19 | 
            +
                          entity:    SingleInterfaceApp,
         | 
| 20 | 
            +
                          keyword:   'refresh',
         | 
| 21 | 
            +
                          keypress:  'r',
         | 
| 22 | 
            +
                          arguments: [] }
         | 
| 23 | 
            +
              command   :exit,    {
         | 
| 24 | 
            +
                          entity:    Vedeu::Exit,
         | 
| 25 | 
            +
                          keyword:   'exit',
         | 
| 26 | 
            +
                          keypress:  'q',
         | 
| 27 | 
            +
                          arguments: [] }
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              def self.start
         | 
| 30 | 
            +
                Vedeu::Launcher.new(ARGV.dup).execute!
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              def self.dispatch
         | 
| 34 | 
            +
                {
         | 
| 35 | 
            +
                  'main' => [
         | 
| 36 | 
            +
                              [
         | 
| 37 | 
            +
                                {
         | 
| 38 | 
            +
                                  :text => "The time is: #{Time.now}.",
         | 
| 39 | 
            +
                                }
         | 
| 40 | 
            +
                              ]
         | 
| 41 | 
            +
                            ]
         | 
| 42 | 
            +
                }
         | 
| 43 | 
            +
              end
         | 
| 44 | 
            +
            end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            SingleInterfaceApp.start
         | 
    
        data/lib/vedeu.rb
    CHANGED
    
    | @@ -2,11 +2,11 @@ require 'date' | |
| 2 2 | 
             
            require 'logger'
         | 
| 3 3 | 
             
            require 'io/console'
         | 
| 4 4 | 
             
            require 'oj'
         | 
| 5 | 
            +
            require 'optparse'
         | 
| 5 6 | 
             
            require 'virtus'
         | 
| 6 7 |  | 
| 7 8 | 
             
            require_relative 'vedeu/input/input'
         | 
| 8 9 |  | 
| 9 | 
            -
            require_relative 'vedeu/support/event_loop'
         | 
| 10 10 | 
             
            require_relative 'vedeu/support/exit'
         | 
| 11 11 | 
             
            require_relative 'vedeu/support/json_parser'
         | 
| 12 12 | 
             
            require_relative 'vedeu/support/queue'
         | 
| @@ -27,11 +27,11 @@ require_relative 'vedeu/output/directive' | |
| 27 27 | 
             
            require_relative 'vedeu/output/foreground'
         | 
| 28 28 | 
             
            require_relative 'vedeu/output/geometry'
         | 
| 29 29 | 
             
            require_relative 'vedeu/output/layer'
         | 
| 30 | 
            +
            require_relative 'vedeu/output/menu'
         | 
| 30 31 | 
             
            require_relative 'vedeu/output/esc'
         | 
| 31 32 | 
             
            require_relative 'vedeu/output/colour'
         | 
| 32 33 | 
             
            require_relative 'vedeu/output/output'
         | 
| 33 34 | 
             
            require_relative 'vedeu/output/position'
         | 
| 34 | 
            -
            require_relative 'vedeu/output/renderer'
         | 
| 35 35 | 
             
            require_relative 'vedeu/output/style'
         | 
| 36 36 | 
             
            require_relative 'vedeu/output/translator'
         | 
| 37 37 | 
             
            require_relative 'vedeu/output/wordwrap'
         | 
| @@ -48,6 +48,7 @@ require_relative 'vedeu/repository/dummy_interface' | |
| 48 48 | 
             
            require_relative 'vedeu/repository/dummy_command'
         | 
| 49 49 |  | 
| 50 50 | 
             
            require_relative 'vedeu/application'
         | 
| 51 | 
            +
            require_relative 'vedeu/configuration'
         | 
| 51 52 | 
             
            require_relative 'vedeu/launcher'
         | 
| 52 53 | 
             
            require_relative 'vedeu/version'
         | 
| 53 54 |  | 
| @@ -60,9 +61,20 @@ module Vedeu | |
| 60 61 | 
             
                  end
         | 
| 61 62 | 
             
                end
         | 
| 62 63 | 
             
              end
         | 
| 63 | 
            -
              # :nocov:
         | 
| 64 64 |  | 
| 65 | 
            -
               | 
| 65 | 
            +
              def self.debug(filename = 'profile.html', &block)
         | 
| 66 | 
            +
                RubyProf.start
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                yield
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                result = RubyProf.stop
         | 
| 71 | 
            +
                result.eliminate_methods!([/^Array/, /^Hash/])
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                File.open(Vedeu.root_path + '/tmp/' + filename, 'w') do |file|
         | 
| 74 | 
            +
                  RubyProf::CallStackPrinter.new(result).print(file)
         | 
| 75 | 
            +
                end
         | 
| 76 | 
            +
              end
         | 
| 77 | 
            +
             | 
| 66 78 | 
             
              def self.included(receiver)
         | 
| 67 79 | 
             
                receiver.extend(ClassMethods)
         | 
| 68 80 | 
             
              end
         | 
    
        data/lib/vedeu/application.rb
    CHANGED
    
    | @@ -7,14 +7,14 @@ module Vedeu | |
| 7 7 | 
             
                end
         | 
| 8 8 |  | 
| 9 9 | 
             
                def initialize(options = {})
         | 
| 10 | 
            -
                  @options = options
         | 
| 10 | 
            +
                  @options = options || {}
         | 
| 11 11 | 
             
                end
         | 
| 12 12 |  | 
| 13 13 | 
             
                def start
         | 
| 14 14 | 
             
                  Terminal.open(options) do
         | 
| 15 15 | 
             
                    Output.render
         | 
| 16 16 |  | 
| 17 | 
            -
                     | 
| 17 | 
            +
                    runner { main_sequence }
         | 
| 18 18 | 
             
                  end
         | 
| 19 19 | 
             
                ensure
         | 
| 20 20 | 
             
                  Terminal.close
         | 
| @@ -24,12 +24,43 @@ module Vedeu | |
| 24 24 |  | 
| 25 25 | 
             
                attr_reader :options
         | 
| 26 26 |  | 
| 27 | 
            +
                def runner
         | 
| 28 | 
            +
                  if interactive?
         | 
| 29 | 
            +
                    interactive { yield }
         | 
| 30 | 
            +
                  else
         | 
| 31 | 
            +
                    run_once    { yield }
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                def main_sequence
         | 
| 36 | 
            +
                  Input.capture
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                  Process.evaluate
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  Output.render
         | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                def interactive?
         | 
| 44 | 
            +
                  options.fetch(:interactive)
         | 
| 45 | 
            +
                end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                def interactive
         | 
| 48 | 
            +
                  loop { yield }
         | 
| 49 | 
            +
                rescue StopIteration
         | 
| 50 | 
            +
                end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                def run_once
         | 
| 53 | 
            +
                  yield
         | 
| 54 | 
            +
                end
         | 
| 55 | 
            +
             | 
| 27 56 | 
             
                def options
         | 
| 28 57 | 
             
                  defaults.merge!(@options)
         | 
| 29 58 | 
             
                end
         | 
| 30 59 |  | 
| 31 60 | 
             
                def defaults
         | 
| 32 | 
            -
                  { | 
| 61 | 
            +
                  {
         | 
| 62 | 
            +
                    interactive: true
         | 
| 63 | 
            +
                  }
         | 
| 33 64 | 
             
                end
         | 
| 34 65 | 
             
              end
         | 
| 35 66 | 
             
            end
         | 
| @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            module Vedeu
         | 
| 2 | 
            +
              class Configuration
         | 
| 3 | 
            +
                class << self
         | 
| 4 | 
            +
                  def configure(args = [])
         | 
| 5 | 
            +
                    new(args).configure
         | 
| 6 | 
            +
                  end
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def initialize(args = [])
         | 
| 10 | 
            +
                  @args    = args || []
         | 
| 11 | 
            +
                  @options = {}
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                def configure
         | 
| 15 | 
            +
                  parser = OptionParser.new do |opts|
         | 
| 16 | 
            +
                    opts.banner = "Usage: #{$PROGRAM_NAME} [options]"
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                    opts.on("-1", "--run-once", "Run application once.") do
         | 
| 19 | 
            +
                      @options[:interactive] = false
         | 
| 20 | 
            +
                    end
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                  parser.parse!(args)
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                  options
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                private
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                attr_accessor :args, :options
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
            end
         | 
    
        data/lib/vedeu/launcher.rb
    CHANGED
    
    | @@ -16,7 +16,7 @@ module Vedeu | |
| 16 16 | 
             
                def execute!
         | 
| 17 17 | 
             
                  $stdin, $stdout, $stderr = @stdin, @stdout, @stderr
         | 
| 18 18 |  | 
| 19 | 
            -
                  Application.start
         | 
| 19 | 
            +
                  Application.start(configuration)
         | 
| 20 20 |  | 
| 21 21 | 
             
                  @exit_code = 0
         | 
| 22 22 | 
             
                ensure
         | 
| @@ -24,5 +24,15 @@ module Vedeu | |
| 24 24 | 
             
                  @kernel.exit(@exit_code)
         | 
| 25 25 | 
             
                end
         | 
| 26 26 | 
             
                # :nocov:
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                private
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                attr_reader :argv
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                # :nocov:
         | 
| 33 | 
            +
                def configuration
         | 
| 34 | 
            +
                  Configuration.configure(argv)
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
                # :nocov:
         | 
| 27 37 | 
             
              end
         | 
| 28 38 | 
             
            end
         | 
    
        data/lib/vedeu/output/colour.rb
    CHANGED
    
    | @@ -1,12 +1,11 @@ | |
| 1 1 | 
             
            module Vedeu
         | 
| 2 2 | 
             
              class Colour
         | 
| 3 3 | 
             
                class << self
         | 
| 4 | 
            -
                  def  | 
| 4 | 
            +
                  def set(pair = [])
         | 
| 5 5 | 
             
                    return '' if pair.empty?
         | 
| 6 6 |  | 
| 7 | 
            -
                    new(pair). | 
| 7 | 
            +
                    new(pair).set
         | 
| 8 8 | 
             
                  end
         | 
| 9 | 
            -
                  alias_method :set, :define
         | 
| 10 9 |  | 
| 11 10 | 
             
                  def reset
         | 
| 12 11 | 
             
                    new.reset
         | 
| @@ -17,10 +16,9 @@ module Vedeu | |
| 17 16 | 
             
                  @pair = pair || []
         | 
| 18 17 | 
             
                end
         | 
| 19 18 |  | 
| 20 | 
            -
                def  | 
| 19 | 
            +
                def set
         | 
| 21 20 | 
             
                  [foreground, background].join
         | 
| 22 21 | 
             
                end
         | 
| 23 | 
            -
                alias_method :set, :define
         | 
| 24 22 |  | 
| 25 23 | 
             
                def reset
         | 
| 26 24 | 
             
                  [foreground(:default), background(:default)].join
         | 
| @@ -29,12 +27,10 @@ module Vedeu | |
| 29 27 | 
             
                def foreground(value = pair[0])
         | 
| 30 28 | 
             
                  @foreground ||= Foreground.escape_sequence(value)
         | 
| 31 29 | 
             
                end
         | 
| 32 | 
            -
                alias_method :fg, :foreground
         | 
| 33 30 |  | 
| 34 31 | 
             
                def background(value = pair[1])
         | 
| 35 32 | 
             
                  @background ||= Background.escape_sequence(value)
         | 
| 36 33 | 
             
                end
         | 
| 37 | 
            -
                alias_method :bg, :background
         | 
| 38 34 |  | 
| 39 35 | 
             
                private
         | 
| 40 36 |  | 
    
        data/lib/vedeu/output/cursor.rb
    CHANGED
    
    | @@ -25,29 +25,25 @@ module Vedeu | |
| 25 25 | 
             
                def right(count = 1)
         | 
| 26 26 | 
             
                  [Esc.esc, "#{count || 1}", 'C'].join
         | 
| 27 27 | 
             
                end
         | 
| 28 | 
            -
                alias_method :forward, :right
         | 
| 29 28 |  | 
| 30 29 | 
             
                def left(count = 1)
         | 
| 31 30 | 
             
                  [Esc.esc, "#{count || 1}", 'D'].join
         | 
| 32 31 | 
             
                end
         | 
| 33 | 
            -
                alias_method :backward, :left
         | 
| 34 32 |  | 
| 35 33 | 
             
                def save
         | 
| 36 34 | 
             
                  [Esc.esc, 's'].join
         | 
| 37 35 | 
             
                end
         | 
| 38 36 |  | 
| 39 | 
            -
                def  | 
| 37 | 
            +
                def restore
         | 
| 40 38 | 
             
                  [Esc.esc, 'u'].join
         | 
| 41 39 | 
             
                end
         | 
| 42 | 
            -
                alias_method :restore, :unsave
         | 
| 43 40 |  | 
| 44 41 | 
             
                def save_all
         | 
| 45 42 | 
             
                  [Esc.esc, '7'].join
         | 
| 46 43 | 
             
                end
         | 
| 47 44 |  | 
| 48 | 
            -
                def  | 
| 45 | 
            +
                def restore_all
         | 
| 49 46 | 
             
                  [Esc.esc, '8'].join
         | 
| 50 47 | 
             
                end
         | 
| 51 | 
            -
                alias_method :restore_all, :unsave_all
         | 
| 52 48 | 
             
              end
         | 
| 53 49 | 
             
            end
         | 
    
        data/lib/vedeu/output/esc.rb
    CHANGED
    
    
| @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            module Vedeu
         | 
| 2 | 
            +
              class Menu
         | 
| 3 | 
            +
                attr_accessor :label, :value
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                def initialize(attributes = {})
         | 
| 6 | 
            +
                  @attributes = attributes || {}
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def label
         | 
| 10 | 
            +
                  attributes[:label] || defaults[:label]
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def value
         | 
| 14 | 
            +
                  attributes[:value] || defaults[:value]
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                private
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                def defaults
         | 
| 20 | 
            +
                  {
         | 
| 21 | 
            +
                    label: '',
         | 
| 22 | 
            +
                    value: ''
         | 
| 23 | 
            +
                  }
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
            end
         | 
| @@ -2,10 +2,11 @@ module Vedeu | |
| 2 2 | 
             
              class Command
         | 
| 3 3 | 
             
                include Virtus.model
         | 
| 4 4 |  | 
| 5 | 
            -
                attribute :name, | 
| 6 | 
            -
                attribute :entity, | 
| 7 | 
            -
                attribute :keyword, | 
| 8 | 
            -
                attribute :keypress, | 
| 5 | 
            +
                attribute :name,      String
         | 
| 6 | 
            +
                attribute :entity,    Class
         | 
| 7 | 
            +
                attribute :keyword,   String, default: ''
         | 
| 8 | 
            +
                attribute :keypress,  String, default: ''
         | 
| 9 | 
            +
                attribute :arguments, Array,  default: []
         | 
| 9 10 |  | 
| 10 11 | 
             
                def execute(args = [])
         | 
| 11 12 | 
             
                  executable.call(*args)
         | 
| @@ -22,13 +22,12 @@ module Vedeu | |
| 22 22 |  | 
| 23 23 | 
             
              # :nocov:
         | 
| 24 24 | 
             
              module ClassMethods
         | 
| 25 | 
            -
                def command(name,  | 
| 25 | 
            +
                def command(name, options = {})
         | 
| 26 | 
            +
                  command_name = name.is_a?(Symbol) ? name.to_s : name
         | 
| 27 | 
            +
             | 
| 26 28 | 
             
                  CommandRepository.create({
         | 
| 27 | 
            -
                    name: | 
| 28 | 
            -
             | 
| 29 | 
            -
                    keypress: keypress,
         | 
| 30 | 
            -
                    keyword:  keyword
         | 
| 31 | 
            -
                  })
         | 
| 29 | 
            +
                    name: command_name
         | 
| 30 | 
            +
                  }.merge!(options))
         | 
| 32 31 | 
             
                end
         | 
| 33 32 | 
             
              end
         | 
| 34 33 | 
             
              # :nocov:
         | 
    
        data/lib/vedeu/support/queue.rb
    CHANGED
    
    
| @@ -43,7 +43,6 @@ module Vedeu | |
| 43 43 | 
             
                      yield instance
         | 
| 44 44 | 
             
                    end if block_given?
         | 
| 45 45 | 
             
                  end
         | 
| 46 | 
            -
                  alias_method :open_cooked, :cooked
         | 
| 47 46 |  | 
| 48 47 | 
             
                  def raw(instance, &block)
         | 
| 49 48 | 
             
                    console.raw do
         | 
| @@ -52,7 +51,6 @@ module Vedeu | |
| 52 51 | 
             
                      yield instance
         | 
| 53 52 | 
             
                    end if block_given?
         | 
| 54 53 | 
             
                  end
         | 
| 55 | 
            -
                  alias_method :open_raw, :raw
         | 
| 56 54 | 
             
                  # :nocov:
         | 
| 57 55 |  | 
| 58 56 | 
             
                  def console
         | 
| @@ -81,6 +79,8 @@ module Vedeu | |
| 81 79 | 
             
                  end
         | 
| 82 80 |  | 
| 83 81 | 
             
                  def reset_position
         | 
| 82 | 
            +
                    puts
         | 
| 83 | 
            +
             | 
| 84 84 | 
             
                    clear_line(height - 1)
         | 
| 85 85 | 
             
                  end
         | 
| 86 86 | 
             
                end
         | 
    
        data/lib/vedeu/version.rb
    CHANGED
    
    
    
        data/logs/.gitkeep
    ADDED
    
    | 
            File without changes
         | 
| @@ -16,12 +16,27 @@ module Vedeu | |
| 16 16 | 
             
                  before do
         | 
| 17 17 | 
             
                    Terminal.stubs(:open).yields(self)
         | 
| 18 18 | 
             
                    Output.stubs(:render)
         | 
| 19 | 
            -
                     | 
| 19 | 
            +
                    Input.stubs(:capture)
         | 
| 20 | 
            +
                    Process.stubs(:evaluate)
         | 
| 20 21 | 
             
                    Terminal.stubs(:close)
         | 
| 21 22 | 
             
                  end
         | 
| 22 23 |  | 
| 23 | 
            -
                   | 
| 24 | 
            -
                     | 
| 24 | 
            +
                  context 'when the application should run interactively' do
         | 
| 25 | 
            +
                    let(:options) { { interactive: true } }
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                    before { Process.stubs(:evaluate).raises(StopIteration) }
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    it 'returns a NilClass' do
         | 
| 30 | 
            +
                      subject.must_be_instance_of(NilClass)
         | 
| 31 | 
            +
                    end
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                  context 'when the application should run once' do
         | 
| 35 | 
            +
                    let(:options) { { interactive: false } }
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    it 'returns a NilClass' do
         | 
| 38 | 
            +
                      subject.must_be_instance_of(NilClass)
         | 
| 39 | 
            +
                    end
         | 
| 25 40 | 
             
                  end
         | 
| 26 41 | 
             
                end
         | 
| 27 42 | 
             
              end
         | 
| @@ -0,0 +1,38 @@ | |
| 1 | 
            +
            require_relative '../../test_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Vedeu
         | 
| 4 | 
            +
              describe Configuration do
         | 
| 5 | 
            +
                let(:described_class)    { Configuration }
         | 
| 6 | 
            +
                let(:described_instance) { described_class.new(args) }
         | 
| 7 | 
            +
                let(:args)               { [] }
         | 
| 8 | 
            +
                let(:subject)            { described_instance }
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                it 'returns a Configuration instance' do
         | 
| 11 | 
            +
                  subject.must_be_instance_of(Configuration)
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                it 'sets an instance variable' do
         | 
| 15 | 
            +
                  subject.instance_variable_get('@args').must_equal([])
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                it 'sets an instance variable' do
         | 
| 19 | 
            +
                  subject.instance_variable_get('@options').must_equal({})
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                describe '#configure' do
         | 
| 23 | 
            +
                  let(:subject) { described_class.configure(args) }
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  it 'returns a Hash' do
         | 
| 26 | 
            +
                    subject.must_be_instance_of(Hash)
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  context 'when the option is --run-once' do
         | 
| 30 | 
            +
                    let(:args) { ['--run-once'] }
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                    it 'returns the options which instructs Vedeu to run once' do
         | 
| 33 | 
            +
                      subject.must_equal({ interactive: false })
         | 
| 34 | 
            +
                    end
         | 
| 35 | 
            +
                  end
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
            end
         | 
| @@ -136,8 +136,8 @@ module Vedeu | |
| 136 136 | 
             
                  end
         | 
| 137 137 | 
             
                end
         | 
| 138 138 |  | 
| 139 | 
            -
                describe '. | 
| 140 | 
            -
                  let(:subject) { described_class. | 
| 139 | 
            +
                describe '.restore' do
         | 
| 140 | 
            +
                  let(:subject) { described_class.restore }
         | 
| 141 141 |  | 
| 142 142 | 
             
                  it 'returns a String' do
         | 
| 143 143 | 
             
                    subject.must_be_instance_of(String)
         | 
| @@ -160,8 +160,8 @@ module Vedeu | |
| 160 160 | 
             
                  end
         | 
| 161 161 | 
             
                end
         | 
| 162 162 |  | 
| 163 | 
            -
                describe '. | 
| 164 | 
            -
                  let(:subject) { described_class. | 
| 163 | 
            +
                describe '.restore_all' do
         | 
| 164 | 
            +
                  let(:subject) { described_class.restore_all }
         | 
| 165 165 |  | 
| 166 166 | 
             
                  it 'returns a String' do
         | 
| 167 167 | 
             
                    subject.must_be_instance_of(String)
         | 
| @@ -0,0 +1,13 @@ | |
| 1 | 
            +
            require_relative '../../../test_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Vedeu
         | 
| 4 | 
            +
              describe Menu do
         | 
| 5 | 
            +
                let(:described_class)    { Menu }
         | 
| 6 | 
            +
                let(:described_instance) { described_class.new(index) }
         | 
| 7 | 
            +
                let(:index)              {}
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                it 'returns a Menu instance' do
         | 
| 10 | 
            +
                  described_instance.must_be_instance_of(Menu)
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
            end
         | 
| @@ -48,7 +48,7 @@ module Vedeu | |
| 48 48 | 
             
                      let(:result) { :stop }
         | 
| 49 49 |  | 
| 50 50 | 
             
                      it 'raises an exception' do
         | 
| 51 | 
            -
                        proc { subject }.must_raise( | 
| 51 | 
            +
                        proc { subject }.must_raise(StopIteration)
         | 
| 52 52 | 
             
                      end
         | 
| 53 53 | 
             
                    end
         | 
| 54 54 |  | 
| @@ -74,7 +74,7 @@ module Vedeu | |
| 74 74 | 
             
                      let(:result) { :stop }
         | 
| 75 75 |  | 
| 76 76 | 
             
                      it 'raises an exception' do
         | 
| 77 | 
            -
                        proc { subject }.must_raise( | 
| 77 | 
            +
                        proc { subject }.must_raise(StopIteration)
         | 
| 78 78 | 
             
                      end
         | 
| 79 79 | 
             
                    end
         | 
| 80 80 |  | 
| @@ -7,10 +7,11 @@ module Vedeu | |
| 7 7 | 
             
                let(:subject)            { described_instance }
         | 
| 8 8 | 
             
                let(:attributes)         {
         | 
| 9 9 | 
             
                  {
         | 
| 10 | 
            -
                    name: | 
| 11 | 
            -
                    entity: | 
| 12 | 
            -
                    keyword: | 
| 13 | 
            -
                    keypress: | 
| 10 | 
            +
                    name:      'dummy',
         | 
| 11 | 
            +
                    entity:    DummyCommand,
         | 
| 12 | 
            +
                    keyword:   "dummy",
         | 
| 13 | 
            +
                    keypress:  "d",
         | 
| 14 | 
            +
                    arguments: []
         | 
| 14 15 | 
             
                  }
         | 
| 15 16 | 
             
                }
         | 
| 16 17 |  | 
| @@ -42,6 +43,12 @@ module Vedeu | |
| 42 43 | 
             
                  subject.keyword.must_equal('dummy')
         | 
| 43 44 | 
             
                end
         | 
| 44 45 |  | 
| 46 | 
            +
                it 'has an arguments attribute' do
         | 
| 47 | 
            +
                  subject.arguments.must_be_instance_of(Array)
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                  subject.arguments.must_equal([])
         | 
| 50 | 
            +
                end
         | 
| 51 | 
            +
             | 
| 45 52 | 
             
                describe '#execute' do
         | 
| 46 53 | 
             
                  let(:subject) { described_instance.execute(args) }
         | 
| 47 54 | 
             
                  let(:args)    { [] }
         | 
| @@ -3,8 +3,7 @@ require_relative '../../../test_helper' | |
| 3 3 | 
             
            module Vedeu
         | 
| 4 4 | 
             
              describe JSONParser do
         | 
| 5 5 | 
             
                let(:described_class)    { JSONParser }
         | 
| 6 | 
            -
                let(: | 
| 7 | 
            -
                let(:subject)            { described_instance }
         | 
| 6 | 
            +
                let(:subject)            { described_class.new(json) }
         | 
| 8 7 | 
             
                let(:json)               { "[]" }
         | 
| 9 8 |  | 
| 10 9 | 
             
                it 'returns a JSONParser instance' do
         | 
| @@ -24,7 +23,7 @@ module Vedeu | |
| 24 23 | 
             
                end
         | 
| 25 24 |  | 
| 26 25 | 
             
                describe '#parse' do
         | 
| 27 | 
            -
                  let(:subject) {  | 
| 26 | 
            +
                  let(:subject) { described_class.parse(json) }
         | 
| 28 27 |  | 
| 29 28 | 
             
                  context 'when the JSON contains a single interface' do
         | 
| 30 29 | 
             
                    let(:json) { File.read('test/support/single_interface.json') }
         | 
    
        data/test/test_helper.rb
    CHANGED
    
    
    
        data/vedeu.gemspec
    CHANGED
    
    | @@ -28,7 +28,7 @@ Gem::Specification.new do |spec| | |
| 28 28 | 
             
              spec.add_development_dependency 'mocha',              '1.1.0'
         | 
| 29 29 | 
             
              spec.add_development_dependency 'pry',                '0.10.0'
         | 
| 30 30 | 
             
              spec.add_development_dependency 'rake',               '10.3.2'
         | 
| 31 | 
            -
              spec.add_development_dependency ' | 
| 31 | 
            +
              spec.add_development_dependency 'ruby-prof'
         | 
| 32 32 | 
             
              spec.add_development_dependency 'simplecov',          '0.8.2'
         | 
| 33 33 |  | 
| 34 34 | 
             
              spec.add_dependency "oj"
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: vedeu
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.25
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Gavin Laking
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2014-06- | 
| 11 | 
            +
            date: 2014-06-27 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: aruba
         | 
| @@ -165,7 +165,7 @@ dependencies: | |
| 165 165 | 
             
                  - !ruby/object:Gem::Version
         | 
| 166 166 | 
             
                    version: 10.3.2
         | 
| 167 167 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 168 | 
            -
              name:  | 
| 168 | 
            +
              name: ruby-prof
         | 
| 169 169 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 170 170 | 
             
                requirements:
         | 
| 171 171 | 
             
                - - ">="
         | 
| @@ -230,7 +230,6 @@ extensions: [] | |
| 230 230 | 
             
            extra_rdoc_files: []
         | 
| 231 231 | 
             
            files:
         | 
| 232 232 | 
             
            - ".gitignore"
         | 
| 233 | 
            -
            - ".rubocop.yml"
         | 
| 234 233 | 
             
            - ".ruby-version"
         | 
| 235 234 | 
             
            - Gemfile
         | 
| 236 235 | 
             
            - Guardfile
         | 
| @@ -250,11 +249,13 @@ files: | |
| 250 249 | 
             
            - documentation/diagram/StyleDirective.png
         | 
| 251 250 | 
             
            - documentation/diagram/rr-1.35.837.png
         | 
| 252 251 | 
             
            - documentation/index.html
         | 
| 252 | 
            +
            - examples/single_interface_app.rb
         | 
| 253 253 | 
             
            - features/getting_started.feature
         | 
| 254 254 | 
             
            - features/step_definitions/vedeu_steps.rb
         | 
| 255 255 | 
             
            - features/support/env.rb
         | 
| 256 256 | 
             
            - lib/vedeu.rb
         | 
| 257 257 | 
             
            - lib/vedeu/application.rb
         | 
| 258 | 
            +
            - lib/vedeu/configuration.rb
         | 
| 258 259 | 
             
            - lib/vedeu/input/input.rb
         | 
| 259 260 | 
             
            - lib/vedeu/launcher.rb
         | 
| 260 261 | 
             
            - lib/vedeu/output/background.rb
         | 
| @@ -273,9 +274,9 @@ files: | |
| 273 274 | 
             
            - lib/vedeu/output/foreground.rb
         | 
| 274 275 | 
             
            - lib/vedeu/output/geometry.rb
         | 
| 275 276 | 
             
            - lib/vedeu/output/layer.rb
         | 
| 277 | 
            +
            - lib/vedeu/output/menu.rb
         | 
| 276 278 | 
             
            - lib/vedeu/output/output.rb
         | 
| 277 279 | 
             
            - lib/vedeu/output/position.rb
         | 
| 278 | 
            -
            - lib/vedeu/output/renderer.rb
         | 
| 279 280 | 
             
            - lib/vedeu/output/style.rb
         | 
| 280 281 | 
             
            - lib/vedeu/output/translator.rb
         | 
| 281 282 | 
             
            - lib/vedeu/output/wordwrap.rb
         | 
| @@ -288,13 +289,15 @@ files: | |
| 288 289 | 
             
            - lib/vedeu/repository/interface_repository.rb
         | 
| 289 290 | 
             
            - lib/vedeu/repository/repository.rb
         | 
| 290 291 | 
             
            - lib/vedeu/repository/storage.rb
         | 
| 291 | 
            -
            - lib/vedeu/support/event_loop.rb
         | 
| 292 292 | 
             
            - lib/vedeu/support/exit.rb
         | 
| 293 293 | 
             
            - lib/vedeu/support/json_parser.rb
         | 
| 294 | 
            +
            - lib/vedeu/support/options.rb
         | 
| 294 295 | 
             
            - lib/vedeu/support/queue.rb
         | 
| 295 296 | 
             
            - lib/vedeu/support/terminal.rb
         | 
| 296 297 | 
             
            - lib/vedeu/version.rb
         | 
| 298 | 
            +
            - logs/.gitkeep
         | 
| 297 299 | 
             
            - test/lib/vedeu/application_test.rb
         | 
| 300 | 
            +
            - test/lib/vedeu/configuration_test.rb
         | 
| 298 301 | 
             
            - test/lib/vedeu/input/input_test.rb
         | 
| 299 302 | 
             
            - test/lib/vedeu/launcher_test.rb
         | 
| 300 303 | 
             
            - test/lib/vedeu/output/background_test.rb
         | 
| @@ -313,9 +316,9 @@ files: | |
| 313 316 | 
             
            - test/lib/vedeu/output/foreground_test.rb
         | 
| 314 317 | 
             
            - test/lib/vedeu/output/geometry_test.rb
         | 
| 315 318 | 
             
            - test/lib/vedeu/output/layer_test.rb
         | 
| 319 | 
            +
            - test/lib/vedeu/output/menu_test.rb
         | 
| 316 320 | 
             
            - test/lib/vedeu/output/output_test.rb
         | 
| 317 321 | 
             
            - test/lib/vedeu/output/position_test.rb
         | 
| 318 | 
            -
            - test/lib/vedeu/output/renderer_test.rb
         | 
| 319 322 | 
             
            - test/lib/vedeu/output/style_test.rb
         | 
| 320 323 | 
             
            - test/lib/vedeu/output/translator_test.rb
         | 
| 321 324 | 
             
            - test/lib/vedeu/output/wordwrap_test.rb
         | 
| @@ -328,7 +331,6 @@ files: | |
| 328 331 | 
             
            - test/lib/vedeu/repository/interface_test.rb
         | 
| 329 332 | 
             
            - test/lib/vedeu/repository/repository_test.rb
         | 
| 330 333 | 
             
            - test/lib/vedeu/repository/storage_test.rb
         | 
| 331 | 
            -
            - test/lib/vedeu/support/event_loop_test.rb
         | 
| 332 334 | 
             
            - test/lib/vedeu/support/exit_test.rb
         | 
| 333 335 | 
             
            - test/lib/vedeu/support/json_parser_test.rb
         | 
| 334 336 | 
             
            - test/lib/vedeu/support/queue_test.rb
         | 
| @@ -372,6 +374,7 @@ test_files: | |
| 372 374 | 
             
            - features/step_definitions/vedeu_steps.rb
         | 
| 373 375 | 
             
            - features/support/env.rb
         | 
| 374 376 | 
             
            - test/lib/vedeu/application_test.rb
         | 
| 377 | 
            +
            - test/lib/vedeu/configuration_test.rb
         | 
| 375 378 | 
             
            - test/lib/vedeu/input/input_test.rb
         | 
| 376 379 | 
             
            - test/lib/vedeu/launcher_test.rb
         | 
| 377 380 | 
             
            - test/lib/vedeu/output/background_test.rb
         | 
| @@ -390,9 +393,9 @@ test_files: | |
| 390 393 | 
             
            - test/lib/vedeu/output/foreground_test.rb
         | 
| 391 394 | 
             
            - test/lib/vedeu/output/geometry_test.rb
         | 
| 392 395 | 
             
            - test/lib/vedeu/output/layer_test.rb
         | 
| 396 | 
            +
            - test/lib/vedeu/output/menu_test.rb
         | 
| 393 397 | 
             
            - test/lib/vedeu/output/output_test.rb
         | 
| 394 398 | 
             
            - test/lib/vedeu/output/position_test.rb
         | 
| 395 | 
            -
            - test/lib/vedeu/output/renderer_test.rb
         | 
| 396 399 | 
             
            - test/lib/vedeu/output/style_test.rb
         | 
| 397 400 | 
             
            - test/lib/vedeu/output/translator_test.rb
         | 
| 398 401 | 
             
            - test/lib/vedeu/output/wordwrap_test.rb
         | 
| @@ -405,7 +408,6 @@ test_files: | |
| 405 408 | 
             
            - test/lib/vedeu/repository/interface_test.rb
         | 
| 406 409 | 
             
            - test/lib/vedeu/repository/repository_test.rb
         | 
| 407 410 | 
             
            - test/lib/vedeu/repository/storage_test.rb
         | 
| 408 | 
            -
            - test/lib/vedeu/support/event_loop_test.rb
         | 
| 409 411 | 
             
            - test/lib/vedeu/support/exit_test.rb
         | 
| 410 412 | 
             
            - test/lib/vedeu/support/json_parser_test.rb
         | 
| 411 413 | 
             
            - test/lib/vedeu/support/queue_test.rb
         | 
    
        data/.rubocop.yml
    DELETED
    
    
| @@ -1,33 +0,0 @@ | |
| 1 | 
            -
            module Vedeu
         | 
| 2 | 
            -
              class Collapse < StandardError; end
         | 
| 3 | 
            -
             | 
| 4 | 
            -
              class EventLoop
         | 
| 5 | 
            -
                class << self
         | 
| 6 | 
            -
                  def main_sequence
         | 
| 7 | 
            -
                    new.main_sequence
         | 
| 8 | 
            -
                  end
         | 
| 9 | 
            -
                end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                def initialize
         | 
| 12 | 
            -
                  @running = true
         | 
| 13 | 
            -
                end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                # :nocov:
         | 
| 16 | 
            -
                def main_sequence
         | 
| 17 | 
            -
                  while @running do
         | 
| 18 | 
            -
                    Input.capture
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                    Process.evaluate
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                    Output.render
         | 
| 23 | 
            -
                  end
         | 
| 24 | 
            -
                rescue Collapse
         | 
| 25 | 
            -
                  stop
         | 
| 26 | 
            -
                end
         | 
| 27 | 
            -
                # :nocov:
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                def stop
         | 
| 30 | 
            -
                  @running = false
         | 
| 31 | 
            -
                end
         | 
| 32 | 
            -
              end
         | 
| 33 | 
            -
            end
         | 
| @@ -1,13 +0,0 @@ | |
| 1 | 
            -
            require_relative '../../../test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Vedeu
         | 
| 4 | 
            -
              describe Renderer do
         | 
| 5 | 
            -
                let(:described_class)    { Renderer }
         | 
| 6 | 
            -
                let(:described_instance) { described_class.new }
         | 
| 7 | 
            -
                let(:subject)            { described_instance }
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                it 'returns a Renderer instance' do
         | 
| 10 | 
            -
                  subject.must_be_instance_of(Renderer)
         | 
| 11 | 
            -
                end
         | 
| 12 | 
            -
              end
         | 
| 13 | 
            -
            end
         | 
| @@ -1,39 +0,0 @@ | |
| 1 | 
            -
            require_relative '../../../test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Vedeu
         | 
| 4 | 
            -
              describe EventLoop do
         | 
| 5 | 
            -
                let(:described_class) { EventLoop }
         | 
| 6 | 
            -
                let(:defined)         { mock }
         | 
| 7 | 
            -
                let(:subject)         { described_class.new }
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                before do
         | 
| 10 | 
            -
                  Input.stubs(:capture)
         | 
| 11 | 
            -
                  Process.stubs(:evaluate).raises(Collapse)
         | 
| 12 | 
            -
                  Output.stubs(:render)
         | 
| 13 | 
            -
                end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                it 'returns an EventLoop instance' do
         | 
| 16 | 
            -
                  subject.must_be_instance_of(EventLoop)
         | 
| 17 | 
            -
                end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                it 'sets an instance variable' do
         | 
| 20 | 
            -
                  subject.instance_variable_get('@running').must_equal(true)
         | 
| 21 | 
            -
                end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                describe '.main_sequence' do
         | 
| 24 | 
            -
                  let(:subject) { described_class.main_sequence }
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                  it 'returns a FalseClass' do
         | 
| 27 | 
            -
                    subject.must_be_instance_of(FalseClass)
         | 
| 28 | 
            -
                  end
         | 
| 29 | 
            -
                end
         | 
| 30 | 
            -
             | 
| 31 | 
            -
                describe '#stop' do
         | 
| 32 | 
            -
                  let(:subject) { described_class.new.stop }
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                  it 'returns a FalseClass' do
         | 
| 35 | 
            -
                    subject.must_be_instance_of(FalseClass)
         | 
| 36 | 
            -
                  end
         | 
| 37 | 
            -
                end
         | 
| 38 | 
            -
              end
         | 
| 39 | 
            -
            end
         |