[librsvg: 17/19] gitlab#182 - Merge branch 'parse-transform-with-cssparser'



commit 828d222fc76078ba4cb0ef2a6d1874fba3a5b19e
Merge: 3b2b9b0 f7ac35c
Author: Federico Mena Quintero <federico gnome org>
Date:   Mon Jan 22 13:18:53 2018 -0600

    gitlab#182 - Merge branch 'parse-transform-with-cssparser'
    
    We no longer use lalrpop to parse SVG's "transform" attribute.  We do
    it by hand with rust-cssparser.  Lalrpop currently suffers from having
    to recompile its regexps on each invocation of the parser, so SVGs
    with many "transform" attributes are parsed slower than they should
    be.
    
    The grammar for the "transform" attribute is very small, anyway, and
    doesn't require an industrial-strength parser.  Rust-cssparser is
    perfectly capable of dealing with it.
    
    https://gitlab.gnome.org/GNOME/librsvg/issues/182

 Makefile.am           |   2 -
 rust/Cargo.lock       | 275 ++++++++++----------------------------------------
 rust/Cargo.toml       |   7 +-
 rust/build.rs         |   5 -
 rust/src/error.rs     |   8 ++
 rust/src/lib.rs       |   2 -
 rust/src/parsers.rs   |   6 +-
 rust/src/transform.rs | 202 ++++++++++++++++++++++++++++++------
 8 files changed, 240 insertions(+), 267 deletions(-)
---
diff --cc Makefile.am
index fe915ab,6e03e6d..ccd4878
--- a/Makefile.am
+++ b/Makefile.am
@@@ -67,14 -68,10 +67,13 @@@ librsvg_@RSVG_API_MAJOR_VERSION@_la_SOU
  
  RUST_SOURCES =                                        \
        rust/Cargo.toml                         \
-       rust/build.rs                           \
        rust/src/aspect_ratio.rs                \
        rust/src/bbox.rs                        \
 +      rust/src/chars.rs                       \
 +      rust/src/clip_path.rs                   \
        rust/src/cnode.rs                       \
        rust/src/color.rs                       \
 +      rust/src/coord_units.rs                 \
        rust/src/drawing_ctx.rs                 \
        rust/src/error.rs                       \
        rust/src/gradient.rs                    \
diff --cc rust/Cargo.lock
index bbc7b72,439daab..a9fcef5
--- a/rust/Cargo.lock
+++ b/rust/Cargo.lock
@@@ -1,42 -1,16 +1,28 @@@
- [[package]]
- name = "aho-corasick"
- version = "0.6.4"
- source = "registry+https://github.com/rust-lang/crates.io-index";
- dependencies = [
-  "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
- ]
- 
- [[package]]
- name = "ascii-canvas"
- version = "1.0.0"
- source = "registry+https://github.com/rust-lang/crates.io-index";
- dependencies = [
-  "term 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
- ]
- 
- [[package]]
- name = "atty"
- version = "0.1.2"
- source = "registry+https://github.com/rust-lang/crates.io-index";
++[root]
++name = "rsvg_internals"
++version = "0.0.1"
 +dependencies = [
-  "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
-  "libc 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)",
-  "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cairo-rs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cairo-sys-rs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cssparser 0.22.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "downcast-rs 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "glib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "glib-sys 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "itertools 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
++ "pango 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "pango-sys 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
 +]
 +
  [[package]]
- name = "bit-set"
- version = "0.4.0"
+ name = "aho-corasick"
+ version = "0.6.4"
  source = "registry+https://github.com/rust-lang/crates.io-index";
  dependencies = [
-  "bit-vec 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
+  "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
  ]
  
--[[package]]
- name = "bit-vec"
- version = "0.4.4"
 -name = "bitflags"
 -version = "0.9.1"
--source = "registry+https://github.com/rust-lang/crates.io-index";
--
  [[package]]
  name = "bitflags"
  version = "1.0.1"
@@@ -53,19 -27,19 +39,19 @@@ version = "0.3.0
  source = "registry+https://github.com/rust-lang/crates.io-index";
  dependencies = [
   "c_vec 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 - "cairo-sys-rs 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 - "glib 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
 - "glib-sys 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 + "cairo-sys-rs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "glib 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "glib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
 + "glib-sys 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "libc 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)",
+  "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
   "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
  ]
  
  [[package]]
  name = "cairo-sys-rs"
 -version = "0.4.0"
 +version = "0.5.0"
  source = "registry+https://github.com/rust-lang/crates.io-index";
  dependencies = [
-  "libc 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)",
+  "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
   "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
   "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
  ]
@@@ -121,15 -82,13 +94,18 @@@ version = "0.4.2
  source = "registry+https://github.com/rust-lang/crates.io-index";
  
  [[package]]
- name = "ena"
- version = "0.5.0"
+ name = "dtoa-short"
+ version = "0.3.1"
  source = "registry+https://github.com/rust-lang/crates.io-index";
+ dependencies = [
+  "dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ ]
  
 +[[package]]
- name = "fixedbitset"
- version = "0.1.8"
++name = "either"
++version = "1.4.0"
 +source = "registry+https://github.com/rust-lang/crates.io-index";
 +
  [[package]]
  name = "fuchsia-zircon"
  version = "0.3.3"
@@@ -146,120 -105,45 +122,48 @@@ source = "registry+https://github.com/r
  
  [[package]]
  name = "glib"
- version = "0.4.0"
 -version = "0.3.1"
++version = "0.4.1"
  source = "registry+https://github.com/rust-lang/crates.io-index";
  dependencies = [
 - "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
 - "glib-sys 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 - "gobject-sys 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 - "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
 + "bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
 + "glib-sys 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
 + "gobject-sys 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
-  "libc 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+  "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
  ]
  
  [[package]]
  name = "glib-sys"
 -version = "0.4.0"
 +version = "0.5.0"
  source = "registry+https://github.com/rust-lang/crates.io-index";
  dependencies = [
 - "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
 + "bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
-  "libc 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)",
+  "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
   "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
  ]
  
  [[package]]
  name = "gobject-sys"
 -version = "0.4.0"
 +version = "0.5.0"
  source = "registry+https://github.com/rust-lang/crates.io-index";
  dependencies = [
 - "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
 - "glib-sys 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 + "bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
 + "glib-sys 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "libc 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)",
+  "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
   "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
  ]
  
- [[package]]
- name = "itertools"
- version = "0.5.10"
- source = "registry+https://github.com/rust-lang/crates.io-index";
- dependencies = [
-  "either 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- ]
- 
  [[package]]
 -name = "itoa"
 -version = "0.3.4"
 +name = "itertools"
 +version = "0.7.6"
  source = "registry+https://github.com/rust-lang/crates.io-index";
 +dependencies = [
 + "either 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 +]
  
  [[package]]
- name = "kernel32-sys"
- version = "0.2.2"
- source = "registry+https://github.com/rust-lang/crates.io-index";
- dependencies = [
-  "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
-  "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- ]
- 
- [[package]]
- name = "lalrpop"
- version = "0.13.1"
- source = "registry+https://github.com/rust-lang/crates.io-index";
- dependencies = [
-  "ascii-canvas 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "atty 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
-  "bit-set 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "diff 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
-  "docopt 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "ena 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)",
-  "lalrpop-intern 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
-  "lalrpop-snap 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
-  "lalrpop-util 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
-  "petgraph 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
-  "regex 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
-  "regex-syntax 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
-  "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
-  "term 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
-  "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
- ]
- 
- [[package]]
- name = "lalrpop-intern"
- version = "0.13.1"
- source = "registry+https://github.com/rust-lang/crates.io-index";
- 
- [[package]]
- name = "lalrpop-snap"
- version = "0.13.1"
- source = "registry+https://github.com/rust-lang/crates.io-index";
- dependencies = [
-  "ascii-canvas 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "atty 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
-  "bit-set 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "diff 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
-  "docopt 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "ena 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)",
-  "lalrpop-intern 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
-  "lalrpop-util 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
-  "petgraph 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
-  "regex 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
-  "regex-syntax 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
-  "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
-  "term 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
-  "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
- ]
- 
- [[package]]
- name = "lalrpop-util"
- version = "0.13.1"
- source = "registry+https://github.com/rust-lang/crates.io-index";
- 
- [[package]]
--name = "lazy_static"
--version = "0.2.11"
++name = "itoa"
++version = "0.3.4"
  source = "registry+https://github.com/rust-lang/crates.io-index";
  
  [[package]]
@@@ -282,48 -166,9 +186,34 @@@ name = "memchr
  version = "2.0.1"
  source = "registry+https://github.com/rust-lang/crates.io-index";
  dependencies = [
-  "libc 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)",
+  "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
  ]
  
- [[package]]
- name = "ordermap"
- version = "0.3.4"
- source = "registry+https://github.com/rust-lang/crates.io-index";
- 
 +[[package]]
 +name = "pango"
 +version = "0.3.0"
 +source = "registry+https://github.com/rust-lang/crates.io-index";
 +dependencies = [
 + "bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
-  "glib 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "glib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
 + "glib-sys 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
 + "gobject-sys 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "libc 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
 + "pango-sys 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
 +]
 +
 +[[package]]
 +name = "pango-sys"
 +version = "0.5.0"
 +source = "registry+https://github.com/rust-lang/crates.io-index";
 +dependencies = [
 + "bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
 + "glib-sys 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
 + "gobject-sys 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "libc 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
 + "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
 +]
 +
- [[package]]
- name = "petgraph"
- version = "0.4.11"
- source = "registry+https://github.com/rust-lang/crates.io-index";
- dependencies = [
-  "fixedbitset 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
-  "ordermap 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
- ]
- 
  [[package]]
  name = "phf"
  version = "0.7.21"
@@@ -399,30 -244,21 +289,6 @@@ name = "regex-syntax
  version = "0.4.2"
  source = "registry+https://github.com/rust-lang/crates.io-index";
  
--[[package]]
--name = "rsvg_internals"
--version = "0.0.1"
--dependencies = [
-  "cairo-rs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "cairo-sys-rs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "cssparser 0.18.2 (registry+https://github.com/rust-lang/crates.io-index)",
 - "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
 - "cairo-rs 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
 - "cairo-sys-rs 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 - "cssparser 0.22.1 (registry+https://github.com/rust-lang/crates.io-index)",
-- "downcast-rs 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "glib 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "glib-sys 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "itertools 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)",
-  "lalrpop 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
-  "lalrpop-util 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
-  "libc 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)",
-  "pango 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "pango-sys 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
 - "glib 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
 - "glib-sys 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 - "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
-- "regex 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
--]
- 
- [[package]]
- name = "rustc-serialize"
- version = "0.3.24"
- source = "registry+https://github.com/rust-lang/crates.io-index";
--
  [[package]]
  name = "siphasher"
  version = "0.2.2"
@@@ -497,50 -324,29 +354,31 @@@ name = "winapi
  version = "0.2.8"
  source = "registry+https://github.com/rust-lang/crates.io-index";
  
- [[package]]
- name = "winapi-build"
- version = "0.1.1"
- source = "registry+https://github.com/rust-lang/crates.io-index";
- 
  [metadata]
  "checksum aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = 
"d6531d44de723825aa81398a6415283229725a00fa30713812ab9323faa82fc4"
- "checksum ascii-canvas 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"b385d69402821a1c254533a011a312531cbcc0e3e24f19bbb4747a5a2daf37e2"
- "checksum atty 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"d0fd4c0631f06448cc45a6bbb3b710ebb7ff8ccb96a0800c994afe23a70d5df2"
- "checksum bit-set 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"d9bf6104718e80d7b26a68fdbacff3481cfc05df670821affc7e9cbc1884400c"
- "checksum bit-vec 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = 
"02b4ff8b16e6076c3e14220b39fbc1fabb6737522281a388998046859400895f"
 -"checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5"
  "checksum bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"b3c30d3802dfb7281680d6285f2ccdaa8c2d8fee41f93805dba5c4cf50dc23cf"
  "checksum c_vec 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"6237ac5a4b1e81c213c24c6437964c61e646df910a914b4ab1487b46df20bd13"
 -"checksum cairo-rs 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"a9d336f1b2ff46c17475a14360de7f456707008da475c54824887e52e453ab00"
 -"checksum cairo-sys-rs 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"9e8a1e2a76ac09b959788c2c30a355d693ce6f7f7d7268f6d1dd5d8c3359c521"
 +"checksum cairo-rs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"b6b5695f59fd036fe5741bc5a4eb20c78fbe42256e3b08a2af26bbcbe8070bf3"
 +"checksum cairo-sys-rs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"7c6e18fecaeac51809db57f45f4553cc0975225a7eb435a7a7e91e5e8113a84d"
- "checksum cssparser 0.18.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"c89e2d77451da8a55f1f2fcaf7eb86c32da9296890c6a474c7e4047f2429b2f4"
+ "checksum cssparser 0.22.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"2debe29d742180c2d5772c82fd3b024dc399b34afaf04fc7a30ed81af3dc6d67"
  "checksum cssparser-macros 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"079adec4af52bb5275eadd004292028c79eb3c5f5b4ee8086a36d4197032f6df"
- "checksum diff 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = 
"3c2b69f912779fbb121ceb775d74d51e915af17aaebc38d28a592843a2dd0a3a"
- "checksum docopt 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"ab32ea6e284d87987066f21a9e809a73c14720571ef34516f0890b3d355ccfd8"
  "checksum downcast-rs 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"917042ca6e6c9fe735a63cd4d5d4c43c64ea8deb456fc5465d3f78df24e68d86"
+ "checksum dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab"
+ "checksum dtoa-short 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"068d4026697c1a18f0b0bb8cfcad1b0c151b90d8edb9bf4c235ad68128920d1d"
 +"checksum either 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"740178ddf48b1a9e878e6d6509a1442a2d42fd2928aae8e7a6f8a36fb01981b3"
- "checksum ena 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"cabe5a5078ac8c506d3e4430763b1ba9b609b1286913e7d08e581d1c2de9b7e5"
- "checksum fixedbitset 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = 
"85cb8fec437468d86dc7c83ca7cfc933341d561873275f22dd5eedefa63a6478"
  "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = 
"2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
  "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = 
"3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
- "checksum glib 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"450247060df7d52fdad31e1d66f30d967e925c9d1d26a0ae050cfe33dcd00d08"
 -"checksum glib 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"d4da1d7f4bdc5c708d8ce4df1ac440dcb2f9d97d937c989032185a48aeef1d10"
 -"checksum glib-sys 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"cdd7d911c5dc610aabe37caae7d3b9d2cfe6d8f4c85ff4c062f3d6f490e75067"
 -"checksum gobject-sys 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"edc95561e538381576425264a4ddd08c65d5da218f10b2a47b4479dd147775da"
++"checksum glib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"b9b0452824cc63066940f01adc721804919f0b76cdba3cfab977b00b87f16d4a"
 +"checksum glib-sys 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"d9693049613ff52b93013cc3d2590366d8e530366d288438724b73f6c7dc4be8"
 +"checksum gobject-sys 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"60d507c87a71b1143c66ed21a969be9b99a76df234b342d733e787e6c9c7d7c2"
- "checksum itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = 
"4833d6978da405305126af4ac88569b5d71ff758581ce5a987dbfa3755f694fc"
 +"checksum itertools 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = 
"b07332223953b5051bceb67e8c4700aa65291535568e1f12408c43c4a42c0394"
- "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
- "checksum lalrpop 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"8ebe5a5c90d5edeecb7f62f6ebec0a3d0f6faf4759a052708348cda99fd311a0"
- "checksum lalrpop-intern 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"05410c1e4aff497bdea1ccb274ac35536fda0ee858600df36966502d4f7acbe3"
- "checksum lalrpop-snap 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"3f866ece35287f5223a1a022c5d86417c260cda2ca9c8a156af9959404ce5313"
- "checksum lalrpop-util 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"7c7743f235fc17f5f50f3b1e64a8690ee154f17f86bd68cbb78787c5b37907f7"
- "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = 
"76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73"
+ "checksum itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = 
"8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c"
 -"checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = 
"76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73"
  "checksum lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"c8f31047daa365f19be14b47c29df4f7c3b581832407daabe6ae77397619237d"
- "checksum libc 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)" = 
"96264e9b293e95d25bfcbbf8a88ffd1aedc85b754eba8b7d78012f638ba220eb"
+ "checksum libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = 
"1e5d97d6708edaa407429faa671b942dc0f2727222fb6b6539bf1db936e4b121"
  "checksum matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = 
"100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376"
  "checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d"
- "checksum ordermap 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = 
"690f9a54b4ad4e529b50a72d63152266dade43f072042b9cbd4788b8656bef4a"
 +"checksum pango 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"3e81c404ab81ea7ea2fc2431a0a7672507b80e4b8bf4b41eac3fc83cc665104e"
 +"checksum pango-sys 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"34f34a1be107fe16abb2744e0e206bee4b3b07460b5fddd3009a6aaf60bd69ab"
- "checksum petgraph 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = 
"7a7e5234c228fbfa874c86a77f685886127f82e0aef602ad1d48333fcac6ad61"
  "checksum phf 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)" = 
"cb325642290f28ee14d8c6201159949a872f220c62af6e110a56ea914fbe42fc"
  "checksum phf_codegen 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)" = 
"d62594c0bb54c464f633175d502038177e90309daf2e0158be42ed5f023ce88f"
  "checksum phf_generator 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)" = 
"6b07ffcc532ccc85e3afc45865469bf5d9e4ef5bfcf9622e3cfe80c2d275ec03"
diff --cc rust/Cargo.toml
index b608983,f33a50a..9ae34a7
--- a/rust/Cargo.toml
+++ b/rust/Cargo.toml
@@@ -5,17 -5,15 +5,15 @@@ authors = ["Federico Mena Quintero <fed
  
  [dependencies]
  libc = "0.2"
 -bitflags = "^0.9.1"
 -#glib = "^0.1.3"
 -#glib-sys = "^0.3.4"
  downcast-rs = "^1.0.0"
  regex = "^0.2.1"
- lalrpop-util = "0.13.1"
- cssparser = "^0.18.2"
 +itertools = "0.7.4"
 +pango = "0.3.0"
 +pango-sys = "0.5.0"
+ cssparser = "^0.22.1"
  
  [dependencies.cairo-sys-rs]
 -version = "0.4.0"
 +version = "0.5.0"
  #git = "https://github.com/gtk-rs/cairo.git";
  #branch = "master"
  #git = "https://github.com/federicomenaquintero/cairo.git";
diff --cc rust/src/parsers.rs
index 49e43a5,17f4557..61c6c11
--- a/rust/src/parsers.rs
+++ b/rust/src/parsers.rs
@@@ -84,17 -84,17 +84,17 @@@ pub fn number_optional_number (s: &str
      let mut input = ParserInput::new (s);
      let mut parser = Parser::new (&mut input);
  
 -    let x = parser.expect_number ()? as f64;
 +    let x = f64::from(parser.expect_number ()?);
  
      if !parser.is_exhausted () {
-         let position = parser.position ();
+         let state = parser.state ();
  
          match *parser.next ()? {
              Token::Comma => {},
-             _ => parser.reset (position)
+             _ => parser.reset (&state)
          };
  
 -        let y = parser.expect_number ()? as f64;
 +        let y = f64::from(parser.expect_number ()?);
  
          parser.expect_exhausted ()?;
  


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]