Class: Dradis::Plugins::Settings
  
  
  
  
  
    - Inherits:
 
    - 
      Object
      
        
          - Object
 
          
            - Dradis::Plugins::Settings
 
          
        
        show all
      
     
  
  
  
  
  
  
  
  
  
  
    - Defined in:
 
    - lib/dradis/plugins/settings.rb
 
  
  
 
Defined Under Namespace
  
    
      Modules: Adapters
    
  
    
  
  Instance Attribute Summary collapse
  
  
    
      Instance Method Summary
      collapse
    
    
  
  Constructor Details
  
    
  
  
    #initialize(namespace, adapter: :db)  ⇒ Settings 
  
  
  
  
    
Returns a new instance of Settings.
   
 
  
  
    
      
5
6
7
8
9
10 
     | 
    
      # File 'lib/dradis/plugins/settings.rb', line 5
def initialize(namespace, adapter: :db)
  @namespace = namespace
  @dirty_options ||= {}
  @default_options ||= { enabled: true }.with_indifferent_access
  assign_adapter(adapter)
end
     | 
  
 
  
 
  Dynamic Method Handling
  
    This class handles dynamic methods through the method_missing method
    
  
  
    
  
  
    #method_missing(name, *args, &blk)  ⇒ Object  
  
  
  
  
    
—————————————————- Method missing magic
   
 
  
  
    
      
57
58
59
60
61
62
63
64
65
66
67 
     | 
    
      # File 'lib/dradis/plugins/settings.rb', line 57
def method_missing(name, *args, &blk)
  if name.to_s =~ /^default_(.*)=$/
    @default_options[$1.to_sym] = args.first
  elsif name.to_s =~ /=$/
    @dirty_options[$`.to_sym] = args.first
  elsif @default_options.key?(name)
    dirty_or_stored_or_default(name)
  else
    super
  end
end
     | 
  
 
  
 
  
    Instance Attribute Details
    
      
      
      
  
  
    #namespace  ⇒ Object  
  
  
  
  
    
Returns the value of attribute namespace.
   
 
  
  
    
      
3
4
5 
     | 
    
      # File 'lib/dradis/plugins/settings.rb', line 3
def namespace
  @namespace
end 
     | 
  
 
    
   
  
    Instance Method Details
    
      
  
  
    #all  ⇒ Object 
  
  
  
  
    
      
16
17
18
19
20
21
22
23
24 
     | 
    
      # File 'lib/dradis/plugins/settings.rb', line 16
def all
  @default_options.except(:enabled).map do |key, value|
    {
      name: key.to_sym,
      value: value = dirty_or_stored_or_default(key.to_sym),
      default: is_default?(key, value)
    }
  end.sort_by{ |o| o[:name] }
end
     | 
  
 
    
      
  
  
    #is_default?(key, value)  ⇒ Boolean 
  
  
  
  
    
      
48
49
50 
     | 
    
      # File 'lib/dradis/plugins/settings.rb', line 48
def is_default?(key, value)
  value.to_s == @default_options[key.to_sym].to_s
end 
     | 
  
 
    
      
  
  
    #reset_defaults!  ⇒ Object 
  
  
  
  
    
      
41
42
43
44
45
46 
     | 
    
      # File 'lib/dradis/plugins/settings.rb', line 41
def reset_defaults!
  @dirty_options = {}
  @default_options.each do |key, value|
    delete(key) if exists?(key)
  end
end
     | 
  
 
    
      
  
  
    #respond_to?(name)  ⇒ Boolean 
  
  
  
  
    
      
12
13
14 
     | 
    
      # File 'lib/dradis/plugins/settings.rb', line 12
def respond_to?(name)
  super || @dirty_options.key?(name.to_sym)
end 
     | 
  
 
    
      
  
  
    #save  ⇒ Object 
  
  
  
  
    
      
26
27
28
29
30
31
32 
     | 
    
      # File 'lib/dradis/plugins/settings.rb', line 26
def save
  @dirty_options.reject do |k, v|
    v.present? && v == read(k)
  end.each do |k, v|
    write(k, v)
  end
end
     | 
  
 
    
      
  
  
    #update_settings(opts = {})  ⇒ Object 
  
  
  
  
    
      
34
35
36
37
38
39 
     | 
    
      # File 'lib/dradis/plugins/settings.rb', line 34
def update_settings(opts = {})
  opts.select{ |k, v| @default_options.key?(k) }.each do |k, v|
    @dirty_options[k.to_sym] = v
  end
  save
end
     |