7 releases

0.2.3 Dec 15, 2023
0.2.2 Feb 20, 2023
0.2.1 Oct 1, 2022
0.2.0 Sep 19, 2022
0.1.0 Dec 20, 2021

#407 in Web programming

Download history 22/week @ 2023-12-04 65/week @ 2023-12-11 12/week @ 2023-12-18 53/week @ 2023-12-25 98/week @ 2024-01-01 5/week @ 2024-01-08 10/week @ 2024-01-15 29/week @ 2024-01-22 38/week @ 2024-01-29 21/week @ 2024-02-12 24/week @ 2024-02-19 57/week @ 2024-02-26 8/week @ 2024-03-04 15/week @ 2024-03-11 10/week @ 2024-03-18

91 downloads per month
Used in 3 crates

GPL-3.0-or-later

110KB
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 (main) 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.

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()
);

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.6–2.1MB
~43K SLoC