Add support for OPML 1.0 and 1.1.
This commit is contained in:
parent
769e566414
commit
3e90b069a5
|
@ -3,7 +3,7 @@
|
||||||
[package]
|
[package]
|
||||||
name = "opml"
|
name = "opml"
|
||||||
authors = ["Holllo <helllo@holllo.cc>"]
|
authors = ["Holllo <helllo@holllo.cc>"]
|
||||||
version = "0.1.1"
|
version = "0.2.0"
|
||||||
license = "MIT/Apache-2.0"
|
license = "MIT/Apache-2.0"
|
||||||
description = "An OPML 2.0 parser for Rust."
|
description = "An OPML 2.0 parser for Rust."
|
||||||
repository = "https://gitlab.com/holllo/opml-rs"
|
repository = "https://gitlab.com/holllo/opml-rs"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# OPML
|
# OPML
|
||||||
|
|
||||||
> An OPML 2.0 parser for Rust.
|
> An OPML parser for Rust.
|
||||||
|
|
||||||
## Contents
|
## Contents
|
||||||
|
|
||||||
|
|
|
@ -88,12 +88,14 @@ impl OPML {
|
||||||
Err(err) => return Err(format!("XML parsing error: {:#?}", err)),
|
Err(err) => return Err(format!("XML parsing error: {:#?}", err)),
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO: Maybe implement version 1.0 and 1.1 of the OPML spec?
|
let version = &opml.version;
|
||||||
|
|
||||||
// SPEC: The version attribute is a version string, of the form, x.y, where x and y are both numeric strings.
|
// SPEC: The version attribute is a version string, of the form, x.y, where x and y are both numeric strings.
|
||||||
let valid_version_regex = Regex::new(r"^\d+\.\d+$").unwrap();
|
let valid_version_regex = Regex::new(r"^\d+\.\d+$").unwrap();
|
||||||
|
let valid_versions = vec!["1.0", "1.1", "2.0"];
|
||||||
|
|
||||||
if !valid_version_regex.is_match(opml.version.as_str())
|
if !valid_version_regex.is_match(version)
|
||||||
|| opml.version != "2.0"
|
|| !valid_versions.contains(&version.as_str())
|
||||||
{
|
{
|
||||||
return Err(format!(
|
return Err(format!(
|
||||||
"Unsupported OPML version detected: {}",
|
"Unsupported OPML version detected: {}",
|
||||||
|
|
|
@ -9,20 +9,6 @@ fn test_invalid_xml() {
|
||||||
OPML::new(sample.as_str()).unwrap();
|
OPML::new(sample.as_str()).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
#[should_panic(expected = "Unsupported OPML version detected: 1.0")]
|
|
||||||
fn test_invalid_opml_version_1_0() {
|
|
||||||
let sample = read("tests/samples/invalid_opml_version_1_0.opml").unwrap();
|
|
||||||
OPML::new(sample.as_str()).unwrap();
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
#[should_panic(expected = "Unsupported OPML version detected: 1.1")]
|
|
||||||
fn test_invalid_opml_version_1_1() {
|
|
||||||
let sample = read("tests/samples/invalid_opml_version_1_1.opml").unwrap();
|
|
||||||
OPML::new(sample.as_str()).unwrap();
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[should_panic(expected = "Unsupported OPML version detected: invalid")]
|
#[should_panic(expected = "Unsupported OPML version detected: invalid")]
|
||||||
fn test_invalid_opml_version() {
|
fn test_invalid_opml_version() {
|
||||||
|
|
Loading…
Reference in New Issue