Module: Doh
  
  
  
  
  
  
  
  
  
  
  
  
    - Defined in:
- lib/doh/home.rb,
 lib/doh/util/jsval.rb,
 lib/doh/util/xml_util.rb,
 lib/doh/util/file_edit.rb,
 lib/doh/util/post_hash.rb,
 lib/doh/util/source_ip.rb,
 lib/doh/util/time_util.rb,
 lib/doh/util/doh_socket.rb,
 lib/doh/util/to_display.rb,
 lib/doh/logger/interface.rb,
 lib/doh/util/http_helper.rb,
 lib/doh/util/internal_ip.rb,
 lib/doh/util/num_or_self.rb,
 lib/doh/util/current_date.rb,
 lib/doh/util/class_basename.rb
 
Defined Under Namespace
  
    
  
    
      Classes: DohSocket, FileEdit, HttpHelper, TimeoutError
    
  
  
    
      Constant Summary
      collapse
    
    
      
        - @@source_ip =
          
        
- nil 
- @@logger_interface =
          
        
- DohLogger::NullInterface.new 
- @@save_logger_interface =
          
        
- nil 
- @@current_date_objs =
          
        
- [] 
      Class Method Summary
      collapse
    
    
  
  
    Class Method Details
    
      
  
  
    .class_basename(klass)  ⇒ Object 
  
  
  
  
    | 
5
6
7
8 | # File 'lib/doh/util/class_basename.rb', line 5
def self.class_basename(klass)
  full_name = klass.to_s
  full_name.rafter('::') || full_name
end | 
 
    
      
  
  
    .clear_current_date  ⇒ Object 
  
  
  
  
    | 
27
28
29 | # File 'lib/doh/util/current_date.rb', line 27
def self.clear_current_date
  @@current_date_objs.clear
end | 
 
    
      
  
  
    .current_date(dflt = Date.today)  ⇒ Object 
  
  
  
  
    | 
7
8
9
10 | # File 'lib/doh/util/current_date.rb', line 7
def self.current_date(dflt = Date.today)
  return dflt if @@current_date_objs.empty?
  @@current_date_objs.last.date_only
end | 
 
    
      
  
  
    .current_datetime(dflt = DateTime.zow)  ⇒ Object 
  
  
  
  
    | 
12
13
14
15
16
17 | # File 'lib/doh/util/current_date.rb', line 12
def self.current_datetime(dflt = DateTime.zow)
  return dflt if @@current_date_objs.empty?
  cdo = @@current_date_objs.last
  return cdo if cdo.respond_to?(:hour)
  DateTime.new(cdo.year, cdo.month, cdo.day, dflt.hour, dflt.min, dflt.sec, dflt.zone)
end | 
 
    
      
  
  
    .date_as(date_obj, &block)  ⇒ Object 
  
  
  
  
    | 
31
32
33
34
35
36
37
38
39
40
41 | # File 'lib/doh/util/current_date.rb', line 31
def self.date_as(date_obj, &block)
  push_current_date(date_obj)
  begin
    retval = block.call
  rescue
    raise
  ensure
    pop_current_date
  end
  retval
end | 
 
    
      
  
  
    .disable_logging  ⇒ Object 
  
  
  
  
    | 
15
16
17
18
19 | # File 'lib/doh/logger/interface.rb', line 15
def self.disable_logging
  return if @@logger_interface.is_a?(DohLogger::NullInterface)
  @@save_logger_interface = @@logger_interface
  @@logger_interface = DohLogger::NullInterface.new
end | 
 
    
      
  
  
    .display_phone(str)  ⇒ Object 
  
  
  
  
    | 
72
73
74
75 | # File 'lib/doh/util/to_display.rb', line 72
def self.display_phone(str)
  return str unless str.size == 10
  str[0..2] + '-' + str[3..5] + '-' + str[6..9]
end | 
 
    
      
  
  
    .display_postal(str)  ⇒ Object 
  
  
  
  
    | 
77
78
79
80 | # File 'lib/doh/util/to_display.rb', line 77
def self.display_postal(str)
  return str unless str.size == 9
  return str[0..4] + '-' + str[5..8]
end | 
 
    
      
  
  
    .display_ssn(str)  ⇒ Object 
  
  
  
  
    | 
82
83
84
85 | # File 'lib/doh/util/to_display.rb', line 82
def self.display_ssn(str)
  return str unless str.size == 9
  str[0..2] + '-' + str[3..4] + '-' + str[5..8]
end | 
 
    
      
  
  
    .elem_to_hash(elem)  ⇒ Object 
  
  
  
  
    | 
35
36
37
38
39
40
41
42
43
44
45
46 | # File 'lib/doh/util/xml_util.rb', line 35
def self.elem_to_hash(elem)
  return {} if !elem.is_a?(REXML::Element)
  if elem.has_elements?
    children_hash = {}
    elem.children.each do |child|
      children_hash.merge!(elem_to_hash(child))
    end
    {elem.name => children_hash}
  else
    {elem.name => elem.text}
  end
end | 
 
    
      
  
  
    .elem_to_xml(elem, node)  ⇒ Object 
  
  
  
  
    | 
15
16
17
18
19
20
21
22
23 | # File 'lib/doh/util/xml_util.rb', line 15
def self.elem_to_xml(elem, node)
  elem.each_pair do |field, value|
    if value.class == Hash
      elem_to_xml(value, node.add_element(field))
    else
      node.add_element(field).add_text(value.to_s)
    end
  end
end | 
 
    
      
  
  
    .enable_logging  ⇒ Object 
  
  
  
  
    | 
21
22
23
24
25 | # File 'lib/doh/logger/interface.rb', line 21
def self.enable_logging
  return if @@save_logger_interface.nil? || @@save_logger_interface.is_a?(DohLogger::NullInterface)
  @@logger_interface = @@save_logger_interface
  @@save_logger_interface = nil
end | 
 
    
      
  
  
    .find_file_in_parents(dir, filename, max_tries = 20)  ⇒ Object 
  
  
  
  
    | 
6
7
8
9
10
11
12
13
14
15 | # File 'lib/doh/home.rb', line 6
def self.find_file_in_parents(dir, filename, max_tries = 20)
  path = File.expand_path(dir)
  raise "unable to find #{filename.inspect}" if (path == '/') || (max_tries <= 0)
  if File.exist?(File.join(path, filename))
    return path
  else
    return find_file_in_parents(File.join(path, '..'), filename, max_tries - 1)
  end
end | 
 
    
      
  
  
    .hash_to_xml(hash, root_node_name = nil)  ⇒ Object 
  
  
  
  
    | 
5
6
7
8
9
10
11
12
13 | # File 'lib/doh/util/xml_util.rb', line 5
def self.hash_to_xml(hash, root_node_name = nil)
  doc = REXML::Document.new
  doc << REXML::XMLDecl.new
  if root_node_name
    doc = doc.add_element(root_node_name)
  end
  elem_to_xml(hash, doc)
  doc.to_s
end | 
 
    
      
  
  
    | 
2
3
4 | # File 'lib/doh/home.rb', line 2
def self.home
  @@home ||= find_file_in_parents(File.dirname(__FILE__), 'dohapp_home')
end | 
 
    
      
  
  
    .internal_ip  ⇒ Object 
  
  
  
  
    | 
5
6
7 | # File 'lib/doh/util/internal_ip.rb', line 5
def self.internal_ip
  @@internal_ip ||= Socket.getaddrinfo(Socket.gethostname, nil, Socket::AF_INET, Socket::SOCK_STREAM)[0][3]
end | 
 
    
      
  
  
    .jsval(value)  ⇒ Object 
  
  
  
  
    | 
5
6
7
8
9
10
11 | # File 'lib/doh/util/jsval.rb', line 5
def self.jsval(value)
  if value.is_a?(Date)
    "new Date(#{value.year},#{value.month-1},#{value.mday})"
  else
    value
  end
end | 
 
    
      
  
  
    | 
10
11
12 | # File 'lib/doh/logger/interface.rb', line 10
def self.log
  @@logger_interface
end | 
 
    
      
  
  
    .num_or_self(obj)  ⇒ Object 
  
  
  
  
    | 
3
4
5
6
7
8 | # File 'lib/doh/util/num_or_self.rb', line 3
def self.num_or_self(obj)
  if obj.class == String && obj =~ /^\d+$/
    return obj.to_i
  end
  return obj
end | 
 
    
      
  
  
    .pop_current_date  ⇒ Object 
  
  
  
  
    | 
23
24
25 | # File 'lib/doh/util/current_date.rb', line 23
def self.pop_current_date
  @@current_date_objs.pop
end | 
 
    
      
  
  
    .post_hash_as_xml(hash, base_node = nil, url = 'http://localhost:4000/')  ⇒ Object 
  
  
  
  
    | 
9
10
11
12 | # File 'lib/doh/util/post_hash.rb', line 9
def self.post_hash_as_xml(hash, base_node = nil, url = 'http://localhost:4000/')
  helper = HttpHelper.new(url).xml
  helper.post("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>#{hash_to_xml(hash, base_node)}")
end | 
 
    
      
  
  
    .push_current_date(date_obj)  ⇒ Object 
  
  
  
  
    | 
19
20
21 | # File 'lib/doh/util/current_date.rb', line 19
def self.push_current_date(date_obj)
  @@current_date_objs.push(date_obj)
end | 
 
    
      
  
  
    .seconds_to_days(seconds)  ⇒ Object 
  
  
  
 
    
      
  
  
    .set_logger_interface(logger_interface)  ⇒ Object 
  
  
  
  
    | 
6
7
8 | # File 'lib/doh/logger/interface.rb', line 6
def self.set_logger_interface(logger_interface)
  @@logger_interface = logger_interface
end | 
 
    
      
  
  
    .set_source_ip(source_ip)  ⇒ Object 
  
  
  
  
    | 
8
9
10 | # File 'lib/doh/util/source_ip.rb', line 8
def self.set_source_ip(source_ip)
  @@source_ip = source_ip
end | 
 
    
      
  
  
    .source_ip  ⇒ Object 
  
  
  
  
    | 
4
5
6 | # File 'lib/doh/util/source_ip.rb', line 4
def self.source_ip
  @@source_ip ||= 'unknown'
end | 
 
    
      
  
  
    .time_block  ⇒ Object 
  
  
  
  
    | 
3
4
5
6
7 | # File 'lib/doh/util/time_util.rb', line 3
def self.time_block
  start_time = Time.now
  yield
  return Time.now - start_time
end | 
 
    
      
  
  
    .xml_to_hash(xml)  ⇒ Object 
  
  
  
  
    | 
25
26
27
28
29
30
31
32
33 | # File 'lib/doh/util/xml_util.rb', line 25
def self.xml_to_hash(xml)
  doc = REXML::Document.new(xml)
  doc.children.each do |child|
    if child.respond_to?('name')
      return elem_to_hash(child)
    end
  end
  raise "unable to find root node in xml: #{xml.inspect}"
end |