75.1.1 • Published 12 months ago

jtree v75.1.1

Weekly downloads
243
License
-
Repository
github
Last release
12 months ago

import header.scroll permalink index.html title JTree: Tree Notation SDK for TypeScript & Javascript startColumns 4 import ciBadges.scroll

Links

Tree Notation Homepage https://treenotation.org Tree Notation Sandbox https://jtree.treenotation.org/sandbox Tree Language Designer https://jtree.treenotation.org/designer Release Notes https://jtree.treenotation.org/releaseNotes.html Tree Notation FAQ https://faq.treenotation.org TrueBase https://truebase.pub/ TypeScript Library https://github.com/treenotation/jtree Tree Notation Subreddit https://reddit.com/r/treenotation Ohayo - A data science studio powered by Tree Notation https://github.com/treenotation/ohayo UnitTests https://jtree.treenotation.org/sandbox/test.html PerfTests https://jtree.treenotation.org/sandbox/perfTests.html

? Who is this package built for? Jtree is for people who want to design Tree Languages, make Tree editing tools, or use the Tree Component Web Framework. You can think of jtree as similar to the Java Development Kit, except for Tree Notation instead of Java.

? How do I build a new language? You can try the Grammar tutorial. link grammarTutorial.html Grammar tutorial

Grammar Files

Jtree contains a Tree Language called "Grammar". You can write new Grammar files to define new languages. By creating a grammar file you get a parser, a type checker, syntax highlighting, autocomplete, a compiler, and virtual machine for executing your new language. Jtree also includes a simple web Tree Language Designer. https://jtree.treenotation.org/designer Designer

To make your language do really interesting things, you'll want to write some code to extend your language nodes in another language that you know. Jtree lets you create new languages using just Tree Notation, Tree Notation + TypeScript, or Tree Notation + Javascript. Tree Notation and Tree Languages can be built with any language, however, not just TypeScript and Javascript. We are looking for volunteers to build libraries/sdks in other host languages.

Using Jtree

Quick start

Jtree currently includes over 10 compiled projects (aka "products") and more than a dozen Tree Languages.

Basic TreeNode library for npm projects:

code const {TreeNode} = require("jtree/products/TreeNode.js") const tree = new TreeNode("hello world") console.log(tree.asString)

Basic TreeNode library + Grammar Language for the browser:

code

jtree "sandbox" web app for exploring base Tree Notation

code npm install . npm run local open http://localhost:3333/

jtree "Designer" web app for building new Tree Languages

code npm install . npm run local open http://localhost:3333/designer

TreeComponentFramework for building web apps

This is a web framework still in the research stage. Whether it evolves into a serious line of effort is unknown.

Sample Languages

More than 12 example Tree Languages for helping with various tasks. See the langs/ folder.

Build Tools

If you look at the source, you will also see a set of build tools (such as Builder and TypeScriptRewriter). These are currently undocumented and not recommended for external use.

Building all tools and running tests

code npm run build npm test

Monorepo

Jtree is a monorepo. With on average over 1 major version released each month for the past 2.5 years, it would take a lot of overhead to constantly be updating 10+ different repositories and modules every month. Once we're more confident in the theory and best practices, it might make sense to break this repo into independent modules. That being said, we despise unnecessary dependencies as much as anyone. If anyone wants to create some automated submodules built from the projects in this monorepo, to allow for consuming of a smaller subset of the code and dependencies in this module, feel free to do so.

Visualization of the code base

https://mango-dune-07a8b7110.1.azurestaticapps.net/?repo=breck7%2Fjtree Visualization image images/diagram.svg

Development Status

All breaking changes are mentioned in the releaseNotes. We follow semantic versioning, so breaking changes should not happen if you stay on the same major version. link releaseNotes.html releaseNotes

Tree Notation Libraries in Other Languages

If you build a Tree Notation library/SDK in another language, let us know and we'll add a link.

If you are working on a Tree Notation library in a new host language, feel free to post an issue or ask for help in the TreeNotation subreddit. https://reddit.com/r/treenotation subreddit

How to bump versions

code npm run updateVersion NEW_NUMBER

Alternatives Considered

This is the first Tree Notation library in existence, so there were no alternative implementations. Note and Space were predecessors to Tree Notation. If a better alternative low level notation to Tree Notation is possible, it has yet to be discovered.

All that said, the important part of this repo is not the code but the design patterns. Tree Notation is very simple, and you can implement the patterns contained here in your own code without using this library. In fact, that is often the best way to use Tree Notation!

Editing in Sublime Text

It is helpful to set "goto_anything_exclude_gitignore": true to ignore files in gitignore. Read more here. https://breckyunits.com/code/my-sublime-setttings.html here

❤️ Public Domain ❤️

import footer.scroll

74.1.1

1 year ago

74.1.0

1 year ago

75.1.1

12 months ago

75.1.0

1 year ago

74.3.1

1 year ago

74.3.0

1 year ago

75.0.0

1 year ago

74.2.0

1 year ago

64.0.1

1 year ago

64.0.0

1 year ago

67.3.0

1 year ago

70.0.0

1 year ago

62.2.0

1 year ago

74.0.0

1 year ago

64.1.0

1 year ago

68.0.0

1 year ago

67.2.0

1 year ago

62.1.0

1 year ago

65.0.0

1 year ago

65.0.2

1 year ago

65.0.1

1 year ago

73.0.1

1 year ago

73.0.0

1 year ago

64.2.0

1 year ago

69.1.0

1 year ago

72.2.0

1 year ago

62.0.0

1 year ago

65.1.0

1 year ago

64.3.0

1 year ago

69.0.0

1 year ago

67.4.0

1 year ago

66.0.0

1 year ago

72.0.0

1 year ago

65.2.0

1 year ago

64.4.0

1 year ago

69.3.1

1 year ago

69.3.0

1 year ago

66.1.0

1 year ago

65.3.0

1 year ago

69.2.0

1 year ago

69.2.1

1 year ago

72.1.0

1 year ago

71.0.1

1 year ago

71.0.0

1 year ago

65.4.0

1 year ago

63.0.0

1 year ago

67.1.0

1 year ago

71.0.2

1 year ago

69.4.0

1 year ago

69.4.1

1 year ago

67.0.0

1 year ago

61.1.0

1 year ago

61.0.0

1 year ago

59.1.1

1 year ago

59.1.2

1 year ago

59.1.0

1 year ago

58.0.0

2 years ago

61.4.0

1 year ago

61.0.1

1 year ago

61.4.1

1 year ago

61.3.0

1 year ago

60.0.0

1 year ago

60.0.1

1 year ago

61.2.0

1 year ago

57.0.0

2 years ago

59.0.0

2 years ago

56.0.0

2 years ago

56.0.1

2 years ago

53.8.0

2 years ago

53.4.0

2 years ago

55.0.0

2 years ago

54.2.0

2 years ago

54.2.1

2 years ago

53.7.1

2 years ago

53.7.0

2 years ago

54.1.0

2 years ago

53.6.0

2 years ago

53.2.0

2 years ago

54.0.0

2 years ago

53.5.1

2 years ago

53.5.0

2 years ago

55.1.1

2 years ago

55.1.0

2 years ago

53.1.0

2 years ago

53.0.0

3 years ago

52.1.0

3 years ago

52.0.0

3 years ago

51.6.0

3 years ago

51.6.1

3 years ago

51.5.1

3 years ago

51.5.0

3 years ago

51.4.0

3 years ago

51.3.0

3 years ago

51.2.1

3 years ago

51.2.0

3 years ago

51.1.0

3 years ago

51.0.0

3 years ago

50.1.0

3 years ago

50.2.0

3 years ago

50.0.0

3 years ago

49.8.0

4 years ago

49.6.1

4 years ago

49.6.0

4 years ago

49.5.0

4 years ago

49.4.0

4 years ago

49.2.0

4 years ago

49.0.1

4 years ago

49.1.0

4 years ago

49.0.0

4 years ago

48.1.0

4 years ago

48.0.0

4 years ago

47.1.0

4 years ago

47.0.0

4 years ago

46.1.0

4 years ago

46.0.0

4 years ago

45.1.0

4 years ago

45.0.0

4 years ago

44.1.0

4 years ago

44.0.3

5 years ago

44.0.2

5 years ago

44.0.1

5 years ago

44.0.0

5 years ago

43.0.0

5 years ago

42.1.0

5 years ago

42.0.0

5 years ago

41.2.0

5 years ago

41.1.0

5 years ago

40.3.0

5 years ago

40.1.0

5 years ago

40.0.0

5 years ago

39.6.0

5 years ago

39.0.0

5 years ago

38.2.0

5 years ago

38.0.1

5 years ago

37.0.0

5 years ago

36.2.0

5 years ago

36.1.0

5 years ago

36.0.2

5 years ago

36.0.1

5 years ago

36.0.0

5 years ago

35.1.0

5 years ago

35.0.1

5 years ago

35.0.0

5 years ago

34.2.0

5 years ago

34.1.0

5 years ago

34.0.0

5 years ago

33.0.2

5 years ago

33.0.1

5 years ago

33.0.0

5 years ago

32.0.0

5 years ago

31.0.0

5 years ago

30.0.0

5 years ago

29.0.0

5 years ago

28.0.0

5 years ago

27.2.0

5 years ago

27.1.0

5 years ago

27.0.0

5 years ago

26.5.0

5 years ago

26.4.0

5 years ago

26.3.0

5 years ago

26.2.0

5 years ago

26.1.1

5 years ago

26.1.0

5 years ago

26.0.2

5 years ago

26.0.1

5 years ago

26.0.0

5 years ago

25.2.0

5 years ago

25.1.0

5 years ago

25.0.0

5 years ago

24.2.0

5 years ago

24.1.0

5 years ago

24.0.0

5 years ago

23.2.1

5 years ago

23.2.0

5 years ago

23.1.0

5 years ago

23.0.1

5 years ago

23.0.0

5 years ago

22.3.0

5 years ago

22.2.0

5 years ago

22.1.1

5 years ago

22.1.0

5 years ago

22.0.0

5 years ago

21.0.0

5 years ago

20.0.0

5 years ago

19.5.1

5 years ago

19.5.0

5 years ago

19.4.0

5 years ago

19.3.2

5 years ago

19.3.1

5 years ago

19.3.0

5 years ago

19.2.1

5 years ago

19.2.0

5 years ago

19.1.0

5 years ago

19.0.0

5 years ago

18.2.0

5 years ago

18.1.3

5 years ago

18.1.2

5 years ago

18.1.1

5 years ago

18.1.0

5 years ago

18.0.0

5 years ago

17.1.3

5 years ago

17.1.2

5 years ago

17.1.1

5 years ago

17.1.0

5 years ago

17.0.0

5 years ago

16.0.1

5 years ago

16.0.0

5 years ago

15.3.0

5 years ago

15.2.0

5 years ago

15.1.0

5 years ago

15.0.2

5 years ago

15.0.1

5 years ago

15.0.0

5 years ago

14.6.0

6 years ago

14.5.1

6 years ago

14.5.0

6 years ago

14.4.0

6 years ago

14.3.3

6 years ago

14.3.2

6 years ago

14.3.1

6 years ago

14.3.0

6 years ago

14.1.0

6 years ago

14.0.1

6 years ago

14.0.0

6 years ago

13.0.0

6 years ago