From a9d5c15bd9eae24b2f5b8f89d67ee60cfaf6dcec Mon Sep 17 00:00:00 2001 From: tarsin Date: Fri, 28 Jul 2023 11:37:59 +0800 Subject: [PATCH] Fixup codestyle --- app/src/main/rust/src/lib.rs | 51 ++-------------------------- app/src/main/rust/src/parser/fav.rs | 48 ++++++++++++++++++++++++++ app/src/main/rust/src/parser/list.rs | 8 ++--- app/src/main/rust/src/parser/mod.rs | 1 + 4 files changed, 55 insertions(+), 53 deletions(-) create mode 100644 app/src/main/rust/src/parser/fav.rs diff --git a/app/src/main/rust/src/lib.rs b/app/src/main/rust/src/lib.rs index 640b9e9c8..1ec99fa22 100644 --- a/app/src/main/rust/src/lib.rs +++ b/app/src/main/rust/src/lib.rs @@ -13,15 +13,10 @@ extern crate regex; extern crate tl; use android_logger::Config; -use apply::Also; -use catch_panic::catch_panic; -use jni_fn::jni_fn; -use jnix::jni::objects::{JClass, JString}; -use jnix::jni::sys::{jint, jintArray, jobjectArray, JavaVM, JNI_VERSION_1_6}; -use jnix::jni::JNIEnv; +use jnix::jni::objects::JString; +use jnix::jni::sys::{jint, JavaVM, JNI_VERSION_1_6}; use jnix::JnixEnv; use log::LevelFilter; -use quick_xml::escape::unescape; use std::ffi::c_void; use tl::{Bytes, Node, NodeHandle, Parser, VDom}; @@ -84,8 +79,7 @@ fn get_node_handle_attr<'a>( } fn get_node_attr<'a>(node: &'a Node<'_>, attr: &'a str) -> Option<&'a str> { - let str = node.as_tag()?.attributes().get(attr)??.try_as_utf8_str()?; - Some(str) + node.as_tag()?.attributes().get(attr)??.try_as_utf8_str() } // Should not use it at too upper node, since it will do DFS? @@ -99,45 +93,6 @@ fn query_childs_first_match_attr<'a>( get_node_handle_attr(&iter.next()?, parser, attr) } -#[no_mangle] -#[catch_panic(default = "std::ptr::null_mut()")] -#[allow(non_snake_case)] -#[jni_fn("com.hippo.ehviewer.client.parser.FavoritesParserKt")] -pub fn parseFav(env: JNIEnv, _class: JClass, input: JString, str: jobjectArray) -> jintArray { - let mut env = JnixEnv { env }; - let vec = parse_jni_string(&mut env, &input, |dom, parser, env| { - let vec: Vec = dom - .get_elements_by_class_name("fp") - .enumerate() - .filter_map(|(i, e)| { - if i == 10 { - return None; - } - let top = e.get(parser)?.children()?; - let children = top.top(); - let cat = children[5].get(parser)?.inner_text(parser); - let name = unescape(&cat).ok()?; - env.set_object_array_element(str, i as i32, env.new_string(name.trim()).ok()?) - .ok()?; - children[1] - .get(parser)? - .inner_text(parser) - .parse::() - .ok() - }) - .collect(); - if vec.len() == 10 { - Some(vec) - } else { - None - } - }) - .unwrap(); - env.new_int_array(10) - .unwrap() - .also(|it| env.set_int_array_region(*it, 0, &vec).unwrap()) -} - #[no_mangle] pub extern "system" fn JNI_OnLoad(_: JavaVM, _: *mut c_void) -> jint { android_logger::init_once(Config::default().with_max_level(LevelFilter::Debug)); diff --git a/app/src/main/rust/src/parser/fav.rs b/app/src/main/rust/src/parser/fav.rs new file mode 100644 index 000000000..a06e5d48e --- /dev/null +++ b/app/src/main/rust/src/parser/fav.rs @@ -0,0 +1,48 @@ +use apply::Also; +use catch_panic::catch_panic; +use jni_fn::jni_fn; +use jnix::jni::objects::{JClass, JString}; +use jnix::jni::sys::{jintArray, jobjectArray}; +use jnix::jni::JNIEnv; +use jnix::JnixEnv; +use parse_jni_string; +use quick_xml::escape::unescape; + +#[no_mangle] +#[catch_panic(default = "std::ptr::null_mut()")] +#[allow(non_snake_case)] +#[jni_fn("com.hippo.ehviewer.client.parser.FavoritesParserKt")] +pub fn parseFav(env: JNIEnv, _class: JClass, input: JString, str: jobjectArray) -> jintArray { + let mut env = JnixEnv { env }; + let vec = parse_jni_string(&mut env, &input, |dom, parser, env| { + let vec: Vec = dom + .get_elements_by_class_name("fp") + .enumerate() + .filter_map(|(i, e)| { + if i == 10 { + return None; + } + let top = e.get(parser)?.children()?; + let children = top.top(); + let cat = children[5].get(parser)?.inner_text(parser); + let name = unescape(&cat).ok()?; + env.set_object_array_element(str, i as i32, env.new_string(name.trim()).ok()?) + .ok()?; + children[1] + .get(parser)? + .inner_text(parser) + .parse::() + .ok() + }) + .collect(); + if vec.len() == 10 { + Some(vec) + } else { + None + } + }) + .unwrap(); + env.new_int_array(10) + .unwrap() + .also(|it| env.set_int_array_region(*it, 0, &vec).unwrap()) +} diff --git a/app/src/main/rust/src/parser/list.rs b/app/src/main/rust/src/parser/list.rs index d2eaca4d3..fc0b297c2 100644 --- a/app/src/main/rust/src/parser/list.rs +++ b/app/src/main/rust/src/parser/list.rs @@ -1,5 +1,3 @@ -use std::borrow::Cow; - use catch_panic::catch_panic; use jni_fn::jni_fn; use jnix::jni::objects::{JClass, JString}; @@ -7,10 +5,10 @@ use jnix::jni::sys::jobject; use jnix::jni::JNIEnv; use jnix::{IntoJava, JnixEnv}; use jnix_macros::IntoJava; -use quick_xml::escape::unescape; -use tl::{Node, Parser}; - use parse_jni_string; +use quick_xml::escape::unescape; +use std::borrow::Cow; +use tl::{Node, Parser}; use {get_element_by_id, get_vdom_first_element_by_class_name}; use {get_first_element_by_class_name, query_childs_first_match_attr}; use {get_node_attr, get_node_handle_attr, regex}; diff --git a/app/src/main/rust/src/parser/mod.rs b/app/src/main/rust/src/parser/mod.rs index 9701eb306..4a0a330a5 100644 --- a/app/src/main/rust/src/parser/mod.rs +++ b/app/src/main/rust/src/parser/mod.rs @@ -1,3 +1,4 @@ +mod fav; mod home; mod list; mod torrent;