1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
use properties::parse::{
  GradientStopRepr,
  gradient_stop,
  AngleRepr,
  angle,
};

use nom::alpha;
use std::str;

#[derive(Debug, Clone)]
pub struct GradientFunction<'a, 'b> {
    pub stops: Vec<GradientStopRepr>,
    pub angle: AngleRepr<'a, 'b>,
}

// named!(fun_separated(&[u8]) -> GradientFunction, do_parse!(
//   angle: angle >>
//   char!(',') >>
//   stops: map_res!(take_until!(char!(b")")), separated_list!(char!(b","), gradient_stop)) >>
//   (GradientFunction {
//     angle,
//     stops
//   })
// ));

// named!(fun_arguments(&[u8]) -> (AngleRepr, Vec<GradientStopRepr>),
//   delimited!(
//     char!('('),
//       fun_separated,
//     char!(')')
//   )
// );

// // named!(pub transform_parse(&[u8]) -> GradientFunction, do_parse!(
// //   tag!("linear-gradient") >>

// //   args: fun_arguments >>
// //   (GradientFunction {

// //   })
// // ));

// #[test]
// fn test_transform_function_parse() {

// }