9
9
//!
10
10
//! ```rust
11
11
//! # use std::str::FromStr;
12
- //! use mime::{Mime, Text, Plain, Charset, Utf8};
12
+ //! # use mime::Mime;
13
+ //! # use mime::TopLevel::Text;
14
+ //! # use mime::SubLevel::Plain;
15
+ //! # use mime::Attr::Charset;
16
+ //! # use mime::Value::Utf8;
13
17
//! let mime: Mime = FromStr::from_str("text/plain;charset=utf-8").unwrap();
14
18
//! assert_eq!(mime, Mime(Text, Plain, vec![(Charset, Utf8)]));
15
19
//! ```
16
20
17
- #![ license = "MIT" ]
18
- #![ doc( html_root_url = "http://seanmonstar.github.io/mime.rs" ) ]
21
+ #![ doc( html_root_url = "http://hyperium.github.io/mime.rs" ) ]
19
22
#![ experimental]
20
23
#![ feature( macro_rules, phase) ]
21
24
@@ -26,7 +29,6 @@ extern crate log;
26
29
extern crate test;
27
30
28
31
use std:: ascii:: AsciiExt ;
29
- use std:: cmp:: Equiv ;
30
32
use std:: fmt;
31
33
use std:: str:: FromStr ;
32
34
use std:: iter:: Enumerate ;
@@ -38,7 +40,7 @@ macro_rules! inspect(
38
40
debug!( "inspect {}: {}" , $s, t) ;
39
41
t
40
42
} )
41
- )
43
+ ) ;
42
44
43
45
/// Mime, or Media Type. Encapsulates common registers types.
44
46
///
@@ -54,27 +56,37 @@ macro_rules! inspect(
54
56
///
55
57
/// ```rust
56
58
/// use std::str::from_str;
57
- /// use mime::{Mime, Application, Json };
59
+ /// use mime::{Mime, TopLevel, SubLevel };
58
60
///
59
61
/// let mime: mime::Mime = from_str("application/json").unwrap();
60
62
///
61
63
/// match mime {
62
- /// Mime(Application, Json, _) => println!("matched json!"),
64
+ /// Mime(TopLevel:: Application, SubLevel:: Json, _) => println!("matched json!"),
63
65
/// _ => ()
64
66
/// }
65
67
/// ```
66
68
#[ deriving( Clone , PartialEq ) ]
67
69
pub struct Mime ( pub TopLevel , pub SubLevel , pub Vec < Param > ) ;
68
70
69
- macro_rules! enoom (
71
+ macro_rules! enoom {
70
72
( pub enum $en: ident; $ext: ident; $( $ty: ident, $text: expr; ) * ) => (
71
73
72
- #[ deriving( Clone , PartialEq ) ]
74
+ #[ deriving( Clone ) ]
73
75
pub enum $en {
74
76
$( $ty) ,* ,
75
77
$ext( String )
76
78
}
77
79
80
+ impl PartialEq for $en {
81
+ fn eq( & self , other: & $en) -> bool {
82
+ match ( self , other) {
83
+ $( ( & $en:: $ty, & $en:: $ty) => true ) ,* ,
84
+ ( & $en:: $ext( ref a) , & $en:: $ext( ref b) ) => a == b,
85
+ _ => self . to_string( ) == other. to_string( )
86
+ }
87
+ }
88
+ }
89
+
78
90
impl fmt:: Show for $en {
79
91
fn fmt( & self , fmt: & mut fmt:: Formatter ) -> fmt:: Result {
80
92
match * self {
@@ -93,7 +105,7 @@ macro_rules! enoom (
93
105
}
94
106
}
95
107
)
96
- )
108
+ }
97
109
98
110
enoom ! {
99
111
pub enum TopLevel ;
@@ -150,14 +162,6 @@ enoom! {
150
162
151
163
pub type Param = ( Attr , Value ) ;
152
164
153
- impl Equiv < Mime > for Mime {
154
- fn equiv ( & self , other : & Mime ) -> bool {
155
- //im so sorry
156
- //TODO: be less sorry. dont to_string()
157
- self . to_string ( ) == other. to_string ( )
158
- }
159
- }
160
-
161
165
impl fmt:: Show for Mime {
162
166
fn fmt ( & self , fmt : & mut fmt:: Formatter ) -> fmt:: Result {
163
167
let Mime ( ref top, ref sub, ref params) = * self ;
0 commit comments