@@ -88,10 +88,12 @@ pub struct Encoder {
88
88
priv wr: @mut io:: Writer ,
89
89
}
90
90
91
- /// Creates a new JSON encoder whose output will be written to the writer
92
- /// specified.
93
- pub fn Encoder ( wr : @mut io:: Writer ) -> Encoder {
94
- Encoder { wr : wr }
91
+ impl Encoder {
92
+ /// Creates a new JSON encoder whose output will be written to the writer
93
+ /// specified.
94
+ pub fn init ( wr : @mut io:: Writer ) -> Encoder {
95
+ Encoder { wr : wr }
96
+ }
95
97
}
96
98
97
99
impl serialize:: Encoder for Encoder {
@@ -243,11 +245,13 @@ pub struct PrettyEncoder {
243
245
priv indent : uint ,
244
246
}
245
247
246
- /// Creates a new encoder whose output will be written to the specified writer
247
- pub fn PrettyEncoder ( wr : @mut io:: Writer ) -> PrettyEncoder {
248
- PrettyEncoder {
249
- wr : wr,
250
- indent : 0 ,
248
+ impl PrettyEncoder {
249
+ /// Creates a new encoder whose output will be written to the specified writer
250
+ pub fn init ( wr : @mut io:: Writer ) -> PrettyEncoder {
251
+ PrettyEncoder {
252
+ wr : wr,
253
+ indent : 0 ,
254
+ }
251
255
}
252
256
}
253
257
@@ -445,14 +449,14 @@ impl<E: serialize::Encoder> serialize::Encodable<E> for Json {
445
449
impl Json {
446
450
/// Encodes a json value into a io::writer. Uses a single line.
447
451
pub fn to_writer ( & self , wr : @mut io:: Writer ) {
448
- let mut encoder = Encoder ( wr) ;
452
+ let mut encoder = Encoder :: init ( wr) ;
449
453
self . encode ( & mut encoder)
450
454
}
451
455
452
456
/// Encodes a json value into a io::writer.
453
457
/// Pretty-prints in a more readable format.
454
458
pub fn to_pretty_writer ( & self , wr : @mut io:: Writer ) {
455
- let mut encoder = PrettyEncoder ( wr) ;
459
+ let mut encoder = PrettyEncoder :: init ( wr) ;
456
460
self . encode ( & mut encoder)
457
461
}
458
462
@@ -465,22 +469,24 @@ impl Json{
465
469
}
466
470
467
471
pub struct Parser < T > {
468
- priv rdr: ~ T ,
472
+ priv rdr: T ,
469
473
priv ch: char ,
470
474
priv line : uint ,
471
475
priv col: uint ,
472
476
}
473
477
474
- /// Decode a json value from an Iterator<char>
475
- pub fn Parser < T : Iterator < char > > ( rdr : ~T ) -> Parser < T > {
476
- let mut p = Parser {
477
- rdr : rdr,
478
- ch : '\x00' ,
479
- line : 1 ,
480
- col : 0 ,
481
- } ;
482
- p. bump ( ) ;
483
- p
478
+ impl < T : Iterator < char > > Parser < T > {
479
+ /// Decode a json value from an Iterator<char>
480
+ pub fn init ( rdr : T ) -> Parser < T > {
481
+ let mut p = Parser {
482
+ rdr : rdr,
483
+ ch : '\x00' ,
484
+ line : 1 ,
485
+ col : 0 ,
486
+ } ;
487
+ p. bump ( ) ;
488
+ p
489
+ }
484
490
}
485
491
486
492
impl < T : Iterator < char > > Parser < T > {
@@ -842,13 +848,13 @@ impl<T : Iterator<char>> Parser<T> {
842
848
/// Decodes a json value from an `&mut io::Reader`
843
849
pub fn from_reader ( rdr : & mut io:: Reader ) -> Result < Json , Error > {
844
850
let s = str:: from_utf8 ( rdr. read_to_end ( ) ) ;
845
- let mut parser = Parser ( ~ s. chars ( ) ) ;
851
+ let mut parser = Parser :: init ( s. chars ( ) ) ;
846
852
parser. parse ( )
847
853
}
848
854
849
855
/// Decodes a json value from a string
850
856
pub fn from_str ( s : & str ) -> Result < Json , Error > {
851
- let mut parser = Parser ( ~ s. chars ( ) ) ;
857
+ let mut parser = Parser :: init ( s. chars ( ) ) ;
852
858
parser. parse ( )
853
859
}
854
860
@@ -857,10 +863,12 @@ pub struct Decoder {
857
863
priv stack : ~[ Json ] ,
858
864
}
859
865
860
- /// Creates a new decoder instance for decoding the specified JSON value.
861
- pub fn Decoder ( json : Json ) -> Decoder {
862
- Decoder {
863
- stack : ~[ json]
866
+ impl Decoder {
867
+ /// Creates a new decoder instance for decoding the specified JSON value.
868
+ pub fn init ( json : Json ) -> Decoder {
869
+ Decoder {
870
+ stack : ~[ json]
871
+ }
864
872
}
865
873
}
866
874
@@ -1514,14 +1522,14 @@ mod tests {
1514
1522
let animal = Dog;
1515
1523
assert_eq!(
1516
1524
with_str_writer(|wr| {
1517
- let mut encoder = Encoder(wr);
1525
+ let mut encoder = Encoder::init (wr);
1518
1526
animal.encode(&mut encoder);
1519
1527
}),
1520
1528
~"\" Dog\" "
1521
1529
) ;
1522
1530
assert_eq!(
1523
1531
with_str_writer( |wr| {
1524
- let mut encoder = PrettyEncoder ( wr) ;
1532
+ let mut encoder = PrettyEncoder :: init ( wr) ;
1525
1533
animal. encode( & mut encoder) ;
1526
1534
} ) ,
1527
1535
~"\" Dog \" "
@@ -1530,14 +1538,14 @@ mod tests {
1530
1538
let animal = Frog ( ~"Henry ", 349);
1531
1539
assert_eq!(
1532
1540
with_str_writer(|wr| {
1533
- let mut encoder = Encoder(wr);
1541
+ let mut encoder = Encoder::init (wr);
1534
1542
animal.encode(&mut encoder);
1535
1543
}),
1536
1544
~" { \" variant\" : \" Frog \" , \" fields\" : [ \" Henry \" , 349 ] } "
1537
1545
);
1538
1546
assert_eq!(
1539
1547
with_str_writer(|wr| {
1540
- let mut encoder = PrettyEncoder(wr);
1548
+ let mut encoder = PrettyEncoder::init (wr);
1541
1549
animal.encode(&mut encoder);
1542
1550
}),
1543
1551
~"\
@@ -1553,14 +1561,14 @@ mod tests {
1553
1561
fn test_write_some( ) {
1554
1562
let value = Some ( ~"jodhpurs");
1555
1563
let s = with_str_writer(|wr| {
1556
- let mut encoder = Encoder(wr);
1564
+ let mut encoder = Encoder::init (wr);
1557
1565
value.encode(&mut encoder);
1558
1566
});
1559
1567
assert_eq!(s, ~"\" jodhpurs\" " ) ;
1560
1568
1561
1569
let value = Some ( ~"jodhpurs");
1562
1570
let s = with_str_writer(|wr| {
1563
- let mut encoder = PrettyEncoder(wr);
1571
+ let mut encoder = PrettyEncoder::init (wr);
1564
1572
value.encode(&mut encoder);
1565
1573
});
1566
1574
assert_eq!(s, ~"\" jodhpurs\" " ) ;
@@ -1570,13 +1578,13 @@ mod tests {
1570
1578
fn test_write_none( ) {
1571
1579
let value: Option <~str > = None ;
1572
1580
let s = with_str_writer( |wr| {
1573
- let mut encoder = Encoder ( wr) ;
1581
+ let mut encoder = Encoder :: init ( wr) ;
1574
1582
value. encode( & mut encoder) ;
1575
1583
} ) ;
1576
1584
assert_eq!( s, ~"null");
1577
1585
1578
1586
let s = with_str_writer(|wr| {
1579
- let mut encoder = Encoder(wr);
1587
+ let mut encoder = Encoder::init (wr);
1580
1588
value.encode(&mut encoder);
1581
1589
});
1582
1590
assert_eq!(s, ~" null");
@@ -1625,15 +1633,15 @@ mod tests {
1625
1633
1626
1634
#[test]
1627
1635
fn test_decode_identifiers() {
1628
- let mut decoder = Decoder(from_str(" null").unwrap());
1636
+ let mut decoder = Decoder::init (from_str(" null").unwrap());
1629
1637
let v: () = Decodable::decode(&mut decoder);
1630
1638
assert_eq!(v, ());
1631
1639
1632
- let mut decoder = Decoder(from_str(" true ").unwrap());
1640
+ let mut decoder = Decoder::init (from_str(" true ").unwrap());
1633
1641
let v: bool = Decodable::decode(&mut decoder);
1634
1642
assert_eq!(v, true);
1635
1643
1636
- let mut decoder = Decoder(from_str(" false ").unwrap());
1644
+ let mut decoder = Decoder::init (from_str(" false ").unwrap());
1637
1645
let v: bool = Decodable::decode(&mut decoder);
1638
1646
assert_eq!(v, false);
1639
1647
}
@@ -1668,31 +1676,31 @@ mod tests {
1668
1676
1669
1677
#[test]
1670
1678
fn test_decode_numbers() {
1671
- let mut decoder = Decoder(from_str(" 3 ").unwrap());
1679
+ let mut decoder = Decoder::init (from_str(" 3 ").unwrap());
1672
1680
let v: f64 = Decodable::decode(&mut decoder);
1673
1681
assert_eq!(v, 3.0);
1674
1682
1675
- let mut decoder = Decoder(from_str(" 3.1 ").unwrap());
1683
+ let mut decoder = Decoder::init (from_str(" 3.1 ").unwrap());
1676
1684
let v: f64 = Decodable::decode(&mut decoder);
1677
1685
assert_eq!(v, 3.1);
1678
1686
1679
- let mut decoder = Decoder(from_str(" -1.2 ").unwrap());
1687
+ let mut decoder = Decoder::init (from_str(" -1.2 ").unwrap());
1680
1688
let v: f64 = Decodable::decode(&mut decoder);
1681
1689
assert_eq!(v, -1.2);
1682
1690
1683
- let mut decoder = Decoder(from_str(" 0.4 ").unwrap());
1691
+ let mut decoder = Decoder::init (from_str(" 0.4 ").unwrap());
1684
1692
let v: f64 = Decodable::decode(&mut decoder);
1685
1693
assert_eq!(v, 0.4);
1686
1694
1687
- let mut decoder = Decoder(from_str(" 0.4e5 ").unwrap());
1695
+ let mut decoder = Decoder::init (from_str(" 0.4e5 ").unwrap());
1688
1696
let v: f64 = Decodable::decode(&mut decoder);
1689
1697
assert_eq!(v, 0.4e5);
1690
1698
1691
- let mut decoder = Decoder(from_str(" 0.4e15 ").unwrap());
1699
+ let mut decoder = Decoder::init (from_str(" 0.4e15 ").unwrap());
1692
1700
let v: f64 = Decodable::decode(&mut decoder);
1693
1701
assert_eq!(v, 0.4e15);
1694
1702
1695
- let mut decoder = Decoder(from_str(" 0.4e-01 ").unwrap());
1703
+ let mut decoder = Decoder::init (from_str(" 0.4e-01 ").unwrap());
1696
1704
let v: f64 = Decodable::decode(&mut decoder);
1697
1705
assert_eq!(v, 0.4e-01);
1698
1706
}
@@ -1720,39 +1728,39 @@ mod tests {
1720
1728
1721
1729
#[ test]
1722
1730
fn test_decode_str( ) {
1723
- let mut decoder = Decoder ( from_str( "\" \" " ) . unwrap( ) ) ;
1731
+ let mut decoder = Decoder :: init ( from_str( "\" \" " ) . unwrap( ) ) ;
1724
1732
let v: ~str = Decodable :: decode( & mut decoder) ;
1725
1733
assert_eq!( v, ~"") ;
1726
1734
1727
- let mut decoder = Decoder ( from_str( "\" foo\" " ) . unwrap( ) ) ;
1735
+ let mut decoder = Decoder :: init ( from_str( "\" foo\" " ) . unwrap( ) ) ;
1728
1736
let v: ~str = Decodable :: decode( & mut decoder) ;
1729
1737
assert_eq!( v, ~"foo");
1730
1738
1731
- let mut decoder = Decoder(from_str("\" \\ \" \" " ) . unwrap( ) ) ;
1739
+ let mut decoder = Decoder::init (from_str("\" \\ \" \" " ) . unwrap( ) ) ;
1732
1740
let v: ~str = Decodable :: decode( & mut decoder) ;
1733
1741
assert_eq!( v, ~"\" ") ;
1734
1742
1735
- let mut decoder = Decoder ( from_str( "\" \\ b\" " ) . unwrap( ) ) ;
1743
+ let mut decoder = Decoder :: init ( from_str( "\" \\ b\" " ) . unwrap( ) ) ;
1736
1744
let v: ~str = Decodable :: decode( & mut decoder) ;
1737
1745
assert_eq!( v, ~"\x08 ") ;
1738
1746
1739
- let mut decoder = Decoder ( from_str( "\" \\ n\" " ) . unwrap( ) ) ;
1747
+ let mut decoder = Decoder :: init ( from_str( "\" \\ n\" " ) . unwrap( ) ) ;
1740
1748
let v: ~str = Decodable :: decode( & mut decoder) ;
1741
1749
assert_eq!( v, ~"\n ") ;
1742
1750
1743
- let mut decoder = Decoder ( from_str( "\" \\ r\" " ) . unwrap( ) ) ;
1751
+ let mut decoder = Decoder :: init ( from_str( "\" \\ r\" " ) . unwrap( ) ) ;
1744
1752
let v: ~str = Decodable :: decode( & mut decoder) ;
1745
1753
assert_eq!( v, ~"\r ") ;
1746
1754
1747
- let mut decoder = Decoder ( from_str( "\" \\ t\" " ) . unwrap( ) ) ;
1755
+ let mut decoder = Decoder :: init ( from_str( "\" \\ t\" " ) . unwrap( ) ) ;
1748
1756
let v: ~str = Decodable :: decode( & mut decoder) ;
1749
1757
assert_eq!( v, ~"\t ") ;
1750
1758
1751
- let mut decoder = Decoder ( from_str( "\" \\ u12ab\" " ) . unwrap( ) ) ;
1759
+ let mut decoder = Decoder :: init ( from_str( "\" \\ u12ab\" " ) . unwrap( ) ) ;
1752
1760
let v: ~str = Decodable :: decode( & mut decoder) ;
1753
1761
assert_eq!( v, ~"\u12ab ") ;
1754
1762
1755
- let mut decoder = Decoder ( from_str( "\" \\ uAB12\" " ) . unwrap( ) ) ;
1763
+ let mut decoder = Decoder :: init ( from_str( "\" \\ uAB12\" " ) . unwrap( ) ) ;
1756
1764
let v: ~str = Decodable :: decode( & mut decoder) ;
1757
1765
assert_eq!( v, ~"\uAB12 ") ;
1758
1766
}
@@ -1785,27 +1793,27 @@ mod tests {
1785
1793
1786
1794
#[ test]
1787
1795
fn test_decode_list( ) {
1788
- let mut decoder = Decoder ( from_str( "[]" ) . unwrap( ) ) ;
1796
+ let mut decoder = Decoder :: init ( from_str( "[]" ) . unwrap( ) ) ;
1789
1797
let v: ~[ ( ) ] = Decodable :: decode( & mut decoder) ;
1790
1798
assert_eq!( v, ~[ ] ) ;
1791
1799
1792
- let mut decoder = Decoder ( from_str( "[null]" ) . unwrap( ) ) ;
1800
+ let mut decoder = Decoder :: init ( from_str( "[null]" ) . unwrap( ) ) ;
1793
1801
let v: ~[ ( ) ] = Decodable :: decode( & mut decoder) ;
1794
1802
assert_eq!( v, ~[ ( ) ] ) ;
1795
1803
1796
- let mut decoder = Decoder ( from_str( "[true]" ) . unwrap( ) ) ;
1804
+ let mut decoder = Decoder :: init ( from_str( "[true]" ) . unwrap( ) ) ;
1797
1805
let v: ~[ bool ] = Decodable :: decode( & mut decoder) ;
1798
1806
assert_eq!( v, ~[ true ] ) ;
1799
1807
1800
- let mut decoder = Decoder ( from_str( "[true]" ) . unwrap( ) ) ;
1808
+ let mut decoder = Decoder :: init ( from_str( "[true]" ) . unwrap( ) ) ;
1801
1809
let v: ~[ bool ] = Decodable :: decode( & mut decoder) ;
1802
1810
assert_eq!( v, ~[ true ] ) ;
1803
1811
1804
- let mut decoder = Decoder ( from_str( "[3, 1]" ) . unwrap( ) ) ;
1812
+ let mut decoder = Decoder :: init ( from_str( "[3, 1]" ) . unwrap( ) ) ;
1805
1813
let v: ~[ int] = Decodable :: decode( & mut decoder) ;
1806
1814
assert_eq!( v, ~[ 3 , 1 ] ) ;
1807
1815
1808
- let mut decoder = Decoder ( from_str( "[[3], [1, 2]]" ) . unwrap( ) ) ;
1816
+ let mut decoder = Decoder :: init ( from_str( "[[3], [1, 2]]" ) . unwrap( ) ) ;
1809
1817
let v: ~[ ~[ uint] ] = Decodable :: decode( & mut decoder) ;
1810
1818
assert_eq!( v, ~[ ~[ 3 ] , ~[ 1 , 2 ] ] ) ;
1811
1819
}
@@ -1907,7 +1915,7 @@ mod tests {
1907
1915
{ \"a\" : null, \"b\" : 2 , \"c\" : [ \" abc\" , \"xyz\" ] }
1908
1916
]
1909
1917
} ";
1910
- let mut decoder = Decoder(from_str(s).unwrap());
1918
+ let mut decoder = Decoder::init (from_str(s).unwrap());
1911
1919
let v: Outer = Decodable::decode(&mut decoder);
1912
1920
assert_eq!(
1913
1921
v,
@@ -1921,31 +1929,31 @@ mod tests {
1921
1929
1922
1930
#[test]
1923
1931
fn test_decode_option() {
1924
- let mut decoder = Decoder(from_str(" null").unwrap());
1932
+ let mut decoder = Decoder::init (from_str(" null").unwrap());
1925
1933
let value: Option<~str> = Decodable::decode(&mut decoder);
1926
1934
assert_eq!(value, None);
1927
1935
1928
- let mut decoder = Decoder(from_str("\" jodhpurs\" " ) . unwrap( ) ) ;
1936
+ let mut decoder = Decoder::init (from_str("\" jodhpurs\" " ) . unwrap( ) ) ;
1929
1937
let value: Option <~str > = Decodable :: decode( & mut decoder) ;
1930
1938
assert_eq!( value, Some ( ~"jodhpurs"));
1931
1939
}
1932
1940
1933
1941
#[test]
1934
1942
fn test_decode_enum() {
1935
- let mut decoder = Decoder(from_str("\" Dog\" " ) . unwrap( ) ) ;
1943
+ let mut decoder = Decoder::init (from_str("\" Dog\" " ) . unwrap( ) ) ;
1936
1944
let value: Animal = Decodable :: decode( & mut decoder) ;
1937
1945
assert_eq!( value, Dog ) ;
1938
1946
1939
- let mut decoder =
1940
- Decoder ( from_str( "{ \" variant \" : \" Frog \" , \" fields \" :[ \" Henry \" ,349]}" ) . unwrap( ) ) ;
1947
+ let s = "{ \" variant \" : \" Frog \" , \" fields \" :[ \" Henry \" ,349]}" ;
1948
+ let mut decoder = Decoder :: init ( from_str( s ) . unwrap( ) ) ;
1941
1949
let value: Animal = Decodable :: decode( & mut decoder) ;
1942
1950
assert_eq!( value, Frog ( ~"Henry ", 349));
1943
1951
}
1944
1952
1945
1953
#[test]
1946
1954
fn test_decode_map() {
1947
1955
let s = ~" { \" a\" : \"Dog \" , \"b\" : { \" variant\" : \" Frog \" , \" fields\" : [ \" Henry \" , 349 ] } } ";
1948
- let mut decoder = Decoder(from_str(s).unwrap());
1956
+ let mut decoder = Decoder::init (from_str(s).unwrap());
1949
1957
let mut map: TreeMap<~str, Animal> = Decodable::decode(&mut decoder);
1950
1958
1951
1959
assert_eq!(map.pop(&~" a"), Some(Dog));
@@ -1982,7 +1990,7 @@ mod tests {
1982
1990
match from_str(to_parse) {
1983
1991
Err(e) => Some(e.to_str()),
1984
1992
Ok(json) => {
1985
- let _: T = Decodable::decode(&mut Decoder(json));
1993
+ let _: T = Decodable::decode(&mut Decoder::init (json));
1986
1994
None
1987
1995
}
1988
1996
}
0 commit comments