Added a package that allows precisely benchmarking tgui components on IE11 without having the game launched.
It has a convenient syntax for writing tests, just create a file packages/tgui-bench/tests/*.test.tsx, and export a function which you want to benchmark
Performance improvements
As part of this PR, I have also improved the raw performance of some tgui components:
Button component - 1.8x faster
Flex component - 1.1x faster
Stack component - 1.3x faster
This improves performance of heavy UIs by a tiny bit.
* Juke Build 0.9.0
* Fix a small bug with build.js
* Distill cmds
* Return sonar
* Revert those build.cmd changes
* Some improvements
* Treat all sonar warnings as errors because they should fail the sonar target
* Do not clean up bootstrap cache because it locks up on removing it
Regex is a robust text-parsing mini-language. It can perform complex and dynamic searches and return the results in an easy to read format. This implementation also uses Boost's extended formatting syntax which gives you a flexible way to conditionally replace complex strings with only a few lines of code
Source code and license info can be found here: http://code.google.com/p/byond-regex/
Licensed under LGPL.
This uses the perl regex syntax (with some extensions) in non-recursive mode (as recursion has additional overheads).
Information on this syntax can be found here: http://www.boost.org/doc/libs/1_55_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html
There are many introductions to regex on the internet. Here is the one I learned from: http://www.regular-expressions.info/tutorial.html
Note: I have added #define USE_BYGEX in code/_compile_options.dm. Simply comment out the define if you encounter any problems.
Due to byond being unable to communicate with a dll through anything but C-strings, the results are returned to byond in a string similar to those you get with list2params. Since byond uses parameters a lot, its params2list() proc is fairly streamlined, so it's pretty much the fastest way you could do this with byond. This data is then stored in a datum/regex object for easy use. See demo.dm datum/regex/proc/report() for an example.