mirror of
https://github.com/a2x/cs2-dumper.git
synced 2025-10-08 02:00:02 +08:00
Add python file builder
This commit is contained in:
@@ -7,14 +7,14 @@ use super::FileBuilder;
|
||||
#[derive(Debug, PartialEq)]
|
||||
pub struct JsonFileBuilder {
|
||||
json: Value,
|
||||
namespace: String,
|
||||
current_namespace: String,
|
||||
}
|
||||
|
||||
impl Default for JsonFileBuilder {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
json: Value::Object(Map::new()),
|
||||
namespace: String::new(),
|
||||
current_namespace: String::new(),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -29,7 +29,7 @@ impl FileBuilder for JsonFileBuilder {
|
||||
}
|
||||
|
||||
fn write_namespace(&mut self, _output: &mut dyn Write, name: &str) -> Result<()> {
|
||||
self.namespace = name.to_string();
|
||||
self.current_namespace = name.to_string();
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -42,7 +42,9 @@ impl FileBuilder for JsonFileBuilder {
|
||||
_comment: Option<&str>,
|
||||
) -> Result<()> {
|
||||
if let Some(map) = self.json.as_object_mut() {
|
||||
let entry = map.entry(&self.namespace).or_insert_with(|| json!({}));
|
||||
let entry = map
|
||||
.entry(&self.current_namespace)
|
||||
.or_insert_with(|| json!({}));
|
||||
|
||||
if let Some(object) = entry.as_object_mut() {
|
||||
object.insert(name.to_string(), json!(value));
|
||||
|
@@ -4,12 +4,14 @@ pub use cpp_file_builder::CppFileBuilder;
|
||||
pub use csharp_file_builder::CSharpFileBuilder;
|
||||
pub use file_builder::FileBuilder;
|
||||
pub use json_file_builder::JsonFileBuilder;
|
||||
pub use python_file_builder::PythonFileBuilder;
|
||||
pub use rust_file_builder::RustFileBuilder;
|
||||
|
||||
pub mod cpp_file_builder;
|
||||
pub mod csharp_file_builder;
|
||||
pub mod file_builder;
|
||||
pub mod json_file_builder;
|
||||
pub mod python_file_builder;
|
||||
pub mod rust_file_builder;
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
@@ -17,6 +19,7 @@ pub enum FileBuilderEnum {
|
||||
CppFileBuilder(CppFileBuilder),
|
||||
CSharpFileBuilder(CSharpFileBuilder),
|
||||
JsonFileBuilder(JsonFileBuilder),
|
||||
PythonFileBuilder(PythonFileBuilder),
|
||||
RustFileBuilder(RustFileBuilder),
|
||||
}
|
||||
|
||||
@@ -54,6 +57,7 @@ impl FileBuilderEnum {
|
||||
FileBuilderEnum::CppFileBuilder(builder) => builder,
|
||||
FileBuilderEnum::CSharpFileBuilder(builder) => builder,
|
||||
FileBuilderEnum::JsonFileBuilder(builder) => builder,
|
||||
FileBuilderEnum::PythonFileBuilder(builder) => builder,
|
||||
FileBuilderEnum::RustFileBuilder(builder) => builder,
|
||||
}
|
||||
}
|
||||
|
43
src/builder/python_file_builder.rs
Normal file
43
src/builder/python_file_builder.rs
Normal file
@@ -0,0 +1,43 @@
|
||||
use std::io::{Result, Write};
|
||||
|
||||
use super::FileBuilder;
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
pub struct PythonFileBuilder;
|
||||
|
||||
impl FileBuilder for PythonFileBuilder {
|
||||
fn extension(&mut self) -> &str {
|
||||
"py"
|
||||
}
|
||||
|
||||
fn write_top_level(&mut self, _output: &mut dyn Write) -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn write_namespace(&mut self, output: &mut dyn Write, name: &str) -> Result<()> {
|
||||
write!(output, "class {}:\n", name)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn write_variable(
|
||||
&mut self,
|
||||
output: &mut dyn Write,
|
||||
name: &str,
|
||||
value: usize,
|
||||
comment: Option<&str>,
|
||||
) -> Result<()> {
|
||||
match comment {
|
||||
Some(comment) => write!(output, " {} = {:#X} # {}\n", name, value, comment),
|
||||
None => write!(output, " {} = {:#X}\n", name, value),
|
||||
}
|
||||
}
|
||||
|
||||
fn write_closure(&mut self, output: &mut dyn Write, eof: bool) -> Result<()> {
|
||||
if !eof {
|
||||
write!(output, "\n")?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user