Class: Settings

Inherits:
Object
  • Object
show all
Defined in:
lib/tabscroll/settings.rb

Overview

Global configurations of the program, along with a commandline argument parser.

Contains the program’s specific configuration rules.

Instance Method Summary collapse

Constructor Details

#initializeSettings

Creates a configuration, with default values.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/tabscroll/settings.rb', line 12

def initialize
  @settings = {}
  @settings[:filename] = nil

  # We have a way to test the program.
  # We're distributing a sample tab file with the Gem so
  # when users run `tabscroll --sample` they can see
  # how the program works.
  # This setting enables it
  @settings[:run_sample_file] = false

  # And this is the absolute filename of the file
  # distributed with the gem.
  # It'll be `../../sample_tab.txt` based on `settings.rb` path.
  filename = File.expand_path("../../", __FILE__)
  filename = File.dirname filename
  filename += "/sample_tab.txt"
  @settings[:sample_filename] = filename
end

Instance Method Details

#[](name) ⇒ Object

Returns a specific setting previously set.



81
82
83
# File 'lib/tabscroll/settings.rb', line 81

def [] name
  return @settings[name]
end

#parse(args) ⇒ Object

Sets options based on commandline arguments args. It should be ARGV.



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/tabscroll/settings.rb', line 34

def parse args

  opts = OptionParser.new do |parser|
    parser.banner = "Usage: tabscroll [options] filename"

    # Make output beautiful
    parser.separator ""
    parser.separator "Options:"

    parser.on("--sample", "Run `tabscroll` with sample file") do
      @settings[:run_sample_file] = true
    end

    # These options appear if no other is given.
    parser.on_tail("-h", "--help", "Show this message") do
      puts parser
      exit
    end

    parser.on_tail("--version", "Show version") do
      puts "tabscroll v#{TabScroll::VERSION}"
      exit
    end
  end
  opts.parse! args

  # After parsing all dashed arguments we will check if
  # the user has provided a filename.
  #
  # The first argument without a leading '-' will be
  # considered.
  args.each do |arg|
    if arg =~ /^[^-]/
      @settings[:filename] = arg
      break
    end
  end

  if not @settings[:filename] and not @settings[:run_sample_file]
    puts opts
    exit 666
  end

  return @settings
end