@@ -349,6 +349,10 @@ impl<'a> Stream<'a> {
349
349
/// Consumes an XML character reference if there is one.
350
350
///
351
351
/// On error will reset the position to the original.
352
+ ///
353
+ /// See [`consume_reference()`] for details.
354
+ ///
355
+ /// [`consume_reference()`]: #method.consume_reference
352
356
pub fn try_consume_reference ( & mut self ) -> Option < Reference < ' a > > {
353
357
let start = self . pos ( ) ;
354
358
@@ -374,6 +378,35 @@ impl<'a> Stream<'a> {
374
378
/// # Errors
375
379
///
376
380
/// - `InvalidReference`
381
+ ///
382
+ /// # Examples
383
+ ///
384
+ /// Escaped character:
385
+ ///
386
+ /// ```
387
+ /// use xmlparser::{Stream, Reference};
388
+ ///
389
+ /// let mut stream = Stream::from("ณ");
390
+ /// assert_eq!(stream.consume_reference().unwrap(), Reference::Char('\u{e13}'));
391
+ /// ```
392
+ ///
393
+ /// Predefined references will not be expanded.
394
+ /// [Details.]( https://www.w3.org/TR/xml/#sec-entexpand)
395
+ ///
396
+ /// ```
397
+ /// use xmlparser::{Stream, Reference};
398
+ ///
399
+ /// let mut stream = Stream::from("≤");
400
+ /// assert_eq!(stream.consume_reference().unwrap(), Reference::Entity("le"));
401
+ /// ```
402
+ ///
403
+ /// Named reference:
404
+ ///
405
+ /// ```
406
+ /// use xmlparser::{Stream, Reference};
407
+ ///
408
+ /// let mut stream = Stream::from("&other;");
409
+ /// assert_eq!(stream.consume_reference().unwrap(), Reference::Entity("other"));
377
410
pub fn consume_reference ( & mut self ) -> Result < Reference < ' a > > {
378
411
self . _consume_reference ( ) . map_err ( |_| StreamError :: InvalidReference )
379
412
}
@@ -403,14 +436,7 @@ impl<'a> Stream<'a> {
403
436
Reference :: Char ( c)
404
437
} else {
405
438
let name = self . consume_name ( ) ?;
406
- match name. as_str ( ) {
407
- "quot" => Reference :: Char ( '"' ) ,
408
- "amp" => Reference :: Char ( '&' ) ,
409
- "apos" => Reference :: Char ( '\'' ) ,
410
- "lt" => Reference :: Char ( '<' ) ,
411
- "gt" => Reference :: Char ( '>' ) ,
412
- _ => Reference :: Entity ( name. as_str ( ) ) ,
413
- }
439
+ Reference :: Entity ( name. as_str ( ) )
414
440
} ;
415
441
416
442
self . consume_byte ( b';' ) ?;
0 commit comments