From f95acd769b2d1dd942dc4e6705d36397de4d6747 Mon Sep 17 00:00:00 2001 From: kud1ing Date: Thu, 22 Jan 2015 19:17:52 +0100 Subject: [PATCH] simplify --- README.md | 54 +- UNSTABLE.md | 41 +- generate_markdown_files.py | 1368 +++++++++++++++++------------------- 3 files changed, 678 insertions(+), 785 deletions(-) diff --git a/README.md b/README.md index f07635e..77550e0 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ Only projects that are stable and useful to users are added. Projects that do no ### Games -* [Coeuvre/rust-2048](https://github.com/Coeuvre/rust-2048) +* [Coeuvre/rust-2048](https://github.com/Coeuvre/rust-2048) — [](https://travis-ci.org/Coeuvre/rust-2048) * [lifthrasiir/angolmois-rust](https://github.com/lifthrasiir/angolmois-rust) — a minimalistic music video game which supports the BMS format [](https://travis-ci.org/lifthrasiir/angolmois-rust) ## Frameworks @@ -45,14 +45,14 @@ Only projects that are stable and useful to users are added. Projects that do no ### Audio -* [bjz/openal-rs](https://github.com/bjz/openal-rs/) — [OpenAL 1.1](http://www.openal.org/) bindings -* [JeremyLetang/ears](https://github.com/JeremyLetang/ears) — a simple library to play Sounds and Musics, on top of OpenAL and libsndfile [](https://travis-ci.org/JeremyLetang/ears) -* [JeremyLetang/rust-portaudio](https://github.com/JeremyLetang/rust-portaudio) — [PortAudio](http://www.portaudio.com/) bindings [](https://travis-ci.org/JeremyLetang/rust-portaudio) +* [bjz/openal-rs](https://github.com/bjz/openal-rs) — [OpenAL 1.1](http://www.openal.org/) bindings [](https://travis-ci.org/bjz/openal-rs) +* [JeremyLetang/ears](https://github.com/JeremyLetang/ears) — a simple library to play Sounds and Musics, on top of OpenAL and libsndfile [](https://travis-ci.org/JeremyLetang/ears) +* [JeremyLetang/rust-portaudio](https://github.com/JeremyLetang/rust-portaudio) — [PortAudio](http://www.portaudio.com/) bindings [](https://travis-ci.org/JeremyLetang/rust-portaudio) * [samdoshi/portmidi-rs](https://github.com/samdoshi/portmidi-rs) — [PortMidi](http://portmedia.sourceforge.net/portmidi/) bindings [](https://travis-ci.org/samdoshi/portmidi-rs) ### Build system -* [Cargo](http://crates.io) — the Rust package manager +* [Cargo](http://crates.io/) — the Rust package manager * CMake * [SiegeLord/RustCMake](https://github.com/SiegeLord/RustCMake) — an example project showing usage of CMake with Rust [](https://travis-ci.org/SiegeLord/RustCMake) @@ -70,14 +70,14 @@ Only projects that are stable and useful to users are added. Projects that do no ### Computation * [luqmana/rust-opencl](https://github.com/luqmana/rust-opencl) — [OpenCL](https://www.khronos.org/opencl/) bindings [](https://travis-ci.org/luqmana/rust-opencl) -* [thestinger/rust-gmp](https://github.com/thestinger/rust-gmp) — [libgmp](https://gmplib.org/) bindings +* [thestinger/rust-gmp](https://github.com/thestinger/rust-gmp) — [libgmp](https://gmplib.org/) bindings [](https://travis-ci.org/thestinger/rust-gmp) ### Cryptography * [DaGenix/rust-crypto](https://github.com/DaGenix/rust-crypto) — cryptographic algorithms in Rust [](https://travis-ci.org/DaGenix/rust-crypto) -* [dnaq/sodiumoxide](https://github.com/dnaq/sodiumoxide) — [libsodium](https://github.com/jedisct1/libsodium) bindings -* [klutzy/suruga](https://github.com/klutzy/suruga) — a Rust implementation of [TLS 1.2](http://tools.ietf.org/html/rfc5246) -* [seb-m/common.rs](https://github.com/klutzy/suruga) — Common Rust crypto utilities +* [dnaq/sodiumoxide](https://github.com/dnaq/sodiumoxide) — [libsodium](https://github.com/jedisct1/libsodium) bindings [](https://travis-ci.org/dnaq/sodiumoxide) +* [klutzy/suruga](https://github.com/klutzy/suruga) — a Rust implementation of [TLS 1.2](http://tools.ietf.org/html/rfc5246) [](https://travis-ci.org/klutzy/suruga) +* [seb-m/common.rs](https://github.com/seb-m/common.rs) — Common Rust crypto utilities [](https://travis-ci.org/seb-m/common.rs) * [sfackler/rust-openssl](https://github.com/sfackler/rust-openssl) — [OpenSSL](https://www.openssl.org/) bindings [](https://travis-ci.org/sfackler/rust-openssl) ### Database @@ -109,7 +109,7 @@ Only projects that are stable and useful to users are added. Projects that do no * Character Encoding * [lifthrasiir/rust-encoding](https://github.com/lifthrasiir/rust-encoding) — [](https://travis-ci.org/lifthrasiir/rust-encoding) * CSV - * [BurntSushi/rust-csv](https://github.com/BurntSushi/rust-csv) — [](https://travis-ci.org/BurntSushi/rust-csv) + * [BurntSushi/rust-csv](https://github.com/BurntSushi/rust-csv) — [](https://travis-ci.org/BurntSushi/rust-csv) * HTML * [servo/html5ever](https://github.com/servo/html5ever) — High-performance browser-grade HTML5 parser [](https://travis-ci.org/servo/html5ever) * MsgPck @@ -121,15 +121,15 @@ Only projects that are stable and useful to users are added. Projects that do no * Tnetstring * [erickt/rust-tnetstring](https://github.com/erickt/rust-tnetstring) — [](https://travis-ci.org/erickt/rust-tnetstring) * XML - * [Florob/RustyXML](https://github.com/Florob/RustyXML) — an XML parser written in Rust [](https://travis-ci.org/Florob/RustyXM) + * [Florob/RustyXML](https://github.com/Florob/RustyXML) — an XML parser written in Rust [](https://travis-ci.org/Florob/RustyXML) * [netvl/xml-rs](https://github.com/netvl/xml-rs) — a streaming XML library [](https://travis-ci.org/netvl/xml-rs) * YAML * [kimhyunkang/libyaml-rust](https://github.com/kimhyunkang/libyaml-rust) — [libyaml](http://pyyaml.org/wiki/LibYAML) bindings [](https://travis-ci.org/kimhyunkang/libyaml-rust) ### Game development -* [bbodi/rust-voxlap](https://github.com/bbodi/rust-voxlap) — [Voxlap](http://advsys.net/ken/voxlap.htm) bindings -* [PistonDevelopers/piston](https://github.com/pistondevelopers/piston) — [](https://travis-ci.org/PistonDevelopers/piston) +* [bbodi/rust-voxlap](https://github.com/bbodi/rust-voxlap) — [Voxlap](http://advsys.net/ken/voxlap.htm) bindings [](https://travis-ci.org/bbodi/rust-voxlap) +* [PistonDevelopers/piston](https://github.com/PistonDevelopers/piston) — [](https://travis-ci.org/PistonDevelopers/piston) * [SiegeLord/RustAllegro](https://github.com/SiegeLord/RustAllegro) — [Allegro 5](http://liballeg.org/) bindings [](https://travis-ci.org/SiegeLord/RustAllegro) ### GUI @@ -137,13 +137,13 @@ Only projects that are stable and useful to users are added. Projects that do no * Cocoa * [mozilla-servo/rust-cocoa](https://github.com/mozilla-servo/rust-cocoa) * Gtk+ - * [JeremyLetang/rgtk](https://github.com/JeremyLetang/rgtk) — [Gtk+](http://www.gtk.org) bindings [](https://travis-ci.org/jeremyletang/rgtk) + * [JeremyLetang/rgtk](https://github.com/JeremyLetang/rgtk) — [Gtk+](http://www.gtk.org) bindings [](https://travis-ci.org/JeremyLetang/rgtk) * ncurses * [jeaye/ncurses-rs](https://github.com/jeaye/ncurses-rs) — [](https://travis-ci.org/jeaye/ncurses-rs) * OpenGL - * [bjz/gl-rs](https://github.com/bjz/gl-rs) - * [bjz/glfw-rs](https://github.com/bjz/glfw-rs) - * [servo/rust-glut](https://github.com/mozilla-servo/rust-glut) + * [bjz/gl-rs](https://github.com/bjz/gl-rs) — [](https://travis-ci.org/bjz/gl-rs) + * [bjz/glfw-rs](https://github.com/bjz/glfw-rs) — [](https://travis-ci.org/bjz/glfw-rs) + * [servo/rust-glut](https://github.com/servo/rust-glut) * [tomaka/glutin](https://github.com/tomaka/glutin) — Rust alternative to [GLFW](http://www.glfw.org/) [](https://travis-ci.org/tomaka/glutin) * Qt * [cyndis/qmlrs](https://github.com/cyndis/qmlrs) — [QtQuick](http://doc.qt.io) bindings [](https://travis-ci.org/cyndis/qmlrs) @@ -151,9 +151,9 @@ Only projects that are stable and useful to users are added. Projects that do no * [AngryLawyer/rust-sdl2](https://github.com/AngryLawyer/rust-sdl2) — [SDL2](http://www.libsdl.org/) bindings [](https://travis-ci.org/AngryLawyer/rust-sdl2) * [brson/rust-sdl](https://github.com/brson/rust-sdl) — [SDL1](http://www.libsdl.org/) bindings [](https://travis-ci.org/brson/rust-sdl) * SFML - * [jeremyletang/rust-sfml](https://github.com/JeremyLetang/rust-sfml) — [SFML](http://www.sfml-dev.org/) bindings [](https://travis-ci.org/jeremyLetang/rust-sfml) + * [jeremyletang/rust-sfml](https://github.com/jeremyletang/rust-sfml) — [SFML](http://www.sfml-dev.org/) bindings [](https://travis-ci.org/jeremyletang/rust-sfml) * Termbox - * [gchp/rustbox](https://github.com/gchp/rustbox) — a Rust implementation of [termbox](http://github.com/nsf/termbox) + * [gchp/rustbox](https://github.com/gchp/rustbox) — a Rust implementation of [termbox](http://github.com/nsf/termbox) [](https://travis-ci.org/gchp/rustbox) * wxWidgets ### Image processing @@ -168,13 +168,15 @@ Only projects that are stable and useful to users are added. Projects that do no ### Network programming * Low level - * [libpnet/libpnet](https://github.com/libpnet/libpnet) — Cross-platform, low level networking [](https://travis-ci.org/libpnet/libpnet) + * [libpnet/libpnet](https://github.com/libpnet/libpnet) — Cross-platform, low level networking [](https://travis-ci.org/libpnet/libpnet) +* Beanstalkd + * [schickling/rust-beanstalkd](https://github.com/schickling/rust-beanstalkd) — [Beanstalkd](https://github.com/kr/beanstalkd) bindings [](https://travis-ci.org/schickling/rust-beanstalkd) * NanoMsg * [thehydroimpulse/nanomsg.rs](https://github.com/thehydroimpulse/nanomsg.rs) — a modern messaging library that is the successor to ZeroMQ [](https://travis-ci.org/thehydroimpulse/nanomsg.rs) * SSH * [alexcrichton/ssh2-rs](https://github.com/alexcrichton/ssh2-rs) — [libssh2](http://www.libssh2.org/) bindings [](https://travis-ci.org/alexcrichton/ssh2-rs) * Stomp - * [zslayton/stomp-rs](https://github.com/zslayton/stomp-rs) — [STOMP 1.2](http://stomp.github.io/stomp-specification-1.2.html) client implementation in Rust [](https://travis-ci.org/zslayton/stomp-rs) + * [zslayton/stomp-rs](https://github.com/zslayton/stomp-rs) — [STOMP 1.2](http://stomp.github.io/stomp-specification-1.2.html) client implementation in Rust [](https://travis-ci.org/zslayton/stomp-rs) * ZeroMQ ### Platform specific @@ -190,7 +192,7 @@ Only projects that are stable and useful to users are added. Projects that do no ### Testing * [BurntSushi/quickcheck](https://github.com/BurntSushi/quickcheck) — a Rust implementation of [QuickCheck](http://www.haskell.org/haskellwiki/Introduction_to_QuickCheck1) [](https://travis-ci.org/BurntSushi/quickcheck) -* [farcaller/shiny](https://github.com/farcaller/shiny) — a fancy syntax similar to ruby's rspec or Objective-C's kiwi [](https://travis-ci.org/farcaller/shiny) +* [farcaller/shiny](https://github.com/farcaller/shiny) — a fancy syntax similar to Ruby's Rspec or Objective-C' kiwi [](https://travis-ci.org/farcaller/shiny) ### Web programming @@ -200,8 +202,8 @@ See also [http://arewewebyet.com/](http://arewewebyet.com/) * [chris-morgan/rust-http](https://github.com/chris-morgan/rust-http) — will be replaced by [Teepee](http://teepee.rs/) [](https://travis-ci.org/chris-morgan/rust-http) * [hyperium/hyper](https://github.com/hyperium/hyper) — an HTTP implementation [](https://travis-ci.org/hyperium/hyper) * Client - * [carllerche/curl-rust](https://github.com/carllerche/curl-rust) — [libcurl](http://curl.haxx.se/libcurl/) bindings - * [vhbit/curl-rs](https://github.com/vhbit/curl-rs) — [libcurl](http://curl.haxx.se/libcurl/) bindings + * [carllerche/curl-rust](https://github.com/carllerche/curl-rust) — [libcurl](http://curl.haxx.se/libcurl/) bindings [](https://travis-ci.org/carllerche/curl-rust) + * [vhbit/curl-rs](https://github.com/vhbit/curl-rs) — [libcurl](http://curl.haxx.se/libcurl/) bindings [](https://travis-ci.org/vhbit/curl-rs) * Server * [Iron](http://ironframework.io/) — a middleware-based server framework [](https://travis-ci.org/iron/iron) * [Nickel](http://nickel.rs/) — inspired by [Express](http://expressjs.com/) [](https://travis-ci.org/nickel-org/nickel.rs) @@ -211,5 +213,5 @@ See also [http://arewewebyet.com/](http://arewewebyet.com/) ## Resources * [Rust by Example](http://rustbyexample.com/) -* [Rust CI](http://www.rust-ci.org) — a [Travis CI](https://travis-ci.com) dashboard for Rust projects -* [Rust Guidelines](http://aturon.github.io) \ No newline at end of file +* [Rust CI](http://www.rust-ci.org/) — a [Travis CI](https://travis-ci.com) dashboard for Rust projects +* [Rust Guidelines](http://aturon.github.io/) \ No newline at end of file diff --git a/UNSTABLE.md b/UNSTABLE.md index 8a90c15..ac8fb63 100644 --- a/UNSTABLE.md +++ b/UNSTABLE.md @@ -32,18 +32,18 @@ A list of awesome but unstable/experimental Rust projects which some day hopeful ### Games -* [Arcterus/game-of-life](https://github.com/Arcterus/game-of-life) -* [Arcterus/rust-snake](https://github.com/Arcterus/rust-snake) -* [bachm/rusty-tetris](https://github.com/bachm/rusty-tetris) -* [bvssvni/rust-snake](https://github.com/bvssvni/rust-snake) -* [Coeuvre/rust-pong](https://github.com/Coeuvre/rust-pong) -* [dpc/rustyhex](https://github.com/dpc/rustyhex) -* [FrozenCow/rust-airhockey](https://github.com/FrozenCow/rust-airhockey) -* [jeaye/q3](https://github.com/jeaye/q3) -* [mynery/xxo](https://github.com/mynery/xxo) -* [ozkriff/marauder](https://github.com/ozkriff/marauder) -* [rlane/cubeland](https://github.com/rlane/cubeland) -* [zokier/pong-rs](https://github.com/zokier/pong-rs) +* [Arcterus/game-of-life](https://github.com/Arcterus/game-of-life) — [](https://travis-ci.org/Arcterus/game-of-life) +* [Arcterus/rust-snake](https://github.com/Arcterus/rust-snake) — [](https://travis-ci.org/Arcterus/rust-snake) +* [bachm/rusty-tetris](https://github.com/bachm/rusty-tetris) — [](https://travis-ci.org/bachm/rusty-tetris) +* [bvssvni/rust-snake](https://github.com/bvssvni/rust-snake) — [](https://travis-ci.org/bvssvni/rust-snake) +* [Coeuvre/rust-pong](https://github.com/Coeuvre/rust-pong) — [](https://travis-ci.org/Coeuvre/rust-pong) +* [dpc/rustyhex](https://github.com/dpc/rustyhex) — [](https://travis-ci.org/dpc/rustyhex) +* [FrozenCow/rust-airhockey](https://github.com/FrozenCow/rust-airhockey) — [](https://travis-ci.org/FrozenCow/rust-airhockey) +* [jeaye/q3](https://github.com/jeaye/q3) — [](https://travis-ci.org/jeaye/q3) +* [mynery/xxo](https://github.com/mynery/xxo) — [](https://travis-ci.org/mynery/xxo) +* [ozkriff/marauder](https://github.com/ozkriff/marauder) — [](https://travis-ci.org/ozkriff/marauder) +* [rlane/cubeland](https://github.com/rlane/cubeland) — [](https://travis-ci.org/rlane/cubeland) +* [zokier/pong-rs](https://github.com/zokier/pong-rs) — [](https://travis-ci.org/zokier/pong-rs) ## Frameworks @@ -57,7 +57,7 @@ A list of awesome but unstable/experimental Rust projects which some day hopeful ### Command-line argument parsing -* [wycats/hammer.rs](https://github.com/wycats/hammer.rs) +* [wycats/hammer.rs](https://github.com/wycats/hammer.rs) — [](https://travis-ci.org/wycats/hammer.rs) ### Compression @@ -100,11 +100,11 @@ A list of awesome but unstable/experimental Rust projects which some day hopeful ### Game development -* [bjz/bullet-rs](https://github.com/bjz/bullet-rs) -* [JeremyLetang/rustenstein3D](https://github.com/JeremyLetang/rustenstein3D/) — a raycasting engine in rust -* [sebcrozet/kiss3d](https://github.com/sebcrozet/kiss3d) -* [sebcrozet/ncollide](https://github.com/sebcrozet/ncollide) -* [sebcrozet/nphysics](https://github.com/sebcrozet/nphysics) +* [bjz/bullet-rs](https://github.com/bjz/bullet-rs) — [](https://travis-ci.org/bjz/bullet-rs) +* [JeremyLetang/rustenstein3D](https://github.com/JeremyLetang/rustenstein3D) — a raycasting engine in rust [](https://travis-ci.org/JeremyLetang/rustenstein3D) +* [sebcrozet/kiss3d](https://github.com/sebcrozet/kiss3d) — [](https://travis-ci.org/sebcrozet/kiss3d) +* [sebcrozet/ncollide](https://github.com/sebcrozet/ncollide) — [](https://travis-ci.org/sebcrozet/ncollide) +* [sebcrozet/nphysics](https://github.com/sebcrozet/nphysics) — [](https://travis-ci.org/sebcrozet/nphysics) ### GUI @@ -112,7 +112,7 @@ A list of awesome but unstable/experimental Rust projects which some day hopeful * Gtk+ * ncurses * OpenGL - * [servo/rust-opengles](https://github.com/servo/rust-opengles) + * [servo/rust-opengles](https://github.com/servo/rust-opengles) — [](https://travis-ci.org/servo/rust-opengles) * Qt * SDL * SFML @@ -129,6 +129,7 @@ A list of awesome but unstable/experimental Rust projects which some day hopeful ### Network programming * Low level +* Beanstalkd * NanoMsg * SSH * Stomp @@ -152,7 +153,7 @@ A list of awesome but unstable/experimental Rust projects which some day hopeful See also [http://arewewebyet.com/](http://arewewebyet.com/) * Core - * [Teepee](http://teepee.rs/) — [](https://travis-ci.org/teepee/teepee) + * [Teepee](https://github.com/Teepee) — [](https://travis-ci.org/Teepee) * Client * Server * [erickt/rust-mongrel2](https://github.com/erickt/rust-mongrel2) — [Mongrel2](http://mongrel2.org) bindings [](https://travis-ci.org/erickt/rust-mongrel2) diff --git a/generate_markdown_files.py b/generate_markdown_files.py index e79a645..9fec0e3 100644 --- a/generate_markdown_files.py +++ b/generate_markdown_files.py @@ -5,603 +5,477 @@ It helps keep the content in a sane format and also allows for entries to be easily switched between stable/unstable status. """ + def md_link(name, url): - "Returns a web link in Markdown format" - return '[%s](%s)' % (name, url) + """ + Returns a web link in Markdown format + """ + return '[%s](%s)' % (name, url) + """ '': { - "url": '', "descr": md_link('', '') + ' bindings', - "travis_url": 'https://travis-ci.org/', - "travis_badge": 'https://travis-ci.org/.svg?branch=master', "unstable": False }, """ DATA = \ { - 'arjantop/rust-bencode': { - "url": 'https://github.com/arjantop/rust-bencode', - "descr": md_link('Bencode', 'http://en.wikipedia.org/wiki/Bencode') + ' implementation in Rust', - "travis_url": 'https://travis-ci.org/arjantop/rust-bencode', - "travis_badge": 'https://travis-ci.org/arjantop/rust-bencode.svg?branch=master', - "unstable": False + 'AngryLawyer/rust-sdl2': { + 'descr': "[SDL2](http://www.libsdl.org/) bindings", + 'unstable': False, }, - 'mitsuhiko/redis-rs': { - "url": 'https://github.com/mitsuhiko/redis-rs', - "descr": md_link('Redis', 'http://redis.io') + ' library in Rust', - "travis_url": 'https://travis-ci.org/mitsuhiko/redis-rs', - "travis_badge": 'https://travis-ci.org/mitsuhiko/redis-rs.svg?branch=master', - "unstable": False + 'Arcterus/game-of-life': { + 'unstable': True, }, - 'cyndis/qmlrs': { - "url": 'https://github.com/cyndis/qmlrs', - "descr": md_link('QtQuick', 'http://doc.qt.io') + ' bindings', - "travis_url": 'https://travis-ci.org/cyndis/qmlrs', - "travis_badge": 'https://travis-ci.org/cyndis/qmlrs.svg?branch=master', - "unstable": False + 'Arcterus/rust-snake': { + 'unstable': True, }, - 'Servo': { - "url": 'https://github.com/servo/servo', - "descr": 'a prototype web browser engine written in Rust', - "unstable": False + 'BurntSushi/quickcheck': { + 'descr': "a Rust implementation of [QuickCheck](http://www.haskell.org/haskellwiki/Introduction_to_QuickCheck1)", + 'unstable': False, }, - 'gchp/iota': { - "url": 'https://github.com/gchp/iota', - "descr": 'a simple text editor written in Rust', - "travis_url": 'https://travis-ci.org/gchp/iota', - "travis_badge": 'https://travis-ci.org/gchp/iota.svg?branch=master', - "unstable": False + 'BurntSushi/rust-csv': { + 'unstable': False, }, - 'uutils/coreutils': { - "url": 'https://github.com/uutils/coreutils', - "descr": 'cross-platform Rust rewrite of the GNU coreutils', - "travis_url": 'https://travis-ci.org/uutils/coreutils', - "travis_badge": 'https://travis-ci.org/uutils/coreutils.svg?branch=master', - "unstable": False + 'Cargo': { + 'descr': "the Rust package manager", + 'unstable': False, + 'travis_url': None, + 'url': 'http://crates.io/', }, - 'lifthrasiir/rust-chrono': { - "url": 'https://github.com/lifthrasiir/rust-chrono', - "descr": '', - "travis_url": 'https://travis-ci.org/lifthrasiir/rust-chrono', - "travis_badge": 'https://travis-ci.org/lifthrasiir/rust-chrono.svg?branch=master', - "unstable": False + 'Coeuvre/rust-2048': { + 'unstable': False, }, - 'rust-lang/time': { - "url": 'https://github.com/rust-lang/time', - "descr": '', - "travis_url": 'https://travis-ci.org/rust-lang/time', - "travis_badge": 'https://travis-ci.org/rust-lang/time.svg?branch=master', - "unstable": False + 'Coeuvre/rust-pong': { + 'unstable': True, + }, + 'DaGenix/rust-crypto': { + 'descr': "cryptographic algorithms in Rust", + 'unstable': False, + }, + 'Florob/RustyXML': { + 'descr': "an XML parser written in Rust", + 'unstable': False, + }, + 'FrozenCow/rust-airhockey': { + 'unstable': True, + }, + 'Geal/rust-csv': { + 'unstable': True, + }, + 'Iron': { + 'descr': "a middleware-based server framework", + 'travis_url': 'https://travis-ci.org/iron/iron', + 'travis_badge': 'https://travis-ci.org/iron/iron.svg?branch=master', + 'unstable': False, + 'url': 'http://ironframework.io/', + }, + 'JeremyLetang/ears': { + 'descr': "a simple library to play Sounds and Musics, on top of OpenAL and libsndfile", + 'unstable': False, + }, + 'JeremyLetang/rgtk': { + 'descr': "[Gtk+](http://www.gtk.org) bindings", + 'unstable': False, + }, + 'JeremyLetang/rust-portaudio': { + 'descr': "[PortAudio](http://www.portaudio.com/) bindings", + 'unstable': False, + }, + 'JeremyLetang/rustenstein3D': { + 'descr': "a raycasting engine in rust", + 'unstable': True, + }, + 'Nickel': { + 'descr': "inspired by [Express](http://expressjs.com/)", + 'travis_badge': 'https://travis-ci.org/nickel-org/nickel.rs.svg?branch=master', + 'travis_url': 'https://travis-ci.org/nickel-org/nickel.rs', + 'unstable': False, + 'url': 'http://nickel.rs/', }, 'Ogeon/rustful': { - "url": 'https://github.com/Ogeon/rustful', - "descr": 'a RESTful web framework for Rust ', - "travis_url": 'https://travis-ci.org/Ogeon/rustful', - "travis_badge": 'https://travis-ci.org/Ogeon/rustful.svg?branch=master', - "unstable": False + 'descr': "a RESTful web framework for Rust ", + 'unstable': False, }, - 'carllerche/nix-rust': { - "url": 'https://github.com/carllerche/nix-rust', - "descr": 'Linux API bindings', - "travis_url": 'https://travis-ci.org/carllerche/nix-rust', - "travis_badge": 'https://travis-ci.org/carllerche/nix-rust.svg?branch=master', - "unstable": False + 'PistonDevelopers/image': { + 'descr': "Basic imaging processing functions and methods for converting to and from image formats", + 'unstable': False, }, - 'vhbit/ObjCrust': { - "url": 'https://github.com/vhbit/ObjCrust', - "descr": 'using Rust to create an iOS static library', - "travis_url": 'https://travis-ci.org/vhbit/ObjCrust', - "travis_badge": 'https://travis-ci.org/vhbit/ObjCrust.svg?branch=master', - "unstable": False + 'PistonDevelopers/piston': { + 'unstable': False, }, - 'tomaka/android-rs-glue': { - "url": 'https://github.com/tomaka/android-rs-glue', - "descr": 'glue between Rust and Android', - "travis_url": 'https://travis-ci.org/tomaka/android-rs-glue', - "travis_badge": 'https://travis-ci.org/tomaka/android-rs-glue.svg?branch=master', - "unstable": False + 'Rust CI': { + 'descr': "a [Travis CI](https://travis-ci.com) dashboard for Rust projects", + 'travis_url': None, + 'unstable': False, + 'url': 'http://www.rust-ci.org/', }, - 'TyOverby/bincode': { - "url": 'https://github.com/TyOverby/bincode', - "descr": 'a binary encoder/decoder in Rust', - "travis_url": 'https://travis-ci.org/TyOverby/bincode', - "travis_badge": 'https://travis-ci.org/TyOverby/bincode.svg?branch=master', - "unstable": False + 'Rust Guidelines': { + 'travis_url': None, + 'unstable': False, + 'url': 'http://aturon.github.io/', }, - 'kimhyunkang/libyaml-rust': { - "url": 'https://github.com/kimhyunkang/libyaml-rust', - "descr": md_link('libyaml', 'http://pyyaml.org/wiki/LibYAML') + ' bindings', - "travis_url": 'https://travis-ci.org/kimhyunkang/libyaml-rust', - "travis_badge": 'https://travis-ci.org/kimhyunkang/libyaml-rust.svg?branch=master', - "unstable": False + 'Rust by Example': { + 'travis_url': None, + 'unstable': False, + 'url': 'http://rustbyexample.com/', }, 'Rustless': { - "url": 'http://rustless.org/', - "descr": 'a REST-like API micro-framework inspired by ' + md_link('Grape', 'https://github.com/intridea/grape') + ' and ' + md_link('Hyper', 'https://github.com/hyperium/hyper'), - "travis_url": 'https://travis-ci.org/rustless/rustless', - "travis_badge": 'https://travis-ci.org/rustless/rustless.svg?branch=master', - "unstable": False + 'descr': "a REST-like API micro-framework inspired by [Grape](https://github.com/intridea/grape) and [Hyper](https://github.com/hyperium/hyper)", + 'travis_badge': 'https://travis-ci.org/rustless/rustless.svg?branch=master', + 'travis_url': 'https://travis-ci.org/rustless/rustless', + 'unstable': False, + 'url': 'http://rustless.org/', }, - 'tomjakubowski/rethinkdb-rs': { - "url": 'https://github.com/tomjakubowski/rethinkdb-rs', - "descr": md_link('RethinkDB', 'http://www.rethinkdb.com') + ' bindings', - "travis_url": 'https://travis-ci.org/tomjakubowski/rethinkdb-rs', - "travis_badge": 'https://travis-ci.org/tomjakubowski/rethinkdb-rs.svg?branch=master', - "unstable": True + 'Servo': { + 'descr': "a prototype web browser engine written in Rust", + 'unstable': False, + 'travis_url': None, + 'url': 'https://github.com/servo/servo', }, - 'alexcrichton/flate2-rs': { - "url": 'https://github.com/alexcrichton/flate2-rs', - "descr": md_link('miniz', 'https://code.google.com/p/miniz/') + ' bindings', - "travis_url": 'https://travis-ci.org/alexcrichton/flate2-rs', - "travis_badge": 'https://travis-ci.org/alexcrichton/flate2-rs.svg?branch=master', + 'SiegeLord/RustAllegro': { + 'descr': "[Allegro 5](http://liballeg.org/) bindings", + 'unstable': False, + }, + 'SiegeLord/RustCMake': { + 'descr': "an example project showing usage of CMake with Rust", + 'unstable': False, + }, + 'Teepee': { + 'unstable': True, + }, + 'TyOverby/bincode': { + 'descr': "a binary encoder/decoder in Rust", + 'unstable': False, + }, + 'Ygg01/xml-air': { + 'descr': "A hybrid pull, DOM parser written in pure Rust", + 'unstable': True, }, 'alexcrichton/bzip2-rs': { - "url": 'https://github.com/alexcrichton/bzip2-rs', - "descr": md_link('libbz2', 'http://www.bzip.org') + ' bindings', - "travis_url": 'https://travis-ci.org/alexcrichton/bzip2-rs', - "travis_badge": 'https://travis-ci.org/alexcrichton/bzip2-rs.svg?branch=master', + 'descr': "[libbz2](http://www.bzip.org) bindings", + 'unstable': False, + }, + 'alexcrichton/flate2-rs': { + 'descr': "[miniz](https://code.google.com/p/miniz/) bindings", + 'unstable': False, + }, + 'alexcrichton/ssh2-rs': { + 'descr': "[libssh2](http://www.libssh2.org/) bindings", + 'unstable': False, }, 'alexcrichton/tar-rs': { - "url": 'https://github.com/alexcrichton/tar-rs', - "descr": 'tar archive reading/writing in Rust', - "travis_url": 'https://travis-ci.org/alexcrichton/tar-rs', - "travis_badge": 'https://travis-ci.org/alexcrichton/tar-rs.svg?branch=master', + 'descr': "tar archive reading/writing in Rust", + 'unstable': False, + }, + 'alexcrichton/toml-rs': { + 'unstable': False, + }, + 'arjantop/rust-bencode': { + 'descr': "[Bencode](http://en.wikipedia.org/wiki/Bencode) implementation in Rust", + 'unstable': False, + }, + 'bachm/rusty-tetris': { + 'unstable': True, }, 'bbodi/rust-voxlap': { - "url": 'https://github.com/bbodi/rust-voxlap', - "descr": md_link('Voxlap', 'http://advsys.net/ken/voxlap.htm') + ' bindings', + 'descr': "[Voxlap](http://advsys.net/ken/voxlap.htm) bindings", + 'unstable': False, }, - 'tomaka/glutin': { - "url": 'https://github.com/tomaka/glutin', - "descr": 'Rust alternative to ' + md_link('GLFW', 'http://www.glfw.org/'), - "travis_url": 'https://travis-ci.org/tomaka/glutin', - "travis_badge": 'https://travis-ci.org/tomaka/glutin.svg?branch=master', + 'bjz/bullet-rs': { + 'unstable': True, + }, + 'bjz/gl-rs': { + 'unstable': False, + }, + 'bjz/glfw-rs': { + 'unstable': False, + }, + 'bjz/openal-rs': { + 'descr': "[OpenAL 1.1](http://www.openal.org/) bindings", + 'unstable': False, + }, + 'blackbeam/rust-mysql-simple': { + 'descr': "a native MySql client", + 'unstable': False, + }, + 'brson/rust-sdl': { + 'descr': "[SDL1](http://www.libsdl.org/) bindings", + 'unstable': False, + }, + 'bvssvni/rust-snake': { + 'unstable': True, + }, + 'carllerche/curl-rust': { + 'descr': "[libcurl](http://curl.haxx.se/libcurl/) bindings", + 'unstable': False, + }, + 'carllerche/nix-rust': { + 'descr': "Linux API bindings", + 'unstable': False, + }, + 'chris-morgan/rust-http': { + 'descr': "will be replaced by [Teepee](http://teepee.rs/)", + 'unstable': False, + }, + 'cyndis/qmlrs': { + 'descr': "[QtQuick](http://doc.qt.io) bindings", + 'unstable': False, + }, + 'dnaq/sodiumoxide': { + 'descr': "[libsodium](https://github.com/jedisct1/libsodium) bindings", + 'unstable': False, + }, + 'docopt/docopt.rs': { + 'descr': "a Rust implementation of [DocOpt](http://docopt.org)", + 'unstable': False, + }, + 'dpc/rustyhex': { + 'unstable': True, + }, + 'dwrensha/capnproto-rust': { + 'unstable': False, + }, + 'erickt/rust-mongrel2': { + 'descr': "[Mongrel2](http://mongrel2.org) bindings", + 'unstable': True, + }, + 'erickt/rust-mustache': { + 'unstable': True, + }, + 'erickt/rust-tnetstring': { + 'unstable': False, + }, + 'erickt/rust-zmq': { + 'descr': "[ZeroMQ](http://zeromq.org) bindings", + 'unstable': True, + }, + 'farcaller/shiny': { + 'descr': "a fancy syntax similar to Ruby's Rspec or Objective-C' kiwi", + 'unstable': False, + }, + 'gchp/iota': { + 'descr': "a simple text editor written in Rust", + 'unstable': False, + }, + 'gchp/rustbox': { + 'descr': "a Rust implementation of [termbox](http://github.com/nsf/termbox)", + 'unstable': False, + }, + 'hyperium/hyper': { + 'descr': "an HTTP implementation", + 'unstable': False, + }, + 'jeaye/ncurses-rs': { + 'unstable': False, + }, + 'jeaye/q3': { + 'unstable': True, + }, + 'jeremyletang/rust-sfml': { + 'descr': "[SFML](http://www.sfml-dev.org/) bindings", + 'unstable': False, + }, + 'kenz-gelsoft/wxRust': { + 'descr': "[wxWidgets](http://www.wxwidgets.org/) bindings", + 'unstable': True, + }, + 'kimhyunkang/libyaml-rust': { + 'descr': "[libyaml](http://pyyaml.org/wiki/LibYAML) bindings", + 'unstable': False, + }, + 'klutzy/suruga': { + 'descr': "a Rust implementation of [TLS 1.2](http://tools.ietf.org/html/rfc5246)", + 'unstable': False, + }, + 'libpnet/libpnet': { + 'descr': "Cross-platform, low level networking", + 'unstable': False, + }, + 'lifthrasiir/angolmois-rust': { + 'descr': "a minimalistic music video game which supports the BMS format", + 'unstable': False, + }, + 'lifthrasiir/rust-chrono': { + 'descr': "", + 'unstable': False, + }, + 'lifthrasiir/rust-encoding': { + 'unstable': False, + }, + 'lifthrasiir/rust-zip': { + 'descr': "read and write ZIP archives", + 'unstable': False, + }, + 'linuxfood/rustsqlite': { + 'descr': "[Sqlite3](http://www.sqlite.org/) bindings", + 'unstable': False, + }, + 'luqmana/rust-opencl': { + 'descr': "[OpenCL](https://www.khronos.org/opencl/) bindings", + 'unstable': False, + }, + 'mitsuhiko/redis-rs': { + 'descr': "[Redis](http://redis.io) library in Rust", + 'unstable': False, + }, + 'mneumann/rust-msgpack': { + 'unstable': False, + }, + 'mozilla-servo/rust-cocoa': { + 'travis_url': None, + 'unstable': False, + }, + 'mynery/xxo': { + 'unstable': True, + }, + 'netvl/xml-rs': { + 'descr': "a streaming XML library", + 'unstable': False, + }, + 'ozkriff/marauder': { + 'unstable': True, + }, + 'rlane/cubeland': { + 'unstable': True, + }, + 'rust-lang/time': { + 'descr': "", + 'unstable': False, + }, + 'rustache/rustache': { + 'unstable': False, + }, + 'samdoshi/portmidi-rs': { + 'descr': "[PortMidi](http://portmedia.sourceforge.net/portmidi/) bindings", + 'unstable': False, + }, + 'schickling/rust-beanstalkd': { + 'descr': "[Beanstalkd](https://github.com/kr/beanstalkd) bindings", + 'unstable': False, + }, + 'seb-m/common.rs': { + 'descr': "Common Rust crypto utilities", + 'unstable': False, + }, + 'sebcrozet/kiss3d': { + 'unstable': True, + }, + 'sebcrozet/ncollide': { + 'unstable': True, + }, + 'sebcrozet/nphysics': { + 'unstable': True, }, 'servo/html5ever': { - "url": 'https://github.com/servo/html5ever', - "descr": 'High-performance browser-grade HTML5 parser', - "travis_url": 'https://travis-ci.org/servo/html5ever', - "travis_badge": 'https://travis-ci.org/servo/html5ever.svg?branch=master', + 'descr': "High-performance browser-grade HTML5 parser", + 'unstable': False, }, - "alexcrichton/ssh2-rs": { - "url": "https://github.com/alexcrichton/ssh2-rs", - "descr": md_link('libssh2', 'http://www.libssh2.org/') + " bindings", - "travis_url": 'https://travis-ci.org/alexcrichton/ssh2-rs', - "travis_badge": 'https://travis-ci.org/alexcrichton/ssh2-rs.svg?branch=master', + 'servo/rust-glut': { + 'travis_url': None, + 'unstable': False, }, - "zslayton/stomp-rs": { - "url": "https://github.com/zslayton/stomp-rs", - "descr": md_link('STOMP 1.2', 'http://stomp.github.io/stomp-specification-1.2.html') + " client implementation in Rust", - "travis_url": 'https://travis-ci.org/zslayton/stomp-rs', - "travis_badge": 'https://api.travis-ci.org/zslayton/stomp-rs.svg?branch=master', + 'servo/rust-opengles': { + 'unstable': True, }, - "thestinger/rust-gmp": { - "url": "https://github.com/thestinger/rust-gmp", - "descr": md_link('libgmp', 'https://gmplib.org/') + " bindings", + 'sfackler/rust-openssl': { + 'descr': "[OpenSSL](https://www.openssl.org/) bindings", + 'unstable': False, }, - "libpnet/libpnet": { - "url": "https://github.com/libpnet/libpnet", - "descr": "Cross-platform, low level networking", - "travis_url": 'https://travis-ci.org/libpnet/libpnet', - "travis_badge": 'https://api.travis-ci.org/libpnet/libpnet.svg?branch=master', + 'sfackler/rust-postgres': { + 'descr': "a native [PostgreSQL](http://www.postgresql.org) client", + 'unstable': False, + }, + 'stepancheg/rust-protobuf': { + 'unstable': False, + }, + 'thehydroimpulse/nanomsg.rs': { + 'descr': "a modern messaging library that is the successor to ZeroMQ", + 'unstable': False, + }, + 'thestinger/rust-gmp': { + 'descr': "[libgmp](https://gmplib.org/) bindings", + 'unstable': False, + }, + 'tomaka/android-rs-glue': { + 'descr': "glue between Rust and Android", + 'unstable': False, + }, + 'tomaka/glutin': { + 'descr': "Rust alternative to [GLFW](http://www.glfw.org/)", + 'unstable': False, + }, + 'tomjakubowski/rethinkdb-rs': { + 'descr': "[RethinkDB](http://www.rethinkdb.com) bindings", + 'unstable': True, + }, + 'uutils/coreutils': { + 'descr': "cross-platform Rust rewrite of the GNU coreutils", + 'unstable': False, + }, + 'vhbit/ObjCrust': { + 'descr': "using Rust to create an iOS static library", + 'unstable': False, + }, + 'vhbit/curl-rs': { + 'descr': "[libcurl](http://curl.haxx.se/libcurl/) bindings", + 'unstable': False, + }, + 'wycats/hammer.rs': { + 'unstable': True, + }, + 'zeromq/zmq.rs': { + 'descr': "Rust implementation of the [ZeroMQ](http://zeromq.org)protocol", + 'unstable': True, + }, + 'zokier/pong-rs': { + 'unstable': True, + }, + 'zslayton/stomp-rs': { + 'descr': "[STOMP 1.2](http://stomp.github.io/stomp-specification-1.2.html) client implementation in Rust", + 'unstable': False, }, - "bjz/openal-rs": { - "url": "https://github.com/bjz/openal-rs/", - "descr": md_link('OpenAL 1.1', 'http://www.openal.org/') + " bindings" - }, - "Cargo": { - "url": "http://crates.io", - "descr": "the Rust package manager" - }, - "klutzy/suruga": { - "url": 'https://github.com/klutzy/suruga', - "descr": 'a Rust implementation of ' + md_link('TLS 1.2', 'http://tools.ietf.org/html/rfc5246') - }, - "JeremyLetang/ears": { - "url": "https://github.com/JeremyLetang/ears", - "descr": "a simple library to play Sounds and Musics, on top of OpenAL and libsndfile", - "travis_url": "https://travis-ci.org/JeremyLetang/ears", - "travis_badge": "https://travis-ci.org/jeremyletang/ears.svg?branch=master" - }, - "JeremyLetang/rust-portaudio": { - "url": "https://github.com/JeremyLetang/rust-portaudio", - "descr": md_link('PortAudio', 'http://www.portaudio.com/') + " bindings", - "travis_url": "https://travis-ci.org/JeremyLetang/rust-portaudio", - "travis_badge": "https://travis-ci.org/jeremyletang/rust-portaudio.svg?branch=master" - }, - "samdoshi/portmidi-rs": { - "url": "https://github.com/samdoshi/portmidi-rs", - "descr": md_link('PortMidi', 'http://portmedia.sourceforge.net/portmidi/') + " bindings", - "travis_url": "https://travis-ci.org/samdoshi/portmidi-rs", - "travis_badge": "https://travis-ci.org/samdoshi/portmidi-rs.svg?branch=master" - }, - "PistonDevelopers/image": { - "url": "https://github.com/PistonDevelopers/image", - "descr": 'Basic imaging processing functions and methods for converting to and from image formats', - "travis_url": "https://travis-ci.org/PistonDevelopers/image", - "travis_badge": "https://travis-ci.org/PistonDevelopers/image.svg?branch=master" - }, - "seb-m/common.rs": { - "url": 'https://github.com/klutzy/suruga', - "descr": 'Common Rust crypto utilities' - }, - "SiegeLord/RustCMake": { - "url": "https://github.com/SiegeLord/RustCMake", - "descr": "an example project showing usage of CMake with Rust", - "travis_url": "https://travis-ci.org/SiegeLord/RustCMake", - "travis_badge": "https://travis-ci.org/SiegeLord/RustCMake.svg?branch=master" - }, - "docopt/docopt.rs": { - "url": "https://github.com/docopt/docopt.rs", - "descr": "a Rust implementation of " + md_link('DocOpt', 'http://docopt.org'), - "travis_url": "https://travis-ci.org/docopt/docopt.rs", - "travis_badge": "https://travis-ci.org/docopt/docopt.rs.svg?branch=master" - }, - "wycats/hammer.rs": { - "url": "https://github.com/wycats/hammer.rs", - "unstable": True - }, - "lifthrasiir/rust-zip": { - "url": "https://github.com/lifthrasiir/rust-zip", - "descr": "read and write ZIP archives", - "travis_url": "https://travis-ci.org/lifthrasiir/rust-zip", - "travis_badge": "https://travis-ci.org/lifthrasiir/rust-zip.svg?branch=master" - }, - "luqmana/rust-opencl": { - "url": "https://github.com/luqmana/rust-opencl", - "descr": md_link('OpenCL', 'https://www.khronos.org/opencl/') + " bindings", - "travis_url": "https://travis-ci.org/luqmana/rust-opencl", - "travis_badge": "https://travis-ci.org/luqmana/rust-opencl.svg?branch=master" - }, - "DaGenix/rust-crypto": { - "url": "https://github.com/DaGenix/rust-crypto", - "descr": "cryptographic algorithms in Rust", - "travis_url": "https://travis-ci.org/DaGenix/rust-crypto", - "travis_badge": "https://travis-ci.org/DaGenix/rust-crypto.svg?branch=master" - }, - "dnaq/sodiumoxide": { - "url": "https://github.com/dnaq/sodiumoxide", - "descr": md_link('libsodium', 'https://github.com/jedisct1/libsodium') + " bindings" - }, - "sfackler/rust-openssl": { - "url": "https://github.com/sfackler/rust-openssl", - "descr": md_link('OpenSSL', 'https://www.openssl.org/') + " bindings", - "travis_url": "https://travis-ci.org/sfackler/rust-openssl", - "travis_badge": "https://travis-ci.org/sfackler/rust-openssl.svg?branch=master" - }, - "blackbeam/rust-mysql-simple": { - "url": "https://github.com/blackbeam/rust-mysql-simple", - "descr": "a native MySql client", - "travis_url": "https://travis-ci.org/blackbeam/rust-mysql-simple", - "travis_badge": "https://travis-ci.org/blackbeam/rust-mysql-simple.svg?branch=master" - }, - "sfackler/rust-postgres": { - "url": "https://github.com/sfackler/rust-postgres", - "descr": "a native " + md_link('PostgreSQL', 'http://www.postgresql.org') + " client", - "travis_url": "https://travis-ci.org/sfackler/rust-postgres", - "travis_badge": "https://travis-ci.org/sfackler/rust-postgres.svg?branch=master" - }, - "linuxfood/rustsqlite": { - "url": "https://github.com/linuxfood/rustsqlite", - "descr": md_link('Sqlite3', 'http://www.sqlite.org/') + " bindings", - "travis_url": "https://travis-ci.org/linuxfood/rustsqlite", - "travis_badge": "https://travis-ci.org/linuxfood/rustsqlite.svg?branch=master" - }, - "dwrensha/capnproto-rust": { - "url": "https://github.com/dwrensha/capnproto-rust", - "travis_url": "https://travis-ci.org/dwrensha/capnproto-rust", - "travis_badge": "https://travis-ci.org/dwrensha/capnproto-rust.svg?branch=master" - }, - "lifthrasiir/rust-encoding": { - "url": "https://github.com/lifthrasiir/rust-encoding", - "travis_url": "https://travis-ci.org/lifthrasiir/rust-encoding", - "travis_badge": "https://travis-ci.org/lifthrasiir/rust-encoding.svg?branch=master" - }, - "BurntSushi/rust-csv": { - "url": "https://github.com/BurntSushi/rust-csv", - "travis_url": "https://travis-ci.org/BurntSushi/rust-csv", - "travis_badge": "https://api.travis-ci.org/BurntSushi/rust-csv.svg?branch=master" - }, - "Geal/rust-csv": { - "url": "https://github.com/Geal/rust-csv", - "travis_url": "https://travis-ci.org/Geal/rust-csv", - "travis_badge": "https://travis-ci.org/Geal/rust-csv.svg?branch=master", - "unstable": True - }, - "mneumann/rust-msgpack": { - "url": "https://github.com/mneumann/rust-msgpack", - "travis_url": "https://travis-ci.org/mneumann/rust-msgpack", - "travis_badge": "https://travis-ci.org/mneumann/rust-msgpack.svg?branch=master" - }, - "stepancheg/rust-protobuf": { - "url": "https://github.com/stepancheg/rust-protobuf", - "travis_url": "https://travis-ci.org/stepancheg/rust-protobuf", - "travis_badge": "https://travis-ci.org/stepancheg/rust-protobuf.svg?branch=master" - }, - "alexcrichton/toml-rs": { - "url": "https://github.com/alexcrichton/toml-rs", - "travis_url": "https://travis-ci.org/alexcrichton/toml-rs", - "travis_badge": "https://travis-ci.org/alexcrichton/toml-rs.svg?branch=master" - }, - "erickt/rust-tnetstring": { - "url": "https://github.com/erickt/rust-tnetstring", - "travis_url": "https://travis-ci.org/erickt/rust-tnetstring", - "travis_badge": "https://travis-ci.org/erickt/rust-tnetstring.svg?branch=master", - "unstable": False - }, - "Ygg01/xml-air": { - "url": "https://github.com/Ygg01/xml-air", - "descr": "A hybrid pull, DOM parser written in pure Rust", - "travis_url": "https://travis-ci.org/Ygg01/xml-air", - "travis_badge": "https://travis-ci.org/Ygg01/xml-air.svg?branch=master", - "unstable": True - }, - "Florob/RustyXML": { - "url": "https://github.com/Florob/RustyXML", - "descr": "an XML parser written in Rust", - "travis_url": "https://travis-ci.org/Florob/RustyXM", - "travis_badge": "https://travis-ci.org/Florob/RustyXML.svg?branch=master" - }, - "netvl/xml-rs": { - "url": "https://github.com/netvl/xml-rs", - "descr": "a streaming XML library", - "travis_url": "https://travis-ci.org/netvl/xml-rs", - "travis_badge": "https://travis-ci.org/netvl/xml-rs.svg?branch=master" - }, - "JeremyLetang/rustenstein3D": { - "url": "https://github.com/JeremyLetang/rustenstein3D/", - "descr": "a raycasting engine in rust", - "travis_url": "", - "travis_badge": "", - 'unstable': True - }, - "lifthrasiir/angolmois-rust": { - "url": "https://github.com/lifthrasiir/angolmois-rust", - "descr": "a minimalistic music video game which supports the BMS format", - "travis_url": "https://travis-ci.org/lifthrasiir/angolmois-rust", - "travis_badge": "https://travis-ci.org/lifthrasiir/angolmois-rust.svg?branch=master" - }, - "mozilla-servo/rust-cocoa": { - "url": "https://github.com/mozilla-servo/rust-cocoa" - }, - "JeremyLetang/rgtk": { - "url": "https://github.com/JeremyLetang/rgtk", - "descr": md_link('Gtk+', 'http://www.gtk.org') + " bindings", - "travis_url": "https://travis-ci.org/jeremyletang/rgtk", - "travis_badge": "https://travis-ci.org/jeremyletang/rgtk.svg?branch=master" - }, - "jeaye/ncurses-rs": { - "url": "https://github.com/jeaye/ncurses-rs", - "travis_url": "https://travis-ci.org/jeaye/ncurses-rs", - "travis_badge": "https://travis-ci.org/jeaye/ncurses-rs.svg?branch=master" - }, - "AngryLawyer/rust-sdl2": { - "url": "https://github.com/AngryLawyer/rust-sdl2", - "descr": md_link('SDL2', 'http://www.libsdl.org/') + " bindings", - "travis_url": "https://travis-ci.org/AngryLawyer/rust-sdl2", - "travis_badge": "https://travis-ci.org/AngryLawyer/rust-sdl2.svg?branch=master" - }, - "brson/rust-sdl": { - "url": "https://github.com/brson/rust-sdl", - "descr": md_link('SDL1', 'http://www.libsdl.org/') + " bindings", - "travis_url": "https://travis-ci.org/brson/rust-sdl", - "travis_badge": "https://travis-ci.org/brson/rust-sdl.svg?branch=master" - }, - "gchp/rustbox": { - "url": "https://github.com/gchp/rustbox", - "descr": "a Rust implementation of " + md_link('termbox', 'http://github.com/nsf/termbox') - }, - "erickt/rust-zmq": { - "url": "https://github.com/erickt/rust-zmq", - "descr": md_link('ZeroMQ', 'http://zeromq.org') + " bindings", - "travis_url": "https://travis-ci.org/erickt/rust-zmq", - "travis_badge": "https://travis-ci.org/erickt/rust-zmq.svg?branch=master", - "unstable": True - }, - "zeromq/zmq.rs": { - "url": "https://github.com/zeromq/zmq.rs", - "descr": "Rust implementation of the " + md_link('ZeroMQ', 'http://zeromq.org') + "protocol", - "travis_url": "https://travis-ci.org/zeromq/zmq.rs", - "travis_badge": "https://travis-ci.org/zeromq/zmq.rs.svg?branch=master", - "unstable": True - }, - "erickt/rust-mustache": { - "url": "https://github.com/erickt/rust-mustache", - "travis_url": "https://travis-ci.org/erickt/rust-mustache", - "travis_badge": "https://travis-ci.org/erickt/rust-mustache.svg?branch=master", - "unstable": True - }, - "BurntSushi/quickcheck": { - "url": "https://github.com/BurntSushi/quickcheck", - "descr": 'a Rust implementation of ' + md_link('QuickCheck', 'http://www.haskell.org/haskellwiki/Introduction_to_QuickCheck1'), - "travis_url": "https://travis-ci.org/BurntSushi/quickcheck", - "travis_badge": "https://travis-ci.org/BurntSushi/quickcheck.svg?branch=master" - }, - "farcaller/shiny": { - "url": "https://github.com/farcaller/shiny", - "descr": "a fancy syntax similar to ruby's rspec or Objective-C's kiwi", - "travis_url": "https://travis-ci.org/farcaller/shiny", - "travis_badge": "https://travis-ci.org/farcaller/shiny.svg?branch=master", - "unstable": False - }, - "chris-morgan/rust-http": { - "url": "https://github.com/chris-morgan/rust-http", - "descr": "will be replaced by " + md_link('Teepee', 'http://teepee.rs/'), - "travis_url": "https://travis-ci.org/chris-morgan/rust-http", - "travis_badge": "https://travis-ci.org/chris-morgan/rust-http.svg?branch=master" - }, - "Teepee": { - "url": "http://teepee.rs/", - "travis_url": "https://travis-ci.org/teepee/teepee", - "travis_badge": "https://travis-ci.org/teepee/teepee.svg?branch=master", - 'unstable': True - }, - "hyperium/hyper": { - "url": "https://github.com/hyperium/hyper", - "descr": "an HTTP implementation", - "travis_url": "https://travis-ci.org/hyperium/hyper", - "travis_badge": "https://travis-ci.org/hyperium/hyper.svg?branch=master" - }, - "carllerche/curl-rust": { - "url": "https://github.com/carllerche/curl-rust", - "descr": md_link('libcurl', 'http://curl.haxx.se/libcurl/') + " bindings" - }, - "vhbit/curl-rs": { - "url": "https://github.com/vhbit/curl-rs", - "descr": md_link('libcurl', 'http://curl.haxx.se/libcurl/') + " bindings", - }, - "erickt/rust-mongrel2": { - "url": "https://github.com/erickt/rust-mongrel2", - "descr": md_link('Mongrel2', 'http://mongrel2.org') + " bindings", - "travis_url": "https://travis-ci.org/erickt/rust-mongrel2", - "travis_badge": "https://travis-ci.org/erickt/rust-mongrel2.svg?branch=master", - "unstable": True - }, - "Iron": { - "url": "http://ironframework.io/", - "descr": 'a middleware-based server framework', - "travis_url": "https://travis-ci.org/iron/iron", - "travis_badge": "https://travis-ci.org/iron/iron.svg?branch=master", - }, - "Nickel": { - "url": "http://nickel.rs/", - "descr": "inspired by " + md_link('Express', 'http://expressjs.com/'), - "travis_url": "https://travis-ci.org/nickel-org/nickel.rs", - "travis_badge": "https://travis-ci.org/nickel-org/nickel.rs.svg?branch=master", - }, - "Rust by Example": { - "url": "http://rustbyexample.com/", - }, - "Rust CI": { - "url": "http://www.rust-ci.org", - "descr": "a " + md_link('Travis CI', 'https://travis-ci.com') + " dashboard for Rust projects", - }, - "Rust Guidelines": { - "url": "http://aturon.github.io", - }, - "kenz-gelsoft/wxRust": { - "url": "https://github.com/kenz-gelsoft/wxRust", - "descr": md_link('wxWidgets', 'http://www.wxwidgets.org/') + " bindings", - "travis_url": "https://travis-ci.org/kenz-gelsoft/wxRust", - "travis_badge": "https://travis-ci.org/kenz-gelsoft/wxRust.svg?branch=master", - "unstable": True - }, - "Arcterus/game-of-life": { - "url": "https://github.com/Arcterus/game-of-life", - "unstable": True - }, - "Arcterus/rust-snake": { - "url": "https://github.com/Arcterus/rust-snake", - "unstable": True - }, - "bachm/rusty-tetris": { - "url": "https://github.com/bachm/rusty-tetris", - "unstable": True - }, - "bvssvni/rust-snake": { - "url": "https://github.com/bvssvni/rust-snake", - "unstable": True - }, - "Coeuvre/rust-2048": { - "url": "https://github.com/Coeuvre/rust-2048", - "unstable": False - }, - "Coeuvre/rust-pong": { - "url": "https://github.com/Coeuvre/rust-pong", - "unstable": True - }, - "dpc/rustyhex": { - "url": "https://github.com/dpc/rustyhex", - "unstable": True - }, - "FrozenCow/rust-airhockey": { - "url": "https://github.com/FrozenCow/rust-airhockey", - "unstable": True - }, - "jeaye/q3": { - "url": "https://github.com/jeaye/q3", - "unstable": True - }, - "mynery/xxo": { - "url": "https://github.com/mynery/xxo", - "unstable": True - }, - "ozkriff/marauder": { - "url": "https://github.com/ozkriff/marauder", - "unstable": True - }, - "rlane/cubeland": { - "url": "https://github.com/rlane/cubeland", - "unstable": True - }, - "zokier/pong-rs": { - "url": "https://github.com/zokier/pong-rs", - "unstable": True - }, - "bjz/gl-rs": { - "url": "https://github.com/bjz/gl-rs", - "unstable": False - }, - "servo/rust-opengles": { - "url": "https://github.com/servo/rust-opengles", - "unstable": True - }, - "PistonDevelopers/piston": { - "url": "https://github.com/pistondevelopers/piston", - "travis_url": "https://travis-ci.org/PistonDevelopers/piston", - "travis_badge": "https://travis-ci.org/PistonDevelopers/piston.svg?branch=master", - }, - "sebcrozet/kiss3d": { - "url": "https://github.com/sebcrozet/kiss3d", - "unstable": True - }, - "servo/rust-glut": { - "url": "https://github.com/mozilla-servo/rust-glut", - "unstable": False - }, - "bjz/glfw-rs": { - "url": "https://github.com/bjz/glfw-rs", - "unstable": False - }, - "jeremyletang/rust-sfml": { - "url": "https://github.com/JeremyLetang/rust-sfml", - "descr": md_link('SFML', 'http://www.sfml-dev.org/') + " bindings", - "travis_url": "https://travis-ci.org/jeremyLetang/rust-sfml", - "travis_badge": "https://travis-ci.org/jeremyletang/rust-sfml.svg?branch=master", - }, - "SiegeLord/RustAllegro": { - "url": "https://github.com/SiegeLord/RustAllegro", - "descr": md_link('Allegro 5', 'http://liballeg.org/') + " bindings", - "travis_url": "https://travis-ci.org/SiegeLord/RustAllegro", - "travis_badge": "https://travis-ci.org/SiegeLord/RustAllegro.svg?branch=master", - }, - "bjz/bullet-rs": { - "url": "https://github.com/bjz/bullet-rs", - "unstable": True - }, - "sebcrozet/ncollide": { - "url": "https://github.com/sebcrozet/ncollide", - "unstable": True - }, - "sebcrozet/nphysics": { - "url": "https://github.com/sebcrozet/nphysics", - "unstable": True - }, - "rustache/rustache": { - "url": "https://github.com/rustache/rustache", - "travis_url": "https://travis-ci.org/rustache/rustache", - "travis_badge": "https://travis-ci.org/rustache/rustache.svg?branch=master" - }, - "thehydroimpulse/nanomsg.rs": { - "url": "https://github.com/thehydroimpulse/nanomsg.rs", - "descr": "a modern messaging library that is the successor to ZeroMQ", - "travis_url": "https://travis-ci.org/thehydroimpulse/nanomsg.rs", - "travis_badge": "https://travis-ci.org/thehydroimpulse/nanomsg.rs.svg?branch=master", - }, } +def pretty_print(): + """ + """ + + projects_names = DATA.keys() + projects_names.sort() + + print ' {' + + for projects_name in projects_names: + + project_data = DATA[projects_name] + project_data.setdefault('unstable', False) + + print " '%s': {" % projects_name + + keys = project_data.keys() + keys.sort() + + for key in keys: + + value = project_data[key] + + if type(value) == str: + value_format = '"%s"' % value + else: + value_format = "%s" % value + + print " '%s': %s," % (key, value_format) + + print " }," + + print ' }' + +# end def pretty_print + + HEADER_STABLE = \ """# Awesome Rust @@ -642,50 +516,64 @@ TOC = \ - [Resources](#resources) """ -def add( value, rows_stable=None, rows_unstable=None ): +def add(value, rows_stable=None, rows_unstable=None): if rows_stable: - rows_stable.append( value ) + rows_stable.append(value) if rows_unstable: - rows_unstable.append( value ) + rows_unstable.append(value) -#end def add -def entry( prefix, name, rows_stable=None, rows_unstable=None ): +# end def add - entry = DATA.get(name) - if entry is None: - print '"%s" not found' % name +def entry(prefix, project_name, rows_stable=None, rows_unstable=None): + + # Get the project data. + project_data = DATA.get(project_name) + + if project_data is None: + print '"%s" not found' % project_name return - url = entry.get('url') - description = entry.get('descr', '') + url = project_data.get('url', 'https://github.com/%s' % project_name) + description = project_data.get('descr', '') if description: description = ' ' + description - travis_badge = entry.get('travis_badge') - travis_url = entry.get('travis_url') + + if 'travis_badge' in project_data: + travis_badge = project_data.get('travis_badge') + else: + travis_badge = 'https://travis-ci.org/%s.svg?branch=master' % project_name + + + if 'travis_url' in project_data: + travis_url = project_data.get('travis_url') + else: + travis_url = 'https://travis-ci.org/%s' % project_name + if travis_badge and travis_url: - travis = ' ' + md_link( '' % travis_badge, travis_url ) + travis = ' ' + md_link('' % travis_badge, travis_url) else: travis = '' + if description or travis: separator = ' —' else: separator = '' - unstable = entry.get('unstable') + unstable = project_data.get('unstable') if unstable: rows = rows_unstable else: rows = rows_stable - rows.append('%s[%s](%s)%s%s%s' % (prefix, name, url, separator, description, travis)) + rows.append('%s[%s](%s)%s%s%s' % (prefix, project_name, url, separator, description, travis)) #end def entry @@ -694,199 +582,201 @@ def entry( prefix, name, rows_stable=None, rows_unstable=None ): rows_stable = [HEADER_STABLE, TOC] rows_unstable = [HEADER_UNSTABLE, TOC] -add( '## Applications\n', rows_stable, rows_unstable ) -entry( '* ', 'gchp/iota', rows_stable, rows_unstable ) -entry( '* ', 'uutils/coreutils', rows_stable, rows_unstable ) -entry( '* ', 'Servo', rows_stable, rows_unstable ) +add('## Applications\n', rows_stable, rows_unstable) +entry('* ', 'gchp/iota', rows_stable, rows_unstable) +entry('* ', 'uutils/coreutils', rows_stable, rows_unstable) +entry('* ', 'Servo', rows_stable, rows_unstable) -add( '\n### Games\n', rows_stable, rows_unstable ) -entry( '* ', 'Arcterus/game-of-life', rows_stable, rows_unstable ) -entry( '* ', 'Arcterus/rust-snake', rows_stable, rows_unstable ) -entry( '* ', 'bachm/rusty-tetris', rows_stable, rows_unstable ) -entry( '* ', 'bvssvni/rust-snake', rows_stable, rows_unstable ) -entry( '* ', 'Coeuvre/rust-2048', rows_stable, rows_unstable ) -entry( '* ', 'Coeuvre/rust-pong', rows_stable, rows_unstable ) -entry( '* ', 'dpc/rustyhex', rows_stable, rows_unstable ) -entry( '* ', 'FrozenCow/rust-airhockey', rows_stable, rows_unstable ) -entry( '* ', 'jeaye/q3', rows_stable, rows_unstable ) -entry( '* ', 'lifthrasiir/angolmois-rust', rows_stable, rows_unstable ) -entry( '* ', 'mynery/xxo', rows_stable, rows_unstable ) -entry( '* ', 'ozkriff/marauder', rows_stable, rows_unstable ) -entry( '* ', 'rlane/cubeland', rows_stable, rows_unstable ) -entry( '* ', 'zokier/pong-rs', rows_stable, rows_unstable ) +add('\n### Games\n', rows_stable, rows_unstable) +entry('* ', 'Arcterus/game-of-life', rows_stable, rows_unstable) +entry('* ', 'Arcterus/rust-snake', rows_stable, rows_unstable) +entry('* ', 'bachm/rusty-tetris', rows_stable, rows_unstable) +entry('* ', 'bvssvni/rust-snake', rows_stable, rows_unstable) +entry('* ', 'Coeuvre/rust-2048', rows_stable, rows_unstable) +entry('* ', 'Coeuvre/rust-pong', rows_stable, rows_unstable) +entry('* ', 'dpc/rustyhex', rows_stable, rows_unstable) +entry('* ', 'FrozenCow/rust-airhockey', rows_stable, rows_unstable) +entry('* ', 'jeaye/q3', rows_stable, rows_unstable) +entry('* ', 'lifthrasiir/angolmois-rust', rows_stable, rows_unstable) +entry('* ', 'mynery/xxo', rows_stable, rows_unstable) +entry('* ', 'ozkriff/marauder', rows_stable, rows_unstable) +entry('* ', 'rlane/cubeland', rows_stable, rows_unstable) +entry('* ', 'zokier/pong-rs', rows_stable, rows_unstable) -add( '\n## Frameworks\n', rows_stable, rows_unstable ) +add('\n## Frameworks\n', rows_stable, rows_unstable) -add( '\n### Audio\n', rows_stable, rows_unstable ) -entry( '* ', 'bjz/openal-rs', rows_stable, rows_unstable ) -entry( '* ', 'JeremyLetang/ears', rows_stable, rows_unstable ) -entry( '* ', 'JeremyLetang/rust-portaudio', rows_stable, rows_unstable ) -entry( '* ', 'samdoshi/portmidi-rs', rows_stable, rows_unstable ) +add('\n### Audio\n', rows_stable, rows_unstable) +entry('* ', 'bjz/openal-rs', rows_stable, rows_unstable) +entry('* ', 'JeremyLetang/ears', rows_stable, rows_unstable) +entry('* ', 'JeremyLetang/rust-portaudio', rows_stable, rows_unstable) +entry('* ', 'samdoshi/portmidi-rs', rows_stable, rows_unstable) -add( '\n### Build system\n', rows_stable, rows_unstable ) -entry( '* ', 'Cargo', rows_stable, rows_unstable ) -add( '* CMake', rows_stable, rows_unstable ) -entry( ' * ', 'SiegeLord/RustCMake', rows_stable, rows_unstable ) +add('\n### Build system\n', rows_stable, rows_unstable) +entry('* ', 'Cargo', rows_stable, rows_unstable) +add('* CMake', rows_stable, rows_unstable) +entry(' * ', 'SiegeLord/RustCMake', rows_stable, rows_unstable) -add( '\n### Command-line argument parsing\n', rows_stable, rows_unstable ) -entry( '* ', 'docopt/docopt.rs', rows_stable, rows_unstable ) -entry( '* ', 'wycats/hammer.rs', rows_stable, rows_unstable ) +add('\n### Command-line argument parsing\n', rows_stable, rows_unstable) +entry('* ', 'docopt/docopt.rs', rows_stable, rows_unstable) +entry('* ', 'wycats/hammer.rs', rows_stable, rows_unstable) -add( '\n### Compression\n', rows_stable, rows_unstable ) -entry( '* ', 'alexcrichton/bzip2-rs', rows_stable, rows_unstable ) -entry( '* ', 'alexcrichton/flate2-rs', rows_stable, rows_unstable ) -entry( '* ', 'alexcrichton/tar-rs', rows_stable, rows_unstable ) -entry( '* ', 'lifthrasiir/rust-zip', rows_stable, rows_unstable ) +add('\n### Compression\n', rows_stable, rows_unstable) +entry('* ', 'alexcrichton/bzip2-rs', rows_stable, rows_unstable) +entry('* ', 'alexcrichton/flate2-rs', rows_stable, rows_unstable) +entry('* ', 'alexcrichton/tar-rs', rows_stable, rows_unstable) +entry('* ', 'lifthrasiir/rust-zip', rows_stable, rows_unstable) -add( '\n### Computation\n', rows_stable, rows_unstable ) -entry( '* ', 'luqmana/rust-opencl', rows_stable, rows_unstable ) -entry( '* ', 'thestinger/rust-gmp', rows_stable, rows_unstable ) +add('\n### Computation\n', rows_stable, rows_unstable) +entry('* ', 'luqmana/rust-opencl', rows_stable, rows_unstable) +entry('* ', 'thestinger/rust-gmp', rows_stable, rows_unstable) -add( '\n### Cryptography\n', rows_stable, rows_unstable ) -entry( '* ', 'DaGenix/rust-crypto', rows_stable, rows_unstable ) -entry( '* ', 'dnaq/sodiumoxide', rows_stable, rows_unstable ) -entry( '* ', 'klutzy/suruga', rows_stable, rows_unstable ) -entry( '* ', 'seb-m/common.rs', rows_stable, rows_unstable ) -entry( '* ', 'sfackler/rust-openssl', rows_stable, rows_unstable ) +add('\n### Cryptography\n', rows_stable, rows_unstable) +entry('* ', 'DaGenix/rust-crypto', rows_stable, rows_unstable) +entry('* ', 'dnaq/sodiumoxide', rows_stable, rows_unstable) +entry('* ', 'klutzy/suruga', rows_stable, rows_unstable) +entry('* ', 'seb-m/common.rs', rows_stable, rows_unstable) +entry('* ', 'sfackler/rust-openssl', rows_stable, rows_unstable) -add( '\n### Database\n', rows_stable, rows_unstable ) -add( '* NoSQL', rows_stable, rows_unstable ) -add( ' * Redis', rows_stable, rows_unstable ) -entry( ' * ', 'mitsuhiko/redis-rs', rows_stable, rows_unstable ) -add( ' * RethinkDB', rows_stable, rows_unstable ) -entry( ' * ', 'tomjakubowski/rethinkdb-rs', rows_stable, rows_unstable ) -add( '* SQL', rows_stable, rows_unstable ) -add( ' * MySql', rows_stable, rows_unstable ) -entry( ' * ', 'blackbeam/rust-mysql-simple', rows_stable, rows_unstable ) -add( ' * PostgreSql', rows_stable, rows_unstable ) -entry( ' * ', 'sfackler/rust-postgres', rows_stable, rows_unstable ) -add( ' * Sqlite', rows_stable, rows_unstable ) -entry( ' * ', 'linuxfood/rustsqlite', rows_stable, rows_unstable ) +add('\n### Database\n', rows_stable, rows_unstable) +add('* NoSQL', rows_stable, rows_unstable) +add(' * Redis', rows_stable, rows_unstable) +entry(' * ', 'mitsuhiko/redis-rs', rows_stable, rows_unstable) +add(' * RethinkDB', rows_stable, rows_unstable) +entry(' * ', 'tomjakubowski/rethinkdb-rs', rows_stable, rows_unstable) +add('* SQL', rows_stable, rows_unstable) +add(' * MySql', rows_stable, rows_unstable) +entry(' * ', 'blackbeam/rust-mysql-simple', rows_stable, rows_unstable) +add(' * PostgreSql', rows_stable, rows_unstable) +entry(' * ', 'sfackler/rust-postgres', rows_stable, rows_unstable) +add(' * Sqlite', rows_stable, rows_unstable) +entry(' * ', 'linuxfood/rustsqlite', rows_stable, rows_unstable) -add( '\n### Date and time\n', rows_stable, rows_unstable ) -entry( '* ', 'lifthrasiir/rust-chrono', rows_stable, rows_unstable ) -entry( '* ', 'rust-lang/time', rows_stable, rows_unstable ) +add('\n### Date and time\n', rows_stable, rows_unstable) +entry('* ', 'lifthrasiir/rust-chrono', rows_stable, rows_unstable) +entry('* ', 'rust-lang/time', rows_stable, rows_unstable) -add( '\n### Encoding\n', rows_stable, rows_unstable ) -entry( '* ', 'TyOverby/bincode', rows_stable, rows_unstable ) -add( '* Bencode', rows_stable, rows_unstable ) -entry( ' * ', 'arjantop/rust-bencode', rows_stable, rows_unstable ) -add( '* Cap\'n Proto', rows_stable, rows_unstable ) -entry( ' * ', 'dwrensha/capnproto-rust', rows_stable, rows_unstable ) -add( '* Character Encoding', rows_stable, rows_unstable ) -entry( ' * ', 'lifthrasiir/rust-encoding', rows_stable, rows_unstable ) -add( '* CSV', rows_stable, rows_unstable ) -entry( ' * ', 'BurntSushi/rust-csv', rows_stable, rows_unstable ) -entry( ' * ', 'Geal/rust-csv', rows_stable, rows_unstable ) -add( '* HTML', rows_stable, rows_unstable ) -entry( ' * ', 'servo/html5ever', rows_stable, rows_unstable ) -add( '* MsgPck', rows_stable, rows_unstable ) -entry( ' * ', 'mneumann/rust-msgpack', rows_stable, rows_unstable ) -add( '* ProtocolBuffers', rows_stable, rows_unstable ) -entry( ' * ', 'stepancheg/rust-protobuf', rows_stable, rows_unstable ) -add( '* TOML', rows_stable, rows_unstable ) -entry( ' * ', 'alexcrichton/toml-rs', rows_stable, rows_unstable ) -add( '* Tnetstring', rows_stable, rows_unstable ) -entry( ' * ', 'erickt/rust-tnetstring', rows_stable, rows_unstable ) -add( '* XML', rows_stable, rows_unstable ) -entry( ' * ', 'Florob/RustyXML', rows_stable, rows_unstable ) -entry( ' * ', 'netvl/xml-rs', rows_stable, rows_unstable ) -entry( ' * ', 'Ygg01/xml-air', rows_stable, rows_unstable ) -add( '* YAML', rows_stable, rows_unstable ) -entry( ' * ', 'kimhyunkang/libyaml-rust', rows_stable, rows_unstable ) +add('\n### Encoding\n', rows_stable, rows_unstable) +entry('* ', 'TyOverby/bincode', rows_stable, rows_unstable) +add('* Bencode', rows_stable, rows_unstable) +entry(' * ', 'arjantop/rust-bencode', rows_stable, rows_unstable) +add('* Cap\'n Proto', rows_stable, rows_unstable) +entry(' * ', 'dwrensha/capnproto-rust', rows_stable, rows_unstable) +add('* Character Encoding', rows_stable, rows_unstable) +entry(' * ', 'lifthrasiir/rust-encoding', rows_stable, rows_unstable) +add('* CSV', rows_stable, rows_unstable) +entry(' * ', 'BurntSushi/rust-csv', rows_stable, rows_unstable) +entry(' * ', 'Geal/rust-csv', rows_stable, rows_unstable) +add('* HTML', rows_stable, rows_unstable) +entry(' * ', 'servo/html5ever', rows_stable, rows_unstable) +add('* MsgPck', rows_stable, rows_unstable) +entry(' * ', 'mneumann/rust-msgpack', rows_stable, rows_unstable) +add('* ProtocolBuffers', rows_stable, rows_unstable) +entry(' * ', 'stepancheg/rust-protobuf', rows_stable, rows_unstable) +add('* TOML', rows_stable, rows_unstable) +entry(' * ', 'alexcrichton/toml-rs', rows_stable, rows_unstable) +add('* Tnetstring', rows_stable, rows_unstable) +entry(' * ', 'erickt/rust-tnetstring', rows_stable, rows_unstable) +add('* XML', rows_stable, rows_unstable) +entry(' * ', 'Florob/RustyXML', rows_stable, rows_unstable) +entry(' * ', 'netvl/xml-rs', rows_stable, rows_unstable) +entry(' * ', 'Ygg01/xml-air', rows_stable, rows_unstable) +add('* YAML', rows_stable, rows_unstable) +entry(' * ', 'kimhyunkang/libyaml-rust', rows_stable, rows_unstable) -add( '\n### Game development\n', rows_stable, rows_unstable ) -entry( '* ', 'bbodi/rust-voxlap', rows_stable, rows_unstable ) -entry( '* ', 'bjz/bullet-rs', rows_stable, rows_unstable ) -entry( '* ', 'JeremyLetang/rustenstein3D', rows_stable, rows_unstable ) -entry( '* ', 'PistonDevelopers/piston', rows_stable, rows_unstable ) -entry( '* ', 'sebcrozet/kiss3d', rows_stable, rows_unstable ) -entry( '* ', 'sebcrozet/ncollide', rows_stable, rows_unstable ) -entry( '* ', 'sebcrozet/nphysics', rows_stable, rows_unstable ) -entry( '* ', 'SiegeLord/RustAllegro', rows_stable, rows_unstable ) +add('\n### Game development\n', rows_stable, rows_unstable) +entry('* ', 'bbodi/rust-voxlap', rows_stable, rows_unstable) +entry('* ', 'bjz/bullet-rs', rows_stable, rows_unstable) +entry('* ', 'JeremyLetang/rustenstein3D', rows_stable, rows_unstable) +entry('* ', 'PistonDevelopers/piston', rows_stable, rows_unstable) +entry('* ', 'sebcrozet/kiss3d', rows_stable, rows_unstable) +entry('* ', 'sebcrozet/ncollide', rows_stable, rows_unstable) +entry('* ', 'sebcrozet/nphysics', rows_stable, rows_unstable) +entry('* ', 'SiegeLord/RustAllegro', rows_stable, rows_unstable) -add( '\n### GUI\n', rows_stable, rows_unstable ) -add( '* Cocoa', rows_stable, rows_unstable ) -entry( ' * ', 'mozilla-servo/rust-cocoa', rows_stable, rows_unstable ) -add( '* Gtk+', rows_stable, rows_unstable ) -entry( ' * ', 'JeremyLetang/rgtk', rows_stable, rows_unstable ) -add( '* ncurses', rows_stable, rows_unstable ) -entry( ' * ', 'jeaye/ncurses-rs', rows_stable, rows_unstable ) -add( '* OpenGL', rows_stable, rows_unstable ) -entry( ' * ', 'bjz/gl-rs', rows_stable, rows_unstable ) -entry( ' * ', 'bjz/glfw-rs', rows_stable, rows_unstable ) -entry( ' * ', 'servo/rust-glut', rows_stable, rows_unstable ) -entry( ' * ', 'servo/rust-opengles', rows_stable, rows_unstable ) -entry( ' * ', 'tomaka/glutin', rows_stable, rows_unstable ) -add( '* Qt', rows_stable, rows_unstable ) -entry( ' * ', 'cyndis/qmlrs', rows_stable, rows_unstable ) -add( '* SDL', rows_stable, rows_unstable ) -entry( ' * ', 'AngryLawyer/rust-sdl2', rows_stable, rows_unstable ) -entry( ' * ', 'brson/rust-sdl', rows_stable, rows_unstable ) -add( '* SFML', rows_stable, rows_unstable ) -entry( ' * ', 'jeremyletang/rust-sfml', rows_stable, rows_unstable ) -add( '* Termbox', rows_stable, rows_unstable ) -entry( ' * ', 'gchp/rustbox', rows_stable, rows_unstable ) -add( '* wxWidgets', rows_stable, rows_unstable ) -entry( ' * ', 'kenz-gelsoft/wxRust', rows_stable, rows_unstable ) +add('\n### GUI\n', rows_stable, rows_unstable) +add('* Cocoa', rows_stable, rows_unstable) +entry(' * ', 'mozilla-servo/rust-cocoa', rows_stable, rows_unstable) +add('* Gtk+', rows_stable, rows_unstable) +entry(' * ', 'JeremyLetang/rgtk', rows_stable, rows_unstable) +add('* ncurses', rows_stable, rows_unstable) +entry(' * ', 'jeaye/ncurses-rs', rows_stable, rows_unstable) +add('* OpenGL', rows_stable, rows_unstable) +entry(' * ', 'bjz/gl-rs', rows_stable, rows_unstable) +entry(' * ', 'bjz/glfw-rs', rows_stable, rows_unstable) +entry(' * ', 'servo/rust-glut', rows_stable, rows_unstable) +entry(' * ', 'servo/rust-opengles', rows_stable, rows_unstable) +entry(' * ', 'tomaka/glutin', rows_stable, rows_unstable) +add('* Qt', rows_stable, rows_unstable) +entry(' * ', 'cyndis/qmlrs', rows_stable, rows_unstable) +add('* SDL', rows_stable, rows_unstable) +entry(' * ', 'AngryLawyer/rust-sdl2', rows_stable, rows_unstable) +entry(' * ', 'brson/rust-sdl', rows_stable, rows_unstable) +add('* SFML', rows_stable, rows_unstable) +entry(' * ', 'jeremyletang/rust-sfml', rows_stable, rows_unstable) +add('* Termbox', rows_stable, rows_unstable) +entry(' * ', 'gchp/rustbox', rows_stable, rows_unstable) +add('* wxWidgets', rows_stable, rows_unstable) +entry(' * ', 'kenz-gelsoft/wxRust', rows_stable, rows_unstable) -add( '\n### Image processing\n', rows_stable, rows_unstable ) -entry( '* ', 'PistonDevelopers/image', rows_stable, rows_unstable ) +add('\n### Image processing\n', rows_stable, rows_unstable) +entry('* ', 'PistonDevelopers/image', rows_stable, rows_unstable) -add( '\n### Mobile\n', rows_stable, rows_unstable ) -entry( '* ', 'tomaka/android-rs-glue', rows_stable, rows_unstable ) -entry( '* ', 'vhbit/ObjCrust', rows_stable, rows_unstable ) +add('\n### Mobile\n', rows_stable, rows_unstable) +entry('* ', 'tomaka/android-rs-glue', rows_stable, rows_unstable) +entry('* ', 'vhbit/ObjCrust', rows_stable, rows_unstable) -add( '\n### Network programming\n', rows_stable, rows_unstable ) -add( '* Low level', rows_stable, rows_unstable ) -entry( ' * ', 'libpnet/libpnet', rows_stable, rows_unstable ) -add( '* NanoMsg', rows_stable, rows_unstable ) -entry( ' * ', 'thehydroimpulse/nanomsg.rs', rows_stable, rows_unstable ) -add( '* SSH', rows_stable, rows_unstable ) -entry( ' * ', 'alexcrichton/ssh2-rs', rows_stable, rows_unstable ) -add( '* Stomp', rows_stable, rows_unstable ) -entry( ' * ', 'zslayton/stomp-rs', rows_stable, rows_unstable ) -add( '* ZeroMQ', rows_stable, rows_unstable ) -entry( ' * ', 'erickt/rust-zmq', rows_stable, rows_unstable ) +add('\n### Network programming\n', rows_stable, rows_unstable) +add('* Low level', rows_stable, rows_unstable) +entry(' * ', 'libpnet/libpnet', rows_stable, rows_unstable) +add('* Beanstalkd', rows_stable, rows_unstable) +entry(' * ', 'schickling/rust-beanstalkd', rows_stable, rows_unstable) +add('* NanoMsg', rows_stable, rows_unstable) +entry(' * ', 'thehydroimpulse/nanomsg.rs', rows_stable, rows_unstable) +add('* SSH', rows_stable, rows_unstable) +entry(' * ', 'alexcrichton/ssh2-rs', rows_stable, rows_unstable) +add('* Stomp', rows_stable, rows_unstable) +entry(' * ', 'zslayton/stomp-rs', rows_stable, rows_unstable) +add('* ZeroMQ', rows_stable, rows_unstable) +entry(' * ', 'erickt/rust-zmq', rows_stable, rows_unstable) -add( '\n### Platform specific\n', rows_stable, rows_unstable ) -add( '* Linux', rows_stable, rows_unstable ) -entry( ' * ', 'carllerche/nix-rust', rows_stable, rows_unstable ) +add('\n### Platform specific\n', rows_stable, rows_unstable) +add('* Linux', rows_stable, rows_unstable) +entry(' * ', 'carllerche/nix-rust', rows_stable, rows_unstable) -add( '\n### Template engine\n', rows_stable, rows_unstable ) -add( '* Mustache', rows_stable, rows_unstable ) -entry( ' * ', 'erickt/rust-mustache', rows_stable, rows_unstable ) -entry( ' * ', 'rustache/rustache', rows_stable, rows_unstable ) +add('\n### Template engine\n', rows_stable, rows_unstable) +add('* Mustache', rows_stable, rows_unstable) +entry(' * ', 'erickt/rust-mustache', rows_stable, rows_unstable) +entry(' * ', 'rustache/rustache', rows_stable, rows_unstable) -add( '\n### Testing\n', rows_stable, rows_unstable ) -entry( '* ', 'BurntSushi/quickcheck', rows_stable, rows_unstable ) -entry( '* ', 'farcaller/shiny', rows_stable, rows_unstable ) +add('\n### Testing\n', rows_stable, rows_unstable) +entry('* ', 'BurntSushi/quickcheck', rows_stable, rows_unstable) +entry('* ', 'farcaller/shiny', rows_stable, rows_unstable) -add( '\n### Web programming\n', rows_stable, rows_unstable ) -add( 'See also ' + md_link('http://arewewebyet.com/', 'http://arewewebyet.com/') + '\n', rows_stable, rows_unstable ) -add( '* Core', rows_stable, rows_unstable ) -entry( ' * ', 'chris-morgan/rust-http', rows_stable, rows_unstable ) -entry( ' * ', 'hyperium/hyper', rows_stable, rows_unstable ) -entry( ' * ', 'Teepee', rows_stable, rows_unstable ) -add( '* Client', rows_stable, rows_unstable ) -entry( ' * ', 'carllerche/curl-rust', rows_stable, rows_unstable ) -entry( ' * ', 'vhbit/curl-rs', rows_stable, rows_unstable ) -add( '* Server', rows_stable, rows_unstable ) -entry( ' * ', 'erickt/rust-mongrel2', rows_stable, rows_unstable ) -entry( ' * ', 'Iron', rows_stable, rows_unstable ) -entry( ' * ', 'Nickel', rows_stable, rows_unstable ) -entry( ' * ', 'Ogeon/rustful', rows_stable, rows_unstable ) -entry( ' * ', 'Rustless', rows_stable, rows_unstable ) +add('\n### Web programming\n', rows_stable, rows_unstable) +add('See also ' + md_link('http://arewewebyet.com/', 'http://arewewebyet.com/') + '\n', rows_stable, rows_unstable) +add('* Core', rows_stable, rows_unstable) +entry(' * ', 'chris-morgan/rust-http', rows_stable, rows_unstable) +entry(' * ', 'hyperium/hyper', rows_stable, rows_unstable) +entry(' * ', 'Teepee', rows_stable, rows_unstable) +add('* Client', rows_stable, rows_unstable) +entry(' * ', 'carllerche/curl-rust', rows_stable, rows_unstable) +entry(' * ', 'vhbit/curl-rs', rows_stable, rows_unstable) +add('* Server', rows_stable, rows_unstable) +entry(' * ', 'erickt/rust-mongrel2', rows_stable, rows_unstable) +entry(' * ', 'Iron', rows_stable, rows_unstable) +entry(' * ', 'Nickel', rows_stable, rows_unstable) +entry(' * ', 'Ogeon/rustful', rows_stable, rows_unstable) +entry(' * ', 'Rustless', rows_stable, rows_unstable) -add( '\n## Resources\n', rows_stable, rows_unstable ) -entry( '* ', 'Rust by Example', rows_stable, rows_unstable ) -entry( '* ', 'Rust CI', rows_stable, rows_unstable ) -entry( '* ', 'Rust Guidelines', rows_stable, rows_unstable ) +add('\n## Resources\n', rows_stable, rows_unstable) +entry('* ', 'Rust by Example', rows_stable, rows_unstable) +entry('* ', 'Rust CI', rows_stable, rows_unstable) +entry('* ', 'Rust Guidelines', rows_stable, rows_unstable) markdown_stable = '\n'.join(rows_stable) -markdown_unstable = '\n'.join(rows_unstable ) +markdown_unstable = '\n'.join(rows_unstable) -with open( 'README.md', 'wb' ) as f: - f.write( markdown_stable ) -with open( 'UNSTABLE.md', 'wb' ) as f: - f.write( markdown_unstable ) +with open('README.md', 'wb') as f: + f.write(markdown_stable) +with open('UNSTABLE.md', 'wb') as f: + f.write(markdown_unstable)