Class: StoryTeller::Options::ArgumentsParser
- Defined in:
- lib/story_teller/options.rb
Overview
The ArgumentsParser
Instance Attribute Summary collapse
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#parser ⇒ Object
readonly
Returns the value of attribute parser.
Instance Method Summary collapse
- #admin ⇒ Object
-
#banner ⇒ Object
rubocop: disable Metrics/MethodLength.
- #builder ⇒ Object
- #flags ⇒ Object
-
#game_path ⇒ Object
rubocop: enable Metrics/MethodLength.
- #help ⇒ Object
-
#initialize(args, defaults = {}, option_parser = OptionParser.new, **params) ⇒ ArgumentsParser
constructor
A new instance of ArgumentsParser.
- #log_level ⇒ Object
- #persist ⇒ Object
- #version ⇒ Object
- #word_wrap ⇒ Object
Constructor Details
#initialize(args, defaults = {}, option_parser = OptionParser.new, **params) ⇒ ArgumentsParser
Returns a new instance of ArgumentsParser.
37 38 39 40 41 42 43 |
# File 'lib/story_teller/options.rb', line 37 def initialize(args, defaults = {}, option_parser = OptionParser.new, **params) @args = args @parser = option_parser @options = defaults flags.each { |method_name| self.method(method_name).call } @parser.parse!(args, **params) end |
Instance Attribute Details
#options ⇒ Object (readonly)
Returns the value of attribute options.
35 36 37 |
# File 'lib/story_teller/options.rb', line 35 def @options end |
#parser ⇒ Object (readonly)
Returns the value of attribute parser.
35 36 37 |
# File 'lib/story_teller/options.rb', line 35 def parser @parser end |
Instance Method Details
#admin ⇒ Object
81 82 83 84 85 |
# File 'lib/story_teller/options.rb', line 81 def admin @parser.on_tail('--admin', 'Set player character as admin; default: false') do @options[:admin] = true end end |
#banner ⇒ Object
rubocop: disable Metrics/MethodLength
52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/story_teller/options.rb', line 52 def @parser. = "Usage: #{File.basename($PROGRAM_NAME)} [game_path] [options]" @parser.separator '' @parser.separator 'Arguments:' @parser.separator ' game_path Path to game file or directory' @parser.separator( format( ' Default: %<game_path>s', game_path: @options[:game_path] ) ) @parser.separator '' @parser.separator 'Options:' end |
#builder ⇒ Object
87 88 89 90 91 |
# File 'lib/story_teller/options.rb', line 87 def builder @parser.on_tail('--builder', 'Set player character as builder; default: false') do @options[:builder] = true end end |
#flags ⇒ Object
45 46 47 48 49 |
# File 'lib/story_teller/options.rb', line 45 def flags @flags ||= %i[ banner game_path admin builder persist word_wrap log_level help version] end |
#game_path ⇒ Object
rubocop: enable Metrics/MethodLength
68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/story_teller/options.rb', line 68 def game_path first = @args.first return if first.nil? path = File.(first) # Only treat it as game_path if it exists return unless File.exist?(path) @options[:game_path] = path @args.shift end |
#help ⇒ Object
114 115 116 117 118 119 |
# File 'lib/story_teller/options.rb', line 114 def help @parser.on_tail('-?', '--help', 'Show this message') do puts @parser exit end end |
#log_level ⇒ Object
107 108 109 110 111 112 |
# File 'lib/story_teller/options.rb', line 107 def log_level @parser.on_tail('-v', '--verbose', 'Increase verbosity') do @options[:log_level] ||= Logger::INFO @options[:log_level] -= 1 end end |
#persist ⇒ Object
93 94 95 96 97 98 99 |
# File 'lib/story_teller/options.rb', line 93 def persist desc = 'Persist the world tree across sessions; default: false' @parser.on_tail('--persist', desc) do @options[:persist] = true @options[:reset_db_each_session] = false end end |
#version ⇒ Object
121 122 123 124 125 126 |
# File 'lib/story_teller/options.rb', line 121 def version @parser.on_tail('--version', 'Show version') do puts "#{$PROGRAM_NAME} version #{StoryTellerCli::VERSION}" exit end end |
#word_wrap ⇒ Object
101 102 103 104 105 |
# File 'lib/story_teller/options.rb', line 101 def word_wrap @parser.on('--word-wrap COLUMNS', Integer, 'Set default line width') do |columns| @options[:word_wrap] = columns end end |