Skip to content

Commit ad791ea

Browse files
committed
Make field mangling non-configurable as well.
1 parent 134c66f commit ad791ea

File tree

3 files changed

+13
-58
lines changed

3 files changed

+13
-58
lines changed

java-spaghetti-gen/src/config/toml.rs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,20 @@ use std::{fs, io};
55

66
use serde_derive::Deserialize;
77

8-
use crate::identifiers::FieldManglingStyle;
9-
108
fn default_proxy_path_prefix() -> String {
119
"java_spaghetti/proxy".to_string()
1210
}
1311

1412
/// The \[codegen\] section.
1513
#[derive(Debug, Clone, Deserialize)]
1614
pub struct CodeGen {
17-
/// How fields should be named.
18-
#[serde(default = "Default::default")]
19-
pub field_naming_style: FieldManglingStyle,
20-
2115
#[serde(default = "default_proxy_path_prefix")]
2216
pub proxy_path_prefix: String,
2317
}
2418

2519
impl Default for CodeGen {
2620
fn default() -> Self {
2721
Self {
28-
field_naming_style: Default::default(),
2922
proxy_path_prefix: default_proxy_path_prefix(),
3023
}
3124
}

java-spaghetti-gen/src/emit_rust/fields.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use quote::{format_ident, quote};
77
use super::cstring;
88
use super::known_docs_url::KnownDocsUrl;
99
use crate::emit_rust::Context;
10-
use crate::identifiers::{FieldMangling, IdentifierManglingError};
10+
use crate::identifiers::{FieldMangling, IdentifierManglingError, mangle_field};
1111
use crate::parser_util::{Id, JavaClass, JavaField};
1212

1313
pub struct Field<'a> {
@@ -17,15 +17,11 @@ pub struct Field<'a> {
1717
}
1818

1919
impl<'a> Field<'a> {
20-
pub fn new(context: &Context, class: &'a JavaClass, java: &'a cafebabe::FieldInfo<'a>) -> Self {
20+
pub fn new(_context: &Context, class: &'a JavaClass, java: &'a cafebabe::FieldInfo<'a>) -> Self {
2121
Self {
2222
class,
2323
java: JavaField::from(java),
24-
rust_names: context
25-
.config
26-
.codegen
27-
.field_naming_style
28-
.mangle(JavaField::from(java), None),
24+
rust_names: mangle_field(JavaField::from(java)),
2925
}
3026
}
3127

Lines changed: 10 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
use serde_derive::Deserialize;
2-
31
use crate::identifiers::{IdentifierManglingError, javaify_identifier};
42
use crate::parser_util::JavaField;
53

@@ -8,47 +6,15 @@ pub enum FieldMangling<'a> {
86
GetSet(String, String),
97
}
108

11-
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Hash)]
12-
pub struct FieldManglingStyle {
13-
pub const_finals: bool, // Default: true
14-
pub getter_pattern: String, // Default: "{NAME}", might consider "get_{NAME}"
15-
pub setter_pattern: String, // Default: "set_{NAME}"
16-
}
17-
18-
impl Default for FieldManglingStyle {
19-
fn default() -> Self {
20-
Self {
21-
const_finals: true,
22-
getter_pattern: String::from("{NAME}"),
23-
setter_pattern: String::from("set_{NAME}"),
24-
}
25-
}
26-
}
27-
28-
impl FieldManglingStyle {
29-
pub fn mangle<'a>(
30-
&self,
31-
field: JavaField<'a>,
32-
renamed_to: Option<&str>,
33-
) -> Result<FieldMangling<'a>, IdentifierManglingError> {
34-
let field_name = renamed_to.unwrap_or(field.name());
35-
if let (Some(value), true) = (field.constant().as_ref(), self.const_finals) {
36-
let name = if renamed_to.is_some() {
37-
Ok(field_name.to_owned()) // Don't remangle renames
38-
} else {
39-
javaify_identifier(field_name)
40-
}?;
41-
42-
Ok(FieldMangling::ConstValue(name, value.clone()))
43-
} else {
44-
Ok(FieldMangling::GetSet(
45-
self.mangle_identifier(self.getter_pattern.replace("{NAME}", field_name).as_str())?,
46-
self.mangle_identifier(self.setter_pattern.replace("{NAME}", field_name).as_str())?,
47-
))
48-
}
49-
}
50-
51-
fn mangle_identifier(&self, ident: &str) -> Result<String, IdentifierManglingError> {
52-
javaify_identifier(ident)
9+
pub fn mangle_field<'a>(field: JavaField<'a>) -> Result<FieldMangling<'a>, IdentifierManglingError> {
10+
let field_name = field.name();
11+
if let Some(value) = field.constant().as_ref() {
12+
let name = javaify_identifier(field_name)?;
13+
Ok(FieldMangling::ConstValue(name, value.clone()))
14+
} else {
15+
Ok(FieldMangling::GetSet(
16+
javaify_identifier(field_name)?,
17+
javaify_identifier(&format!("set_{field_name}"))?,
18+
))
5319
}
5420
}

0 commit comments

Comments
 (0)