class GroceryList::FileItemParser

Public Class Methods

read(file_path) click to toggle source
# File lib/grocery_list/item_parsers/file_item_parser.rb, line 4
def read(file_path)
  raise ArgumentError unless file_path.is_a? String
  file = IO.read(file_path)
  items_from_file(file)
end

Private Class Methods

is_valid_item(line) click to toggle source
# File lib/grocery_list/item_parsers/file_item_parser.rb, line 23
def is_valid_item(line)
  line.start_with? " *"
end
item_name(line) click to toggle source
# File lib/grocery_list/item_parsers/file_item_parser.rb, line 27
def item_name(line)
  line[2..-1].strip
end
items_from_file(file) click to toggle source
# File lib/grocery_list/item_parsers/file_item_parser.rb, line 11
def items_from_file(file)
  file.split("\n").map do |line|
    line_to_item(line)
  end.select do |item|
    item.is_a? Item
  end
end
line_to_item(line) click to toggle source
# File lib/grocery_list/item_parsers/file_item_parser.rb, line 19
def line_to_item(line)
  Item.new(item_name(line)) if is_valid_item(line)
end