- Fix: cleanup to bundle filenames
- Fix: sample code fix in bundle files
- New: toReadMe method on GrammarProgram
- New: toBundle method on GrammarProgram
- Breaking: removed "anyFirstCell". Now just use "anyCell"
- Fix: anyCell now always added to inferred grammar
- Fix: various fixes to make inferring prefix grammars more robust
- Infra: now run UnknownGrammarProgram against all sample grammars
- Infra: builder is now compiled into a product
- New: support for inference of prefix languages with unicode characters (emojis)
- Breaking: UnknownGrammarProgram "getPredictedGrammarFile" is now "inferGrammarFileForAPrefixLanguage" to be more precise about what the method does
- Breaking: No more "dist" folder. Use files in "/products/" folder instead.
- Fix: Grammar inference (UnknownGrammarProgram) now predicts base cell types
- Infra: switched to TypeScript for all JS src files and test files.
- Infra: new folders for each product
- Infra: "products" folder. Currently checking in compiled versions as this makes distribution simpler. In the future maybe move products to separate repo.
- Breaking: builder refactor. Instead "jbuild.js" now do "builder.js".
- Infra: jBuild
- Infra: improved error messaging for invalid nodeType.
- Breaking: some method names changed in Project Tree Language. See that readme for details.
- Fix: TreeBase Disk path fix
- Fix: TreeBase path fix
- New: added TreeBase and "base" command to CLI
- New: added methods to base class: getWordsAsSet, appendWordIfMissing, addObjectsAsDelimited, setChildrenAsDelimited, convertChildrenToDelimited, addUniqueRowsToNestedDelimited, with, getBiDirectionalMaps, getSparsity
- Fix: fixed grammar concatenation bug where you might have 2 nodeTypes extending from RootNode
- Breaking: removed nodeTypeOrder property from Grammar Language. Now just uses inScope order.
- Breaking: getPrettified() is now "sortNodesByInScopeOrder().getSortedByInheritance()"
- Infra: added basic tests for treeBase and made sure treeComponent framework test getting run
- Infra: moved repo from breck7/jtree to treenotation/jtree
- New: printLinesFrom and printLinesWithLineNumbersFrom methods
- Fix: fix for npm install -g dependency issues
- Fix: fixed uncaught error when an old grammar is used with a "root" subnode
- Fix: more precise pattern matching in Grammar Language
- Fix: improved highlight scopes for Grammar Language
- New: "pattern" property on nodeType to support any type of "fix" notation: prefix, postfix, etc.
- New: polymorphism and symbol tables via enumFromCellTypes
- New: Grammar Language now uses suffix notation instead of prefix notation for root node types.
- New: in Grammar Language instead of
nodeType person
now dopersonNode
and instead ofcellType int
dointCell
- New: findAllWordsWithCellType and findAllNodesWithNodeType methods in Grammar Programs which are like our versions of "findAllReferences"
- New: getAllTypedWords method in Grammar Programs
- Fix: removed all "grammarPath" 2nd params to new jtree.GrammarProgram(grammarCode, gammarPath), since it is no longer used.
- Breaking: Javascript code and compiler nodes that previously referred to cellTypes that have been renamed, must be updated manually
- Breaking: Javascript code that previously referred to nodeTypeIds that have been renamed, must be updated manually (check uses of getChildInstancesOfNodeTypeId and doesExtend)
- Breaking: lineHints string is different
- Breaking: enumFromGrammar is now enumFromCellTypes and accepts any cellTypeId
- Breaking: cellTypes that ended in "Word" now end in "Cell".
- Breaking: removed public "getFirstWordMap" method.
- Breaking: removed "updateNodeTypeIds" method. Use findAllWordsWithCellType and findAllNodesWithNodeType
- Breaking: use createParser() instead of getNodeConstructor
- New: compiled nodejs grammar files are now executables and accept an input filepath
- Fix: switched all hashbangs to "#! /usr/bin/env node" for better cross platform support
- New: root nodes can now extend other root nodes for easier grammar combinations and extensions
- New: the empty Grammar "" is now a valid Grammar and works properly
- New: the default catch all node for Grammar Backed Languages is now Blob Node, and not Error Node
- Fix: now the empty Grammar language returns a forgiving grammar by default.
- Fix: now an empty nodeTypeId won't break the grammar parser
- Fix: fixes for Download Bundle command
- Breaking: getConcreteAndAbstractNodeTypeDefinitions is now getValidConcreteAndAbstractNodeTypeDefinitions
- Breaking: the empty Grammar is now valid. Should not break anything but could allow for code removal.
- Breaking: removed getTheAnyLanguageRootConstructor(). Just use the empty grammar now.
- Breaking: the default catch all node is now Blob node, not error node.
- New: added "infer" button to Grammar Builder
- Fix: polyfill flat method
- Fix: CLI fixes
- Infra: upgrade version script
- Fix: changed browser target to es2016 to fix the "flat" bug in Linux Chrome
- Breaking: no more "constants" or "nodeTypeMap" exports in compiled. Now 1 export per grammar, of root language node. You can still access the others via that.
- Breaking: removed runTimeFirstWord methods. Now that grammars are compiled, just use normal firstWord methods.
- Breaking: removed unused getTheGrammarFilePath method
- Breaking: compile to node/browser now saves a lang named "foo" to "foo.browser.js" instead of "fooLanguage"
- Fix: prettify grammar files multiple inheritance sort fix and added regression test
- Fix: getErrorsInGrammarExamples now prints correct source line where errors occur
- Fix: fixed bug and added test where inScope was not extending correctly
- Infra: removed dead code
- Infra: compiled grammars are now much less code and rely on native JS class tree
- Infra: compiled grammar vs runtime code paths are largely merged
- New: getParseTable method on Grammar backed programs
- New: CLI "parse" command
- Fix: fixed blobNode and errorNode regressions
- Breaking: removed getDoc
- Breaking: no longer export BlobNode or ErrorNode
- Breaking: toFormattedTable now adds ellipsis ("...") when columns overrun limit
- Breaking: removed toNodeJsJavascriptPrettier and toBrowserJavascriptPrettier. Use compileGrammarForNodeJs and compileGrammarForBrowser w/prettier param instead.
- Infra: fixed 2.5x test speed regression and got them back down to 2s
- New: added "joinChildrenWith" word to compiler nodeTypes in grammar language
- New: added "dug" language which compiles to JSON
- New: improved documentation for grammar compiler nodeTypes
- New: in compiler nodes, and generated classes, you can now access the firstCellType in this.cells just like other cells
- Fix: fixed bugs in runtime extended nodeType constructor loading
- Breaking: rarely used listDelimiter compiler property in Grammar Language is now "catchAllCellDelimiter"
- Breaking: Terminal vs NonTerminal nodeTypes are now determined by duck typing. Use GrammarBackedNonRootNode in place of those now.
- New: much easier way to do Grammar Composition => simple concatenate strings & define a new nodeType as root!
- Breaking: removed newFromCondensed method, which became a noOp. Use new GrammarProgram(grammarCode, grammarPath) instead
- Breaking: removed "grammar" root node type in GrammarLanguage. Add a "root" property to a nodeType for the new root node.
- Breaking: instead of "{grammarName}ProgramRoot" as the root class, the root class is now just "grammarName"
- Breaking: paths to shipped language program constructors are now like "fire.js" instead of "FireProgram.js"
- New: doesExtend and getChildInstancesOfNodeTypeId methods on Extendible nodes
- New: GrammarUpgrader additions
- Infra: refactor of Swarm/Stamp/Project/Jibberish/Stump to be 1 file.
- Breaking: no more "constructors" node for nodeTypes or root programs.
- New: "match" keyword in Grammar Language to use if you have a non-alphanumeric keyword as the first word match
- New: "reservedWords" attribute on cellTypes in Grammar Language
- Breaking: removed "abstract" nodeType in Grammar Language. now its a property of nodeType
- Breaking: compileGrammar method is now compileGrammarForNodeJs and compileGrammarForBrowser
- Breaking: nodeTypeId's now can only be alphanumeric
- Breaking: nodeTypeId's are now identical to the generated Javascript class names. Some nodeTypeIds are now reserved and those now require using a "match" node
- Breaking: cellTypeId's now can only be alphanumeric
- Breaking: constants in Grammar Language alphanumeric
- Breaking: removed "group" property on abstract nodeTypes. To achieve the same affect use a build script.
- Breaking: "constructors" now no longer take a class name. The class name must be identical to nodeTypeId.
- New: /sandbox/build/ => refactored Tree Language IDE
- New: added "New" simple grammar language template
- New: added deep linking to /sandbox/build/
- Breaking: removed undocumented BackupConstructor feature as IDE should no longer need it
- Fix: stump compile fix
- New: appendNode, select, where, limit, first, last, and print methods
- New: simplified compile method to take 0 params
- New: refactored Fire language
- New: compilesTo property on grammar node in GrammarLanguage
- New: perf fix for compiled languages
- Fix: fire grammar fixes
- Fix: compilation open and close children fixes
- Breaking: you can now only have 1 target compilation language per grammar. If you want multiple targets just extend the grammar.
- Breaking: "sub" compiler property is now "templateString"
- Breaking: Fire experimental language changed a lot
- Breaking: for internal use only makeGraphSortFunction util function is now _makeGraphSortFunction and method signature changed
- New: todos in swarm
- Fix: escaping backslash fix for compiled files
- Infra: more testing of compiled code
- Breaking/Fix: moved getLineHints back to definition node
- Fix: extension bug in classes with more than 1 ancestor
- Breaking: getNodeTypeDefintions is now getConcreteAndAbstractNodeTypeDefinitions
- Fix: extends now works correctly
- New: added "todo" nodeType to grammar language
- New: added "extends" keyword in place of previous one line method
- Breaking: instead of "nodeType/cellType foo extendsFoo" now do "nodeType foo\n extends extendsFoo"
- Fix: support for mutliline strings in getConstantsObject
- New: restored getConstantsObject on definition nodes
- Fix: backtick escaping in getter generation
- Fix: migrate constants in grammar updater
- New: dump generated code for more information when something goes wrong
- Fix: fixed require bug
- Warning: this was a major refactor that may have introduced new bugs, so if using please be ready to ping me with bug reports
- New: ability to compile grammar files to Javascript
- New: grammar sandbox now has "download bundle"
- New: Upgrader class for making Tree Language upgrades easier
- New: added support for "tooling" directives in Grammar language
- New: getFirstNode method
- New: getNodeTypeId on NonRootRunTime nodes
- New: findNodes in base can now take an array of first words
- New: "nodeType javascript" property
- New: add custom javascript to rootNodeTypes in grammar files
- Breaking: stamp.js script is now stamp.cli.js
- Breaking: removed "defaults" from grammar
- Breaking: avoid getDefinition() when possible--use methods on nodes directly: getConstantsObject, getNodeTypeId, getLineHints,
- Breaking: removed getExpectedLineCellTypes--use getLineHints
- Breaking: nodeTypes in grammar is now "inScope", and is one line instead of parent/children
- Breaking: removed unused isLeafColumn, _getDuplicateLinesMap(), _getFirstWordByIndex, toFlatTree
- Breaking: fromJson is now fromJsonSubset and toJson is now toJsonSubset
- Breaking: deprecating getExpanded. Now renamed to _expandChildren and now has a 3rd parameter.
- Breaking: removed getCompiledProgramName
- Breaking: getAncestorNodeTypeNamesArray is now getAncestorNodeTypeIdsArray
- Breaking: getCatchAllCellTypeName is now getCatchAllCellTypeId
- Breaking: getRequiredCellTypeNames is now getRequiredCellTypeIds
- Breaking: getRunTimeNodeTypeNames is now getRunTimeFirstWordsInScope
- Breaking: removed getProgramErrorMessages. Use getAllErrors
- Breaking: getFirstCellType is now getFirstCellTypeId
- Breaking: getProgram() is now get getRootProgramNode and getProgram on grammar programs is getLanguageDefinitionProgram
- Breaking: getGrammarProgram is now getGrammarProgramRoot
- Breaking: getParsedWords removed
- Breaking: getCellTypeName is now getCellTypeId
- Breaking: getCellTypeDefinition is now getCellTypeDefinitionById
- Breaking: getNodeTypeDefinitionByName is now getNodeTypeDefinitionByNodeTypeId
- Breaking: getProgramErrors is now getAllErrors, getProgramErrorsIterator is now getAllErrorsIterator
- Breaking: getCompiledIndentation, getCompiledLine, getCompilerNode are now protected
- Breaking: removed "nodeType constructors javascript" in GrammarLanguage. Use "nodeType javascript" directly.
- Breaking: no more getConstantsObject. No more "constants". Instead use "nodeType > boolean|int|string|float id value...". Adds getters to generated nodeType classes.
- Breaking: in GrammarLanguage, use "stringCell" instead of "string", "intCell" instead of "int", "floatCell" instead of "float"
- Breaking: no more "ErrorNode", "BlobNode", "Terminal/NonTerminal" built in constructors. BlobNode is no longer exported. Now use "baseNodeType" to specify a base node type.
- Breaking: the nodeType name for each nodeType is now based on the nodeTypeId. It is no longer TerminalNode, NonTerminalNode, etc.
- Regex for finding breaks in untyped code: \b(defaults|getExpectedLineCellTypes|nodeTypes|isLeafColumn|_getDuplicateLinesMap|_getFirstWordByIndex|toFlatTree|fromJson|toJson|getExpanded|getCompiledProgramName|getAncestorNodeTypeNamesArray|getCatchAllCellTypeName|getRequiredCellTypeNames|getRunTimeNodeTypeNames|getProgramErrorMessages|getFirstCellType|getProgram|getGrammarProgram|getParsedWords|getCellTypeName|getCellTypeDefinition|getNodeTypeDefinitionByName|getProgramErrors|getCompiledIndentation|getCompiledLine|getCompilerNode|getProgramErrorsIterator)\b
- Fix: Node.js fix for _getNow and renamed to _getProcessTimeInMilliseconds
- Fix: Stump div is now no longer an inputType unless it has contenteditable
- New: Added BlankLineError type.
- New: Added inline syntax highlighting with error correction suggestions to grammar sandbox.
- New: Added parameters hints for nodeTypes with required cells in codeMirror
- New: enabled using backup constructors in browser to allow Grammar Sandbox without access to constructor files
- New: ErrorType messaging improvments
- New: standardized error messages with suggested fixes!
- New: added deleteWordAt method
- Fix: minor fixes to grammar sandbox and updated to use new error message code
- Breaking: interface of errors changed, so code that uses getErrors, getErrorsInGrammarExamples, or getProgramErrors needs to change
- Infra: refactored "types" file into "jTreeTypes"
- Infra: removed unneeded npm packages
- Infra: fixed TypeScript browser target build issues
- New: extraWord syntax highlighting
- New: improved syntax highlighting for Hakon, Stump, and others
- New: getAncestorNodeTypeNamesArray method on definition nodes
- New: getNodeTypeFamilyTree method on grammarPrograms
- New: setWords, setWordsFrom and appendWord methods on base tree
- New: targeting es2017
- Fix: sandbox onload fix
- Fix: fix for updateNodeTypeIds recursion bug
- New: updateNodeTypeIds method
- New: Swarm files now no longer require a root level setup node.
- Infra: added prettier config to package.json
- Breaking: in Swarm, createTestDummy is now getTestSubject
- Breaking: Swarm grammar changed. Use code below to update programs:
swarmProgram.updateNodeTypeIds(
#setup arrangeTestSubject %%| constructWithBlockString %| blockStringParam =# lengthIs =+ stringIncludes =- stringExcludes == stringIs =| blockStringIs =~ typeIs #test test +#test testOnly -#test skipTest
)
- New: executeFiles method
- New: 50% speed improvement in getExpanded and extend and GrammarProgram.newFromCondensed
- Breaking: getGraphByKey is now getAncestorNodesByInheritanceViaExtendsKeyword
- Breaking: getGraph is now getAncestorNodesByInheritanceViaColumnIndices
- Fix: sublime syntax regression fix
- Fix: small lang regression fixes
- Breaking: highlightScope is now defined only on cellTypes (no longer on nodeTypes)
- Breaking: "any" grammar nodeType property is now "blob", and jtree.AnyNode is now jtree.BlobNode
- Breaking: grammars should all define a "cellType any" if they have leave any firstCellTypes undefined
- Breaking: getKeyword is now getFirstWord, getKeywords is getFirstWords, hasDuplicateKeywords is now hasDuplicateFirstWords, setKeyword is now setFirstWord, getKeywordPath is getFirstWordPath, pathVectorToKeywordPath is pathVectorToFirstWordPath, getKeywordMap is getFirstWordMap, keywordSort is firstWordSort
- Breaking: in grammar, keyword is nodeType, catchAllKeyword is catchAllNodeType, keywords is nodeTypes, keywordOrder is nodeTypeOrder
- Breaking: def.getId() is now def.getNodeTypeIdFromDefinition(), def.getTopNodeTypes is now def.getTopNodeTypeIds, def.getKeywordDefinitionByName is now def.getNodeTypeDefinitionByName, def.getRunTimeKeywordMap is now def.getRunTimeFirstWordMap, def.getRunTimeKeywordNames is def.getRunTimeNodeTypeNames, def.getRunTimeKeywordMapWithDefinitions is def.getRunTimeFirstWordMapWithDefinitions, def.isOrExtendsAKeywordInScope is def.isOrExtendsANodeTypeInScope, def.getKeywordInheritanceSet is def.getNodeTypeInheritanceSet, def.getSyntaxContextId is def.getSublimeSyntaxContextId
- Breaking: program.getKeywordDefinitions is program def.getNodeTypeDefinitions, program.getKeywordUsage is now getNodeTypeUsage, program.getKeywordDefinitionByKeywordPath is program.getNodeTypeDefinitionByFirstWordPath, program.getInvalidKeywords is program.getInvalidNodeTypes, program.getInPlaceSyntaxTreeWithNodeTypes is program.getInPlaceCellTypeTreeWithNodeConstructorNames, program.getInPlaceSyntaxTree is now program.getInPlaceCellTypeTree
- Breaking: in stump, findStumpNodeByKeyword is now findStumpNodeByFirstWord
- Breaking: getLineSyntax is now getLineCellTypes
- Breaking: instead of FireProgram.js do Fire.js Program and same for Hakon and Numbers and Project and Stump and Swarm
- Breaking: jtree.program is now jtree.programRoot
- Breaking: renamed root program lang nodes so things like StumpProgram now refer to the grammar generated constructor and StumpProgramRoot to the program root instance
- Breaking: instead of "index.js" files in the langs packages, we now have FireProgram.js, HakonProgram.js, ProjectProgram.js, StampProgram.js, StumpProgram.js, and SwarmProgram.js
- Fix: missing constant
- New: expand will append rather than set if a node is obviously not a map
- New: Hakon, Stump and Fire languages moved into this repo, monorepo style
- New: wrote grammars for Hakon and Stump
- New: getNodesByGlobPath, every, hasLine, getNodesByLine, toggleLine methods
- New: combineFiles method in node version with glob patterns
- New: compile and execute button in grammar sandbox
- New: basic browser module constructor loading in grammar sandbox
- Fix: better reset functionality in grammar sandbox
- Breaking: getChildrenByNodeType is now getChildrenByNodeConstructor
- Breaking: extend now throws if attempting to extend with a non-map. Better solution to come.
- Breaking: removed combine.js script
- Breaking: GrammarProgram.predictGrammarFile is now new UnknownGrammarProgram(input).getPredictedGrammarFile()
- Breaking: instead of title or style tags in Stump use "titleTag" or "styleTag" to overcome the inherent attribute/tag html name conflict.
- Breaking: no more @ prefix in Stump
- Breaking: for Stump collapseNode, just have it, don't set it to "true"
- Breaking: fire has been refactored a bit
- New: getRunTimeEnumOptions method allows for run time autocomplete and run time validation
- New: autocomplete for grammar cellTypes
- New: grammar name keyword
- New: cells property on grammar non-root runtime nodes
- New: makeGraphSort function. Also now used in grammar file prettification
- Breaking: in grammar language: wordType to cellType, columns to cells, catchAllColumn to catchAllCellType
- Breaking: removed ability in grammar files to have a wordType and keyword share the same name
- Breaking: getGraph now requires a uniqueId column. Throws if you attempt to extend a non-unique id
- Breaking: instead of "grammar grammarName" oneliner now use the grammar name keyword
- Breaking: removed parseWith cellType property
- Breaking: removed jtree.getLanguage. Instead do require('.../langs/...').
- Breaking: in grammar keywordTable now enumFromGrammar
- Fix: all word types now have default regex of [^ ]* so no need to specify it
- Fix: grammar code cleanup
- Fix: small fixes to grammar sandbox
- Infra: repo folder cleanup
- New: simpler grammar files (no more @ prefix)
- New: catchAllColumn grammar keyword
- New: new methods shiftLeft, shiftRight, shiftYoungerSibsRight, split
- New: new methods keywordSort, getPrettified
- New: new method getCatchAllCellTypeName
- Breaking: the "@" prefix on grammar keywords has been removed
- Breaking: for catch all columns use catchAllColumn instead of *
- Breaking: getNodeColumnTypes is now getRequiredCellTypeNames
- Breaking: autocomplete help now only gets description and does not fall back to showing required columns
- Breaking: removed getNodeColumnRegexes method
- Fix: codeMirror autocomplete will now close if 1 option matching input text
- Fix: fixed 0 autocomplete results when at position 0,0 on a blank line
- Fix: fixed codeMirror bug in long documents
- New: @example keyword in grammar
- New: getErrorsInGrammarExamples method on GrammarProgram
- New: getKeywordInheritanceSet method
- Fix: better error handling for incomplete grammars
- Fix: grammar checking of grammar files now only checks constructors if in correct env
- New: autocomplete for words beyond keywords
- New: new base methods nodeAtLine, getNodeInScopeAtCharIndex, getWordIndexAtCharacterIndex, getWordProperties, getWordBoundaryIndices, getAllWordBoundaryCoordinates
- New: on runtime programs: getAutocompleteWordsAt and getAllSuggestions
- New: getAutocompleteResults now provides descriptions, if present, along with completion word
- Fix: error highlight scope fixes
- Breaking: instead of getAutocompleteWords use getAutocompleteWordsAt
- Fix: grammar sandbox bug on first visit
- New: @highlightScope is now an enum for better checking and autocomplete
- New: CodeMirror now uses @highlightScope for styles.
- Fix: we sort @enum options to now match largest hit first
- Fix: fixed cache bug in @keywordTable
- Breaking: CodeMirror now uses @highlightScope for styles so colors may have changed.
- New: custom constructors can now specify a "." nested path to the JS constructor
- New: added error printing in Grammar sandbox
- New: CodeMirror support
- New: Tree Language Sandbox webpage using CodeMirror
- New: in Grammar files we now have support for different constructors for node and browser environments
- Breaking: in grammar files @constructor is now @constructors. Browser and nodejs constructors must be specified separately.
- New: very basic toYaml method
- New: more TypeScript typings
- New: more TypeScript typings
- Fix: added "types" field to package.json
- New: now with d.ts files
- New: basic .sublime-syntax file generation works. Scopes not yet integrated.
- New: added gen command to cli.js for generating syntax files
- New: added @highlightScope property to @keyword and @wordType in grammar language
- New: added @required feature to grammar with appropriate error messages
- New: added @single feature to grammar with appropriate error messages
- New: added @tags feature to grammar
- Breaking: @wordType > @regex with
.?
should now be.*
- Breaking: in @wordType > @regex now all @regex are enclosed by ^$ automatically
- Breaking: AbstractGrammarDefinitionNode: getDefinitionByName is now getKeywordDefinitionByName
- Breaking: _isOrExtendsAKeywordInScope is now isOrExtendsAKeywordInScope
- Fix: added support for constructors with nested paths in grammar languages in browser
- Fix: added support for spaces in filenames in langs-project
- Fix: circular array check false positives when creating tree from Javascript object.
- Breaking: getCatchAllNodeClass is now getCatchAllNodeConstructor
- Breaking: getRunTimeCatchAllNodeClass is now getRunTimeCatchAllNodeConstructor
- Fix: catchAllKeywords can now instantiate a custom class
- New: checking a grammar programmatically now throws an error a constructor path in a grammar file does not exist
- Infra: added tap-mocha-reporter for clearer test run output
- Breaking: In TreeNode, parseNodeType is now getNodeConstructor
- Breaking: jtree.getParser is now jtree.getProgramConstructor
- Breaking: In .grammar files @parser is now @constructor
- Breaking: In grammar JS getParserClass is now getDefinedConstructor
- Breaking: In grammar JS getRootParserClass is now getRootConstructor
- New: moved BrowserScript and swarm, project and stamp languages into this project to avoid circular dependencies
- New: (temporary) getLanguage method for accessing included languages
- New: error message when you have an inheritance loop in grammar file
- Fix: line number error message regression fix
- Infra: minor CLI app refactor
- Fix: minor migration fix
- Infra: migrated to TypeScript
- New: for convenience added map, forEach, filter, find and slice methods aliasing getChildren().map ...
- New: sortByColumns method
- New: predictGrammarFile method
- New: getInvalidKeywords method
- New: @abstract keyword in grammars
- New: @any keyword in grammars
- New: any, bit, bool, float, int default word types
- New: toDisk method in node.js version
- New: getOneHot method
- New: deleteColumn method
- New: getColumnNames method
- New: isBlankLine method
- New: isEmpty method
- New: deleteChildren method
- New: deleteDuplicates method
- New: deleteBlanks method
- New: getNodesByRegex method
- New: fromShape method
- New: getFiltered method
- New: added sample of iris dataset to static TreeNode for handy testing and exploring
- Fix: renameAll fix
- Breaking: getExpanded - if multiple parent nodes match, getExpanded will extend node with matching keyword
- Breaking: getProgramErrors() is now getProgramErrorMessages(). getProgramErrors() now returns err objects
- Infra: makeRandomTree method & updates to perf test pages
- Infra: Default sandbox port now 3333
- New: added getNumberOfLines() method
- Perf: GrammarProgram speedup 20%+
- Perf: getProgramErrors speedup 10x+
- Perf: toString speedup 5%+
- Perf: 10x+ faster typechecking of "any" nodes
- Perf: 60% faster typechecking of other types
- Perf: 50% faster parsing for large trees
- Infra: sandbox cleanup
- New: added getProgramErrorsIterator() method
- New: experimental _getSyntaxTreeHtml() method
- Fix: setChildren wasn't clearing cache
- Fix: findNodes wasn't recursing
- Fix: Chrome wasn't always monotonically increasing perf.now due to precision
- New: added toDataTable and fromDataTable methods
- New: added getSlice method
- New: added set method (to revert to original get/set behavior)
- Breaking: renamed findBeam to get
- Breaking: renamed getBeam to getContent
- Breaking: renamed getBeams to getContentsArray
- Breaking: removed undocumented getRest method
- Infra: renamed "garden" to "sandbox" for clarity
- Infra: moved "papers" to one folder
- Fix: Fix for browsers removing monotonically increasing perf.now
- New: getChildren() now returns a copy of array enabling in loop deletes
- Infra: removed dead code
- New: standardized error messages into a grammar
- New: @parseWith wordType property
- New: added @enum wordType
- New: added toMarkdownTable methods
- New: getNodesByLinePrefixes method
- New: cases cli command
- New: added macroExpand method
- New: hasWord method
- New: added @version keyword to grammar
- Infra: renamed TreeGrammar.grammar to grammar.grammar
- Infra: removed ohayo constants
- New: split check into check and checkAll commands
- New: compile cli command can now take a target extension
- Infra: Moved dependencies to devDependencies
- Breaking: renamed otree to jtree
- Breaking: Tree Grammar switched to @wordType nodes for defining word types, no more implicit types
- Breaking: replaceNode now returns an array
- Fix: bug fix in getExpanded
- New: insertWord method
- Fix: fixes to usage reports
- Breaking: renamed getBeamParameters to getNodeColumnTypes
- Breaking: getWordTypeLine is now getLineSyntax
- Breaking: getProgramWordTypeString is now getInPlaceSyntaxTree
- New: getTreeWithNodeTypes and getInPlaceSyntaxTreeWithNodeTypes methods for inspecting the parse
- Breaking: grammar file grammar change, first node should be @grammar, keywords should be @keyword
- Breaking: getGraph now takes 2 params, use getGraph(0, 1) for previous behavior
- Breaking: getExpanded now takes 2 params, use getExpanded(0, 1) for previous behavior
- New: getNodeByColumn method
- New: appendLine method
- New: insertLine method
- Breaking: append is now appendLineAndChildren
- Breaking: insert is now insertLineAndChildren
- Breaking: prepend is now prependLine and takes only 1 param
- Breaking: copyTo now requires second arg
- Breaking: toOutline now takes 0 args. use toMappedOutline to pass a mapping fn
- Breaking: fromCsv, fromSsv, fromTsv no longer take optional hasHeaders param. Use new fromDelimitedNoHeaders
- Breaking: fromDelimited now requires quoteChar param
- Breaking: toTable now accepts 0 params, use toFormattedTable to pass params
- Breaking: getPoint now takes no params, use getPointRelativeTo; getPathVector => getPathVectorRelativeTo
- Breaking: getKeywordPath now takes no params, use getKeywordPathRelativeTo
- Breaking: getStack, getRootNode now take no params
- Breaking: getWords now takes 0 params. use getWordsFrom
- Breaking: use getGraphByKey to getGraphByKey
- New: export GrammarProgram
- Breaking: getGrammarUsage is now getKeywordUsage
- Breaking: removed undocumented getNodeClasses, run, and getErrorCount methods
- New: added support for putting multiple parse nodes in one file
- Infra: TestCoverage 90.44% Smt 2137/2363 72.32% Brnch 384/531 85.37% Fn 496/581 91.89% Loc 2017/2195
- Infra: updated ProjectLang
- Fix: path fixes
- Breaking: otree.getProgramClassFromGrammarFile is now otree.getParser
- Breaking: otree.AbstractGrammarBackedProgram is now otree.program
- Fix: path and other fixes from otree move
- Breaking: renamed TreeProgram to otree
- Infra: rearranged code into base node and grammar backed folders
- New: started Tree Garden web console
- Fix: Fixed create command line tool
- Fix: parsing top level program class fix
- Fix: getNodeByColumns now works when search and target have different # of columns
- Infra: started tests for console, static, and grammar classes
- Fix: static method path bug fixes
- New: getNodeByColumns method
- Breaking: grammar file is now primary file, use static getProgramClassFromGrammarFile method to create a VM/compiler
- Breaking: languages.tree => grammars.tree
- Breaking: grammars.tree now points to grammar files, not index files
- Breaking: TreeProgram.getGrammarErrors => TreeProgram.Tools.getGrammarErrors
- Breaking: TreeProgram.executeFile => TreeProgram.Tools.executeFile
- Infra: cleanup for making grammar files source of truth
- New: refactored Tree Grammar to support compiler-compilers and vms in languages other than ES6
- Breaking: "@parseClass" => "@constructor js"
- Fix: @ char is now acceptable in filepaths
- New: support for multiple compile targets
- New: CLI history command can show all history
- New: CLI check command now alternately accepts a language extension to check a collection
- Breaking: @targetExtension => @compiler, @compiled => @sub, @compiledIndentCharacter => @indentCharacter
- Breaking: @sub, @indentCharacter, @listDelimiter, @openChildren, @closeChildren moved under @compiler
- Breaking: compile method now requires a target extension
- Infra: renamed slot types to columnTypes and better error messaging for when graph expansion fails
- Breaking: renamed @parameters to @columns in Grammar Tree Language
- New usage command line tool
- New getGrammarUsage method
- Fix: init the languages and history file on cli first use
- Infra: added a tiny bit of documentation to readme
- New: added getNodeClasses method to TreeProgram to support multiple node classes in 1 file
- Fix: expose TerminalNode and NonTerminalNode in browser distribution
- New: replaceNode method
- New: getSiblings, getYoungerSiblings, getOlderSiblings methods
- New: export TreeTerminalNode class
- Infra: minor cleanup of cli app
- Infra: recursive dependency fix and console code cleanup
- New: support absolute paths in grammar files
- New: export TreeNonTerminalNode class
- New: support for relative paths in grammar files
- Breaking: renamed fixedWidthTable method to toTable and changed default to left aligned.
- Fix: fixed browser version
- New: Create new Tree Languages using a tree grammar file
- New: Tree Console app
- Breaking: ImmutableNode no longer exposed on TreeProgram
- Breaking: for use in browser, now use treeprogram.browser.js instead of treeprogram.js
- Infra: prep work for grammar and blaze library merger -- consoleApp and src directory
- New: getErrors and getWordTypeLine methods
- Fix: fix for executeFile static method when more than one #! line.
- Breaking; Symbol is now Keyword throughout. Same changes at 7.0.0, except substitute keyword for symbol.
- Breaking: getNodeTypes is now getSymbolMap
- Breaking: getDefaultNodeType is now getCatchAllNodeClass
- Breaking: getBase is now getSymbol
- Breaking: getBasePath is now getSymbolPath
- Breaking: getBases is now getSymbols
- Breaking: pathVectorToBasePath is now pathVectorToSymbolPath
- Breaking: setBase is now setSymbol
- New: added executeSync method
- Docs: removed outdated ETNs
- Infra: switched to Tap from Tape to get code coverage working again with nyc
- Fix: bug fix in getCMTime
- New: added getExpanded method
- New: added getDefaultNodeType and getNodeTypes methods
- New: added default compile method
- Fix: updated outdated code in readme
- Breaking: Renamed TreeNotation to TreeProgram.
- Breaking: github is now at breck7/treeprogram
- Breaking: npm install treenotation is now npm install treeprogram
- Fix: fixed timing bug in getTreeMTime
- New: getWord can now take a negative int
- New: added static method executeFile and cli.js
- Fix: child nodes can now inspect their parent's line at parse time to enable dependent types
- Fix: stale index when using setLine or setBase methods
- Breaking: base execute now returns a Promise.all that resolves when all children have resolves
- Added getIndentation method
- Added getTreeMTime method
- Breaking: getMTime now always returns a number (previously it could return undefined). Initializes lazily on first call.
- Added nest static method
- Added getInheritanceTree method
- Added "relativeTo" parameter to: getPoint, isRoot, getRootNode, getStack, getStackString, getBasePath, getPathVector
- Bug fix: getBasePath works
- Breaking: getWI is now getZI for consistency with X,Y,Z convention.
- Breaking: getHead is now getBase
- Breaking: setHead is now setBase
- Breaking: pathVectorToPathName is now pathVectorToBasePath
- Breaking: getPathName is now getBasePath
- Breaking: getTail is now getBeam
- Breaking: setTail is now setBeam
- Breaking: findTail is now findBeam
- Breaking: pushTailAndChildren is now pushBeamAndChildren
- Breaking: getTailWithChildren is now getBeamWithChildren
- Breaking: setTailWithChildren is now setBeamWithChildren
- Breaking: getTails is now getBeams
- Added setWord method
- Bug fix in getPoint method
- Breaking: removed toJavascript method on base class.
- Reverted last.
- Fix so Hakon works in browser
- Added HTML, CSS and Unit Testing ETNs (I named them Bray, Hakon, and Wall).
- Breaking: removed _getSize if any ETNs were using that
- Breaking: changes some output classes in toHtml() method
- getWords() now takes an optional starting WI location
- Final version of paper, mistakes and all.
- Breaking: getAncestorNodes is now getStack
- Added getStackString method
- getGraph method now also takes 0 params, in which case it uses word1.
- Added getGraph method
- Breaking: Removed TreeNode.ExecutableTreeNode. TreeNotation now has execute method by default.
- Breaking: getWord now ignores getSize. In fact, we'll probably ditch getSize.
- toOutline now takes an optional mapping fn
- setTailWithChildren Regression fix.
- Fix for closure compiler
- setChildren regression fix
- ETN parsing regression fix
- Breaking: expose TreeNotation now and not TreeNode
- Breaking: TreeNode.ExecutableTreeNode is now TreeNotation.ExecutableETN
- Breaking: TreeNotation.ImmutableTreeNode is now TreeNotation.ImmutableNode
- Fixed regression introduced in 3.6 in ETN parsing in parseString method
- Updated readme with an ETN example
- Breaking: parseNode is now parseNodeType and only takes a line param.
- Breaking: getMTime() now returns undefined if the node hasn't been modified.
- Added more laziness to get a ~2.5x improvement in parse time. Parses about ~1M loc of basic TN a sec on test machine
- Added getChildrenByNodeType method
- Expose a simple ExecutableTreeNode class
- Fixed bug when initiating from an ETN
- Added getNext and getPrevious methods
- Added getPoint method
- Breaking: changed parseNode method to just return the new node class.
- Breaking: removed reload method
- Breaking: in the toHtml() method, the child nodes div now has class nodeChildren instead of nodeTree
- Breaking: pushTailAndTree is now pushTailAndChildren
- Added getMTime method
- Breaking: removed moveTo method. Use the new copyTo method follow by destroy.
- Breaking: destroy no longer returns the detached node.
- Experimental: expose ImmutableTreeNode
- Improvements to _parseNode(), increased test coverage, and reduced test code size
- Regression fix in extend method
- Breaking: removed every() method
- Added getTopDownArray (preorder), getChildrenFirstArray (postorder), getParentFirstArray(breadth first) methods
- Added findTail method
- Breaking: merged all subclasses into one TreeNode class.
- Breaking: getNodes is now getChildren
- Breaking: setName > setHead, setValue > setTail, getName > getHead, getValue > getTail
- Breaking: getNames > getHeads, getValues > getTails, setValue > setTail
- Breaking: removed seed methods
- Breaking: removed findTrees and findValues methods
- Breaking: removed tree next and prev methods
- Breaking: removed tree setText...do tree.touchNode().setTailWithChildren(text)
- Breaking: removed tree setTree...do tree.touchNode().setChildren()
- Breaking: removed tree setTail...do tree.touchNode().setTail()
- Breaking: removed tree getTail...do tree.getNode(path).getTail()
- Breaking: removed tree getTree...do tree.getNode(path).getTree()
- Breaking: removed tree getText...do tree.getNode(path).getText()
- Breaking: node setTree is now node setChildren
- Breaking: append now takes only 2 params, line and tree.
- Breaking: appendLine is now just append
- Breaking: getAncestorTrees is now getAncestorNodes
- Breaking: getText now getTailWithChildren
- Breaking: removed getTrees method.
- Breaking: removed tree clear method.
- Breaking: removed node initTree
- Breaking: removed treeAt method
- Breaking: insert now takes line and not head and tail params
- Breaking: pushValue is now pushTailAndTree
- Breaking: prepend method now takes line and not head and tail params
- Added insertNode public method
- Bug fix: toString no longer returns an empty line after you delete last node in a nested tree
- Breaking: created abstract classes and language classes. PairTree = require("treenotation").PairTreeLanguage.PairTree
- Breaking: fromCsv and other from methods are now static methods on PairTreeLanguage, not PairTree.
- Dist npm fix
- Started using Prettier
- Swapped out Browserfy in favor of simple express router transform flow
- Created tasks folder in place of npm scripts
- Code cleanup: turned helper methods into statics
- Added getAncestorTrees method to node.
- Added getRootTree method to node.
- Breaking: extend method on PairTree is now recursive.
- Bug fix: fixed uncaught error when parsing malformed delimited input
- Breaking: in base and pair, values are now converted to strings. Use a higher level language to preserve types.
- Added prepublish hook
- Bug fix in node.setTree method
- NPM bundle fix
- Made TreeNotation the root namespace and separated PairTree out as a sublanguage
- Breaking: new Tree() now needs to be new TreeNotation.PairTree() or just add a Tree = TreeNotation.PairTree
- Breaking: node.getPath is now node.getPathName
- Brecking: indexPathToNamePath is now pathVectorToPathName
- Breaking: node.getNodeParentTree is now node.getParentTree
- Breaking: tree.push is now tree.pushValue
- Breaking: removed tree.toggleValue
- Breaking: tree.toFixedWidth is now tree.toFixedWidthTable
- Breaking: node.getIndexPath is now node.getPathVector
- Breaking: removed tree.deleteNodeAt
- Breaking: tree.getTrees() no longer accepts a parameter.
- Breaking: tree.getValues() no longer accepts a parameter.
- Breaking: in html returned from tree.toHtml(), data-path is now data-pathVector
- Breaking: fromDelimiter is now fromDelimited
- Removed gulp devDependency. Switched to browserify.
- Removed package.tree and fixed gulp version update script
- Breaking: append, insert, prepend, push, and shift now return the new Tree Nodes.
- Breaking: Removed each method
- Added moveTo method on TreeNode
- Added isTerminal, fromSeed, seedToTree, invert, remap, and toSeed methods
- Version number generator fix.
- Bug fix in node.setFromText
- Added extend method
- Initial release