module FFaker::Product

def brand

def brand
  case rand(0..11)
  when (0..4) then fetch_sample(B1) + fetch_sample(B2)
  when (5..10) then
    [
      fetch_sample(START), fetch_sample(VOWELS), fetch_sample(SUFFIX),
      rand(0..1).zero? ? fetch_sample(ADDON) : nil
    ].join.capitalize
  when 11 then letters(2..3).to_s
  end
end

def letters(n)

def letters(n)
  max = n.is_a?(Range) ? fetch_sample(n.to_a) : n
  (0...max).map { fetch_sample(LETTERS).upcase }.join
end

def model

def model
  case rand(0..1)
  when 0 then "#{fetch_sample(LETTERS).upcase}#{rand(90)}" # N90
  when 1 then "#{letters(1..rand(1..2))}-#{rand(9900)}" # N-9400
  end
end

def product

def product
  "#{brand} #{product_name}"
end

def product_name

def product_name
  case rand(0..1)
  when 0 then "#{fetch_sample(ADJ)} #{fetch_sample(NOUN)}"
  when 1 then "#{[fetch_sample(ADJ), fetch_sample(ADJ)].uniq.join(' ')} #{fetch_sample(NOUN)}"
  end
end