Skip to content

Commit

Permalink
Fix hash keys not being symbols.
Browse files Browse the repository at this point in the history
  • Loading branch information
ryantaylor committed Jun 3, 2024
1 parent 38d43ff commit caa0f9f
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 26 deletions.
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
vault_coh (6.0.0)
vault_coh (6.0.1)

GEM
remote: https://rubygems.org/
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -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.

Expand All @@ -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

Expand Down
63 changes: 41 additions & 22 deletions ext/vault_coh/src/hash.rs
Original file line number Diff line number Diff line change
@@ -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 {
Expand Down Expand Up @@ -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()
}
Expand Down
2 changes: 1 addition & 1 deletion lib/vault_coh/version.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# frozen_string_literal: true

module VaultCoh
VERSION = '6.0.0'
VERSION = '6.0.1'
end

0 comments on commit caa0f9f

Please sign in to comment.