From caa0f9fc60b05faeda7f5985785b94980584c6c2 Mon Sep 17 00:00:00 2001 From: ryantaylor <2320507+ryantaylor@users.noreply.github.com> Date: Mon, 3 Jun 2024 13:21:20 -0400 Subject: [PATCH] Fix hash keys not being symbols. --- Gemfile.lock | 2 +- README.md | 4 +-- ext/vault_coh/src/hash.rs | 63 +++++++++++++++++++++++++-------------- lib/vault_coh/version.rb | 2 +- 4 files changed, 45 insertions(+), 26 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 200f20f..19998f9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - vault_coh (6.0.0) + vault_coh (6.0.1) GEM remote: https://rubygems.org/ diff --git a/README.md b/README.md index 7e57a72..3ec14fa 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Vault -[![Gem Version](https://badge.fury.io/rb/vault_coh.svg)](https://badge.fury.io/rb/vault_coh) [![Documentation](https://img.shields.io/badge/View-Documentation-blue.svg)](https://rubydoc.info/github/ryantaylor/vault-rb/v6.0.0) +[![Gem Version](https://badge.fury.io/rb/vault_coh.svg)](https://badge.fury.io/rb/vault_coh) [![Documentation](https://img.shields.io/badge/View-Documentation-blue.svg)](https://rubydoc.info/github/ryantaylor/vault-rb/v6.0.1) A native Ruby client wrapper for the [vault](https://github.com/ryantaylor/vault) Company of Heroes replay parser, integrated via a Rust native extension. @@ -24,7 +24,7 @@ bytes = File.read('/path/to/replay.rec').unpack('C*') replay = VaultCoh::Replay.from_bytes(bytes) puts replay.version ``` -All information available from parsing can be found in the [documentation](https://rubydoc.info/github/ryantaylor/vault-rb/v6.0.0). +All information available from parsing can be found in the [documentation](https://rubydoc.info/github/ryantaylor/vault-rb/v6.0.1). ## Contributing diff --git a/ext/vault_coh/src/hash.rs b/ext/vault_coh/src/hash.rs index c9285ed..709d29d 100644 --- a/ext/vault_coh/src/hash.rs +++ b/ext/vault_coh/src/hash.rs @@ -1,4 +1,4 @@ -use magnus::{value::ReprValue, RHash, RString, Value}; +use magnus::{value::ReprValue, RHash, RString, Symbol, Value}; use vault::{Command, Map, Message, Player, Replay}; pub trait HashExt { @@ -34,67 +34,86 @@ impl HashExt for Command { match self { Command::BuildGlobalUpgrade(data) => { let hash: RHash = serde_magnus::serialize(data).unwrap(); - hash.aset("type", RString::new("BuildGlobalUpgrade")) + hash.aset(Symbol::new("type"), RString::new("BuildGlobalUpgrade")) .unwrap(); - hash.aset("action_type", RString::new("CMD_Upgrade")) + hash.aset(Symbol::new("action_type"), RString::new("CMD_Upgrade")) .unwrap(); hash.as_value() } Command::BuildSquad(data) => { let hash: RHash = serde_magnus::serialize(data).unwrap(); - hash.aset("type", RString::new("BuildSquad")).unwrap(); - hash.aset("action_type", RString::new("CMD_BuildSquad")) + hash.aset(Symbol::new("type"), RString::new("BuildSquad")) + .unwrap(); + hash.aset(Symbol::new("action_type"), RString::new("CMD_BuildSquad")) .unwrap(); hash.as_value() } Command::CancelConstruction(data) => { let hash: RHash = serde_magnus::serialize(data).unwrap(); - hash.aset("type", RString::new("CancelConstruction")) - .unwrap(); - hash.aset("action_type", RString::new("CMD_CancelConstruction")) + hash.aset(Symbol::new("type"), RString::new("CancelConstruction")) .unwrap(); + hash.aset( + Symbol::new("action_type"), + RString::new("CMD_CancelConstruction"), + ) + .unwrap(); hash.as_value() } Command::CancelProduction(data) => { let hash: RHash = serde_magnus::serialize(data).unwrap(); - hash.aset("type", RString::new("CancelProduction")).unwrap(); - hash.aset("action_type", RString::new("CMD_CancelProduction")) + hash.aset(Symbol::new("type"), RString::new("CancelProduction")) .unwrap(); + hash.aset( + Symbol::new("action_type"), + RString::new("CMD_CancelProduction"), + ) + .unwrap(); hash.as_value() } Command::SelectBattlegroup(data) => { let hash: RHash = serde_magnus::serialize(data).unwrap(); - hash.aset("type", RString::new("SelectBattlegroup")) - .unwrap(); - hash.aset("action_type", RString::new("PCMD_InstantUpgrade")) + hash.aset(Symbol::new("type"), RString::new("SelectBattlegroup")) .unwrap(); + hash.aset( + Symbol::new("action_type"), + RString::new("PCMD_InstantUpgrade"), + ) + .unwrap(); hash.as_value() } Command::SelectBattlegroupAbility(data) => { let hash: RHash = serde_magnus::serialize(data).unwrap(); - hash.aset("type", RString::new("SelectBattlegroupAbility")) - .unwrap(); - hash.aset("action_type", RString::new("PCMD_TentativeUpgrade")) - .unwrap(); + hash.aset( + Symbol::new("type"), + RString::new("SelectBattlegroupAbility"), + ) + .unwrap(); + hash.aset( + Symbol::new("action_type"), + RString::new("PCMD_TentativeUpgrade"), + ) + .unwrap(); hash.as_value() } Command::Unknown(data) => { let hash: RHash = serde_magnus::serialize(data).unwrap(); - hash.aset("type", RString::new("Unknown")).unwrap(); + hash.aset(Symbol::new("type"), RString::new("Unknown")) + .unwrap(); hash.as_value() } Command::UseAbility(data) => { let hash: RHash = serde_magnus::serialize(data).unwrap(); - hash.aset("type", RString::new("UseAbility")).unwrap(); - hash.aset("action_type", RString::new("CMD_Ability")) + hash.aset(Symbol::new("type"), RString::new("UseAbility")) + .unwrap(); + hash.aset(Symbol::new("action_type"), RString::new("CMD_Ability")) .unwrap(); hash.as_value() } Command::UseBattlegroupAbility(data) => { let hash: RHash = serde_magnus::serialize(data).unwrap(); - hash.aset("type", RString::new("UseBattlegroupAbility")) + hash.aset(Symbol::new("type"), RString::new("UseBattlegroupAbility")) .unwrap(); - hash.aset("action_type", RString::new("PCMD_Ability")) + hash.aset(Symbol::new("action_type"), RString::new("PCMD_Ability")) .unwrap(); hash.as_value() } diff --git a/lib/vault_coh/version.rb b/lib/vault_coh/version.rb index 864dce5..573daae 100644 --- a/lib/vault_coh/version.rb +++ b/lib/vault_coh/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module VaultCoh - VERSION = '6.0.0' + VERSION = '6.0.1' end