mirror of
https://github.com/orhun/systeroid
synced 2024-10-01 13:13:32 +00:00
refactor(parser): skip the section explanations while parsing titles
This commit is contained in:
parent
96c682f18b
commit
314b8112bd
62
Cargo.lock
generated
62
Cargo.lock
generated
|
@ -2,6 +2,15 @@
|
|||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
version = "0.7.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "block-buffer"
|
||||
version = "0.7.3"
|
||||
|
@ -79,16 +88,52 @@ name = "kparams-parser"
|
|||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"kparams-core",
|
||||
"lazy-regex",
|
||||
"pest",
|
||||
"pest_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lazy-regex"
|
||||
version = "2.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "17d198f91272f6e788a5c0bd5d741cf778da4e5bc761ec67b32d5d3b0db34a54"
|
||||
dependencies = [
|
||||
"lazy-regex-proc_macros",
|
||||
"once_cell",
|
||||
"regex",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lazy-regex-proc_macros"
|
||||
version = "2.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6c12938b1b92cf5be22940527e15b79fd0c7e706e34bc70816f6a72b3484f84e"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"regex",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "maplit"
|
||||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56"
|
||||
|
||||
[[package]]
|
||||
name = "opaque-debug"
|
||||
version = "0.2.3"
|
||||
|
@ -156,6 +201,23 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.5.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
"regex-syntax",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
version = "0.6.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
|
||||
|
||||
[[package]]
|
||||
name = "sha-1"
|
||||
version = "0.8.2"
|
||||
|
|
|
@ -7,6 +7,7 @@ edition = "2021"
|
|||
[dependencies]
|
||||
pest = "2.1.3"
|
||||
pest_derive = "2.1.0"
|
||||
lazy-regex = "2.2.1"
|
||||
|
||||
[dependencies.kparams-core]
|
||||
version = "0.1.0"
|
||||
|
|
|
@ -1,9 +1,18 @@
|
|||
use crate::parser::Rule;
|
||||
use kparams_core::error::Error as ErrorImpl;
|
||||
use lazy_regex::{regex, Lazy, Regex};
|
||||
use pest::iterators::Pair;
|
||||
use pest::Token;
|
||||
use std::convert::TryFrom;
|
||||
|
||||
/// Regex for matching the explanation of the sysctl sections.
|
||||
///
|
||||
/// These _titles_ should be skipped since they are often describing the
|
||||
/// documentation in the following section rather than a kernel parameter.
|
||||
///
|
||||
/// e.g. `2. /proc/sys/fs/binfmt_misc`
|
||||
static SECTION_EXPL_REGEX: &Lazy<Regex> = regex!("[0-9].\\s/proc/sys/");
|
||||
|
||||
/// Title from the parsed RST document.
|
||||
#[derive(Debug, Default)]
|
||||
pub struct Title<'a> {
|
||||
|
@ -34,6 +43,10 @@ impl<'a> TryFrom<Pair<'a, Rule>> for Title<'a> {
|
|||
return Err(ErrorImpl::ParseError(String::from(
|
||||
"document beginning found",
|
||||
)));
|
||||
} else if SECTION_EXPL_REGEX.is_match(value) {
|
||||
return Err(ErrorImpl::ParseError(String::from(
|
||||
"section explanation found",
|
||||
)));
|
||||
}
|
||||
title.value = value;
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue