Class: Adhearsion::Asterisk::ConfigGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/adhearsion/asterisk/config_generator.rb,
lib/adhearsion/asterisk/config_generator/agents.rb,
lib/adhearsion/asterisk/config_generator/queues.rb,
lib/adhearsion/asterisk/config_generator/voicemail.rb

Defined Under Namespace

Classes: Agents, Queues, Voicemail

Constant Summary

SECTION_TITLE =
/(\[[\w_-]+\])/

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize {|_self| ... } ⇒ ConfigGenerator

Returns a new instance of ConfigGenerator

Yields:

  • (_self)

Yield Parameters:



34
35
36
# File 'lib/adhearsion/asterisk/config_generator.rb', line 34

def initialize
  yield self if block_given?
end

Class Method Details

.create_sanitary_hash_from(config_file_content) ⇒ Object

Converts a config file into a Hash of contexts mapping to two dimensional array of pairs



14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/adhearsion/asterisk/config_generator.rb', line 14

def create_sanitary_hash_from(config_file_content)
  almost_sanitized = Hash[*config_file_content.
    split("\n").          # Split the lines into an Array
    grep(/^\s*[^;\s]/).   # Grep lines that aren't commented out
    join("\n").           # Convert them into one String again
    split(SECTION_TITLE). # Separate them into sections
    map(&:strip).         # Remove all whitespace
    reject(&:empty?).     # Get rid of indices that were only whitespace
                          # Lastly, separate the keys/value pairs for the Hash
    map { |token| token =~ /^#{SECTION_TITLE}$/ ? token : token.split(/\n+/).sort }
  ]
end

.warning_messageObject



27
28
29
30
# File 'lib/adhearsion/asterisk/config_generator.rb', line 27

def warning_message
  %{;; THIS FILE WAS GENERATED BY ADHEARSION ON #{Time.now.ctime}!\n} +
  %{;; ANY CHANGES MADE BELOW WILL BE BLOWN AWAY WHEN THE FILE IS REGENERATED!\n\n}
end

Instance Method Details

#to_sanitary_hashObject



38
39
40
# File 'lib/adhearsion/asterisk/config_generator.rb', line 38

def to_sanitary_hash
  self.class.create_sanitary_hash_from to_s
end