0.2.2 • Published 2 years ago

ts-fusion-parser v0.2.2

Weekly downloads
-
License
AGPL-3.0-or-later
Repository
gitlab
Last release
2 years ago

Neos Fusion Parser

Based on the official Neos.Fusion parser

AFX & EEL Parsers are new.

Disclaimer

This is currently under active development primarily for the Neos Fusion VSCode Extension.

Example

import { FusionParserOptions, ObjectTreeParser } from 'ts-fusion-parser'
import { TagNode } from 'ts-fusion-parser/out/dsl/afx/nodes/TagNode'
import { AfxParserOptions } from 'ts-fusion-parser/out/dsl/afx/parser'
import { EelParserOptions } from 'ts-fusion-parser/out/dsl/eel/parser'
import { StringValue } from 'ts-fusion-parser/out/fusion/nodes/StringValue'

const eelParserOptions: EelParserOptions = {
    // this allows for `<div>{props.}</div>` to be parsed as `<div>{props}</div>`
    allowIncompleteObjectPaths: true
}

const afxParserOptions: AfxParserOptions = {
    eelParserOptions,
    // this auto-closes left open tags in the end
    allowUnclosedTags: true
}

const fusionParserOptions: FusionParserOptions = {
    eelParserOptions,
    afxParserOptions,
    // save Errors in the `FusionFile.errors` array instead of throwing
    ignoreErrors: true
}

const fusion = `
prototype(Vendor.Website:Component) < prototype(Neos.Fusion:Component) {
    text = "bla"

    renderer = afx\`
 		<div>{props.text}</div>
    \`
}
`

// not really used currently
const contextPathAndFileName = undefined
const fusionFile = ObjectTreeParser.parse(fusion, contextPathAndFileName, fusionParserOptions)

const stringValues = fusionFile.getNodesByType(StringValue)
console.log("text: ", stringValues?.[0].value, stringValues?.[0].value === "bla")

const tagNodes = fusionFile.getNodesByType(TagNode)
// as this is currently WIP there is no real public API specified so a lot of properties are still `protected`
console.log("tag node: ", tagNodes?.[0]["name"], tagNodes?.[0]["name"] === "true")
0.1.51

2 years ago

0.1.47

2 years ago

0.1.48

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.2.2

2 years ago

0.1.45

2 years ago

0.1.46

2 years ago

0.1.44

2 years ago

0.1.43

2 years ago

0.1.42

2 years ago

0.1.40

2 years ago

0.1.39

2 years ago

0.1.38

2 years ago

0.1.36

2 years ago

0.1.37

2 years ago

0.1.35

2 years ago

0.1.34

2 years ago

0.1.33

2 years ago

0.1.30

2 years ago

0.1.31

2 years ago

0.1.32

2 years ago

0.1.29

2 years ago

0.1.26

2 years ago

0.1.20

3 years ago

0.1.21

3 years ago

0.1.22

3 years ago

0.1.25

3 years ago

0.1.19

3 years ago

0.1.10

3 years ago

0.1.11

3 years ago

0.1.12

3 years ago

0.1.14

3 years ago

0.1.15

3 years ago

0.1.8

3 years ago

0.1.7

3 years ago

0.1.9

3 years ago

0.1.4

3 years ago

0.1.6

3 years ago

0.1.5

3 years ago

0.1.16

3 years ago

0.1.17

3 years ago

0.1.18

3 years ago

0.0.40

4 years ago

0.0.41

4 years ago

0.0.42

4 years ago

0.0.43

4 years ago

0.0.44

4 years ago

0.0.45

4 years ago

0.0.46

4 years ago

0.0.47

3 years ago

0.0.37

4 years ago

0.0.38

4 years ago

0.0.39

4 years ago

0.0.30

4 years ago

0.0.31

4 years ago

0.0.32

4 years ago

0.0.33

4 years ago

0.0.34

4 years ago

0.0.35

4 years ago

0.0.36

4 years ago

0.1.0

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.0.26

4 years ago

0.0.27

4 years ago

0.0.28

4 years ago

0.0.29

4 years ago

0.1.3

3 years ago

0.0.20

4 years ago

0.0.21

4 years ago

0.0.22

4 years ago

0.0.23

4 years ago

0.0.15

4 years ago

0.0.16

4 years ago

0.0.17

4 years ago

0.0.18

4 years ago

0.0.19

4 years ago

0.0.52

3 years ago

0.0.53

3 years ago

0.0.14

4 years ago

0.0.50

3 years ago

0.0.48

3 years ago

0.0.49

3 years ago

0.0.13

4 years ago

0.0.12

4 years ago

0.0.11

4 years ago

0.0.10

4 years ago

0.0.9

4 years ago

0.0.9-0

4 years ago

0.0.8-0

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago