module NSCA::Helper
Public Class Methods
class_name_gen(label)
click to toggle source
# File lib/nsca.rb, line 15 def class_name_gen label clname = label.gsub( /\W+/, '_').sub /^[0-9_]+/, '' return nil if clname.empty? clname[0] = clname[0].upcase clname.to_sym end
crc32_stream()
click to toggle source
# File lib/nsca.rb, line 41 def crc32_stream sum = 0xFFFFFFFF lambda do |str| sum = str.bytes.inject sum do |r, b| 8.times.inject( r^b) {|r,_i| (r>>1) ^ (0xEDB88320 * (r&1)) } end if str sum ^ 0xFFFFFFFF end end
xor_stream(key)
click to toggle source
# File lib/nsca.rb, line 22 def xor_stream key key = case key when Array then key when String then key.bytes.to_a when Enumerable then key.to_a end return lambda{|x|x} if [nil, '', []].include? key length = key.length i = 0 lambda do |str| r = '' str.bytes.each_with_index do |c, j| r[j] = (c ^ key[i]).chr i = (i + 1) % length end r end end