class CheckPlease::Flags

NOTE: this gets all of its attributes defined (via .define) in ../check_please.rb

Constants

BY_NAME

Public Class Methods

[](name) click to toggle source
# File lib/check_please/flags.rb, line 11
def self.[](name)
  BY_NAME[name.to_sym]
end
define(name, &block) click to toggle source
# File lib/check_please/flags.rb, line 15
def self.define(name, &block)
  flag = Flag.new(name: name.to_sym, &block)
  BY_NAME[flag.name] = flag
  define_accessors flag

  nil
end
define_accessors(flag) click to toggle source
# File lib/check_please/flags.rb, line 29
def self.define_accessors(flag)
  getter = flag.name
  define_method(getter) {
    @attributes.fetch(flag.name) { flag.default }
  }

  setter = :"#{flag.name}="
  define_method(setter) { |value|
    flag.send :__set__, value, on: @attributes, flags: self
  }
end
each_flag() { |flag| ... } click to toggle source
# File lib/check_please/flags.rb, line 23
def self.each_flag
  BY_NAME.each do |_, flag|
    yield flag
  end
end
new(attrs = {}) click to toggle source
# File lib/check_please/flags.rb, line 41
def initialize(attrs = {})
  @attributes = {}
  attrs.each do |name, value|
    send "#{name}=", value
  end
end