#mediawiki #title #mwbot

mwtitle

MediaWiki title validation and formatting

2 unstable releases

Uses new Rust 2021

0.2.0-alpha.1 Jan 6, 2022
0.1.0 Dec 20, 2021

#329 in Web programming

Download history 16/week @ 2021-12-17 17/week @ 2021-12-24 15/week @ 2021-12-31 15/week @ 2022-01-07 13/week @ 2022-01-14

60 downloads per month
Used in 2 crates

GPL-3.0-or-later

99KB
2K SLoC

mwtitle

crates.io pipeline status coverage report

The mwtitle crate is a library for parsing, normalizing and formatting MediaWiki page titles. See the documentation (master) for more details.

License

mwtitle is released under the GPL v3 or any later version. It contains code directly copied and ported from MediaWiki by various authors. The Rust parts were primarily written by Erutuon and Kunal Mehta.


lib.rs:

mwtitle

mwtitle is a library for parsing, normalizing and formatting MediaWiki page titles. It is primarily a port of the MediaWikiTitleCodec class from MediaWiki, and passes the MediaWiki test suite.

The easiest way to get started is create a [TitleCodec] from a siteinfo API request.

# #[tokio::main]
# async fn main() -> anyhow::Result<()> {
# #[cfg(feature = "parsing")]
# {
# use mwtitle::{SiteInfoResponse, TitleCodec};
let url = "https://en.wikipedia.org/w/api.php\
           ?action=query&meta=siteinfo\
           &siprop=general|namespaces|namespacealiases|interwikimap\
           &formatversion=2&format=json";
let resp: SiteInfoResponse = reqwest::get(url).await?.json().await?;
let codec = TitleCodec::from_site_info(resp.query)?;
let title = codec.new_title("Talk:Main Page#Section 1")?;
assert_eq!(title.namespace(), 1);
assert_eq!(title.dbkey(), "Main_Page");
assert_eq!(title.fragment(), Some("Section 1"));
assert_eq!(codec.to_pretty(&title), "Talk:Main Page".to_string());
assert_eq!(
    codec.to_pretty_with_fragment(&title),
    "Talk:Main Page#Section 1".to_string()
);
# }
# Ok(())
# }

It's also possible to possible to create a TitleCodec from a JSON siteinfo-namespaces.json or compressed siteinfo-namespaces.json.gz that comes from Wikimedia dumps. This requires the extra utils feature to be enabled.

Contributing

mwtitle is a part of the mwbot-rs project. We're always looking for new contributors, please reach out if you're interested!

Dependencies

~0.5–1.6MB
~37K SLoC