Class: Writer::FileNamer

Inherits:
Object
  • Object
show all
Defined in:
lib/writer/file_namer.rb

Class Method Summary collapse

Class Method Details

.configObject



57
58
59
# File 'lib/writer/file_namer.rb', line 57

def config
  @configuration ||= Writer.config
end

.default_filenameObject



47
48
49
50
# File 'lib/writer/file_namer.rb', line 47

def default_filename
  date = Date.today
  date.strftime("#{date_format}.md")
end

.fix_no_ext(name) ⇒ Object



26
27
28
29
30
31
32
# File 'lib/writer/file_namer.rb', line 26

def fix_no_ext(name)
  if /\.$/ =~ name
    basename = name.gsub('.', '')

    prevent_overwrite(name, basename)
  end
end

.fix_standard(name) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/writer/file_namer.rb', line 16

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) ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/writer/file_namer.rb', line 6

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) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/writer/file_namer.rb', line 34

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) ⇒ Object



52
53
54
55
# File 'lib/writer/file_namer.rb', line 52

def separator_for(name, base = nil)
  return "." if base || name.include?('.')
  "--"
end