Class: PhilColumns::Configuration

Inherits:
SimpleDelegator
  • Object
show all
Defined in:
lib/phil_columns/configuration.rb

Constant Summary collapse

TAG_REGEX =
/^~@?(\w+)$/

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Configuration

Returns a new instance of Configuration.



10
11
12
13
14
15
# File 'lib/phil_columns/configuration.rb', line 10

def initialize( options={} )
  @_config = Hashie::Mash.new( read_config_file ).
                          merge( options )

  super( _config )
end

Instance Method Details

#config_filepathObject



36
37
38
# File 'lib/phil_columns/configuration.rb', line 36

def config_filepath
  Pathname.new( '.phil_columns' )
end

#downObject

Not sure why we need these explicit proxies



41
# File 'lib/phil_columns/configuration.rb', line 41

def down;      _config.down;      end

#dry_runObject



42
# File 'lib/phil_columns/configuration.rb', line 42

def dry_run;   _config.dry_run;   end

#exclusion_tagsObject



27
28
29
30
# File 'lib/phil_columns/configuration.rb', line 27

def exclusion_tags
  partitioned_tags.first.
                   map { |tag| TAG_REGEX.match( tag )[1] }
end

#inclusion_tagsObject



32
33
34
# File 'lib/phil_columns/configuration.rb', line 32

def inclusion_tags
  partitioned_tags.last
end

#operationObject



43
# File 'lib/phil_columns/configuration.rb', line 43

def operation; _config.operation; end

#partitioned_tagsObject



23
24
25
# File 'lib/phil_columns/configuration.rb', line 23

def partitioned_tags
  @partitioned_tags ||= tags.partition { |tag| TAG_REGEX.match( tag ) }
end

#save_to_fileObject



58
59
60
61
62
# File 'lib/phil_columns/configuration.rb', line 58

def save_to_file
  File.open( config_filepath, 'w' ) do |f|
    f.write( YAML::dump( config_as_hash ))
  end
end

#slice(*keys) ⇒ Object



54
55
56
# File 'lib/phil_columns/configuration.rb', line 54

def slice( *keys )
  Hashie::Mash.new( _config.select { |k,v| keys.map( &:to_s ).include?( k.to_s ) } )
end

#tagsObject



17
18
19
20
21
# File 'lib/phil_columns/configuration.rb', line 17

def tags
  (_config[:tags].nil? || _config[:tags].empty?) ?
    _config.default_tags :
    _config.tags
end

#versionObject



45
46
47
48
49
50
51
52
# File 'lib/phil_columns/configuration.rb', line 45

def version
  if _config.down &&
      _config.version == 'all'
    '0'
  else
    _config.version
  end
end