Está acusando erro de syntax, porém não consigo identificar. A linha 55 é exatamente o "end" da função "respond.to?"
ruby sistema.rb
sistema.rb:4:in require_relative': C:/Users/MYRFRTS/Documents/Curso/livro/estoque.rb:55: syntax error, unexpected '!', expecting keyword_end (SyntaxError)
...+)_que_mais_vendeu_por_(.+)") !!matched || super
... ^
from sistema.rb:4:in
'
require_relative "contador"
class Estoque
attr_reader :livros, :vendas
def initialize
@livros = []
@vendas = []
@livros.extend Contador
end
def <<(livro)
@livros << livro if livro
self
end
def vende(livro)
@livros.delete livro
@vendas << livro
end
def maximo_necessario
@livros.maximo_necessario
end
def exporta_csv
@livros.each do |livro|
puts livro.to_csv
end
end
def mais_barato_que(valor)
@livros.select do |livro|
livro.preco <= valor
end
end
def total
@livros.size
end
def method_missing(name)
matcher = name.to_s.match "(.+)_que_mais_vendeu_por_(.+)"
if matcher
tipo = matcher[1]
campo = matcher[2].to_sym
que_mais_vendeu_por(tipo, &campo)
else
super
end
end
def respond_to?(name)
matched = name.to_s.match("(.+)_que_mais_vendeu_por_(.+)") !!matched || super
end
def quantidade_de_vendas_por(produto, &campo)
vendas.count {|venda| campo.call(venda) == campo.call(produto)}
end
def que_mais_vendeu_por(tipo, &campo)
vendas.select {|produto| produto.matches?(tipo)}.sort {|v1,v2| quantidade_de_vendas_por(v1, &campo) <=> quantidade_de_vendas_por(v2, &campo)}.last
end
#def que_mais_vendeu_por(tipo, &campo)
# vendas.select {|l| l.tipo == tipo}.sort {|v1,v2| quantidade_de_vendas_por(v1, &campo) <=> quantidade_de_vendas_por(v2, &campo)}.last
#end
#def livro_que_mais_vendeu_por(&campo)
# que_mais_vendeu_por("livro", &campo)
#end
#def revista_que_mais_vendeu_por(&campo)
# que_mais_vendeu_por("revista", &campo)
#end
end