From cec61328236e243046880f8ec5c3e0340bf091c0 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Sun, 2 Mar 2025 16:19:13 -0800 Subject: [PATCH] Update wiki namespace in parsers --- lib/granblue/parsers/character_parser.rb | 23 ++++++++++++++++------- lib/granblue/parsers/summon_parser.rb | 2 +- lib/granblue/parsers/weapon_parser.rb | 8 ++++---- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/lib/granblue/parsers/character_parser.rb b/lib/granblue/parsers/character_parser.rb index f042946..ec44cc3 100644 --- a/lib/granblue/parsers/character_parser.rb +++ b/lib/granblue/parsers/character_parser.rb @@ -8,16 +8,22 @@ module Granblue class CharacterParser attr_reader :granblue_id - def initialize(granblue_id: String, debug: false) + def initialize(granblue_id: String, debug: false, use_local: false) @character = Character.find_by(granblue_id: granblue_id) @wiki = Granblue::Parsers::Wiki.new @debug = debug || false + @use_local = use_local end # Fetches using @wiki and then processes the response # Returns true if successful, false if not # Raises an exception if something went wrong def fetch(save: false) + if @use_local && @character.wiki_raw.present? + wikitext = @character.wiki_raw + return handle_fetch_success(wikitext, save) + end + response = fetch_wiki_info return false if response.nil? @@ -48,6 +54,9 @@ module Granblue # Handle the response from the wiki if the response is successful # If the save flag is set, it will persist the data to the database def handle_fetch_success(response, save) + @character.wiki_raw = response + @character.save! + ap "#{@character.granblue_id}: Successfully fetched info for #{@character.wiki_en}" if @debug extracted = parse_string(response) info = parse(extracted) @@ -151,12 +160,12 @@ module Granblue info[:id] = hash['id'] info[:charid] = hash['charid'].scan(/\b\d{4}\b/) - info[:flb] = GranblueWiki.boolean.fetch(hash['5star'], false) + info[:flb] = Granblue::Parsers::Wiki.boolean.fetch(hash['5star'], false) info[:ulb] = hash['max_evo'].to_i == 6 - info[:rarity] = GranblueWiki.rarities.fetch(hash['rarity'], 0) - info[:element] = GranblueWiki.elements.fetch(hash['element'], 0) - info[:gender] = GranblueWiki.genders.fetch(hash['gender'], 0) + info[:rarity] = Granblue::Parsers::Wiki.rarities.fetch(hash['rarity'], 0) + info[:element] = Granblue::Parsers::Wiki.elements.fetch(hash['element'], 0) + info[:gender] = Granblue::Parsers::Wiki.genders.fetch(hash['gender'], 0) info[:proficiencies] = proficiencies_from_hash(hash['weapon']) info[:races] = races_from_hash(hash['race']) @@ -210,14 +219,14 @@ module Granblue # Converts proficiencies from a string to a hash def proficiencies_from_hash(character) character.to_s.split(',').map.with_index do |prof, i| - { "proficiency#{i + 1}" => GranblueWiki.proficiencies[prof] } + { "proficiency#{i + 1}" => Granblue::Parsers::Wiki.proficiencies[prof] } end.reduce({}, :merge) end # Converts races from a string to a hash def races_from_hash(race) race.to_s.split(',').map.with_index do |r, i| - { "race#{i + 1}" => GranblueWiki.races[r] } + { "race#{i + 1}" => Granblue::Parsers::Wiki.races[r] } end.reduce({}, :merge) end diff --git a/lib/granblue/parsers/summon_parser.rb b/lib/granblue/parsers/summon_parser.rb index 5150525..1807996 100644 --- a/lib/granblue/parsers/summon_parser.rb +++ b/lib/granblue/parsers/summon_parser.rb @@ -10,7 +10,7 @@ module Granblue def initialize(granblue_id: String, debug: false) @summon = Summon.find_by(granblue_id: granblue_id) - @wiki = GranblueWiki.new(debug: debug) + @wiki = Granblue::Parsers::Wiki.new @debug = debug || false end diff --git a/lib/granblue/parsers/weapon_parser.rb b/lib/granblue/parsers/weapon_parser.rb index 30d44dd..19d5ed5 100644 --- a/lib/granblue/parsers/weapon_parser.rb +++ b/lib/granblue/parsers/weapon_parser.rb @@ -10,7 +10,7 @@ module Granblue def initialize(granblue_id: String, debug: false) @weapon = Weapon.find_by(granblue_id: granblue_id) - @wiki = GranblueWiki.new(debug: debug) + @wiki = Granblue::Parsers::Wiki.new @debug = debug || false end @@ -278,17 +278,17 @@ module Granblue # Converts rarities from a string to a hash def rarity_from_hash(string) - string ? GranblueWiki.rarities[string.upcase] : nil + string ? Granblue::Parsers::Wiki.rarities[string.upcase] : nil end # Converts proficiencies from a string to a hash def proficiency_from_hash(string) - GranblueWiki.proficiencies[string] + Granblue::Parsers::Wiki.proficiencies[string] end # Converts a bullet type from a string to a hash def bullet_from_hash(string) - string ? GranblueWiki.bullets[string] : nil + string ? Granblue::Parsers::Wiki.bullets[string] : nil end # Parses a date string into a Date object