Class: BeesService

Inherits:
Object
  • Object
show all
Defined in:
app/services/bees_service.rb

Overview

Handles logic of spelling bee

Class Method Summary collapse

Class Method Details

.guess(word, sbwords = [], sbscore = 0) ⇒ Array<String>, ...

Note:

This method updates session variables

This method validates a guess

Parameters:

  • word (String)

    guess for the game

  • sbwords (Array<String>) (defaults to: [])

    list of found words

  • sbscore (Integer) (defaults to: 0)

    current score

Returns:

  • (Array<String>)

    sbwords updated list of found words

  • (Integer)

    sbscore updated score

  • (String)

    message information about guess



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'app/services/bees_service.rb', line 39

def self.guess(word, sbwords = [], sbscore = 0)
    word = word.upcase
    message = nil

    if sbwords.include?(word)
        message = "You have already guessed that!"
    else
        message = valid_word?(word)
        if message == "valid"
            message = ""
            sbwords << word
            sbscore += calculate_score(word)
        end
    end

    return sbwords, sbscore, message
end

.set_day_bee(date = Date.today) ⇒ nil

This method generates a random game

Parameters:

  • date (Date) (defaults to: Date.today)

    for which you want to create a game

Returns:

  • (nil)


19
20
21
22
23
24
25
26
27
28
# File 'app/services/bees_service.rb', line 19

def self.set_day_bee(date = Date.today)
    while Bee.find_by(play_date: date).nil?
        letters = ("A".."Z").to_a.shuffle[0, 7].join
        valid_words = WordsService.words(letters)
        if valid_words.length > 20
            ranks = ranks(valid_words)
            Bee.create!(letters: letters, play_date: date, ranks: ranks)
        end
    end
end

.set_week_beenil

This method sets the upcoming 7 bee games

Returns:

  • (nil)


6
7
8
9
10
11
12
13
# File 'app/services/bees_service.rb', line 6

def self.set_week_bee
    tomorrow = Date.tomorrow
    bees = Bee.where(play_date: tomorrow...tomorrow + 7).order(:play_date)
    play_date = bees.any? ? bees.maximum(:play_date) : tomorrow
    (play_date..tomorrow + 6).each do |date|
        self.set_day_bee(date)
    end
end