class Writer::FileNamer

Attributes

config[R]

Public Class Methods

new() click to toggle source
# File lib/writer/file_namer.rb, line 7
def initialize
  @config = Writer.config
end

Public Instance Methods

default_filename() click to toggle source
# File lib/writer/file_namer.rb, line 52
def default_filename
  date = Date.today
  date.strftime("#{date_format}.md")
end
fix_no_ext(name) click to toggle source
# File lib/writer/file_namer.rb, line 31
def fix_no_ext(name)
  if /\.$/ =~ name
    basename = name.gsub('.', '')

    prevent_overwrite(name, basename)
  end
end
fix_standard(name) click to toggle source
# File lib/writer/file_namer.rb, line 21
def fix_standard(name)
  if /.+\..+/ =~ name
    parts = name.split('.')
    basename = parts[0..-2].join('.')
    extension = parts.last

    prevent_overwrite(name, basename, extension)
  end
end
name_for(filename) click to toggle source
# File lib/writer/file_namer.rb, line 11
def name_for(filename)
  filename ||= default_filename

  name   = fix_standard(filename)
  name ||= fix_no_ext(filename)
  name ||= prevent_overwrite(filename)

  name
end
prevent_overwrite(name, base = nil, ext = nil) click to toggle source
# File lib/writer/file_namer.rb, line 39
def prevent_overwrite(name, base = nil, ext = nil)
  separator = separator_for(name, base)
  to_fix = base || name
  count = 1

  while File.exists?(name)
    name = append_count(to_fix, separator, count += 1)
    name << ".#{ext}" if base
  end

  name
end
separator_for(name, base = nil) click to toggle source
# File lib/writer/file_namer.rb, line 57
def separator_for(name, base = nil)
  return "." if base || name.include?('.')
  "--"
end

Private Instance Methods

append_count(name, separator, count) click to toggle source
# File lib/writer/file_namer.rb, line 63
def append_count(name, separator, count)
  basename = name.gsub(/(--|\.)\d*$/, '')
  zero_pad = count < 10 ? 0 : nil

  [basename, separator, zero_pad, count].join
end
date_format() click to toggle source
# File lib/writer/file_namer.rb, line 70
def date_format
  config.date_format
end