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