Crates.io | mwtitle |
lib.rs | mwtitle |
version | 0.2.5 |
source | src |
created_at | 2021-12-20 07:25:09.453273 |
updated_at | 2024-09-05 01:36:13.900343 |
description | MediaWiki title validation and formatting |
homepage | https://www.mediawiki.org/wiki/mwbot-rs |
repository | https://gitlab.wikimedia.org/repos/mwbot-rs/mwbot/ |
max_upload_size | |
id | 500629 |
size | 296,059 |
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.
mwtitle
is a part of the mwbot-rs
project.
We're always looking for new contributors, please reach out
if you're interested!
This crate is released under GPL-3.0-or-later. See COPYING for details.