Git Product home page Git Product logo

go-structeditor's Introduction

Struct Editor

User interface library for editing arbitrary structures using a UI rendered in HTML.

Background

Struct Editor is intended as a debugging tool for observing and modifying state inside a Go server accessible via HTTP. It was originally written to simplify debugging of a client-server turn-based game engine, but can be applied to any circumstance where global data is represented as a struct.

Usage

An example of configuring the editor is provided in the editor example in the examples subdirectory.

	editor := structeditor.ServeEditor(demoData, "/", http.DefaultServeMux)

	log.Fatal(http.ListenAndServe(":8000", nil))

Once the server is running, you can view the demoData structure at http://localhost:8000/. Making edits to the structure will modify the structure on the server.

Known Issues / Future Work

  • Mutation of the struct in the editor is not synchronized or protected against multithreaded access
  • Private members of structs cannot be mutated
  • Several Go types cannot be rendered
    • complex
    • interface
    • map
  • General UI usability cleanups
    • Errors are not reported
    • The UI does not notify the user when a change is committed
    • The UI is not reloaded upon change
    • Boolean data types are exposed as string fields, not dropdowns or checkboxes
    • Newline and comma misplacement
  • Pointers cannot be cleared
  • Extremely large structs can bog down the UI

Security Notice

Use of this library exposes internal state of your server directly to an insecure HTTP endpoint. If you do not control access to the server, you should wrap access to the editor's ViewHandler and MutateHandler in an authentication / authorization solution.

Disclaimer

This is not an officially supported Google product.

go-structeditor's People

Contributors

fixermark avatar

Stargazers

Zigao Wang avatar  avatar Doruk Sarp Aydın avatar F.Baube avatar Senku avatar Patrick Logan avatar Starsign68 avatar  avatar  avatar Doru Carastan avatar cy120571672@gmail.com avatar  avatar  avatar tdakkota avatar  avatar Jaewoo Kim avatar Gábor Mihálcz avatar Typical Engineer avatar Leon Feng avatar Christoph Berger avatar Diogo Soares avatar Tacio Costa avatar Siddhartha Basu avatar Artur Sak avatar [riftlab] ErgoZ avatar Wade Welles avatar west avatar fall simply avatar plops avatar Aureliano Yepez avatar ik5 avatar Denis Denisov avatar Hao avatar Montana Flynn avatar Michael Leonard avatar  avatar Koichi Shiraishi avatar cocotang avatar Maxime avatar Phil Pennock avatar  avatar

Watchers

 avatar James Cloos avatar Aureliano Yepez avatar  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.