Class: Hasmenu::Formatter

Inherits:
Object
  • Object
show all
Includes:
Printer
Defined in:
lib/hasmenu/formatter.rb

Instance Method Summary collapse

Methods included from Printer

#print_build_for, #print_build_start, #print_format_for, #print_format_start, #print_header, #print_invalid_build, #print_invalid_format, #print_invalid_path, #print_invalid_report, #print_invalid_sequence, #print_invalid_version, #print_report, #print_warn_repeats

Constructor Details

#initialize(type, options) ⇒ Formatter

Returns a new instance of Formatter.



7
8
9
10
# File 'lib/hasmenu/formatter.rb', line 7

def initialize(type, options)
  @type = type.chomp("/")
  @location = options[:location] || Dir.pwd
end

Instance Method Details

#format(path) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/hasmenu/formatter.rb', line 40

def format(path)
  path = File.join(@location, path)

  unless valid_path? path
    print_invalid_path
    return
  end

  print_format_start
  case @type
    when "chains", "restaurants"
      format_list path
    when "menu"
      if File.directory? path
        format_files path
      else
        format_file path
      end
    else
      print_invalid_format
  end
end

#format_file(path) ⇒ Object



28
29
30
31
32
# File 'lib/hasmenu/formatter.rb', line 28

def format_file(path)
  data = YAML.load_file(path)
  File.open(path, "w") { |f| f.write data.to_yaml }
  print_format_for File.basename(File.dirname(path))
end

#format_files(path) ⇒ Object



34
35
36
37
38
# File 'lib/hasmenu/formatter.rb', line 34

def format_files(path)
  Dir.glob(File.join(path, "**", "*.yml")) do |file|
    format_file file
  end
end

#format_list(path) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/hasmenu/formatter.rb', line 16

def format_list(path)
  data = YAML.load_file(path)
  unless data.is_a? Array
    print_invalid_path
    return
  end

  data.sort_by! { |e| [e["chain"], e["uid"]] }
  File.open(path, "w") { |f| f.write data.to_yaml }
  print_format_for File.basename(path)
end

#valid_path?(path) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/hasmenu/formatter.rb', line 12

def valid_path?(path)
  (File.file?(path) && File.extname(path) == ".yml") || File.directory?(path)
end