vedeu 0.6.12 → 0.6.13
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/vedeu/bindings/application.rb +4 -0
- data/lib/vedeu/bindings/document.rb +4 -0
- data/lib/vedeu/bindings/focus.rb +4 -0
- data/lib/vedeu/bindings/menus.rb +4 -0
- data/lib/vedeu/bindings/movement.rb +4 -0
- data/lib/vedeu/bindings/refresh.rb +4 -0
- data/lib/vedeu/bindings/system.rb +4 -0
- data/lib/vedeu/bindings/visibility.rb +4 -0
- data/lib/vedeu/borders/dsl.rb +2 -3
- data/lib/vedeu/configuration/api.rb +26 -0
- data/lib/vedeu/configuration/configuration.rb +16 -0
- data/lib/vedeu/dsl/composition.rb +2 -3
- data/lib/vedeu/dsl/group.rb +2 -3
- data/lib/vedeu/dsl/interface.rb +2 -4
- data/lib/vedeu/dsl/keymap.rb +24 -21
- data/lib/vedeu/dsl/line.rb +4 -6
- data/lib/vedeu/dsl/presentation.rb +16 -12
- data/lib/vedeu/dsl/shared.rb +18 -14
- data/lib/vedeu/dsl/stream.rb +2 -3
- data/lib/vedeu/dsl/text.rb +6 -4
- data/lib/vedeu/dsl/view.rb +6 -8
- data/lib/vedeu/error.rb +12 -0
- data/lib/vedeu/geometry/area.rb +4 -2
- data/lib/vedeu/geometry/coordinate.rb +4 -4
- data/lib/vedeu/geometry/dimension.rb +6 -4
- data/lib/vedeu/geometry/dsl.rb +55 -43
- data/lib/vedeu/geometry/generic_coordinate.rb +4 -3
- data/lib/vedeu/geometry/geometry.rb +13 -11
- data/lib/vedeu/geometry/grid.rb +6 -5
- data/lib/vedeu/geometry/position.rb +12 -10
- data/lib/vedeu/input/key.rb +2 -3
- data/lib/vedeu/logging/log.rb +1 -1
- data/lib/vedeu/menus/menu.rb +2 -3
- data/lib/vedeu/models/views/view.rb +0 -2
- data/lib/vedeu/output/output.rb +10 -1
- data/lib/vedeu/output/renderers/file.rb +3 -3
- data/lib/vedeu/output/renderers/json.rb +2 -0
- data/lib/vedeu/runtime/main_loop.rb +4 -0
- data/lib/vedeu/templating/helpers.rb +4 -7
- data/lib/vedeu/terminal/buffer.rb +1 -2
- data/lib/vedeu/terminal/terminal.rb +4 -2
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/api/external_test.rb +14 -2
- data/test/lib/vedeu/bindings/visibility_test.rb +15 -0
- data/test/lib/vedeu/dsl/composition_test.rb +1 -1
- data/test/lib/vedeu/dsl/group_test.rb +1 -1
- data/test/lib/vedeu/dsl/interface_test.rb +3 -3
- data/test/lib/vedeu/dsl/line_test.rb +2 -2
- data/test/lib/vedeu/dsl/stream_test.rb +1 -1
- data/test/lib/vedeu/dsl/view_test.rb +3 -3
- data/test/lib/vedeu/error_test.rb +13 -0
- data/test/lib/vedeu/input/key_test.rb +1 -1
- data/test/lib/vedeu/menus/menu_test.rb +1 -1
- data/test/lib/vedeu/models/interface_test.rb +26 -0
- data/test/lib/vedeu/output/renderers/escape_sequence_test.rb +7 -0
- data/test/lib/vedeu/output/renderers/file_test.rb +7 -0
- data/test/lib/vedeu/output/renderers/html_test.rb +7 -0
- data/test/lib/vedeu/output/renderers/json_test.rb +7 -0
- data/test/lib/vedeu/output/renderers/null_test.rb +7 -0
- data/test/lib/vedeu/output/renderers/terminal_test.rb +11 -0
- data/test/lib/vedeu/output/renderers/text_test.rb +7 -0
- data/test/lib/vedeu/terminal/buffer_test.rb +31 -12
- data/test/lib/vedeu/terminal/terminal_test.rb +24 -21
- data/test/support/examples/material_colours_app.rb +2 -0
- data/test/test_helper.rb +2 -2
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 31c6be7113f82b029855008aaaf699fbd567ae33
         | 
| 4 | 
            +
              data.tar.gz: 1bf5c6c64eb63d6332af2645be09bf0103fc19e8
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 24727ce127fde1301bddc57102f7814fde4fb73f020012cbe0bf5d1d13c7b4023a0457691f1815f6e4ee6f5d53160843a003b53ba9dc231b12b9df8b8ac34e87
         | 
| 7 | 
            +
              data.tar.gz: 310d942055981700a8b3f7381291b0c1a29517c85531be676eee43ff877a6dba875f53b57a424d7863949c9f975b3dba66e766d811347e634fed7f074b8edae4
         | 
| @@ -18,6 +18,8 @@ module Vedeu | |
| 18 18 |  | 
| 19 19 | 
             
                  private
         | 
| 20 20 |  | 
| 21 | 
            +
                  # :nocov:
         | 
| 22 | 
            +
             | 
| 21 23 | 
             
                  # See {file:docs/events/application.md#\_goto_}
         | 
| 22 24 | 
             
                  def goto!
         | 
| 23 25 | 
             
                    Vedeu.bind(:_goto_) do |controller, action, **args|
         | 
| @@ -27,6 +29,8 @@ module Vedeu | |
| 27 29 | 
             
                    Vedeu.bind_alias(:_action_, :_goto_)
         | 
| 28 30 | 
             
                  end
         | 
| 29 31 |  | 
| 32 | 
            +
                  # :nocov:
         | 
| 33 | 
            +
             | 
| 30 34 | 
             
                end # Application
         | 
| 31 35 |  | 
| 32 36 | 
             
              end # Bindings
         | 
| @@ -27,6 +27,8 @@ module Vedeu | |
| 27 27 |  | 
| 28 28 | 
             
                  private
         | 
| 29 29 |  | 
| 30 | 
            +
                  # :nocov:
         | 
| 31 | 
            +
             | 
| 30 32 | 
             
                  # See {file:docs/events/document.md#\_editor_execute_}
         | 
| 31 33 | 
             
                  def editor_execute!
         | 
| 32 34 | 
             
                    Vedeu.bind(:_editor_execute_) do |name|
         | 
| @@ -86,6 +88,8 @@ module Vedeu | |
| 86 88 | 
             
                    Vedeu.bind(:_editor_up_) { |name| Vedeu.documents.by_name(name).up }
         | 
| 87 89 | 
             
                  end
         | 
| 88 90 |  | 
| 91 | 
            +
                  # :nocov:
         | 
| 92 | 
            +
             | 
| 89 93 | 
             
                end # Document
         | 
| 90 94 |  | 
| 91 95 | 
             
              end # Bindings
         | 
    
        data/lib/vedeu/bindings/focus.rb
    CHANGED
    
    | @@ -18,6 +18,8 @@ module Vedeu | |
| 18 18 |  | 
| 19 19 | 
             
                  private
         | 
| 20 20 |  | 
| 21 | 
            +
                  # :nocov:
         | 
| 22 | 
            +
             | 
| 21 23 | 
             
                  # See {file:docs/events/focus.md#\_focus_by_name_}
         | 
| 22 24 | 
             
                  def focus_by_name!
         | 
| 23 25 | 
             
                    Vedeu.bind(:_focus_by_name_) { |name| Vedeu.focus_by_name(name) }
         | 
| @@ -33,6 +35,8 @@ module Vedeu | |
| 33 35 | 
             
                    Vedeu.bind(:_focus_prev_) { Vedeu.focus_previous }
         | 
| 34 36 | 
             
                  end
         | 
| 35 37 |  | 
| 38 | 
            +
                  # :nocov:
         | 
| 39 | 
            +
             | 
| 36 40 | 
             
                end # Focus
         | 
| 37 41 |  | 
| 38 42 | 
             
              end # Bindings
         | 
    
        data/lib/vedeu/bindings/menus.rb
    CHANGED
    
    | @@ -28,6 +28,8 @@ module Vedeu | |
| 28 28 |  | 
| 29 29 | 
             
                  private
         | 
| 30 30 |  | 
| 31 | 
            +
                  # :nocov:
         | 
| 32 | 
            +
             | 
| 31 33 | 
             
                  # See {file:docs/events/menu.md#\_menu_bottom_}
         | 
| 32 34 | 
             
                  def menu_bottom!
         | 
| 33 35 | 
             
                    Vedeu.bind(:_menu_bottom_) do |name|
         | 
| @@ -88,6 +90,8 @@ module Vedeu | |
| 88 90 | 
             
                    Vedeu.bind(:_menu_view_) { |name| Vedeu.menus.by_name(name).view }
         | 
| 89 91 | 
             
                  end
         | 
| 90 92 |  | 
| 93 | 
            +
                  # :nocov:
         | 
| 94 | 
            +
             | 
| 91 95 | 
             
                end # Menus
         | 
| 92 96 |  | 
| 93 97 | 
             
              end # Bindings
         | 
| @@ -21,6 +21,8 @@ module Vedeu | |
| 21 21 |  | 
| 22 22 | 
             
                  private
         | 
| 23 23 |  | 
| 24 | 
            +
                  # :nocov:
         | 
| 25 | 
            +
             | 
| 24 26 | 
             
                  # See {file:docs/events/movement.md#\_cursor_up_down_left_right_}
         | 
| 25 27 | 
             
                  def directional!
         | 
| 26 28 | 
             
                    %w(down left right up).each do |direction|
         | 
| @@ -71,6 +73,8 @@ module Vedeu | |
| 71 73 | 
             
                    end
         | 
| 72 74 | 
             
                  end
         | 
| 73 75 |  | 
| 76 | 
            +
                  # :nocov:
         | 
| 77 | 
            +
             | 
| 74 78 | 
             
                end # Movement
         | 
| 75 79 |  | 
| 76 80 | 
             
              end # Bindings
         | 
| @@ -18,6 +18,8 @@ module Vedeu | |
| 18 18 |  | 
| 19 19 | 
             
                  private
         | 
| 20 20 |  | 
| 21 | 
            +
                  # :nocov:
         | 
| 22 | 
            +
             | 
| 21 23 | 
             
                  # See {file:docs/events/refresh.md#\_refresh_}
         | 
| 22 24 | 
             
                  def refresh!
         | 
| 23 25 | 
             
                    Vedeu.bind(:_refresh_) do |name|
         | 
| @@ -45,6 +47,8 @@ module Vedeu | |
| 45 47 | 
             
                    end
         | 
| 46 48 | 
             
                  end
         | 
| 47 49 |  | 
| 50 | 
            +
                  # :nocov:
         | 
| 51 | 
            +
             | 
| 48 52 | 
             
                end # Refresh
         | 
| 49 53 |  | 
| 50 54 | 
             
              end # Bindings
         | 
| @@ -27,6 +27,8 @@ module Vedeu | |
| 27 27 |  | 
| 28 28 | 
             
                  private
         | 
| 29 29 |  | 
| 30 | 
            +
                  # :nocov:
         | 
| 31 | 
            +
             | 
| 30 32 | 
             
                  # See {file:docs/events/system.md#\_cleanup_}
         | 
| 31 33 | 
             
                  def cleanup!
         | 
| 32 34 | 
             
                    Vedeu.bind(:_cleanup_) do
         | 
| @@ -104,6 +106,8 @@ module Vedeu | |
| 104 106 | 
             
                    end
         | 
| 105 107 | 
             
                  end
         | 
| 106 108 |  | 
| 109 | 
            +
                  # :nocov:
         | 
| 110 | 
            +
             | 
| 107 111 | 
             
                end # System
         | 
| 108 112 |  | 
| 109 113 | 
             
              end # Bindings
         | 
| @@ -28,6 +28,8 @@ module Vedeu | |
| 28 28 |  | 
| 29 29 | 
             
                  private
         | 
| 30 30 |  | 
| 31 | 
            +
                  # :nocov:
         | 
| 32 | 
            +
             | 
| 31 33 | 
             
                  # See {file:docs/events/visibility.md#\_clear_group_}
         | 
| 32 34 | 
             
                  def clear_group!
         | 
| 33 35 | 
             
                    Vedeu.bind(:_clear_group_) do |name|
         | 
| @@ -102,6 +104,8 @@ module Vedeu | |
| 102 104 | 
             
                    end
         | 
| 103 105 | 
             
                  end
         | 
| 104 106 |  | 
| 107 | 
            +
                  # :nocov:
         | 
| 108 | 
            +
             | 
| 105 109 | 
             
                end # Visibility
         | 
| 106 110 |  | 
| 107 111 | 
             
              end # Bindings
         | 
    
        data/lib/vedeu/borders/dsl.rb
    CHANGED
    
    | @@ -19,11 +19,10 @@ module Vedeu | |
| 19 19 | 
             
                  # @param name [String] The name of the interface or view to
         | 
| 20 20 | 
             
                  #   which this border belongs.
         | 
| 21 21 | 
             
                  # @param block [Proc]
         | 
| 22 | 
            -
                  # @raise [Vedeu::Error:: | 
| 23 | 
            -
                  #   The required block was not given.
         | 
| 22 | 
            +
                  # @raise [Vedeu::Error::RequiresBlock]
         | 
| 24 23 | 
             
                  # @return [Vedeu::Borders::Border]
         | 
| 25 24 | 
             
                  def self.border(name, &block)
         | 
| 26 | 
            -
                    fail Vedeu::Error:: | 
| 25 | 
            +
                    fail Vedeu::Error::RequiresBlock unless block_given?
         | 
| 27 26 |  | 
| 28 27 | 
             
                    Vedeu::Borders::Border.build(enabled: true, name: name, &block).store
         | 
| 29 28 | 
             
                  end
         | 
| @@ -269,6 +269,19 @@ module Vedeu | |
| 269 269 | 
             
                    options[:colour_mode] = value
         | 
| 270 270 | 
             
                  end
         | 
| 271 271 |  | 
| 272 | 
            +
                  # Sets the height of the terminal.
         | 
| 273 | 
            +
                  #
         | 
| 274 | 
            +
                  #   Vedeu.configure do
         | 
| 275 | 
            +
                  #     height 25
         | 
| 276 | 
            +
                  #     # ...
         | 
| 277 | 
            +
                  #   end
         | 
| 278 | 
            +
                  #
         | 
| 279 | 
            +
                  # @param height [Fixnum]
         | 
| 280 | 
            +
                  # @return [Fixnum]
         | 
| 281 | 
            +
                  def height(height = 25)
         | 
| 282 | 
            +
                    options[:height] = height
         | 
| 283 | 
            +
                  end
         | 
| 284 | 
            +
             | 
| 272 285 | 
             
                  # Sets the location of the log file.
         | 
| 273 286 | 
             
                  #
         | 
| 274 287 | 
             
                  #   Vedeu.configure do
         | 
| @@ -452,6 +465,19 @@ module Vedeu | |
| 452 465 | 
             
                    end
         | 
| 453 466 | 
             
                  end
         | 
| 454 467 |  | 
| 468 | 
            +
                  # Sets the width of the terminal.
         | 
| 469 | 
            +
                  #
         | 
| 470 | 
            +
                  #   Vedeu.configure do
         | 
| 471 | 
            +
                  #     width 80
         | 
| 472 | 
            +
                  #     # ...
         | 
| 473 | 
            +
                  #   end
         | 
| 474 | 
            +
                  #
         | 
| 475 | 
            +
                  # @param width [Fixnum]
         | 
| 476 | 
            +
                  # @return [Fixnum]
         | 
| 477 | 
            +
                  def width(width = 80)
         | 
| 478 | 
            +
                    options[:width] = width
         | 
| 479 | 
            +
                  end
         | 
| 480 | 
            +
             | 
| 455 481 | 
             
                  private
         | 
| 456 482 |  | 
| 457 483 | 
             
                  # Returns the options set via the configuration API DSL or an
         | 
| @@ -139,6 +139,13 @@ module Vedeu | |
| 139 139 | 
             
                    instance.options[:drb_width]
         | 
| 140 140 | 
             
                  end
         | 
| 141 141 |  | 
| 142 | 
            +
                  # Returns the client defined height for the terminal.
         | 
| 143 | 
            +
                  #
         | 
| 144 | 
            +
                  # @return [Fixnum]
         | 
| 145 | 
            +
                  def height
         | 
| 146 | 
            +
                    instance.options[:height]
         | 
| 147 | 
            +
                  end
         | 
| 148 | 
            +
             | 
| 142 149 | 
             
                  # Returns whether the application is interactive (required user
         | 
| 143 150 | 
             
                  # input) or standalone (will run until terminates of natural
         | 
| 144 151 | 
             
                  # causes.) Default is true; meaning the application will require
         | 
| @@ -224,6 +231,13 @@ module Vedeu | |
| 224 231 | 
             
                    instance.options[:terminal_mode]
         | 
| 225 232 | 
             
                  end
         | 
| 226 233 |  | 
| 234 | 
            +
                  # Returns the client defined width for the terminal.
         | 
| 235 | 
            +
                  #
         | 
| 236 | 
            +
                  # @return [Fixnum]
         | 
| 237 | 
            +
                  def width
         | 
| 238 | 
            +
                    instance.options[:width]
         | 
| 239 | 
            +
                  end
         | 
| 240 | 
            +
             | 
| 227 241 | 
             
                  # @param value [void]
         | 
| 228 242 | 
             
                  # @return [void]
         | 
| 229 243 | 
             
                  def options=(value)
         | 
| @@ -293,6 +307,7 @@ module Vedeu | |
| 293 307 | 
             
                    drb_port:      nil,
         | 
| 294 308 | 
             
                    drb_height:    25,
         | 
| 295 309 | 
             
                    drb_width:     80,
         | 
| 310 | 
            +
                    height:        nil,
         | 
| 296 311 | 
             
                    interactive:   true,
         | 
| 297 312 | 
             
                    log:           nil,
         | 
| 298 313 | 
             
                    log_only:      [],
         | 
| @@ -303,6 +318,7 @@ module Vedeu | |
| 303 318 | 
             
                    stdout:        nil,
         | 
| 304 319 | 
             
                    stderr:        nil,
         | 
| 305 320 | 
             
                    terminal_mode: :raw,
         | 
| 321 | 
            +
                    width:         nil,
         | 
| 306 322 | 
             
                  }
         | 
| 307 323 | 
             
                end
         | 
| 308 324 |  | 
| @@ -71,11 +71,10 @@ module Vedeu | |
| 71 71 | 
             
                  #     # ...
         | 
| 72 72 | 
             
                  #   end
         | 
| 73 73 | 
             
                  #
         | 
| 74 | 
            -
                  # @raise [Vedeu::Error:: | 
| 75 | 
            -
                  #   The required block was not given.
         | 
| 74 | 
            +
                  # @raise [Vedeu::Error::RequiresBlock]
         | 
| 76 75 | 
             
                  # @return [Vedeu::Views::Views<Vedeu::Views::View>]
         | 
| 77 76 | 
             
                  def view(name = '', &block)
         | 
| 78 | 
            -
                    fail Vedeu::Error:: | 
| 77 | 
            +
                    fail Vedeu::Error::RequiresBlock unless block_given?
         | 
| 79 78 |  | 
| 80 79 | 
             
                    new_model = model.member.build(new_attributes(name), &block)
         | 
| 81 80 |  | 
    
        data/lib/vedeu/dsl/group.rb
    CHANGED
    
    | @@ -54,11 +54,10 @@ module Vedeu | |
| 54 54 | 
             
                  #
         | 
| 55 55 | 
             
                  # @param name [String] The name of this group.
         | 
| 56 56 | 
             
                  # @param block [Proc]
         | 
| 57 | 
            -
                  # @raise [Vedeu::Error:: | 
| 58 | 
            -
                  #   not given.
         | 
| 57 | 
            +
                  # @raise [Vedeu::Error::RequiresBlock]
         | 
| 59 58 | 
             
                  # @return [Vedeu::Models::Group]
         | 
| 60 59 | 
             
                  def self.group(name, &block)
         | 
| 61 | 
            -
                    fail Vedeu::Error:: | 
| 60 | 
            +
                    fail Vedeu::Error::RequiresBlock unless block_given?
         | 
| 62 61 |  | 
| 63 62 | 
             
                    Vedeu::Models::Group.build(name: name, &block).store
         | 
| 64 63 | 
             
                  end
         | 
    
        data/lib/vedeu/dsl/interface.rb
    CHANGED
    
    | @@ -31,13 +31,11 @@ module Vedeu | |
| 31 31 | 
             
                    #   execution lifetime.
         | 
| 32 32 | 
             
                    # @param block [Proc] A set of attributes which define the
         | 
| 33 33 | 
             
                    #   features of the interface.
         | 
| 34 | 
            -
                    # @raise [Vedeu::Error:: | 
| 35 | 
            -
                    #   not given.
         | 
| 34 | 
            +
                    # @raise [Vedeu::Error::RequiresBlock]
         | 
| 36 35 | 
             
                    # @return [Vedeu::Models::Interface]
         | 
| 37 36 | 
             
                    # @todo More documentation required.
         | 
| 38 37 | 
             
                    def interface(name, &block)
         | 
| 39 | 
            -
                      fail Vedeu::Error:: | 
| 40 | 
            -
                           'block not given' unless block_given?
         | 
| 38 | 
            +
                      fail Vedeu::Error::RequiresBlock unless block_given?
         | 
| 41 39 | 
             
                      fail Vedeu::Error::MissingRequired,
         | 
| 42 40 | 
             
                           'name not given' unless present?(name)
         | 
| 43 41 |  | 
    
        data/lib/vedeu/dsl/keymap.rb
    CHANGED
    
    | @@ -2,19 +2,20 @@ module Vedeu | |
| 2 2 |  | 
| 3 3 | 
             
              module DSL
         | 
| 4 4 |  | 
| 5 | 
            -
                # You can define keymaps by name which matches a defined | 
| 6 | 
            -
                # that interface is in focus, keys pressed as part | 
| 7 | 
            -
                # affect that interface. This allows you | 
| 8 | 
            -
                # for your application.
         | 
| 5 | 
            +
                # You can define keymaps by name which matches a defined
         | 
| 6 | 
            +
                # interface. When that interface is in focus, keys pressed as part
         | 
| 7 | 
            +
                # of this definition will affect that interface. This allows you
         | 
| 8 | 
            +
                # to form context driven behaviour for your application.
         | 
| 9 9 | 
             
                #
         | 
| 10 10 | 
             
                class Keymap
         | 
| 11 11 |  | 
| 12 12 | 
             
                  include Vedeu::Common
         | 
| 13 13 | 
             
                  include Vedeu::DSL
         | 
| 14 14 |  | 
| 15 | 
            -
                  # Define actions for keypresses for when specific interfaces are | 
| 16 | 
            -
                  # Unless an interface is specified, the key will be | 
| 17 | 
            -
                  # meaning its action will happen | 
| 15 | 
            +
                  # Define actions for keypresses for when specific interfaces are
         | 
| 16 | 
            +
                  # in focus. Unless an interface is specified, the key will be
         | 
| 17 | 
            +
                  # assumed to be global, meaning its action will happen
         | 
| 18 | 
            +
                  # regardless of the interface in focus.
         | 
| 18 19 | 
             
                  #
         | 
| 19 20 | 
             
                  #   Vedeu.keymap 'some_interface' do
         | 
| 20 21 | 
             
                  #     key('s')        { Vedeu.trigger(:save) }
         | 
| @@ -44,13 +45,13 @@ module Vedeu | |
| 44 45 | 
             
                  #     end
         | 
| 45 46 | 
             
                  #   end
         | 
| 46 47 | 
             
                  #
         | 
| 47 | 
            -
                  # @param name [String] The name of the interface which this | 
| 48 | 
            -
                  #   to.
         | 
| 48 | 
            +
                  # @param name [String] The name of the interface which this
         | 
| 49 | 
            +
                  #   keymap relates to.
         | 
| 49 50 | 
             
                  # @param block [Proc]
         | 
| 50 | 
            -
                  # @raise [Vedeu::Error:: | 
| 51 | 
            +
                  # @raise [Vedeu::Error::RequiresBlock]
         | 
| 51 52 | 
             
                  # @return [Vedeu::Input::Keymap]
         | 
| 52 | 
            -
                  # @todo Try to remember why we need to pre-create the keymap in | 
| 53 | 
            -
                  #   repository.
         | 
| 53 | 
            +
                  # @todo Try to remember why we need to pre-create the keymap in
         | 
| 54 | 
            +
                  #   the repository.
         | 
| 54 55 | 
             
                  def self.keymap(name, &block)
         | 
| 55 56 | 
             
                    Vedeu::Input::Keymap.new(name: name).store
         | 
| 56 57 |  | 
| @@ -73,11 +74,12 @@ module Vedeu | |
| 73 74 | 
             
                  #   The key(s) pressed. Special keys can be found in
         | 
| 74 75 | 
             
                  #   {Vedeu::Input::Input#specials}. When more than one key is
         | 
| 75 76 | 
             
                  #   defined, then the extras are treated as aliases.
         | 
| 76 | 
            -
                  # @param block [Proc] The action to perform when this key is | 
| 77 | 
            -
                  #   be a method call or event triggered.
         | 
| 77 | 
            +
                  # @param block [Proc] The action to perform when this key is
         | 
| 78 | 
            +
                  #   pressed. Can be a method call or event triggered.
         | 
| 78 79 | 
             
                  # @raise [Vedeu::Error::InvalidSyntax]
         | 
| 79 | 
            -
                  #   When the required block is not given, the values parameter | 
| 80 | 
            -
                  #   undefined, or when processing the collection, a member | 
| 80 | 
            +
                  #   When the required block is not given, the values parameter
         | 
| 81 | 
            +
                  #   is undefined, or when processing the collection, a member
         | 
| 82 | 
            +
                  #   is undefined.
         | 
| 81 83 | 
             
                  # @return [Array] A collection containing the keypress(es).
         | 
| 82 84 | 
             
                  def key(*values, &block)
         | 
| 83 85 | 
             
                    fail Vedeu::Error::InvalidSyntax,
         | 
| @@ -99,12 +101,13 @@ module Vedeu | |
| 99 101 |  | 
| 100 102 | 
             
                  # Define the name of the keymap.
         | 
| 101 103 | 
             
                  #
         | 
| 102 | 
            -
                  # To only allow certain keys to work with specific interfaces, | 
| 103 | 
            -
                  # same name as the interface.
         | 
| 104 | 
            +
                  # To only allow certain keys to work with specific interfaces,
         | 
| 105 | 
            +
                  # use the same name as the interface.
         | 
| 104 106 | 
             
                  #
         | 
| 105 | 
            -
                  # When the name '_global_' is used, all keys in the keymap block | 
| 106 | 
            -
                  # available to all interfaces. Once a key has been | 
| 107 | 
            -
                  # '_global_' keymap, it cannot be used for a | 
| 107 | 
            +
                  # When the name '_global_' is used, all keys in the keymap block
         | 
| 108 | 
            +
                  # will be available to all interfaces. Once a key has been
         | 
| 109 | 
            +
                  # defined in the '_global_' keymap, it cannot be used for a
         | 
| 110 | 
            +
                  # specific interface.
         | 
| 108 111 | 
             
                  #
         | 
| 109 112 | 
             
                  #   Vedeu.keymap do
         | 
| 110 113 | 
             
                  #     name 'some_interface'
         | 
    
        data/lib/vedeu/dsl/line.rb
    CHANGED
    
    | @@ -59,8 +59,7 @@ module Vedeu | |
| 59 59 | 
             
                  #     end
         | 
| 60 60 | 
             
                  #   end
         | 
| 61 61 | 
             
                  #
         | 
| 62 | 
            -
                  # @raise [Vedeu::Error:: | 
| 63 | 
            -
                  #   provided.
         | 
| 62 | 
            +
                  # @raise [Vedeu::Error::RequiresBlock]
         | 
| 64 63 | 
             
                  # @return [Vedeu::Views::Lines]
         | 
| 65 64 | 
             
                  def line(value = '', &block)
         | 
| 66 65 | 
             
                    if block_given?
         | 
| @@ -73,7 +72,7 @@ module Vedeu | |
| 73 72 | 
             
                                                         value:  [build_stream(value)])
         | 
| 74 73 |  | 
| 75 74 | 
             
                    else
         | 
| 76 | 
            -
                      fail Vedeu::Error:: | 
| 75 | 
            +
                      fail Vedeu::Error::RequiresBlock unless block_given?
         | 
| 77 76 |  | 
| 78 77 | 
             
                    end
         | 
| 79 78 |  | 
| @@ -100,12 +99,11 @@ module Vedeu | |
| 100 99 | 
             
                  #   end
         | 
| 101 100 | 
             
                  #
         | 
| 102 101 | 
             
                  # @param block [Proc]
         | 
| 103 | 
            -
                  # @raise [Vedeu::Error:: | 
| 104 | 
            -
                  #   not given.
         | 
| 102 | 
            +
                  # @raise [Vedeu::Error::RequiresBlock]
         | 
| 105 103 | 
             
                  # @return [Vedeu::Views::Streams<Vedeu::Views::Stream>]
         | 
| 106 104 | 
             
                  # @see Vedeu::DSL::Stream for subdirectives.
         | 
| 107 105 | 
             
                  def streams(&block)
         | 
| 108 | 
            -
                    fail Vedeu::Error:: | 
| 106 | 
            +
                    fail Vedeu::Error::RequiresBlock unless block_given?
         | 
| 109 107 |  | 
| 110 108 | 
             
                    model.add(model.member.build(attributes, &block))
         | 
| 111 109 | 
             
                  end
         | 
| @@ -2,18 +2,20 @@ module Vedeu | |
| 2 2 |  | 
| 3 3 | 
             
              module DSL
         | 
| 4 4 |  | 
| 5 | 
            -
                # Provides colour and style helpers for use in the | 
| 6 | 
            -
                # {Vedeu::DSL:: | 
| 5 | 
            +
                # Provides colour and style helpers for use in the
         | 
| 6 | 
            +
                # {Vedeu::DSL::Interface}, {Vedeu::DSL::Line} and
         | 
| 7 | 
            +
                # {Vedeu::DSL::Stream} classes.
         | 
| 7 8 | 
             
                #
         | 
| 8 9 | 
             
                module Presentation
         | 
| 9 10 |  | 
| 10 | 
            -
                  # Define the background colour for an interface, line, or a | 
| 11 | 
            -
                  # called with a block, will create a new stream | 
| 12 | 
            -
                  # specified. When the block | 
| 13 | 
            -
                  # of the parent.
         | 
| 11 | 
            +
                  # Define the background colour for an interface, line, or a
         | 
| 12 | 
            +
                  # stream. When called with a block, will create a new stream
         | 
| 13 | 
            +
                  # with the background colour specified. When the block
         | 
| 14 | 
            +
                  # terminates, the background will return to that of the parent.
         | 
| 14 15 | 
             
                  #
         | 
| 15 | 
            -
                  # @note The last defined background colour for a particular | 
| 16 | 
            -
                  #   line or stream overrides previously defined | 
| 16 | 
            +
                  # @note The last defined background colour for a particular
         | 
| 17 | 
            +
                  #   interface, line or stream overrides previously defined
         | 
| 18 | 
            +
                  #   entries in the same block.
         | 
| 17 19 | 
             
                  #
         | 
| 18 20 | 
             
                  # @param value [String] A HTML/CSS value.
         | 
| 19 21 | 
             
                  #
         | 
| @@ -56,11 +58,13 @@ module Vedeu | |
| 56 58 | 
             
                  alias_method :fgcolor=,    :foreground
         | 
| 57 59 |  | 
| 58 60 | 
             
                  # Define either or both foreground and background colours for an
         | 
| 59 | 
            -
                  # interface, line or a stream. At least one attribute is | 
| 61 | 
            +
                  # interface, line or a stream. At least one attribute is
         | 
| 62 | 
            +
                  # required.
         | 
| 60 63 | 
             
                  #
         | 
| 61 | 
            -
                  # @note Rejects invalid keys and empty/nil attributes. Also, the | 
| 62 | 
            -
                  #   defined colour for a particular interface, line or | 
| 63 | 
            -
                  #   previously defined entries in the same | 
| 64 | 
            +
                  # @note Rejects invalid keys and empty/nil attributes. Also, the
         | 
| 65 | 
            +
                  #   last defined colour for a particular interface, line or
         | 
| 66 | 
            +
                  #   stream overrides previously defined entries in the same
         | 
| 67 | 
            +
                  #   block.
         | 
| 64 68 | 
             
                  #
         | 
| 65 69 | 
             
                  # @param attrs [Hash] See {Vedeu::Colours::Colour}
         | 
| 66 70 | 
             
                  #
         |