RELEASENOTES.md
37cea3af
 ### 1858.2
 
 * adapt to changes in mulle-configuration
 
8391323b
 ### 1858.1
 
 * fix build problem with new mulle-configuration
 
f958902e
 ## 1858
 
 There is an option that allows specifying includes via the environment like
 so:
 `MULLESCION_ALLOW_GETENV_INCLUDES="YES" MY_INCLUDE="foo.scion" mulle-scion bar.scion none`
 and then in `bar.scion` use `{% includes MY_INCLUDE %}`. This looks obscure,
 but I needed it to wrap code around existing templates.
 * MULLESCION_.. environment variables now are of the YES/NO variety.
 
dc48b1ee
 ## 1857
 
 * fix missing menu due to change of root dox
 * fix podspec version
 * add dump of includes for debugging
 
3a4d2123
 ## 1856
 
d5423eed
 * clarify usage output
3a4d2123
 * add nexti/previ to for loop dictionary.
d5423eed
 * modernized tests a little bit to be compatible with mulle-tests also improved
 CmakeLists.txt slightly
3a4d2123
 
b8fd8e84
 ## 1855
 
 * Bool fix from Hannes Tribus `<hons82@...com>`
 * IOS/ARC fixes from Hannes Tribus `<hons82@...com>`
 * Some portability fixes for MulleFoundation
 
8b4a0fde
 ## 1854
7e3934a3
 
8b4a0fde
 * Added a podspec fix from Hannes Tribus `<hons82@...com>`
7e3934a3
 
8b4a0fde
 * Fixed an obvious KVC bug, in a code path that was probably never used
 * Some support for MulleFoundation merged in
 * Added local variable __FOUNDATION__
 * Use a fork of google-toolbox for html escaping/unescaping
 * Use mulle-configuration for compilation
 * --version prints version and exits
3bb5db4c
 
8b4a0fde
 ## 1853.2
 
 * Experimental Travis CI integration on Github.
 * Improvements in project structure due to better `mulle-bootstrap`
 
 ## 1853.1
 
 * Fixed a bug, where `endfilter` did not respect the options setting of the
3bb5db4c
 returning filter. This could create havoc on plaintext, when your filter
 just specified (output).
 
8b4a0fde
 ## 1853
780fe876
 
8b4a0fde
 * Made mulle-scion brew compatible. You can now brew it. As I wanted to use
780fe876
 mulle-scion to produce brew formulae, I needed some options in the way
 mulle-scion is called.
 
8b4a0fde
 ** It is now possible to do this:
780fe876
 
8b4a0fde
 ```
780fe876
 echo '--- {{ VALUE }} ---' | mulle-scion - keyvalue - VALUE="xxx"
8b4a0fde
 ```
780fe876
 
 which produces predicatably
 
8b4a0fde
 ```
780fe876
 --- xxx ---
8b4a0fde
 ```
780fe876
 
8b4a0fde
 * Templates can be passed in via stdin and the replacement values can be given
780fe876
 as key=value arguments. This makes mulle-scion even more convenient to use
 in shell scripts.
 
 ~~~
7e3934a3
 brew install https://www.mulle-kybernetik.com/software/formulae/mulle-scion.rb
780fe876
 ~~~
 
8b4a0fde
 * There are now "hidden" environment variables WWW_ROOT, WWW_PORT, WWW_PLIST for
780fe876
 the webserver.
 
8b4a0fde
 * The way libraries are created and headers are written has been standardized and
780fe876
 improved. There is some support for a future "mulle-bootstrap", in case you are
 wondering what the .bootstrap folder does.
 
8b4a0fde
 ## 1852
ef82a9e8
 
780fe876
 ### API change
ef82a9e8
 
 Redesigned the "convenience interface". Sorry but I just disliked the
 proliferation of code, that separated **NSURL** and **NSString** by type. I used the
 power of ObjC and simplified this without having to resort to degenerics ;)
 In other words the` +descriptionWithTemplateURL:` method family is gone, just use
 `+descriptionWithTemplateFile:` with either NSString or NSURL.
 
780fe876
 ### LANGUAGE change
ef82a9e8
 
 I apparently goofed up the documentation in 1851 and made an incompatible change
 so that **mulle-scion** choked up on its own documentation templates. Ahem. That
 has been fixed, so that MulleScion now skips all scion tags, that are
 immediately _followed_ by a backtick ` or a backquote \. This ought to be
 harmless in my opinion, but results may vary.
 
 
780fe876
 
8b4a0fde
 ## 1851.0
ef82a9e8
 
 *** BIG CHANGE!!! FILTER REDESIGNED ***
 
 I decided to convert the documentation from ASCII into markdown. For that I
 needed a markdown filter. As it turns out, none of the libraries I found are
 able to do incremental rendering (bummer). This meant, that the markdown filter
 had to buffer all incoming strings until the endfilter was reached.
 That broke a lot of stuff.
 
 On a positive note, you can now nest filters and can tweak them a little with
 optional parameters.
 
 
 *** BIG CHANGE!!! ELSEFOR INSTEAD OF ELSE IN FOR-ENDFOR ***
 
 I messed up, when I "designed" aka hacked in the {% for else endfor %} feature
 it doesn't work, when there is a {% if else endif %} contained in the loop.
 So else needs to be renamed to elsefor in this case.
 
 To keep in sync with the archive version, the version nr. has been bumped to
 1851.
 
 
8b4a0fde
 * Improved the dependencyTable generation, by ignoring syntax errors.
ef82a9e8
 
8b4a0fde
 * The documentation is now in markdown format. With some hacking effort
ef82a9e8
 the builtin webserver can now show the "Results" much nicer.
 
8b4a0fde
 * Stole a CSS to make it look more nicey, nicey.
ef82a9e8
 
8b4a0fde
 * Improved the LICENSE detail.
ef82a9e8
 
8b4a0fde
 * Made it more possible to call a macro from a macro, which failed in some cases.
ef82a9e8
 
8b4a0fde
 * There is now a hidden convert feature on includes, which allows to preprocess
ef82a9e8
 the data. convert > parse > print > filter
 
 
8b4a0fde
 ## 1848.11
ef82a9e8
 
 *** This can break archived templates on iOS, regenerate them ***
 
 * mulle-scion has now a -z option to output compiled templates. While testing
 I found out, that when I use NSKeyedArchiver it's actually slower than parsing
 plain text and uses more space - even compressed.
 
8b4a0fde
 ```
ef82a9e8
 Compile plaintext * 100
 -rw-r--r--  1 nat  _lpoperator  198016 Oct  9 17:00 big.scion
 
 real	0m8.528s
 
 Compile unkeyed * 100
 -rw-r--r--  1 nat  wheel  75983 Oct  9 17:25 /tmp/unkeyed.scionz
 real	0m8.680s
 
 Compile keyed * 100
 -rw-r--r--  1 nat  wheel  750347 Oct  9 17:25 /tmp/keyed.scionz
 real	0m25.497s
8b4a0fde
 ```
ef82a9e8
 
8b4a0fde
 * If you are on iOS it's most likely better to not use archives and caching!
ef82a9e8
 
8b4a0fde
 * Fix erroneous trace output, which was always happening.
ef82a9e8
 
8b4a0fde
 * Fix bug, where "for i in nil" would iterate once
ef82a9e8
 
8b4a0fde
 * Fix bug, where MulleScionNull was passed as invocation argument
ef82a9e8
 
 
8b4a0fde
 ## 1848.10
ef82a9e8
 
780fe876
 *** This can break currently working templates, that contain unnoticed
ef82a9e8
     syntax errors! ***
 
 * the parser doesn't allow garbage inside mulle-scion tags anymore. It
   used to parse {{ x = #<%$/&> }} because everything after "x " was
   ignored, but it was just too confusing in real life use.
780fe876
 
 * simplified expansion of function functionality a bit.
ef82a9e8
   added NSStringFromRange to builtin-functions
 
 * added some NSURL methods for opening templates, which is more convenient on
 iOS
 
 * made built-in function in principle expandable to support user-written
 functions
 
 
8b4a0fde
 ## 1848.9
ef82a9e8
 
 * added a podspec
 
 
8b4a0fde
 ## 1848.8
ef82a9e8
 
 * allow # comments within {% %}
 
 * added log command for debugging
 
 * mulle-scion now builds into /usr/local/bin in Release setting
 
 * the demo webserver root is now /tmp/MulleScionDox
 
 * fixed requires dox
 
 * made requires a single line command, like include or extends, just because
 it "felt right"
 
 * remove some extraneous debug output and runtime warnings
 
 * new scheme "Show Documentation in Browser"
 
 * updated documentation a bit regarding multi-line commands
 
 
8b4a0fde
 ## v1848.7
ef82a9e8
 
 * outsourced NSObject+MulleGraphviz because I need it in other code
 too and the dependency on MulleScion was annoying.
 
 * fixed some bad code in commandline tool, that reads the property list
 
 
8b4a0fde
 ## v1848.6
ef82a9e8
 
780fe876
 * add __ARGV__ parsage to mulle-scion. Now you can use mulle-scion as an awk
ef82a9e8
 replacement in other shell scripts, if you so desire.
 
 
8b4a0fde
 ## v1848.5
ef82a9e8
 
 * bunch of fixes. Added an example how to write a non-plist datasource, in this
 case using CoreData.
 
 * added a requires keyword for dynamic loading of bundles from within a scion
 script (experimental)
 
 
8b4a0fde
 ## v1848.4
ef82a9e8
 
 * renamed to MulleScion, because now it's more than just a template engine, it's
780fe876
 also somewhat useful as a little standalone Obj-C interpreter. Also
ef82a9e8
 MulleScionTemplates was just too long.
 
 * The MulleScionConvenience has been renamed to just MulleScion.
 
 * There is now some rudimentary tracing support available. Just going to become
 better over time.
 
 * {{ }} can now be placed inside {% %} which makes templates with a lot of logic
 and little output that much more managable.
 
 * used google-toolbox-code for htmlEscapedString, which now adds some Apache2 Licensing
 terms to this project. Or say #define NO_APACHE_LICENSE and get the old crufty
 functionality back.
 
 * the repository on github will be only pushed to for "releases" the continous
 development is going to happen on Mulle kybernetiK.
 
 <blockquote>mulle:  http://www.mulle-kybernetik.com/software/git/MulleScionTemplates/<br>
 github: https://github.com/mulle-nat/MulleScionTemplates/
 </blockquote>
 
 
8b4a0fde
 ## v1848.3  !!**massive changes**!!
ef82a9e8
 
 * your compiled scionz files are incompatible now. Throw them away
 and rebuild your caches
 
 * you used to be able to have random trash after valid scion code, which was nice
 for documentation. That doesn't work anymore in most cases
 
780fe876
 * you can now write multiline scripts, but some keywords need still to be
ef82a9e8
 enclosed as singles in {% %} like macro, block, endblock, extends and maybe
 some others
 
 * there are the beginnings of a test suite, check out the tests folder. there is
 a simple shellscript that runs the tests
 
 * lots of smaller fixes, whose content one might glean from the git comments
 
 
8b4a0fde
 ## v1848.2
ef82a9e8
 
 * your scionz files are incompatible now. Throw them away
 and rebuild the caches