Class: HowLongToBeat::JSONResultParser

Inherits:
Object
  • Object
show all
Defined in:
lib/howlongtobeat/json_result_parser.rb

Constant Summary collapse

IMAGE_URL_PREFIX =
"https://howlongtobeat.com/games/"
GAME_URL_PREFIX =
"https://howlongtobeat.com/game/"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(input_game_name, input_game_url, input_minimum_similarity, input_game_id = nil, input_similarity_case_sensitive = true, input_auto_filter_times = false) ⇒ JSONResultParser

Returns a new instance of JSONResultParser.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/howlongtobeat/json_result_parser.rb', line 11

def initialize(input_game_name, input_game_url, input_minimum_similarity, input_game_id = nil,
             input_similarity_case_sensitive = true, input_auto_filter_times = false)
  @results = []
  @minimum_similarity = input_minimum_similarity
  @similarity_case_sensitive = input_similarity_case_sensitive
  @auto_filter_times = input_auto_filter_times
  @game_id = input_game_id
  @base_game_url = input_game_url
  @game_name = input_game_name
  @game_name_numbers = @game_name.split(" ").select { |word| word.match?(/^\d+$/) }

  if @game_id
    @minimum_similarity = 0
    @similarity_case_sensitive = false
  end
end

Instance Attribute Details

#resultsObject (readonly)

Returns the value of attribute results.



9
10
11
# File 'lib/howlongtobeat/json_result_parser.rb', line 9

def results
  @results
end

Instance Method Details

#parse_json_result(input_json_result) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/howlongtobeat/json_result_parser.rb', line 28

def parse_json_result(input_json_result)
  response_result = JSON.parse(input_json_result)
  games = extract_games(response_result)
  return if games.nil? || games.empty?

  games.each do |game|
    new_game_entry = parse_json_element(game)

    if @game_id && new_game_entry.game_id.to_s != @game_id.to_s
      next
    elsif @minimum_similarity == 0.0
      @results << new_game_entry
    elsif new_game_entry.similarity >= @minimum_similarity
      @results << new_game_entry
    end
  end
end