Skip to content

Commit

Permalink
refactor: mv
Browse files Browse the repository at this point in the history
  • Loading branch information
fzyzcjy committed Jun 7, 2024
1 parent 115c3df commit 1d0e739
Show file tree
Hide file tree
Showing 12 changed files with 80 additions and 71 deletions.
2 changes: 1 addition & 1 deletion frb_codegen/src/library/codegen/dumper/mod.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use crate::codegen::dumper::internal_config::{ConfigDumpContent, DumperInternalConfig};
use crate::codegen::generator::acc::Acc;
use crate::codegen::generator::misc::target::TargetOrCommon;
use crate::codegen::generator::misc::PathTexts;
use crate::codegen::generator::misc::path_texts::PathTexts;
use crate::utils::file_utils::create_dir_all_and_write;
use crate::utils::path_utils::path_to_string;
use anyhow::Context;
Expand Down
2 changes: 1 addition & 1 deletion frb_codegen/src/library/codegen/generator/api_dart/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ mod text_generator;
use crate::codegen::dumper::internal_config::ConfigDumpContent;
use crate::codegen::dumper::Dumper;
use crate::codegen::generator::api_dart::internal_config::GeneratorApiDartInternalConfig;
use crate::codegen::generator::misc::PathTexts;
use crate::codegen::generator::misc::path_texts::PathTexts;
use crate::codegen::ir::mir::pack::MirPack;
use anyhow::Result;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ use crate::codegen::generator::api_dart::spec_generator::{
ApiDartOutputSpec, ApiDartOutputSpecItem,
};
use crate::codegen::generator::misc::target::TargetOrCommonMap;
use crate::codegen::generator::misc::{generate_code_header, PathText, PathTexts};
use crate::codegen::generator::misc::generate_code_header;
use crate::codegen::generator::misc::path_texts::{PathText, PathTexts};
use crate::utils::basic_code::DartBasicHeaderCode;
use crate::utils::path_utils::path_to_string;
use anyhow::Context;
Expand Down
62 changes: 1 addition & 61 deletions frb_codegen/src/library/codegen/generator/misc/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ use std::path::PathBuf;
use strum::IntoEnumIterator;

pub(crate) mod comments;
pub(crate) mod path_texts;
pub(crate) mod struct_or_record;
pub(crate) mod structs_macro;
pub(crate) mod target;
Expand Down Expand Up @@ -41,67 +42,6 @@ pub fn is_js_value(ty: &MirType) -> bool {
}
}

#[derive(Clone)]
pub(crate) struct PathText {
pub path: PathBuf,
pub text: String,
}

impl PathText {
pub(crate) fn new(path: PathBuf, text: String) -> Self {
Self { path, text }
}
}

#[derive(Clone)]
pub(crate) struct PathTexts(pub Vec<PathText>);

impl Add for PathTexts {
type Output = Self;

fn add(self, rhs: Self) -> Self::Output {
Self([self.0, rhs.0].concat())
}
}

impl PathTexts {
pub(crate) fn new_from_targets(
path: &TargetOrCommonMap<PathBuf>,
text: &Acc<Option<String>>,
) -> Self {
Self(
TargetOrCommon::iter()
.filter_map(|target| {
text[target]
.clone()
.map(|text_for_target| PathText::new(path[target].clone(), text_for_target))
})
.collect_vec(),
)
}

pub(crate) fn write_to_disk(&self) -> anyhow::Result<()> {
self.assert_no_duplicate_paths();
for item in self.0.iter() {
create_dir_all_and_write(&item.path, &item.text)?;
}
Ok(())
}

fn assert_no_duplicate_paths(&self) {
let paths = self.paths();
assert_eq!(
paths.iter().unique().collect_vec().len(),
paths.len(),
"assert_no_duplicate_paths failed paths={paths:?}"
);
}

pub(crate) fn paths(&self) -> Vec<PathBuf> {
self.0.iter().map(|item| item.path.clone()).collect_vec()
}
}

pub(crate) fn generate_code_header() -> String {
format!(
"// This file is automatically generated, so please do not edit it.
Expand Down
68 changes: 68 additions & 0 deletions frb_codegen/src/library/codegen/generator/misc/path_texts.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
use crate::codegen::generator::acc::Acc;
use crate::codegen::generator::misc::target::{TargetOrCommon, TargetOrCommonMap};
use crate::utils::file_utils::create_dir_all_and_write;
use itertools::Itertools;
use std::ops::Add;
use std::path::PathBuf;
use strum::IntoEnumIterator;

#[derive(Clone)]
pub(crate) struct PathTexts(pub Vec<PathText>);

impl Add for PathTexts {
type Output = Self;

fn add(self, rhs: Self) -> Self::Output {
Self([self.0, rhs.0].concat())
}
}

impl PathTexts {
pub(crate) fn new_from_targets(
path: &TargetOrCommonMap<PathBuf>,
text: &Acc<Option<String>>,
) -> Self {
Self(
TargetOrCommon::iter()
.filter_map(|target| {
text[target]
.clone()
.map(|text_for_target| PathText::new(path[target].clone(), text_for_target))
})
.collect_vec(),
)
}

pub(crate) fn write_to_disk(&self) -> anyhow::Result<()> {
self.assert_no_duplicate_paths();
for item in self.0.iter() {
create_dir_all_and_write(&item.path, &item.text)?;
}
Ok(())
}

fn assert_no_duplicate_paths(&self) {
let paths = self.paths();
assert_eq!(
paths.iter().unique().collect_vec().len(),
paths.len(),
"assert_no_duplicate_paths failed paths={paths:?}"
);
}

pub(crate) fn paths(&self) -> Vec<PathBuf> {
self.0.iter().map(|item| item.path.clone()).collect_vec()
}
}

#[derive(Clone)]
pub(crate) struct PathText {
pub path: PathBuf,
pub text: String,
}

impl PathText {
pub(crate) fn new(path: PathBuf, text: String) -> Self {
Self { path, text }
}
}
2 changes: 1 addition & 1 deletion frb_codegen/src/library/codegen/generator/mod.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::codegen::config::internal_config::GeneratorInternalConfig;
use crate::codegen::dumper::Dumper;
use crate::codegen::generator::misc::PathTexts;
use crate::codegen::generator::misc::path_texts::PathTexts;
use crate::codegen::ir::mir::pack::MirPack;
use crate::codegen::misc::GeneratorProgressBarPack;

Expand Down
2 changes: 1 addition & 1 deletion frb_codegen/src/library/codegen/generator/wire/c/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ mod text_generator;

use crate::codegen::dumper::internal_config::ConfigDumpContent;
use crate::codegen::dumper::Dumper;
use crate::codegen::generator::misc::{PathText, PathTexts};
use crate::codegen::generator::misc::path_texts::{PathText, PathTexts};
use crate::codegen::generator::wire::c::internal_config::GeneratorWireCInternalConfig;
use crate::codegen::misc::GeneratorProgressBarPack;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use crate::codegen::generator::misc::PathTexts;
use crate::codegen::generator::misc::path_texts::PathTexts;
use crate::codegen::generator::wire::c::internal_config::GeneratorWireCInternalConfig;
use crate::codegen::misc::GeneratorProgressBarPack;
use crate::library::commands::cbindgen::{cbindgen, CbindgenArgs};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use crate::codegen::generator::misc::PathTexts;
use crate::codegen::generator::misc::path_texts::PathTexts;
use crate::codegen::generator::wire::c::internal_config::GeneratorWireCInternalConfig;
use crate::codegen::misc::GeneratorProgressBarPack;
use serde::Serialize;
Expand Down
2 changes: 1 addition & 1 deletion frb_codegen/src/library/codegen/generator/wire/dart/mod.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::codegen::dumper::internal_config::ConfigDumpContent;
use crate::codegen::dumper::Dumper;
use crate::codegen::generator::misc::PathTexts;
use crate::codegen::generator::misc::path_texts::PathTexts;
use crate::codegen::generator::wire::dart::spec_generator::base::WireDartGeneratorContext;
use crate::codegen::generator::wire::rust::spec_generator::extern_func::ExternFunc;
use crate::codegen::misc::GeneratorProgressBarPack;
Expand Down
2 changes: 1 addition & 1 deletion frb_codegen/src/library/codegen/generator/wire/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use crate::codegen::config::internal_config::GeneratorWireInternalConfig;
use crate::codegen::dumper::Dumper;
use crate::codegen::generator::api_dart::internal_config::GeneratorApiDartInternalConfig;
use crate::codegen::generator::misc::target::Target;
use crate::codegen::generator::misc::PathTexts;
use crate::codegen::generator::misc::path_texts::PathTexts;
use crate::codegen::generator::wire::dart::spec_generator::base::WireDartGeneratorContext;
use crate::codegen::generator::wire::rust::spec_generator::base::WireRustGeneratorContext;
use crate::codegen::ir::mir::pack::MirPack;
Expand Down
2 changes: 1 addition & 1 deletion frb_codegen/src/library/codegen/generator/wire/rust/mod.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::codegen::dumper::internal_config::ConfigDumpContent;
use crate::codegen::dumper::Dumper;
use crate::codegen::generator::misc::PathTexts;
use crate::codegen::generator::misc::path_texts::PathTexts;
use crate::codegen::generator::wire::rust::spec_generator::base::WireRustGeneratorContext;
use crate::codegen::generator::wire::rust::spec_generator::extern_func::ExternFunc;
use crate::codegen::ir::mir::pack::MirPackComputedCache;
Expand Down

0 comments on commit 1d0e739

Please sign in to comment.