Skip to content

Instantly share code, notes, and snippets.

View GeorgeBramus's full-sized avatar

Георгий Брамус GeorgeBramus

  • FullRange
  • Russian Feedration
View GitHub Profile
@GeorgeBramus
GeorgeBramus / interactor.rb
Created December 16, 2017 12:16
monstrous string
# было
private def coincides?(card_original_text, custom_original_text)
DamerauLevenshtein.distance(card_original_text.mb_chars.downcase.to_s, custom_original_text.mb_chars.downcase.to_s) < card_original_text.size * ALLOWED_TYPOS
end
# стало
private def coincides?(:card_original_text, :custom_original_text)
DamerauLevenshtein.distance(:card_original_text, :custom_original_text) < :card_original_text.size * ALLOWED_TYPOS
end
@GeorgeBramus
GeorgeBramus / check_card_and_update.rb
Created December 15, 2017 11:34
misspelling output
class CheckCardAndUpdate
# ...
def call
card = Card.find(context.card_id)
context.message = if coincides?(card.original_text, context.custom_original_text)
correct_answer(card)
'right'
else
@GeorgeBramus
GeorgeBramus / controller
Created December 14, 2017 13:06
levenshtein
def check
result = CheckCardAndUpdate.call(
custom_original_text: params[:original_text],
card_id: params[:id]
)
@misspelling = DamerauLevenshtein.distance(params[:original_text], Card.find(params[:id]).original_text)
flash[:notice] = result.message
redirect_to action: :index
end
class CheckCardAndUpdate
include Interactor
def call
card = Card.find(context.card_id)
context.message = if coincides?(card.original_text, context.custom_original_text)
correct_answer(card)
'Вы правильно ответили!'
else