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

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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