Giter VIP home page Giter VIP logo

fractal's Introduction

Fractal

Travis godoc License Go Report Card cover.run

Fractal is a Go package that makes it easy to work with dynamic and nested data types, with encoding/decoding support.

Features

  • Nested data type
  • Dot path support
  • JSON encoding/decoding
  • Simple template replacement
  • Inplace update
  • Common data type support: Struct, Map...

Install

go get -u github.com/ddliu/fractal

Usage

Work with struct

data := myStruct {
    Key1: "Value1",
    Key2: anotherStruct {
        Key3: "Value3"
    }
}

// Create context
ctx := fractal.New(data)
println(ctx.String("Key2.Key3"))
// output: Value3

Work with json

ctx := fractal.FromJson([]byte(`{"key1": "value1", "key2": {"key3": "value3"}}`))
println(ctx.String("key2.key3"))

Or with JSON unmarshal

var ctx fractal.Context
json.Unmarshal([]byte(`{"key1": "value1", "key2": {"key3": "value3"}}`), &ctx)
println(ctx.String("key2.key3"))

Work with map

ctx := fractal.New(map[string]interface{
    "key1": "value1",
    "key2": "value2",
})

Update:

ctx.SetValue("key2.new_key", 3)

Simple template:

tpl := `Author: ${author.name}; License: ${license}; `

c := New(nil)
c.SetValue("author", map[string]string{
    "name":  "Dong",
    "email": "[email protected]",
})

c.SetValue("license", "MIT")

println(c.Tpl(tpl))

// output: Author: Dong; License: MIT; 

Dot Notation

  • a.b: Notation access
  • a.b.1: Array index
  • a.b.length(): Length of array or object

fractal's People

Contributors

ddliu avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.