Module: EventMeter::PathName

Defined in:
lib/event_meter/path_name.rb

Constant Summary collapse

WINDOWS_RESERVED_NAMES =
%w[
  con prn aux nul
  com1 com2 com3 com4 com5 com6 com7 com8 com9
  lpt1 lpt2 lpt3 lpt4 lpt5 lpt6 lpt7 lpt8 lpt9
].freeze

Class Method Summary collapse

Class Method Details

.event(name) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/event_meter/path_name.rb', line 13

def event(name)
  original = name.to_s
  readable = original
    .downcase
    .gsub(/[^a-z0-9_-]+/, "-")
    .gsub(/-+/, "-")
    .gsub(/\A-|-+\z/, "")

  readable = "event" if readable.empty?
  readable = "event-#{readable}" if WINDOWS_RESERVED_NAMES.include?(readable)
  readable = readable[0, 80].gsub(/-+\z/, "")

  "#{readable}-#{Digest::SHA256.hexdigest(original)[0, 16]}"
end

.version(version) ⇒ Object



28
29
30
31
32
33
34
35
# File 'lib/event_meter/path_name.rb', line 28

def version(version)
  version = Integer(version)
  raise ArgumentError if version <= 0

  "v#{version}"
rescue ArgumentError, TypeError, RangeError
  raise ArgumentError, "report version must be a positive integer"
end