Commit Graph

27 Commits

Author SHA1 Message Date
Jonathan Bernard
bfc0c12127 Hidden files are ignored. Added --version option and logging.
* Added logging with SLF4J and Logback
* Added `--version` option.
* Mofidied the input file rules. When an input object is a directory, JLPMain is
  adding all the files in that directory and its subdirectories. Now JLPMain is
  ignoring hidden files in the directory and subdirs. A file named explicitly on
  the command line is still included regardless of if it is hidden or not.
* Documentation continues.
2011-12-29 10:53:14 -06:00
Jonathan Bernard
f5c7ac64e3 Started documenting JLP with JLP. 2011-12-27 12:02:45 -06:00
Jonathan Bernard
1f9b6cc66d Plain Markdown support. Directory support.
* Upgraded build common to version 1.9.
* Updated the release target in build.xml to take advantage of the new features
  of common build 1.9. The release target now copies over the libs and release
  resources.
* JLPMain now recognises directories in it's input list. It will add all the
  files in a given directory to the input list (including files in abitrarily
  nested subdirectories).
* Abstracted the parser behavior further. Processor no longer needs to know
  about Parboiled ParseRunners and can use non-Parboiled parsers.
* Created the JLPParser interface to support the new parser abstraction.
* JLPPegParser implements the new interface trivially by creating it's own parse
  runner and calling it with the input given.
* Added MarkdownParser, which does not actually parse the file, just creates the
  bare-bones SourceFile object needed for the generator to emit the Markdown
  contents.
2011-12-25 23:11:21 -06:00
Jonathan Bernard
9eb80e91a6 Support for multi=line comments, detects file type.
* Added support for multi-line comments to the JLPPegParser grammar
  implementation.
* Added a Java sample file.
* Updated test script to add convenience functions for the java test file and
  for using a TracingParseRunner for parse runs.
* Added an option, `--css-file`, to allow the caller to specify their own css
  file.
* Added basic logic to the Processor class to detect source file types and build
  a parser and a generator for that source type. Support currently exists for
  the following languages: C (.c, .h), C++ (.cpp, .c++, .hpp, .h++), Erlang
  (.erl), Groovy (.groovy), Java (.java), JavaScript (.js).
2011-12-25 22:07:48 -06:00
Jonathan Bernard
3c34e080ef Small tweak to default CSS. 2011-09-12 10:56:56 -05:00
Jonathan Bernard
75103b4bb5 Bugfix in recent changes.
* The generators originally had two phases, *parse* and *emit*. The *parse*
  phase allowed the generator to walk the AST for every document noting things
  it would need when emitting output. So the *parse* phase looked over every
  input document before the *emit* phase ran. During the refactor this changed
  and for each file the *emit* phase was running immediately after the *parse*
  phase, when it should have been run only after all inputs had been through the
  *parse* phase.
* Fixed a type in the ``LiterateMarkdownGenerator``: an extra '`/`' was being
  inserted into the url for link targets.
2011-09-09 14:56:50 -05:00
Jonathan Bernard
d31d17d1e2 Refactored the overall process, fixed #0005: link behaviour.
* Refactored the overall process flow. Instead of ``JLPMain`` handling the
  process, it now reads the command line options and defers to ``Processor`` to
  handle the actual process. The ``Processor`` instance is responsible for
  processing one batch of input files and holds all the state that is common to
  this process.
* ``JLPBaseGenerator`` and generators based on it are now only responsible for
  handling one file, generating output from a source AST. As a consequence
  state that is common to the overall process is no longer stored in the
  generator but is stored on the ``Processor`` instance, which is exposed to the
  generators.
* Generators can now be instantiated directly (instead of having just a public
  static method) and are no longer one-time use. Now the life of a generator is
  expected to be the same as the life of the ``Processor``.
* Fixed inter-doc link behaviour.
* Created some data classes to replace the ad-hoc maps used to store state in
  the generator (now in the ``Processor``)
2011-09-09 14:28:48 -05:00
Jonathan Bernard
e6d515fc96 Version 0.2: Adds relative-path-root option.
* `relative-path-root` option added. This facilitates situations where the
  current directory of the invocation context is different than the working
  directory of the program. This is required to use `jlp` with tools like
  *Nailgun*, which keeps a persistant `java` process running and proxies new
  invocations to the existing process.
2011-09-08 12:30:09 -05:00
Jonathan Bernard
5858c4552b Issue tracking. 2011-09-08 12:19:53 -05:00
Jonathan Bernard
a4abae6c42 Updating project issues. 2011-09-07 10:49:28 -05:00
Jonathan Bernard
aff50853c7 Updated version number and build script. 2011-09-06 17:18:39 -05:00
Jonathan Bernard
4bac35ef0b Release 0.1 is ready
* Tweaked CSS.
* Finished basic implementation of JLPMain (lots of thihngs are hardwired).
2011-09-06 17:10:36 -05:00
Jonathan Bernard
bab1943120 Promoting the experimental code to replace the exising main code. 2011-09-06 16:26:36 -05:00
Jonathan Bernard
7a5870dc09 Worked on literate output using Markdown as the text markup language.
* Added CSS based on Docco (blatantly copied).
* Updated sample text to better fit the emerging usage patterns. Some of the
  things I did to make it render nicely for the Literate output may cause
  problems when we go to render API output. I will cross that bridge when I come
  to it.
* Added parsing infrastructure to the Generator behaviour to allow a
  pre-processing pass over the document. Current the LiterateMarkdownGenerator
  is using this to compile a map of `@org` references.
* Tweaked the HTML output slightly.
* Added a layer over the PegDownProcessor in LiterateMarkdownGenerator to
  capture and transform `jlp://` links into relative links.
2011-09-06 16:13:21 -05:00
Jonathan Bernard
c2c2f9da3d Working on a literate generator similar to Docco. 2011-09-02 16:47:46 -05:00
Jonathan Bernard
7717439274 Experimenting with a different AST structure and ideas.
Ideas:

* For literate output, format like Docco, tables like

    Doc        | Code
    -----------|------------
    | docblock | codeblock |
    | docblock | codeblock |
    | docblock | codeblock |

* For javadoc output, maybe create a running 'pure source' object containing
  just the code lines. Then run an sup-parser for the language the code is
  written in and build a seperate AST for the code. This code AST then gets
  tagged onto the overall AST and is used in the generation phase for code
  comprehension. Would still need a way to map doc blocks to code blocks. I
  could probably use line numbers. In that case I would need to map the original
  source line from the commented input to the 'pure source' while processing the
  'pure source' and store the original line number in the code AST. That would
  give me a reliable way to lookup the closest code structure to a doc block.
* The code AST would need to made of generic pieces if I want to have
  language-agnostic generator code. What may be better is to allow the language
  parser to create it's code AST however is wants and just have some pluggable
  bit of the generator for each language. Would increase generator code
  complexity though.
2011-08-31 12:09:25 -05:00
Jonathan Bernard
5081ebbd30 Basic transformative functionality implemented.
* Updated test data to include additional parsing edge cases.
* Updated `vbs_db_records.hrl` to use `@org` directives.
* Refactored Generator/Emitter dual-object phase concept into one object, the
  Generator. The emitter ended up needing basically full visibility into the
  generator anyways.
* Implemented `JLPBaseGenerator`, `MarkdownGenerator`, and
  `TransparentGenerator`
* Modified the way the parser handles remaining lines to allow it to safely
  handle empty lines.
2011-08-31 09:46:25 -05:00
Jonathan Bernard
b8a47cac7e Starting work on the generation/emitter phase. 2011-08-29 09:46:04 -05:00
Jonathan Bernard
557feaeb83 Worked on documentation, parser.
* Added planning documentation regrding the process.
* Updated grammer.
* Refactored the test code a bit.
* Added sample input file from vbs-suite
* Refactored the AST node structure created by the parser.
2011-08-29 09:44:05 -05:00
Jonathan Bernard
c275fd0ce1 Implmented actions to build AST.
* Rewrote grammar slightly.
* Added parboiled parse section to JLPMain.
* Added code to build the AST while parsing.
* Created ASTNode classes.
2011-08-26 15:40:56 -05:00
Jonathan Bernard
13e0e72fed Fixed parser weirdness. More readable parser finished.
For whatever reason, writing the parser in Groovy was causing weird errors
to occur when the parser or parse runner was created. Using a plain Java
source file fixed this.
2011-08-26 05:51:29 -05:00
Jonathan Bernard
e8ebcd4998 Sorting out Parboiled issues. Initial parser draft complete.
* Created test script.
* Created working parser.
2011-08-25 17:08:55 -05:00
Jonathan Bernard
303f8839fd More work on grammar, starting parboiled implementation. 2011-08-25 07:47:01 -05:00
Jonathan Bernard
48eee1ca43 Finished basic grammar outline. 2011-08-25 07:13:39 -05:00
Jonathan Bernard
43c5c15ed7 Started grammar definition. 2011-08-23 16:26:02 -05:00
Jonathan Bernard
b142b9f13b Starting basic implementation. 2011-08-23 10:08:01 -05:00
Jonathan Bernard
f65d1fc030 Initial commit. 2011-08-22 15:54:38 -05:00