All Projects → tiziano88 → elm-protobuf

tiziano88 / elm-protobuf

Licence: MIT license
protobuf plugin for elm

Programming Languages

elm
856 projects
go
31211 projects - #10 most used programming language
shell
77523 projects
Nix
1067 projects

Projects that are alternatives of or similar to elm-protobuf

Protobuf
Protocol Buffers - Google's data interchange format
Stars: ✭ 52,305 (+56141.94%)
Mutual labels:  serialization, protobuf, protocol-buffers, rpc
Go Grpc Examples
This repo contains examples and implementations of different types of GRPC services and APIs using Golang.
Stars: ✭ 180 (+93.55%)
Mutual labels:  protobuf, protocol-buffers, rpc
Protobuf Nim
Protobuf implementation in pure Nim that leverages the power of the macro system to not depend on any external tools
Stars: ✭ 90 (-3.23%)
Mutual labels:  serialization, protobuf, protocol-buffers
Noproto
Flexible, Fast & Compact Serialization with RPC
Stars: ✭ 138 (+48.39%)
Mutual labels:  serialization, protocol-buffers, rpc
kafka-protobuf-serde
Serializer/Deserializer for Kafka to serialize/deserialize Protocol Buffers messages
Stars: ✭ 52 (-44.09%)
Mutual labels:  serialization, protobuf, protocol-buffers
Go Micro Boilerplate
The boilerplate of the GoLang application with a clear microservices architecture.
Stars: ✭ 147 (+58.06%)
Mutual labels:  protobuf, protocol-buffers, rpc
Protobuf Java Format
Provide serialization and de-serialization of different formats based on Google’s protobuf Message. Enables overriding the default (byte array) output to text based formats such as XML, JSON and HTML.
Stars: ✭ 134 (+44.09%)
Mutual labels:  serialization, protobuf, protocol-buffers
Twirp
PHP port of Twitch's Twirp RPC framework
Stars: ✭ 108 (+16.13%)
Mutual labels:  protobuf, protocol-buffers, rpc
protobuf-d
Protocol Buffers Compiler Plugin and Support Library for D
Stars: ✭ 32 (-65.59%)
Mutual labels:  serialization, protobuf, protocol-buffers
javascript-serialization-benchmark
Comparison and benchmark of JavaScript serialization libraries (Protocol Buffer, Avro, BSON, etc.)
Stars: ✭ 54 (-41.94%)
Mutual labels:  serialization, protobuf, protocol-buffers
nimpb
Protocol Buffers for Nim
Stars: ✭ 29 (-68.82%)
Mutual labels:  serialization, protobuf, protocol-buffers
Flatbuffers
FlatBuffers: Memory Efficient Serialization Library
Stars: ✭ 17,180 (+18373.12%)
Mutual labels:  serialization, protobuf, rpc
protoc-plugin
A protoc compiler plugin for Clojure applications
Stars: ✭ 28 (-69.89%)
Mutual labels:  serialization, protobuf, protocol-buffers
ocaml-pb-plugin
A protoc plugin for generating OCaml code from protobuf (.proto) files.
Stars: ✭ 18 (-80.65%)
Mutual labels:  serialization, protobuf, protocol-buffers
Protobuf
A pure Elixir implementation of Google Protobuf
Stars: ✭ 442 (+375.27%)
Mutual labels:  serialization, protobuf, protocol-buffers
Hprose Delphi
Hprose is a cross-language RPC. This project is Hprose 2.0 for Delphi and FreePascal
Stars: ✭ 100 (+7.53%)
Mutual labels:  serialization, rpc
Rust Protobuf
Rust implementation of Google protocol buffers
Stars: ✭ 1,797 (+1832.26%)
Mutual labels:  serialization, protobuf
Ocaml Protoc
A Protobuf Compiler for OCaml
Stars: ✭ 129 (+38.71%)
Mutual labels:  serialization, protobuf
Protostuff
Java serialization library, proto compiler, code generator
Stars: ✭ 1,730 (+1760.22%)
Mutual labels:  serialization, protobuf
Jstp
Fast RPC for browser and Node.js based on TCP, WebSocket, and MDSF
Stars: ✭ 132 (+41.94%)
Mutual labels:  serialization, rpc

elm-protobuf

Build Status Go Report Card

Join #elm-protobuf on Slack

Experimental protobuf plugin generating elm code to decode/encode Proto3/JSON from proto definitions.

The plugin itself is written in Go, and it requires the base protoc protobuf compiler to be installed on the system.

For a sample generated output file, see Repeated.elm.

Supported features

  • double/float fields
  • int32/int64/uint32/uint64/sint32/sint64/fixed32/fixed64/sfixed32/sfixed64 fields
  • bool fields
  • string fields
  • bytes fields
  • message fields
  • enum fields
  • imports
  • nested types
  • Any type
  • Timestamp type
  • Duration type
  • Struct type
  • wrapper types
  • FieldMask type
  • ListValue type
  • Value type
  • NullValue type
  • oneof
  • map
  • packages
  • options

How to install

Release

The simplest way to install the plugin is to download a pre-compiled binary from https://github.com/tiziano88/elm-protobuf/releases , then unpack it and copy or move the protoc-gen-elm binary somewhere in your $PATH.

From source

  • Make sure that you have a Go environment correctly set up, and that $GOPATH/bin is included in your $PATH. See https://golang.org/doc/install for info.

  • Install a recent protoc compiler version from https://github.com/google/protobuf (it must have support for proto3 format).

  • Obtain the protoc-gen-elm binary using go get:

    go get github.com/tiziano88/elm-protobuf/protoc-gen-elm
    

How to run

Run the protoc compiler specifying the --elm_out flag:

protoc --elm_out=. *.proto

protoc will automatically detect the protoc-gen-elm binary from your $PATH and use it to generate the output elm code.

Then, in your project, add a dependency on the runtime library:

elm install tiziano88/elm-protobuf

References

https://developers.google.com/protocol-buffers/

https://developers.google.com/protocol-buffers/docs/proto3#json

https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.compiler.plugin.pb

https://github.com/google/protobuf/wiki/Third-Party-Add-ons

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].