Skip to content
This repository was archived by the owner on Nov 20, 2023. It is now read-only.

Commit 91ee30b

Browse files
committedAug 9, 2022
Add support for more plugins
1 parent 0edd900 commit 91ee30b

File tree

8 files changed

+134
-8
lines changed

8 files changed

+134
-8
lines changed
 

Diff for: ‎CHANGELOG.md

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6+
7+
## [Unreleased]
8+
9+
## [0.2.0] - 2022-08-09
10+
11+
### Added
12+
13+
- Support for multiple plugins: `bf`, `css`, `json`, and `xml`.
14+
15+
## [0.1.0] - 2022-08-09
16+
17+
### Added
18+
19+
- 🎉 Initial release! 🎉
20+
21+
[unreleased]: https://github.com/ruby-syntax-tree/node-syntax-tree/compare/v0.2.0...HEAD
22+
[0.2.0]: https://github.com/ruby-syntax-tree/node-syntax-tree/compare/v0.1.0...v0.2.0
23+
[0.1.0]: https://github.com/ruby-syntax-tree/node-syntax-tree/compare/4eaf5c...v0.1.0

Diff for: ‎Gemfile

+4
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,9 @@ gem "bundler"
66
gem "rake"
77

88
gem "syntax_tree"
9+
gem "syntax_tree-bf"
10+
gem "syntax_tree-css"
911
gem "syntax_tree-haml"
12+
gem "syntax_tree-json"
1013
gem "syntax_tree-rbs"
14+
gem "syntax_tree-xml"

Diff for: ‎Gemfile.lock

+16
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,26 @@ GEM
99
rbs (2.6.0)
1010
syntax_tree (3.3.0)
1111
prettier_print
12+
syntax_tree-bf (0.1.0)
13+
prettier_print
14+
syntax_tree (>= 2.0.1)
15+
syntax_tree-css (0.1.0)
16+
prettier_print
17+
syntax_tree (>= 2.0.1)
1218
syntax_tree-haml (1.3.1)
1319
haml (>= 5.2)
1420
prettier_print
1521
syntax_tree (>= 2.0.1)
22+
syntax_tree-json (0.3.0)
23+
prettier_print
24+
syntax_tree (>= 2.0.1)
1625
syntax_tree-rbs (0.5.0)
1726
prettier_print
1827
rbs
1928
syntax_tree (>= 2.0.1)
29+
syntax_tree-xml (0.1.0)
30+
prettier_print
31+
syntax_tree (>= 2.0.1)
2032
temple (0.8.2)
2133
tilt (2.0.11)
2234

@@ -28,8 +40,12 @@ DEPENDENCIES
2840
bundler
2941
rake
3042
syntax_tree
43+
syntax_tree-bf
44+
syntax_tree-css
3145
syntax_tree-haml
46+
syntax_tree-json
3247
syntax_tree-rbs
48+
syntax_tree-xml
3349

3450
BUNDLED WITH
3551
2.3.14

Diff for: ‎README.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ createSyntaxTree().then((syntaxTree) => {
4848
});
4949
```
5050

51+
You can access all of the various Syntax Tree plugins except RBS.
52+
5153
TypeScript types are provided along with this package, and effectively boil down to:
5254

5355
```ts
@@ -58,7 +60,7 @@ type SyntaxTreeHandler = {
5860
};
5961

6062
type SyntaxTree = {
61-
handlers: Record<"haml" | "ruby", SyntaxTreeHandler>
63+
handlers: Record<"bf" | "css" | "haml" | "json" | "ruby" | "xml", SyntaxTreeHandler>
6264
};
6365

6466
function createSyntaxTree(): Promise<SyntaxTree>;

Diff for: ‎Rakefile

+4
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,12 @@ file "src/app.wasm" => ["Gemfile.lock", "wasi-vfs", "ruby.wasm"] do
3939

4040
loaded_before = $LOADED_FEATURES.dup
4141
require "syntax_tree"
42+
require "syntax_tree/bf"
43+
require "syntax_tree/css"
4244
require "syntax_tree/haml"
45+
require "syntax_tree/json"
4346
# require "syntax_tree/rbs"
47+
require "syntax_tree/xml"
4448
loaded_after = $LOADED_FEATURES - loaded_before
4549

4650
# Here we're going to find all of the gems that were loaded by requiring each

Diff for: ‎package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "node-syntax-tree",
3-
"version": "0.1.0",
3+
"version": "0.2.0",
44
"description": "A node package for accessing Syntax Tree through WASM",
55
"main": "dist/index.cjs",
66
"module": "dist/index.mjs",
@@ -9,6 +9,7 @@
99
"dist"
1010
],
1111
"scripts": {
12+
"build": "yarn prepublishOnly",
1213
"prepublishOnly": "node build.mjs",
1314
"test": "node test.mjs"
1415
},

Diff for: ‎src/index.ts

+10-2
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ type SyntaxTreeHandler = {
4545

4646
export type SyntaxTree = {
4747
rubyVM: RubyVM;
48-
handlers: Record<"haml" | "ruby", SyntaxTreeHandler>;
48+
handlers: Record<"bf" | "css" | "haml" | "json" | "ruby" | "xml", SyntaxTreeHandler>;
4949
};
5050

5151
export default async function createSyntaxTree(): Promise<SyntaxTree> {
@@ -93,16 +93,24 @@ export default async function createSyntaxTree(): Promise<SyntaxTree> {
9393
9494
$:.unshift("/lib")
9595
require_relative "/lib/syntax_tree"
96+
require_relative "/lib/syntax_tree/bf"
97+
require_relative "/lib/syntax_tree/css"
9698
require_relative "/lib/syntax_tree/haml"
99+
require_relative "/lib/syntax_tree/json"
97100
# require_relative "/lib/syntax_tree/rbs"
101+
require_relative "/lib/syntax_tree/xml"
98102
`);
99103

100104
return {
101105
rubyVM,
102106
handlers: {
107+
bf: makeSyntaxTreeHandler(".bf"),
108+
css: makeSyntaxTreeHandler(".css"),
103109
haml: makeSyntaxTreeHandler(".haml"),
110+
json: makeSyntaxTreeHandler(".json"),
111+
ruby: makeSyntaxTreeHandler(".rb"),
104112
// rbs: makeSyntaxTreeHandler(".rbs"),
105-
ruby: makeSyntaxTreeHandler(".rb")
113+
xml: makeSyntaxTreeHandler(".xml")
106114
}
107115
};
108116

Diff for: ‎test.mjs

+72-4
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,61 @@ import createSyntaxTree from "./dist/index.mjs";
55

66
const syntaxTree = await createSyntaxTree();
77

8-
test("handlers.haml.format", () => {
9-
assert.equal(syntaxTree.handlers.haml.format("= foo"), "= foo\n");
8+
test("handlers.bf.parse", () => {
9+
assert.equal(
10+
syntaxTree.handlers.bf.parse("+++"),
11+
"(root (increment), (increment), (increment))\n"
12+
);
13+
});
14+
15+
test("handlers.bf.format", () => {
16+
assert.equal(syntaxTree.handlers.bf.format("+++"), "+++\n");
17+
});
18+
19+
test("handlers.css.parse", () => {
20+
const source = `
21+
.foo {
22+
color: red;
23+
}
24+
`;
25+
26+
const expected = `(css-stylesheet
27+
(style-rule
28+
(selectors
29+
(class-selector (ident-token "foo"))
30+
)
31+
(declarations
32+
(declaration color (ident-token "red"), (semicolon-token))
33+
)
34+
)
35+
)
36+
`;
37+
38+
assert.equal(syntaxTree.handlers.css.parse(source), expected);
39+
});
40+
41+
// test("handlers.css.format", () => {
42+
// const source = ".foo{color:red;}";
43+
// const expected = `.foo {
44+
// color: red;
45+
// }
46+
// `;
47+
48+
// assert.equal(syntaxTree.handlers.css.format(source), expected);
49+
// });
50+
51+
test("handlers.json.parse", () => {
52+
assert.equal(
53+
syntaxTree.handlers.json.parse(`{ "a": "b" }`),
54+
`(root value=(object values={"\\"a\\""=>(string value="\\"b\\"")}))\n`
55+
);
56+
});
57+
58+
test("handlers.json.format", () => {
59+
assert.equal(
60+
syntaxTree.handlers.json.format(`{"a":"b"}`),
61+
`{ "a": "b" }\n`
62+
);
1063
});
1164

1265
test("handlers.haml.parse", () => {
@@ -16,8 +69,8 @@ test("handlers.haml.parse", () => {
1669
);
1770
});
1871

19-
test("handlers.ruby.format", () => {
20-
assert.equal(syntaxTree.handlers.ruby.format("1+1"), "1 + 1\n");
72+
test("handlers.haml.format", () => {
73+
assert.equal(syntaxTree.handlers.haml.format("= foo"), "= foo\n");
2174
});
2275

2376
test("handlers.ruby.parse", () => {
@@ -26,3 +79,18 @@ test("handlers.ruby.parse", () => {
2679
`(program (statements ((vcall (ident "foo")))))\n`
2780
);
2881
});
82+
83+
test("handlers.ruby.format", () => {
84+
assert.equal(syntaxTree.handlers.ruby.format("1+1"), "1 + 1\n");
85+
});
86+
87+
test("handlers.xml.parse", () => {
88+
assert.equal(
89+
syntaxTree.handlers.xml.parse("<foo></foo>"),
90+
`(document\n (element (opening_tag "<", "foo", ">"), (closing_tag "</", "foo", ">"))\n)\n`
91+
);
92+
});
93+
94+
test("handlers.xml.format", () => {
95+
assert.equal(syntaxTree.handlers.xml.format("<foo></foo>"), "<foo />\n");
96+
});

0 commit comments

Comments
 (0)
This repository has been archived.