Skip to content

Latest commit

 

History

History
614 lines (474 loc) · 32 KB

CHANGELOG.md

File metadata and controls

614 lines (474 loc) · 32 KB

Change Log

All notable changes to this project will be documented in this file. This project does its best to adhere to Semantic Versioning.


0.23.2 - 2021-08-21

Added

  • classSignature.comments parsing and AST output added

0.23.1 - 2021-08-14

Changed

  • Expanded C# and Java field parsing tests

0.23.0 - 2021-06-28

Added

  • Lots of additional unit tests
  • TypeExtractor.isSimpleLiteral() used to determine whether a FieldDef.initializer should be serialized as a literal value "initializer" or an "initializerExpression"

Changed

  • FieldExtractor now parses field default value assignments and returns FieldDef instead of FieldSig (FieldDef contains initializer field)
  • FieldExtractor constructor requires a new 3rd parameter, an OperatorUtil<>
  • ClassAst remove T_ENUM type parameter, enum members in a parsed enum will be represented by T_FIELD
  • FieldDef.initializerToJson() signature changed significantly to support new multiple token initializer expressions
  • AccessModifierParser and AccessModifierEnum removed parseFromSrc(), cleaned up code, added documentation
  • AccessModifierParser tryParseFromSrc(String) and defaultAccessModifier(String, ...) modified to takes List<String> for correctness and to simplify call sites
  • AstExtractor.createFieldParser() and implementations (CsBlock and JavaBlock) now return AstParser<List<FieldDef>> instead of ...FieldSig
  • BlockUtil parseKeyword() and tryParseKeyword() replaced with tryToBlock()
  • CsBlockParser._extractBlocksFromTree() renamed extractBlocksFromTree() (which was already public)
  • AstParser added blockComplete() with empty default implementation, will be called by BlockExtractor

Removed

  • Merged FieldSig and FieldSigResolved into FieldDef and FieldDefResolved

Fixed

  • C# annotation parsing fixed to handle multiple annotations in the same block, i.e. '[Annotation(One), Annotation(Two), ...]'
  • An issue with nested classes/interfaces getting assigned the incorrect access modifiers
  • An issue with complex generic type parsing

0.22.0 - 2021-04-18

Removed

  • ProjectClassSet resolveSimpleName() in favor of moving the two lines of code to the single calling location

Fixed

  • C# full type name resolution fixed to resolve against the parent namespaces the class resides in (affects types in class signatures, method signatures, and fields)
  • Java class signature parsing fixed to support both extends and implements in the same signature (can't believe I overlooked this and didn't have a unit test!)

0.21.0 - 2020-11-26

Parsing performance optimizations (~15-20%)

Changed

  • Update dependencies jtext-tokenizer@0.7.0 and jtext-parser@0.18.0
  • ParserActionLogger and ParseTimes optimizations and changes to work with jtext-tokenizer new TokenizationLogger
  • JavaFileTokenizer, CsFileTokenizer, CommentTokenizer, IdentifierTokenizer, and NumberTokenizer reusable/reusableCharParsers flag implementation to control which CharParserMatchableFactory implementation is used
  • CodeTokenizer.tokenizeDocument() fragmentConstructor parameter optimization to skip creating fragment source string twice, major performance improvement ~5-10%
  • New aggregate performance logging output for text tokenization related counters

0.20.0 - 2020-11-22

Method generic type parameters parsing support (i.e. 'public T Create()' in C#).

Added

  • Method generic type parameters added - MethodSig and sub-classes have a new typeParameters field. Note: if these 'types' contain lower/upper type bounds these are included in the typeName property in Java and are not yet included in C# parsing
    • Added basic unit tests for this new method generic type parameters parsing support
  • AstFragType.isBlock(CodeToken, char) overload for attempted performance optimization

Changed

  • Renamed DataTypeExtractor -> TypeExtractor
  • Added EnhancedListIterator as a replacement for TokenListIterable to try and simplify fragment iteration since it is a fairly hot section of code in most parsing scenarios
  • ParseTimes.TrackerAction enums renamed:
    • LOAD -> READ
    • PARSE -> EXTRACT_AST
  • Update dependency jtext-tokenizer@0.6.0 and code to match
    • Adjustments to new CharParserMatchableFactory() and CharConditions.Identifier.newInstance() calls in IdentifierTokenizer and NumberTokenizer
  • JSON output now excludes empty annotations arrays on fields, methods, and parameters
  • Additional performance log counters added to several methods and printed when performance info is enabled via -debug CLI flag

Removed

  • AstFragType.isType() static method and overloads since they were unused
  • Unused CommentTokenizer.createCommentTokenizerForJava()

Fixed

  • An exception being thrown when resolving class names if a file imported a namespace and also imported a child namespace of the first namespace

0.19.2 - 2020-05-23

Parameter varargs parsing support (i.e. 'int...' in Java).

Changed

  • Update dependency jtext-parser@0.16.0 and jtext-tokenizer@0.4.0
    • Classes combined, class names simplified, and unused classes and methods removed from libraries
    • Code identifier parser now provided by jtext-tokenizer
    • Several bug fixes around compound optional parser conditions
  • Added char[] src, int srcOff, int srcLen parameters to CodeTokenizer.tokenizeDocument()
  • Renamed IdentifierTokenizer newIdentifierTokenizer() to createIdentifierTokenizer()
  • Improved unit tests

Removed

  • IdentifierTokenizer.createIdentifierTokenizer()

0.19.1 - 2020-04-20

Changed

  • Finish CommentAndWhitespaceExtractor and tests for it
  • TextToken interface now includes hashCode() and equals(Object)
    • TextFragmentRefToken now implements hashCode() and equals(Object)
  • Minor code cleanup, use StringSplit.split() with char instead of String where possible

0.19.0 - 2019-07-04

Changed

  • IdentifierTokenizer.createIdentifierWithGenericTypeTokenizer() now takes one parameter int maxGenericTypeDepth
  • Changed CsFileTokenizer.createFileParser() -> createCsTokenizers() and JavaFileTokenizer.createFileParser() -> createJavaTokenizers()
  • Added some private constructors that throw AssertionError to static classes

Removed

  • Changed GenericTypeTokenizer._createGenericTypeTokenizer() from public to private
  • Removed IdentifierTokenizer field static int genericTypeDepth in favor of callers explicitly passing the argument to createIdentifierWithGenericTypeTokenizer() which now takes one parameter int maxGenericTypeDepth
  • Removed CodeTokenizerBuilder in favor of CodeTokenizer static methods
    • Manually build a tokenizer list of type PairList<CharParserFactory, TextTransformer<CodeTokenType>>
    • Call CodeTokenizer.createTokenizer() with the language you used to pass to the CodeTokenizerBuilder constructor and the list of tokenizers you manually created

Fixed

  • AnnotationExtractor to handle all C# keyword-followed-by-a-block annotation arguments like default(T), nameof(T), and typeof(T)

0.18.1 - 2019-07-02

Fixed

  • AnnotationExtractor to handle C# typeof(T) annotation arguments

0.18.0 - 2019-03-30

Changed

  • Added -debug and -threads # command line arguments
  • More detailed debug and log file information
  • Renamed TokenizeStepLogger -> ParserActionLogger
  • ParseTimes.log() renamed setActionTime()
  • Simplified and synchronized PerformanceTrackers so instance can be shared across threads
  • Renamed node.js plugin file plugins/node-js/jparser-tools-cli -> plugins/node-js/jparse-code-cli and renamed associated test file

Removed

  • Unused ScopeType enum

Fixed

  • Fixed multi-threaded parsing! Handling of FileReadUtil, performance logs, and result lists are now synchronized in ParserMisc.parseFileSet()
  • Update dependency jfile-io@0.8.3 (fix for decoding empty streams/files)

0.17.0 - 2019-03-30

Performance refactor, several libraries updated: JArrays, JCollectionUtil, JFileIo, JTextParser, and JTextTokenizer

Changed

  • Changed to new FileReadUtil.readChars(InputStream) (jfile-io@0.8.2)
  • Switched lombok val usage to Java 9 var
  • Added HashMap<String, *Keyword> keywordSet field to CsKeyword and JavaKeyword for performance
  • Added some duplicate code in IdentifierTokenizer to work with optimized CharConditions.ContainsFirstSpecial constructor

0.16.1 - 2019-03-17

Fixed

  • Accidentally deleted compiled *.jar files in 0.16.0 release

0.16.0 - 2019-03-17

Added

  • Class signature annotation parsing (in BlockExtractor, CsBlockParser, and JavaBlockParser)

Changed

  • Simplified ProjectClassSet (removed two unnecessary generic parameters, renamed private fields):
    • Renamed resolveSimpleNameToClass() -> resolveClassNameAgainstNamespaces()
    • Renamed resolveSimpleNameToClassSingleNamespace() -> resolveClassNameAgainstNamespace()
  • Performance improvements to collection allocations in NameUtil and ClassSigResolver
  • Renamed AccessModifier interface to Keyword
  • PerformanceTrackers.getTopParseTimes() and getTopParseStepDetails() switched first parameter from javax.swing.SortOrder to boolean

Removed

  • Unused AstNodeConsumer and AstNodePredicate interfaces
  • Removed lombok.val usage/dependency from several classes and packages in favor of Java 10 var or actual type.

Fixed

  • Bug in TokenizeStepLogger trying to StringCase.toCamelCase() action names

0.15.7 - 2018-09-23

Changed

  • Updated CodeTokenizerBuilder.removeChildren() to use SimpleTreeImpl.removeChildRef() instead of removeChild() for improved performance
  • Updated dependencies:
    • jcollection-interfaces@0.3.0
    • jcollection-util@0.7.5
    • jtree-walker@0.2.0

0.15.6 - 2018-09-22

Added

  • Parameter default value parsing support added to MethodParametersParser
  • Added DataTypeExtractor.isDefaultValueLiteral() to check for field/parameter default values

Changed

  • Renamed CsKeyword.Inst -> CsKeyword.CsKeywordUtil
  • Renamed JavaKeyword.Inst -> JavaKeyword.JavaKeywordUtil
  • Unit tests changed to use static imports of TypeAssert.ary() instead of new Object[] {...} and TypeAssert.ls() instead of Arrays.asList()

0.15.5 - 2018-09-14

Changed

  • ParserWorkFlow returns the -help message if no arguments are given when run

Fixed

  • bin/jparse_code.jar wasn't properly compiled as a runnable jar

0.15.4 - 2018-09-13

Added

  • Annotations to parameter signatures (with basic parameter annotation parsing added to MethodParametersParser.extractParamsFromSignature())
  • Documented DataTypeExtractor methods
  • Added/Improved test cases for:
    • Class signatures (generics, multiple extend/implement types)
    • Generic types with multiple parameters
    • Annotations on method parameters
    • TODO: fix failing test for default parameters

Removed

  • Old code from MainParser

Fixed

  • CsBlockParser.readClassIdentifierAndExtends() was incorrectly trying to parse new { object initializer blocks as class declarations
  • DataTypeExtractor was reversing the parameter order of multi-paremeter generic types

0.15.3 - 2017-12-30

Changed

  • Update dependency jtwg2-logging@0.3.0

0.15.2 - 2017-12-22

Changed

  • Upgrade to Java 9
  • Upgrade to JUnit 5

Fixed

  • Fix a minor compile issue found by Java 9 upgrade

0.15.1 - 2017-11-11

Changed

  • Update dependency jtext-parser@0.13.0
  • Add some test cases

0.15.0 - 2017-10-15

Changed

Simplified class names and generic type signatures:

  • Changed AnnotationSig, BlockAst, MethodSig, CodeFileSrc, and CodeFileParsed to have public final properties and remove getters
  • CodeFileSrc language property type is now CodeLanguage, not a generic type parameter
  • CodeFileSrc doc property renamed astTree
  • CodeFileParsed, CodeTokenizerBuilder,
  • CodeFileParsed and ProjectClassSet added Intermediate implementations to existing Simple and Resolved implementations with simplified generic type parameters
  • Split ClassSig SimpleImpl and ResolvedImpl into separate files
  • Split MethodSig SimpleImpl and ResolvedImpl into separate MethodSigSimple and MethodSigResolved files

0.14.5 - 2017-08-20

Changed

  • Update dependencies:
    • jfunc@0.3.0 (Predicates.Char -> CharPredicate)
    • jtext-parser@0.12.0 (CharParserPredicate interface instead of BiPredicates.CharObject<TextParser>)

0.14.4 - 2017-06-25

Added

  • Two more JUnit tests, CsModelParseTest and JavaModelParseTest
  • Added unit test helpers: test.twg2.parser.test.utils FieldAssert, MethodAssert, and TypeAssert

Changed

  • Ensure output write order of parsed file definitions (sorted by fully qualifying name)
  • Updated/refactored unit tests to use new unit test helpers
  • Renamed unit test helper ParseAnnotationAssert -> AnnotationAssert

0.14.3 - 2017-02-06

Changed

  • Forgot to remove test code from MainParser

0.14.2 - 2017-02-06

Changed

  • Removed lombok.val usage/dependency from test classes.

Fixed

  • Fixed parsing C# classes that extend/implement multiple types, unrecognized types are assumed to possibly be interfaces.
  • Fixed parsing Java classes that implement multiple types, unrecognized types are assumed to possibly be interfaces.

0.14.1 - 2016-12-03

Changed

  • Updated dependencies:
    • jtext-parser@0.11.0
    • jtext-tokenizer@0.2.0
    • jparser-primitive@0.2.0
  • This includes a new parsing strategy which tries to parse non-compound tokens from start to finish using one parser at a time without passing the characters to compound parser, this improves performance and simplifies some of the compound parsers, but makes some compound parsers more difficult, such as ending conditions that try to keep track of characters between the start and end of the compound parser segment
  • GenericTypeTokenizer and IdentifierTokenizer changes to properly parse nullable generic parameters

0.14.0 - 2016-10-30

Reduced library complexity/scope by moving twg2.parser.text conditions/tokenizers to separate jtext-tokenizer library

Changed

  • Moved twg2.parser.text package to jtext-tokenizer library
  • Moved twg2.parser.Inclusion to jtext-parser library
  • Renamed classes *Fragment -> *Token:
    • CodeFragment -> CodeToken
    • CodeFragmentType -> CodeTokenType
    • DocumentFragment -> TextToken and renamed methods:
      • getTextFragment() -> getToken()
      • getFragmentType() -> getTokenType()
    • DocumentFragmentText -> TextFragmentRefToken
    • CodeFragmentEnumSubSet -> CodeTokenEnumSubSet
  • Renamed twg2.parser.codeParser.tools.performance -> twg2.parser.codeParser.analytics
  • TokenizeStepDetails -> TokenizeStepLogger and now implements TypedLogger from jtext-tokenizer library

Removed

  • Removed twg2.parser.text package (moved to jtext-tokenizer library)

0.13.0 - 2016-10-26

Parameter modifier parsing support (i.e. 'final' in Java or 'params' in C#):

Added

  • Added ParameterSig and ParameterSigResolved 'parameterModifiers' field
  • Added KeywordUtil parameterModifiers() and isParameterModifier()

Changed

  • MethodParametersParser.extractParamsFromSignature() to support parameter modifiers
  • Renamed CodeTokenizerBuilder addConstParser() -> addParser()
  • Added FieldDef.initializerToJson() 'preClosingComma' parameter
  • Updated dependencies, specifically jfile-io to 0.7.0 which no longer contains JsonWrite, so added json-stringify library for new equivalent JsonStringify class and updated related code
  • Updated toJson() methods to use JsonStringify.inst:
    • FieldDef
    • FieldDefResolved
    • FieldSig
    • FieldSigResolver
    • MethodSig
    • ParameterSig
    • ParameterSigResolved

0.12.1 - 2016-10-02

Changed

  • Updated dependencies, specifically jfile-io to 0.7.0 which no longer contains JsonWrite, so added json-stringify library for new equivalent JsonStringify class and updated related code

0.12.0 - 2016-09-13

Added

  • PerformanceTrackers, ParseTimes, TokenizeStepDetails in new twg2.parser.codeParser.tools.performance package - used for tracking performance

Changed

  • biggest change is switching from jtext-parser's TextIteratorParser (previously: TextParserImpl) to TextCharsParser and files are read as char[] and stored in ParseInput and CodeFileSrc as char[] with offset and length, this will hopefully provide a small performance boost since each file's contents is copied one less time (no more new String(...) copy) and TextCharsParser is designed to take a char[] without any data copying
  • second large change is moving the parsing process toward a clearly defined two step process, the first step is called 'tokenization' and the second is called 'parsing/extracting'
    • file tokenization logic has been split up. Cs and Java FileTokenizer classes now return CodeTokenizerBuilder instances and CodeTokenizerBuilder contains all the generic logic for running the tokenization process
  • updated to new latest dependencies, especially jtext-parser
  • moved CodeFragment, DocumentFragment, and DocumentFragmentText from package twg2.parser.documentParser -> twg2.parser.fragment
  • moved CodeFileParsed, CodeFileSource, ParseInput, and ParserWorkflow from package twg2.parser.codeParser -> twg2.parser.workflow
  • moved/renamed twg2.parser.documentParser.DocumentParser -> twg2.parser.tokenizers.CodeTokenizerBuilder
  • moved IsParentChild from package twg2.parser.documentParser -> twg2.parser.tokenizers
  • CommentAndWhitespaceExtractor now drops the last trailing newlines from the comment strings
  • updated a number of unit tests

0.11.0 - 2016-09-06

Added

  • basic C# and Java enum parsing
    • Added twg2.ast.interm.field FieldDef and FieldDefResolved to represent enum members (TODO could use some clarification/refactoring)
    • Added CsEnumMemberExtractor and JavaEnumMemberExtractor
  • Moved duplicate code from class that implemented AstParser into new AstParserReusableBase and AstMemberInClassParserReusable abstract classes (I know the names are a little awkward, suggestions are welcome)
  • Added C# and Java unit tests for enum parsing
  • Moved duplicate source code parsing logic for tests into new CodeFileAndAst class

Changed

  • moved and renamed several packages and class names
    • twg2.parser.baseAst and sub-packages split and moved to twg2.parser.codeParser and sub-packages
      • twg2.parser.baseAst.tools -> twg2.parser.fragment
      • twg2.parser.baseAst.CompoundBlock -> twg2.parser.codeParser.BlockType
    • CsClassParser -> CsClassTokenizer
    • JavaClassParser -> JavaClassTokenizer
    • twg2.parser.codeParser.parsers -> twg2.parser.tokenizers and *Parser class name prefix changed to *Tokenizer
  • AccessModifierExtractor renamed readAccessModifier() -> parseAccessModifier() and readAccessModifierFromIter() -> readAccessModifiers()
  • CsBlock and JavaBlock renamed fromKeyword() -> parseKeyword() and tryFromKeyword() -> tryParseKeyword()
  • TypeSig renamed nested classes:
    • Simple -> TypeSigSimple
    • SimpleBaseImpl -> TypeSigSimpleBase
    • SimpleGenericImpl -> TypeSigSimpleGeneric
    • ResolvedBaseImpl -> TypeSigResolvedBase
    • ResolvedGenericImpl -> TypeSigResolvedGeneric

0.10.8 - 2016-09-02

Changed

  • Updated dependency, switched jparser-data-type-like (now deprecated/removed) to jparse-primitive which is a separate project containing just the primitive parsing code from jparser-data-type-like
  • Renamed project from JParserTools -> JParseCode
  • Moved plugin-js/ -> plugin/node-js/

0.10.7 - 2016-08-28

Added

  • Added jdate-times dependency (since dependent date/time code was moved from jdata-util and jparser-data-type-like to jdate-times)

Changed

  • Updated dependencies to latest version

0.10.6 - 2016-08-27

Changed

  • Fixed version numbers and jackson-* dependency names in package-lib.json

0.10.5 - 2016-08-21

Changed

  • Added JCollectionBuilders and JTuples dependencies
  • Updated jcollection-util to latest 0.7.x version (removed twg2.collections.builder and twg2.collections.tuple)

0.10.4 - 2016-08-18

Changed

  • Updated jdata-util to latest 0.3.x version (EnumUtil renamed ErrorUtil, TimeUnitUtil package name changed)
  • Fixed compiled jar path and name

0.10.3 - 2016-08-07

Changed

  • Updated jcollection-util to latest 0.5.x version
  • Updated jfile-io to latest 0.6.x version (SourceInfo renamed to DirectorySearchInfo)
  • Updated jtext-util to latest 0.10.x version (some classes moved to new twg2.text.stringSearch package)
  • Added jcollection-interfaces dependency

0.10.2 - 2016-06-21

Added

  • plugin-js to help generate CLI strings from TypeScript/Javascript projects, with Node.js in mind
  • Readme section about the CLI

0.10.1 - 2016-05-13

Changed

  • Merged DocumentFragmentRef with DocumentFragmentText
  • Added some documentation
  • Fixed some code warnings
  • Moved full class parsing tests to twg2.parser.codeParser.test

Fixed

  • Bug in annotation named parameter parsing when annotation only had one parameter
  • Bug in C# property parsing not supporting field modifiers (i.e. 'private', 'protected', ...)

Removed

  • DocumentFragmentRef (merged with DocumentFragmentText)

0.10.0 - 2016-04-12

Added

  • Added better annotation parsing, including support for negative numbers as arguments
  • Added CodeFragment which extends 'DocumentFragmentText' so don't have to keep typing that every time, updated most of the code to use CodeFragment
  • Added OperatorUtil and Operator (with C# and Java implementation enums) similar to the existing Keyword enums

Changed

  • Refactored how we use EnumSubSet and enum sub-categorization
    • Added CodeFragmentEnumSubSet with is() and parse() methods which accept CodeFragment nodes (we were starting to duplicate this parsing code in Keyword and the new Operator class, so moved it to a reusable class)
    • Removed KeywordUtil isXyzKeyword() and parseXyzKeyword() methods in favor of methods that return CodeFragmentEnumSubSet instances for each of the keyword categories (i.e. 'blockModifiers()' or 'operators()')
  • Moved twg2.parser.codeParser extractor classes (i.e. AccessModifierExtractor or BlockExtractor) to new twg2.parser.codeParser.extractors package

Fixed

  • ParserWorkflow now generates and groups all results by destination file before writing (previously a writer was opened in overwrite mode for each destination group, thereby overwriting data written to the same file by a previous destination group during the same program execution)

0.9.0 - 2016-03-20

Added

  • Added commented parsing for comments attached to methods and fields (future TODO: add comment parsing for comments attached to classes and namespaces)

Changed

  • Renamed intermAst packages to 'twg2.ast.interm'
  • Renamed most AST classes, removed 'interm' from the name
  • Moved type resolution out of AST classes into new 'twg2.parser.resolver' classes (i.e. ClassSigResolver, FieldSigResolver, etc.)
  • Created 'twg2.parser.language' package for code language management classes

0.8.0 - 2016-02-28

Changed

Move from assuming that conditions can list the initial chars that match them (CharParser.WithMarks.getMatchFirstChars()) to CharParserMatchable and new getFirstCharMatcher() method which allows for a flexible definition of matching first chars

  • Moved/renamed ParserWorkFlow SourceInfo and LoadResult (renamed to SourceFiles) nested classes and ParserMain.getFilesByExtension() to [JFileIo] (https://github.com/TeamworkGuy2/JFileIo) library
  • Moved twg2.parser.output JsonWrite and JsonWritable to JFileIO project's twg2.io.write package
  • Renamed ParserMain -> ParserMisc
  • Implemented new CharParserMatchable with getFirstCharMatcher() methods in place of old CharParser.WithMarks interface from JTextParser
  • Updated to use latest version of JFileIo and JTextParser

0.7.0 - 2016-02-24

Changed

  • Updated to latest version of JTextParser and JStreamish
  • Switched from StringLineSupplier for reading lines from a source string to CharLineSupplier (slightly less garbage generated due to less conversion between strings and char arrays)
  • By default, annotation arguments map is include in toJson() output even if empty
  • ITrackSearchService.cs test file was using '\r' for newlines, replaced with '\n'
  • Moved twg2.parser.test package to separate test directory

Fixed

  • Fixed toJson() not formatting generic types correctly

0.6.0 - 2016-02-21

Added

  • Added numeric literal parsing (i.e. '23' or '1.5f')
  • Added field and method access modifier parsing (i.e. public, static, synchronized, volatile)

Changed

  • Fields now write their annotations when toJson() is called
  • Changed JsonWrite method names to help differentiate their purposes
  • Update to use latest version of multiple libraries, including: JFileIo, JStreamish, JTextParser, and JParserDataTypeLike

0.5.0 - 2016-02-09

Added

  • Added array type parsing, (i.e. 'int[][]')
  • Added some more tests

Changed

  • Moved twg2.parser.codeParser.eclipseProject to another project
  • Moved none JUnit experiment files to 'miscellaneous' package

0.4.0 - 2016-01-16

Changed

  • Moved twg2.parser.condition.AstParser -> twg2.parser.baseAst.AstParser
  • Modified CodeLanguageOptions, so implementation class is a sub-class and CodeLanguageOptions contains only static fields and methods

Removed

  • Removed unused twg2.parser.documentParser.block package

Fixed

  • Fixed a regression in C# method signature parsing

0.3.0 - 2016-01-16

Added

  • Java parsing support and tests.
  • Added Keyword interface for generic language keyword operations such as isKeyword(), isBlockModifierKeyword(), isDataTypeKeyword(), etc.

Changed

  • Made interm parsing more generic, added a bunch of parser creator functions to AstExtractor. Converted some of the C# interm parsers into more generic parsers to be used by C# and Java (see BaseFieldExtractor, BaseMethodExtractor, BaseMethodParametersParser)
  • Renamed getFullyQualifyingName() methods to getFullName(), (note: this may change again in future, possibly to getFqName())
  • Moved and renamed ParserCondition, Precondition -> ParserFactory, TokenParserCondition -> TokenParser, CharParserCondition -> CharParser, and ParserStartChars to the [JTextParser] (https://github.com/TeamworkGuy2/JTextParser) project
  • Simplified CharConditions and StringConditions sub-class names (i.e. StringConditions.StringStartFilter -> StringConditions.Start)

0.2.1 - 2016-01-13

Added

  • Simple C# parse example with resulting JSON. Added and refactored some test cases.

0.2.0 - 2016-01-12

Added

  • Finished command line interface (CLI) argument parsing for ['sources', 'destinations', 'log'] and ParserWorkflow.

Changed

  • Simplified CodeFileSrc generic signature. Added interfaces and setup entire parsing process to be generic (added CodeLanguage.getExtractor() and AstExtractor interface).
  • Refactored C# classes to support this more generic approach.
  • Added Simple and Resolved sub-classes of ProjectClassSet. Renamed CsMain -> ParserMain.
  • Added some additional EclipseClasspathFile/Utils methods for finding project dependencies.

Removed

  • Removed IntermClass.getBlockTree(), it should be tracked higher up in the parsing process.