highline 1.6.20 → 1.6.21
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 +6 -6
- data/CHANGELOG +5 -0
- data/lib/highline.rb +1 -1
- data/lib/highline/menu.rb +6 -23
- data/lib/highline/question.rb +20 -14
- data/lib/highline/system_extensions.rb +17 -1
- data/test/tc_highline.rb +2 -2
- metadata +10 -15
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 5 | 
            -
             | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA1:
         | 
| 3 | 
            +
              metadata.gz: 654d8d8fa13e9d967eb78065d7d9c6be9f82fe44
         | 
| 4 | 
            +
              data.tar.gz: d253b0c7ae6a1d36db8f0a07ce21c116e05e5c50
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: ef2e620391d4ba1df254868824bda3f88705ba2724450b6155ff785e803da17e55a4e8dcb0026d150be49260cd2857c9fb1be3362590fb9e5d6ee2066af39393
         | 
| 7 | 
            +
              data.tar.gz: e1c49b575b7d30f0c1b594c32770ff9895fc5a4fa85c0861e34c8d50ee812ac66a6dd11f5b8da7677298134fb88ce4d50356700744d6bf3fd3db2c7f437c7c56
         | 
    
        data/CHANGELOG
    CHANGED
    
    | @@ -2,6 +2,11 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            Below is a complete listing of changes for each revision of HighLine.
         | 
| 4 4 |  | 
| 5 | 
            +
            == 1.6.21
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            * Improved Windows integration (by Ronie Henrich).
         | 
| 8 | 
            +
            * Clarified menu choice error messages (by Keith Bennett).
         | 
| 9 | 
            +
             | 
| 5 10 | 
             
            == 1.6.20
         | 
| 6 11 |  | 
| 7 12 | 
             
            * Fixed a bug with FFI::NCurses integration (by agentdave).
         | 
    
        data/lib/highline.rb
    CHANGED
    
    | @@ -28,7 +28,7 @@ require "highline/style" | |
| 28 28 | 
             
            #
         | 
| 29 29 | 
             
            class HighLine
         | 
| 30 30 | 
             
              # The version of the installed library.
         | 
| 31 | 
            -
              VERSION = "1.6. | 
| 31 | 
            +
              VERSION = "1.6.21".freeze
         | 
| 32 32 |  | 
| 33 33 | 
             
              # An internal HighLine error.  User code does not need to trap this.
         | 
| 34 34 | 
             
              class QuestionError < StandardError
         | 
    
        data/lib/highline/menu.rb
    CHANGED
    
    | @@ -368,31 +368,14 @@ class HighLine | |
| 368 368 |  | 
| 369 369 | 
             
                #
         | 
| 370 370 | 
             
                # This method will update the intelligent responses to account for
         | 
| 371 | 
            -
                # Menu specific differences.   | 
| 372 | 
            -
                #  | 
| 371 | 
            +
                # Menu specific differences.  Calls the superclass' (Question's)
         | 
| 372 | 
            +
                # build_responses method, overriding its default arguments to specify
         | 
| 373 | 
            +
                # 'options' will be used to populate choice lists, and that
         | 
| 374 | 
            +
                # the newly built hash will predominate over the preexisting hash
         | 
| 375 | 
            +
                # for any keys that are the same.
         | 
| 373 376 | 
             
                #
         | 
| 374 377 | 
             
                def update_responses(  )
         | 
| 375 | 
            -
                   | 
| 376 | 
            -
                  @responses = @responses.merge(
         | 
| 377 | 
            -
                                 :ambiguous_completion =>
         | 
| 378 | 
            -
                                   "Ambiguous choice.  " +
         | 
| 379 | 
            -
                                   "Please choose one of #{options.inspect}.",
         | 
| 380 | 
            -
                                 :ask_on_error         =>
         | 
| 381 | 
            -
                                   "?  ",
         | 
| 382 | 
            -
                                 :invalid_type         =>
         | 
| 383 | 
            -
                                   "You must enter a valid #{options}.",
         | 
| 384 | 
            -
                                 :no_completion        =>
         | 
| 385 | 
            -
                                   "You must choose one of " +
         | 
| 386 | 
            -
                                   "#{options.inspect}.",
         | 
| 387 | 
            -
                                 :not_in_range         =>
         | 
| 388 | 
            -
                                   "Your answer isn't within the expected range " +
         | 
| 389 | 
            -
                                   "(#{expected_range}).",
         | 
| 390 | 
            -
                                 :mismatch             =>
         | 
| 391 | 
            -
                                   "Your entries didn't match.",
         | 
| 392 | 
            -
                                 :not_valid            =>
         | 
| 393 | 
            -
                                   "Your answer isn't valid (must match " +
         | 
| 394 | 
            -
                                   "#{@validate.inspect})."
         | 
| 395 | 
            -
                               )
         | 
| 378 | 
            +
                  build_responses(options, true)
         | 
| 396 379 | 
             
                end
         | 
| 397 380 | 
             
              end
         | 
| 398 381 | 
             
            end
         | 
    
        data/lib/highline/question.rb
    CHANGED
    
    | @@ -225,22 +225,29 @@ class HighLine | |
| 225 225 | 
             
                #
         | 
| 226 226 | 
             
                # Called late in the initialization process to build intelligent
         | 
| 227 227 | 
             
                # responses based on the details of this Question object.
         | 
| 228 | 
            +
                # Also used by Menu#update_responses.
         | 
| 228 229 | 
             
                #
         | 
| 229 | 
            -
                def build_responses( | 
| 230 | 
            -
             | 
| 231 | 
            -
                  ### Menu.update_responses().  Check there too when ###
         | 
| 232 | 
            -
                  ### making changes!                                ###
         | 
| 230 | 
            +
                def build_responses(message_source = answer_type, new_hash_wins = false)
         | 
| 231 | 
            +
             | 
| 233 232 | 
             
                  append_default unless default.nil?
         | 
| 234 | 
            -
             | 
| 235 | 
            -
             | 
| 236 | 
            -
             | 
| 233 | 
            +
             | 
| 234 | 
            +
                  choice_error_str_func = lambda do
         | 
| 235 | 
            +
                    message_source.is_a?(Array) \
         | 
| 236 | 
            +
                        ? '[' +  message_source.map { |s| "#{s}" }.join(', ') + ']' \
         | 
| 237 | 
            +
                        : message_source.inspect
         | 
| 238 | 
            +
                  end
         | 
| 239 | 
            +
             | 
| 240 | 
            +
                  old_hash = @responses
         | 
| 241 | 
            +
             | 
| 242 | 
            +
                  new_hash = { :ambiguous_completion =>
         | 
| 243 | 
            +
                                   "Ambiguous choice.  Please choose one of " +
         | 
| 244 | 
            +
                                   choice_error_str_func.call + '.',
         | 
| 237 245 | 
             
                                 :ask_on_error         =>
         | 
| 238 246 | 
             
                                   "?  ",
         | 
| 239 247 | 
             
                                 :invalid_type         =>
         | 
| 240 | 
            -
                                   "You must enter a valid #{ | 
| 248 | 
            +
                                   "You must enter a valid #{message_source}.",
         | 
| 241 249 | 
             
                                 :no_completion        =>
         | 
| 242 | 
            -
                                   "You must choose one of " +
         | 
| 243 | 
            -
                                   "#{@answer_type.inspect}.",
         | 
| 250 | 
            +
                                   "You must choose one of " + choice_error_str_func.call + '.',
         | 
| 244 251 | 
             
                                 :not_in_range         =>
         | 
| 245 252 | 
             
                                   "Your answer isn't within the expected range " +
         | 
| 246 253 | 
             
                                   "(#{expected_range}).",
         | 
| @@ -248,10 +255,9 @@ class HighLine | |
| 248 255 | 
             
                                   "Your entries didn't match.",
         | 
| 249 256 | 
             
                                 :not_valid            =>
         | 
| 250 257 | 
             
                                   "Your answer isn't valid (must match " +
         | 
| 251 | 
            -
                                   "#{@validate.inspect})." } | 
| 252 | 
            -
             | 
| 253 | 
            -
                   | 
| 254 | 
            -
                  ### making changes!                                ###
         | 
| 258 | 
            +
                                   "#{@validate.inspect})." }
         | 
| 259 | 
            +
             | 
| 260 | 
            +
                  @responses = new_hash_wins ? old_hash.merge(new_hash) : new_hash.merge(old_hash)
         | 
| 255 261 | 
             
                end
         | 
| 256 262 |  | 
| 257 263 | 
             
                #
         | 
| @@ -80,7 +80,13 @@ class HighLine | |
| 80 80 | 
             
                    require "dl/import"
         | 
| 81 81 |  | 
| 82 82 | 
             
                    module WinAPI
         | 
| 83 | 
            -
                       | 
| 83 | 
            +
                      if defined?(DL::Importer)
         | 
| 84 | 
            +
                        # Ruby 1.9
         | 
| 85 | 
            +
                        extend DL::Importer
         | 
| 86 | 
            +
                      else
         | 
| 87 | 
            +
                        # Ruby 1.8
         | 
| 88 | 
            +
                        extend DL::Importable
         | 
| 89 | 
            +
                      end
         | 
| 84 90 | 
             
                      begin
         | 
| 85 91 | 
             
                        dlload "msvcrt", "kernel32"
         | 
| 86 92 | 
             
                      rescue DL::DLError
         | 
| @@ -89,6 +95,16 @@ class HighLine | |
| 89 95 | 
             
                      extern "unsigned long _getch()"
         | 
| 90 96 | 
             
                      extern "unsigned long GetConsoleScreenBufferInfo(unsigned long, void*)"
         | 
| 91 97 | 
             
                      extern "unsigned long GetStdHandle(unsigned long)"
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                      # Ruby 1.8 DL::Importable.import does mname[0,1].downcase so FooBar becomes fooBar
         | 
| 100 | 
            +
                      if defined?(getConsoleScreenBufferInfo)
         | 
| 101 | 
            +
                        alias_method :GetConsoleScreenBufferInfo, :getConsoleScreenBufferInfo
         | 
| 102 | 
            +
                        module_function :GetConsoleScreenBufferInfo
         | 
| 103 | 
            +
                      end
         | 
| 104 | 
            +
                      if defined?(getStdHandle)
         | 
| 105 | 
            +
                        alias_method :GetStdHandle, :getStdHandle
         | 
| 106 | 
            +
                        module_function :GetStdHandle
         | 
| 107 | 
            +
                      end
         | 
| 92 108 | 
             
                    end
         | 
| 93 109 | 
             
                  end
         | 
| 94 110 |  | 
    
        data/test/tc_highline.rb
    CHANGED
    
    | @@ -168,7 +168,7 @@ class TestHighLine < Test::Unit::TestCase | |
| 168 168 | 
             
                end
         | 
| 169 169 | 
             
                assert_equal(languages.last, answer)
         | 
| 170 170 | 
             
                assert_equal( "What is your favorite programming language?  " +
         | 
| 171 | 
            -
                              "You must choose one of [ | 
| 171 | 
            +
                              "You must choose one of [Perl, Python, Ruby].\n" +
         | 
| 172 172 | 
             
                              "?  ", @output.string )
         | 
| 173 173 | 
             
              end
         | 
| 174 174 |  | 
| @@ -877,7 +877,7 @@ class TestHighLine < Test::Unit::TestCase | |
| 877 877 | 
             
                assert_equal(:generate, answer)
         | 
| 878 878 | 
             
                assert_equal( "Select a mode:  " +
         | 
| 879 879 | 
             
                              "Ambiguous choice.  " +
         | 
| 880 | 
            -
                              "Please choose one of [ | 
| 880 | 
            +
                              "Please choose one of [generate, gentle].\n" +
         | 
| 881 881 | 
             
                              "?  ", @output.string )
         | 
| 882 882 | 
             
              end
         | 
| 883 883 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,25 +1,20 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: highline
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.6. | 
| 4 | 
            +
              version: 1.6.21
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - James Edward Gray II
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2014-02-28 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies: []
         | 
| 13 | 
            -
            description:  | 
| 14 | 
            -
              and more for
         | 
| 15 | 
            -
             | 
| 13 | 
            +
            description: |
         | 
| 14 | 
            +
              A high-level IO library that provides validation, type conversion, and more for
         | 
| 16 15 | 
             
              command-line interfaces. HighLine also includes a complete menu system that can
         | 
| 17 | 
            -
             | 
| 18 16 | 
             
              crank out anything from simple list selection to complete shells with just
         | 
| 19 | 
            -
             | 
| 20 17 | 
             
              minutes of work.
         | 
| 21 | 
            -
             | 
| 22 | 
            -
            '
         | 
| 23 18 | 
             
            email: james@graysoftinc.com
         | 
| 24 19 | 
             
            executables: []
         | 
| 25 20 | 
             
            extensions: []
         | 
| @@ -30,7 +25,7 @@ extra_rdoc_files: | |
| 30 25 | 
             
            - CHANGELOG
         | 
| 31 26 | 
             
            - LICENSE
         | 
| 32 27 | 
             
            files:
         | 
| 33 | 
            -
            - .gitignore
         | 
| 28 | 
            +
            - ".gitignore"
         | 
| 34 29 | 
             
            - AUTHORS
         | 
| 35 30 | 
             
            - CHANGELOG
         | 
| 36 31 | 
             
            - COPYING
         | 
| @@ -84,25 +79,25 @@ licenses: | |
| 84 79 | 
             
            metadata: {}
         | 
| 85 80 | 
             
            post_install_message: 
         | 
| 86 81 | 
             
            rdoc_options:
         | 
| 87 | 
            -
            - --title
         | 
| 82 | 
            +
            - "--title"
         | 
| 88 83 | 
             
            - HighLine Documentation
         | 
| 89 | 
            -
            - --main
         | 
| 84 | 
            +
            - "--main"
         | 
| 90 85 | 
             
            - README
         | 
| 91 86 | 
             
            require_paths:
         | 
| 92 87 | 
             
            - lib
         | 
| 93 88 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 94 89 | 
             
              requirements:
         | 
| 95 | 
            -
              - -  | 
| 90 | 
            +
              - - ">="
         | 
| 96 91 | 
             
                - !ruby/object:Gem::Version
         | 
| 97 92 | 
             
                  version: '0'
         | 
| 98 93 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 99 94 | 
             
              requirements:
         | 
| 100 | 
            -
              - -  | 
| 95 | 
            +
              - - ">="
         | 
| 101 96 | 
             
                - !ruby/object:Gem::Version
         | 
| 102 97 | 
             
                  version: '0'
         | 
| 103 98 | 
             
            requirements: []
         | 
| 104 99 | 
             
            rubyforge_project: highline
         | 
| 105 | 
            -
            rubygems_version: 2. | 
| 100 | 
            +
            rubygems_version: 2.2.2
         | 
| 106 101 | 
             
            signing_key: 
         | 
| 107 102 | 
             
            specification_version: 4
         | 
| 108 103 | 
             
            summary: HighLine is a high-level command-line IO library.
         |