All Projects → bodoni → Svg

bodoni / Svg

Licence: other
Composer and parser for SVG

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Svg

Buntis
A 100% compliant, self-hosted typescript parser that emits an ESTree-compatible AST
Stars: ✭ 90 (-24.37%)
Mutual labels:  parsing
Antlr4
ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, processing, executing, or translating structured text or binary files.
Stars: ✭ 11,227 (+9334.45%)
Mutual labels:  parsing
Stacktracey
Parses call stacks. Reads sources. Clean & filtered output. Sourcemaps. Node & browsers.
Stars: ✭ 115 (-3.36%)
Mutual labels:  parsing
Parglare
A pure Python scannerless LR/GLR parser - http://www.igordejanovic.net/parglare/
Stars: ✭ 90 (-24.37%)
Mutual labels:  parsing
Graphql Go Tools
Tools to write high performance GraphQL applications using Go/Golang.
Stars: ✭ 96 (-19.33%)
Mutual labels:  parsing
Scalable Vector Graphics Plugin For Paint.net
Paint.NET filetype plugin for loading SVG (Scalable Vector Graphics) and its compressed variant SVGZ files.
Stars: ✭ 109 (-8.4%)
Mutual labels:  vector-graphics
Rubberduck
Every programmer needs a rubberduck. COM add-in for the VBA & VB6 IDE (VBE).
Stars: ✭ 1,287 (+981.51%)
Mutual labels:  parsing
Formatfuzzer
FormatFuzzer is a framework for high-efficiency, high-quality generation and parsing of binary inputs.
Stars: ✭ 117 (-1.68%)
Mutual labels:  parsing
Yacep
yet another csharp expression parser
Stars: ✭ 107 (-10.08%)
Mutual labels:  parsing
Expressive
Expressive is a cross-platform expression parsing and evaluation framework. The cross-platform nature is achieved through compiling for .NET Standard so it will run on practically any platform.
Stars: ✭ 113 (-5.04%)
Mutual labels:  parsing
Pegtl
Parsing Expression Grammar Template Library
Stars: ✭ 1,295 (+988.24%)
Mutual labels:  parsing
Libdparse
Library for lexing and parsing D source code
Stars: ✭ 91 (-23.53%)
Mutual labels:  parsing
Importjson
Import JSON into Google Sheets, this library adds various ImportJSON functions to your spreadsheet
Stars: ✭ 1,705 (+1332.77%)
Mutual labels:  parsing
Niutrans.smt
NiuTrans.SMT is an open-source statistical machine translation system developed by a joint team from NLP Lab. at Northeastern University and the NiuTrans Team. The NiuTrans system is fully developed in C++ language. So it runs fast and uses less memory. Currently it supports phrase-based, hierarchical phrase-based and syntax-based (string-to-tree, tree-to-string and tree-to-tree) models for research-oriented studies.
Stars: ✭ 90 (-24.37%)
Mutual labels:  parsing
Chordsheetjs
A JavaScript library for parsing and formatting ChordPro chord sheets
Stars: ✭ 114 (-4.2%)
Mutual labels:  parsing
Evaluate
A version of eval for R that returns more information about what happened
Stars: ✭ 88 (-26.05%)
Mutual labels:  parsing
Sywac
🚫 🐭 Asynchronous, single package CLI framework for Node
Stars: ✭ 109 (-8.4%)
Mutual labels:  parsing
Vectorifydahome
📱 Minimal app to apply wallpapers from a vast (400+) collection of vector graphics 🙃
Stars: ✭ 119 (+0%)
Mutual labels:  vector-graphics
Corrode
A batteries-included library for reading binary data.
Stars: ✭ 116 (-2.52%)
Mutual labels:  parsing
Tove2d
Animated vector graphics for LÖVE.
Stars: ✭ 113 (-5.04%)
Mutual labels:  vector-graphics

SVG Package Documentation Build

The package provides an SVG composer and parser.

Example: Composing

use svg::Document;
use svg::node::element::Path;
use svg::node::element::path::Data;

let data = Data::new()
    .move_to((10, 10))
    .line_by((0, 50))
    .line_by((50, 0))
    .line_by((0, -50))
    .close();

let path = Path::new()
    .set("fill", "none")
    .set("stroke", "black")
    .set("stroke-width", 3)
    .set("d", data);

let document = Document::new()
    .set("viewBox", (0, 0, 70, 70))
    .add(path);

svg::save("image.svg", &document).unwrap();

Example: Parsing

use svg::node::element::path::{Command, Data};
use svg::node::element::tag::Path;
use svg::parser::Event;

let path = "image.svg";
let mut content = String::new();
for event in svg::open(path, &mut content).unwrap() {
    match event {
        Event::Tag(Path, _, attributes) => {
            let data = attributes.get("d").unwrap();
            let data = Data::parse(data).unwrap();
            for command in data.iter() {
                match command {
                    &Command::Move(..) => println!("Move!"),
                    &Command::Line(..) => println!("Line!"),
                    _ => {}
                }
            }
        }
        _ => {}
    }
}

Contribution

Your contribution is highly appreciated. Do not hesitate to open an issue or a pull request. Note that any contribution submitted for inclusion in the project will be licensed according to the terms given in LICENSE.md.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].