Skip to content

Commit

Permalink
Handle prmd init with no arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
IceDragon200 committed May 16, 2016
1 parent b1f87e0 commit ef61d35
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 5 deletions.
1 change: 1 addition & 0 deletions lib/prmd.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
require_relative 'prmd/commands'
require_relative 'prmd/schema'
require_relative 'prmd/link'
require_relative 'prmd/utils'
require_relative 'prmd/template'
require_relative 'prmd/url_generator'
require_relative 'prmd/hash_helpers'
8 changes: 4 additions & 4 deletions lib/prmd/cli/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ def make_parser(options = {})
# @param [Array<String>] argv
# @return [Array<String>] remaining arguments
# @private
def execute_parser(parser, argv)
parser.parse(argv)
def execute_parser(argv)
@parser.parse(argv)
end

# Set the given key and value in the given options Hash.
Expand Down Expand Up @@ -66,10 +66,10 @@ def set_option(options, key, value)
# @return [Hash<Symbol, Object>] parsed options
def parse_options(argv, options = {})
opts = {}
parser = make_parser(options) do |key, value|
@parser = make_parser(options) do |key, value|
set_option(opts, key, value)
end
argv = execute_parser(parser, argv)
argv = execute_parser(argv)
opts[:argv] = argv
opts
end
Expand Down
7 changes: 6 additions & 1 deletion lib/prmd/cli/generate.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
require_relative 'base'
require_relative '../commands/init'
require_relative '../utils'

module Prmd
module CLI
Expand Down Expand Up @@ -40,7 +41,11 @@ def self.make_parser(options = {})
# @return (see Prmd::CLI::Base#execute)
def self.execute(options = {})
name = options.fetch(:argv).first
write_result Prmd.init(name, options), options
if Prmd::Utils.blank?(name)
abort @parser
else
write_result Prmd.init(name, options), options
end
end
end
end
Expand Down
19 changes: 19 additions & 0 deletions lib/prmd/utils.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
module Prmd
# For any tid bits, or core extension methods, without the "core" extension
module Utils
# For checking if the string contains only spaces
BLANK_REGEX = /\A\s+\z/

def self.blank?(obj)
if obj.nil?
true
elsif obj.is_a?(String)
obj.empty? || !!(obj =~ BLANK_REGEX)
elsif obj.respond_to?(:empty?)
obj.empty?
else
false
end
end
end
end
16 changes: 16 additions & 0 deletions test/utils_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
require_relative 'helpers'

class UtilsTest < Minitest::Test
def test_blank?
assert_equal true, Prmd::Utils.blank?(nil)
assert_equal true, Prmd::Utils.blank?([])
assert_equal true, Prmd::Utils.blank?({})
assert_equal true, Prmd::Utils.blank?("")
assert_equal true, Prmd::Utils.blank?(" ")
assert_equal true, Prmd::Utils.blank?(" ")
assert_equal false, Prmd::Utils.blank?([nil])
assert_equal false, Prmd::Utils.blank?({ a: nil })
assert_equal false, Prmd::Utils.blank?("A")
assert_equal false, Prmd::Utils.blank?(Object.new)
end
end

0 comments on commit ef61d35

Please sign in to comment.