class UniversalAccessLogParser::ElementGroup
Public Class Methods
new(parent, &block)
click to toggle source
# File lib/universal-access-log-parser.rb, line 120 def initialize(parent, &block) @parent = parent instance_eval &block end
parser(name, &block)
click to toggle source
custom parser definition
# File lib/universal-access-log-parser.rb, line 126 def self.parser(name, &block) define_method(name, &block) end
Public Instance Methods
date(name, format = '%d/%b/%Y:%H:%M:%S %z', options = {})
click to toggle source
# File lib/universal-access-log-parser.rb, line 208 def date(name, format = '%d/%b/%Y:%H:%M:%S %z', options = {}) regex = Regexp.escape(format).gsub(/%./, '.+').gsub(/\//, '\\/') + '?' element(name, regex, options) do |match| DateTime.strptime(match, format).new_offset(0).instance_eval do Time.utc(year, mon, mday, hour, min, sec + sec_fraction) end end end
date_iis(name, options = {})
click to toggle source
# File lib/universal-access-log-parser.rb, line 204 def date_iis(name, options = {}) date(name, '%Y-%m-%d %H:%M:%S', options) end
date_ncsa(name, options = {})
click to toggle source
# File lib/universal-access-log-parser.rb, line 200 def date_ncsa(name, options = {}) date(name, '%d/%b/%Y:%H:%M:%S %z', options) end
double_quoted(&block)
click to toggle source
# File lib/universal-access-log-parser.rb, line 196 def double_quoted(&block) surrounded_by('"', '"', &block) end
element(name, regexp, options = {}, &parser)
click to toggle source
# File lib/universal-access-log-parser.rb, line 172 def element(name, regexp, options = {}, &parser) nil_on = options[:nil_on] process = options[:process] if process p = lambda{|s| process.call(parser.call(s))} else p = parser end push Element.new(name, regexp, nil_on, &p) end
float(name, options = {})
click to toggle source
# File lib/universal-access-log-parser.rb, line 227 def float(name, options = {}) element(name, '[\+|-]?\d+\.?\d*', options){|s| s.to_f} end
integer(name, options = {})
click to toggle source
# File lib/universal-access-log-parser.rb, line 223 def integer(name, options = {}) element(name, '[\+|-]?\d+', options){|s| s.to_i} end
integratin_group(separator, &block)
click to toggle source
core DSL
# File lib/universal-access-log-parser.rb, line 160 def integratin_group(separator, &block) push ElementGroup::Integrating.new(self, separator, &block) end
ip(name, options = {})
click to toggle source
# File lib/universal-access-log-parser.rb, line 217 def ip(name, options = {}) greedy = true greedy = options[:greedy] if options.member? :greedy element(name, ".*#{greedy ? '?' : ''}", options){|s| IP.new(s)} end
names()
click to toggle source
# File lib/universal-access-log-parser.rb, line 139 def names map do |e| if e.kind_of? ElementGroup e.names else e.name end end.flatten end
optional(name, options = {}, &block)
click to toggle source
# File lib/universal-access-log-parser.rb, line 168 def optional(name, options = {}, &block) push ElementGroup::Optional.new(self, name, options, &block) end
parsers()
click to toggle source
# File lib/universal-access-log-parser.rb, line 149 def parsers map do |e| if e.kind_of? ElementGroup e.parsers else e.parser end end.flatten end
regexp()
click to toggle source
# File lib/universal-access-log-parser.rb, line 135 def regexp map{|e| e.regexp}.join(separator) end
separated_with(separator, &block)
click to toggle source
DSL
# File lib/universal-access-log-parser.rb, line 184 def separated_with(separator, &block) integratin_group(separator, &block) end
separator()
click to toggle source
# File lib/universal-access-log-parser.rb, line 130 def separator raise ParsingError, 'Integrating ElementGroup not defined in ElementGroup hierarhy' unless @parent @parent.separator end
single_quoted(&block)
click to toggle source
# File lib/universal-access-log-parser.rb, line 192 def single_quoted(&block) surrounded_by("'", "'", &block) end
string(name, options = {})
click to toggle source
# File lib/universal-access-log-parser.rb, line 231 def string(name, options = {}) greedy = true greedy = options[:greedy] if options.member? :greedy element(name, ".*#{greedy ? '?' : ''}", options){|s| s} end
surrounded_by(left, right, &block)
click to toggle source
# File lib/universal-access-log-parser.rb, line 188 def surrounded_by(left, right, &block) surrounding_group(left, right, &block) end
surrounding_group(left, right, &block)
click to toggle source
# File lib/universal-access-log-parser.rb, line 164 def surrounding_group(left, right, &block) push ElementGroup::Surrounding.new(self, left, right, &block) end