Skip to content

Commit

Permalink
Read me tweaks
Browse files Browse the repository at this point in the history
  • Loading branch information
mcnuttandrew committed Jul 20, 2023
1 parent ac182ba commit d18535b
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 5 deletions.
15 changes: 11 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
# Prong

This is the Prong editor framework. The goal of this system is to provide a simple way to create in-situ editor extensions for in-browser editors of JSON domain specific languages.
The core ideas are two: if you have taken the trouble to write a JSON Schema the we should be able to provide you with a nice structure editing style experience, and second if you want to just write react components that should be enough to insert them into a JSON editor.
Based on this premise, we provide a projectional editor system that allows for the simple creation of editors for any task that has a JSON Schema (ie many JSON DSLs).
Prong is an editor framework for creating bespoke in-browser editors for JSON-based domain-specific languages (such as [Vega](https://vega.github.io/vega/), [Vega-Lite](https://vega.github.io/vega-lite/), [Tracery](https://tracery.io/), and [many others](https://vis-json-dsls.netlify.app/)). These editors allow for things like drag-and-drop interactions, inline-interactive spreadsheets, in-situ recommenders and sparklines, and many more elements that would require significant engineering effort to create otherwise.

Prong is a projectional editing system, which we see as being made up of two pieces:

1. Structure editing, which allows you to manipulate text without requiring that you manually type out that text (we mostly do this through a special floating menu that is aware of the types of the DSLs). We achieve this by asking that you hand us a [JSON schema](https://json-schema.org/) describing your language.
2. Alternative views (which we generally refer to as projections) that re-present parts of the text in means that are more meaningful to the domain at hand (like adding a dropdown for an field that has only a fixed set of options). We achieve this by asking you describe your projections using a little query language (see [below](#queries)) and plain ol react components.

In tandem this allows for some pretty interesting editing experiences to be made pretty easily, for instance:

![Example image of the prong editor framework instantiated for a vega-lite style application](./example.png)

This is described in our upcoming paper "Projectional Editors for JSON-DSLs". Please note that this is research grade software, so there are bugs and issues throughout.
See the [docs site](https://prong-editor.netlify.app/) (where you may already be) to see a variety of examples. Please note that this is research grade software, so there are bugs and issues throughout, but we welcome any help or contributions you might wish to provide.

This work is described in much greater depth in our upcoming paper "Projectional Editors for JSON-based DSLs".

## Quick start example usage

Expand Down
2 changes: 1 addition & 1 deletion sites/docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/logo.png" />
<link rel="icon" type="image/svg+xml" href="/logo512.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Prong</title>
</head>
Expand Down

0 comments on commit d18535b

Please sign in to comment.