Skip to content

Commit e98fc6b

Browse files
author
bors-servo
authored
Auto merge of #106 - nox:serde, r=SimonSapin
Allow serde 0.8 and remove use of compiler plugins <!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/rust-cssparser/106) <!-- Reviewable:end -->
2 parents bab5a15 + 7cf8e82 commit e98fc6b

File tree

5 files changed

+43
-21
lines changed

5 files changed

+43
-21
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ script:
88
- cargo build --verbose
99
- cargo test --verbose
1010
- cargo doc --verbose
11-
- ([ $TRAVIS_RUST_VERSION != nightly ] || cargo test --features heap_size)
11+
- cargo test --features heapsize
1212

1313
after_success: |
1414
[ $TRAVIS_RUST_VERSION = nightly ] &&

Cargo.toml

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22

33
name = "cssparser"
4-
version = "0.5.6"
4+
version = "0.5.7"
55
authors = [ "Simon Sapin <simon.sapin@exyr.org>" ]
66

77
description = "Rust implementation of CSS Syntax Level 3"
@@ -19,11 +19,9 @@ tempdir = "0.3"
1919
[dependencies]
2020
encoding = "0.2"
2121
heapsize = {version = ">=0.1.1, <0.4.0", optional = true}
22-
heapsize_plugin = {version = "0.1.0", optional = true}
2322
matches = "0.1"
24-
serde = {version = ">=0.6.6, <0.8", optional = true}
25-
serde_macros = {version = ">=0.6.5, <0.8", optional = true}
23+
serde = {version = ">=0.6.6, <0.9", optional = true}
2624

2725
[features]
28-
serde-serialization = [ "serde", "serde_macros" ]
29-
heap_size = [ "heapsize", "heapsize_plugin" ]
26+
serde-serialization = [ "serde" ]
27+
heap_size = [ "heapsize" ]

src/color.rs

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@
22
* License, v. 2.0. If a copy of the MPL was not distributed with this
33
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
44

5-
use std::ascii::AsciiExt;
65
use std::fmt;
76

87
use super::{Token, Parser, ToCss};
98

9+
#[cfg(feature = "serde")]
10+
use serde::{Deserialize, Deserializer, Serialize, Serializer};
1011

1112
/// A color with red, green, blue, and alpha components.
1213
#[derive(Clone, Copy, PartialEq, Debug)]
13-
#[cfg_attr(feature = "serde-serialization", derive(Deserialize, Serialize))]
14-
#[cfg_attr(feature = "heap_size", derive(HeapSizeOf))]
1514
pub struct RGBA {
1615
/// The red channel. Nominally in 0.0 ... 1.0.
1716
pub red: f32,
@@ -23,6 +22,34 @@ pub struct RGBA {
2322
pub alpha: f32,
2423
}
2524

25+
#[cfg(feature = "serde")]
26+
impl Serialize for RGBA {
27+
fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error>
28+
where S: Serializer
29+
{
30+
(self.red, self.green, self.blue, self.alpha).serialize(serializer)
31+
}
32+
}
33+
34+
#[cfg(feature = "serde")]
35+
impl Deserialize for RGBA {
36+
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error>
37+
where D: Deserializer
38+
{
39+
let (red, green, blue, alpha) =
40+
try!(Deserialize::deserialize(deserializer));
41+
Ok(RGBA {
42+
red: red,
43+
green: green,
44+
blue: blue,
45+
alpha: alpha,
46+
})
47+
}
48+
}
49+
50+
#[cfg(feature = "heapsize")]
51+
known_heap_size!(0, RGBA);
52+
2653
impl ToCss for RGBA {
2754
fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write {
2855
if self.alpha == 1f32 {
@@ -42,14 +69,16 @@ impl ToCss for RGBA {
4269

4370
/// A <color> value.
4471
#[derive(Clone, Copy, PartialEq, Debug)]
45-
#[cfg_attr(feature = "heap_size", derive(HeapSizeOf))]
4672
pub enum Color {
4773
/// The 'currentColor' keyword
4874
CurrentColor,
4975
/// Everything else gets converted to RGBA during parsing
5076
RGBA(RGBA),
5177
}
5278

79+
#[cfg(feature = "heapsize")]
80+
known_heap_size!(0, Color);
81+
5382
impl ToCss for Color {
5483
fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write {
5584
match self {

src/lib.rs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,6 @@
66
#![crate_type = "rlib"]
77

88
#![deny(missing_docs)]
9-
#![cfg_attr(feature = "serde-serialization", feature(custom_derive))]
10-
#![cfg_attr(feature = "serde-serialization", feature(plugin))]
11-
#![cfg_attr(feature = "serde-serialization", plugin(serde_macros))]
12-
#![cfg_attr(feature = "heap_size", feature(custom_derive))]
13-
#![cfg_attr(feature = "heap_size", feature(plugin))]
14-
#![cfg_attr(feature = "heap_size", plugin(heapsize_plugin))]
159

1610
/*!
1711
@@ -75,8 +69,8 @@ extern crate encoding;
7569
#[macro_use] extern crate matches;
7670
#[cfg(test)] extern crate tempdir;
7771
#[cfg(test)] extern crate rustc_serialize;
78-
#[cfg(feature = "serde-serialization")] extern crate serde;
79-
#[cfg(feature = "heap_size")] extern crate heapsize;
72+
#[cfg(feature = "serde")] extern crate serde;
73+
#[cfg(feature = "heapsize")] #[macro_use] extern crate heapsize;
8074

8175
pub use tokenizer::{Token, NumericValue, PercentageValue, SourceLocation};
8276
pub use rules_and_declarations::{parse_important};

src/serializer.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -314,9 +314,11 @@ impl_tocss_for_number!(u64);
314314

315315
/// A category of token. See the `needs_separator_when_before` method.
316316
#[derive(Copy, Clone, Eq, PartialEq, Debug)]
317-
#[cfg_attr(feature = "heap_size", derive(HeapSizeOf))]
318317
pub struct TokenSerializationType(TokenSerializationTypeVariants);
319318

319+
#[cfg(feature = "heapsize")]
320+
known_heap_size!(0, TokenSerializationType);
321+
320322
impl TokenSerializationType {
321323
/// Return a value that represents the absence of a token, e.g. before the start of the input.
322324
pub fn nothing() -> TokenSerializationType {
@@ -363,7 +365,6 @@ impl TokenSerializationType {
363365
}
364366

365367
#[derive(Copy, Clone, Eq, PartialEq, Debug)]
366-
#[cfg_attr(feature = "heap_size", derive(HeapSizeOf))]
367368
enum TokenSerializationTypeVariants {
368369
Nothing,
369370
WhiteSpace,

0 commit comments

Comments
 (0)