Skip to content

Commit 7898f1c

Browse files
committed
Merge pull request #7 from jgillich/enums
namespaced enums
2 parents 20ff578 + c7770c7 commit 7898f1c

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

src/lib.rs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -78,17 +78,17 @@ macro_rules! enoom (
7878
impl fmt::Show for $en {
7979
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
8080
match *self {
81-
$($ty => $text),*,
82-
$ext(ref s) => return s.fmt(fmt)
81+
$($en::$ty => $text),*,
82+
$en::$ext(ref s) => return s.fmt(fmt)
8383
}.fmt(fmt)
8484
}
8585
}
8686

8787
impl FromStr for $en {
8888
fn from_str(s: &str) -> Option<$en> {
8989
Some(match s {
90-
$(_s if _s == $text => $ty),*,
91-
s => $ext(inspect!(stringify!($ext), s).to_string())
90+
$(_s if _s == $text => $en::$ty),*,
91+
s => $en::$ext(inspect!(stringify!($ext), s).to_string())
9292
})
9393
}
9494
}
@@ -97,8 +97,8 @@ macro_rules! enoom (
9797

9898
enoom! {
9999
pub enum TopLevel;
100-
TopExt;
101-
TopStar, "*"; // remove Top prefix if enums gain namespaces
100+
Ext;
101+
Star, "*";
102102
Text, "text";
103103
Image, "image";
104104
Audio, "audio";
@@ -111,8 +111,8 @@ enoom! {
111111

112112
enoom! {
113113
pub enum SubLevel;
114-
SubExt;
115-
SubStar, "*"; // remove Sub prefix if enums gain namespaces
114+
Ext;
115+
Star, "*";
116116

117117
// common text/*
118118
Plain, "plain";
@@ -137,14 +137,14 @@ enoom! {
137137

138138
enoom! {
139139
pub enum Attr;
140-
AttrExt;
140+
Ext;
141141
Charset, "charset";
142142
Q, "q";
143143
}
144144

145145
enoom! {
146146
pub enum Value;
147-
ValueExt;
147+
Ext;
148148
Utf8, "utf-8";
149149
}
150150

@@ -365,31 +365,31 @@ fn fmt_param(param: &Param, fmt: &mut fmt::Formatter) -> fmt::Result {
365365
mod tests {
366366
use std::str::{FromStr, from_str};
367367
use test::Bencher;
368-
use super::{Mime, Text, Plain, Charset, Utf8, AttrExt, ValueExt};
368+
use super::{TopLevel, SubLevel, Attr, Value, Mime};
369369

370370
#[test]
371371
fn test_mime_show() {
372-
let mime = Mime(Text, Plain, vec![]);
372+
let mime = Mime(TopLevel::Text, SubLevel::Plain, vec![]);
373373
assert_eq!(mime.to_string(), "text/plain".to_string());
374-
let mime = Mime(Text, Plain, vec![(Charset, Utf8)]);
374+
let mime = Mime(TopLevel::Text, SubLevel::Plain, vec![(Attr::Charset, Value::Utf8)]);
375375
assert_eq!(mime.to_string(), "text/plain; charset=utf-8".to_string());
376376
}
377377

378378
#[test]
379379
fn test_mime_from_str() {
380-
assert_eq!(FromStr::from_str("text/plain"), Some(Mime(Text, Plain, vec![])));
381-
assert_eq!(FromStr::from_str("TEXT/PLAIN"), Some(Mime(Text, Plain, vec![])));
382-
assert_eq!(FromStr::from_str("text/plain; charset=utf-8"), Some(Mime(Text, Plain, vec![(Charset, Utf8)])));
383-
assert_eq!(FromStr::from_str("text/plain;charset=\"utf-8\""), Some(Mime(Text, Plain, vec![(Charset, Utf8)])));
380+
assert_eq!(FromStr::from_str("text/plain"), Some(Mime(TopLevel::Text, SubLevel::Plain, vec![])));
381+
assert_eq!(FromStr::from_str("TEXT/PLAIN"), Some(Mime(TopLevel::Text, SubLevel::Plain, vec![])));
382+
assert_eq!(FromStr::from_str("text/plain; charset=utf-8"), Some(Mime(TopLevel::Text, SubLevel::Plain, vec![(Attr::Charset, Value::Utf8)])));
383+
assert_eq!(FromStr::from_str("text/plain;charset=\"utf-8\""), Some(Mime(TopLevel::Text, SubLevel::Plain, vec![(Attr::Charset, Value::Utf8)])));
384384
assert_eq!(FromStr::from_str("text/plain; charset=utf-8; foo=bar"),
385-
Some(Mime(Text, Plain, vec![(Charset, Utf8),
386-
(AttrExt("foo".to_string()), ValueExt("bar".to_string())) ])));
385+
Some(Mime(TopLevel::Text, SubLevel::Plain, vec![(Attr::Charset, Value::Utf8),
386+
(Attr::Ext("foo".to_string()), Value::Ext("bar".to_string())) ])));
387387
}
388388

389389

390390
#[bench]
391391
fn bench_show(b: &mut Bencher) {
392-
let mime = Mime(Text, Plain, vec![(Charset, Utf8), (AttrExt("foo".to_string()), ValueExt("bar".to_string()))]);
392+
let mime = Mime(TopLevel::Text, SubLevel::Plain, vec![(Attr::Charset, Value::Utf8), (Attr::Ext("foo".to_string()), Value::Ext("bar".to_string()))]);
393393
b.bytes = mime.to_string().as_bytes().len() as u64;
394394
b.iter(|| mime.to_string())
395395
}

0 commit comments

Comments
 (0)