Sha256: f9f971649f9f5cd5cab73797c1018bbb5a808b22141227dad169eae15093ba97
Contents?: true
Size: 912 Bytes
Versions: 1
Compression:
Stored size: 912 Bytes
Contents
require 'delegate' module Interactive class Options < SimpleDelegator include Interactive attr_accessor :options def initialize(options) flatten_ranges(options) wrap_each_option super(@options) end def shortcuts_string "[#{first_chars_without_last_slash(first_chars)}]" end def shortcuts_meanings options.inject("") { |accum, opt| "#{accum} #{opt.shortcut_value} -- #{opt}\n"} end private def flatten_ranges(options) @options = options.inject([]) {|accum, opt| opt.respond_to?(:to_a) ? accum | opt.to_a : accum << opt} end def wrap_each_option @options.map! {|option| Option(option) } end def first_chars options.inject("") { |accum, opt| "#{accum}#{ opt.shortcut_value}/" } end def first_chars_without_last_slash(first_chars) first_chars[0..first_chars.length-2] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
interactive-0.1.0 | lib/interactive/options.rb |