Skip to main content

Regular Expression for inserting codes at the end of a function

This is a regular expression that i used to insert codes at the end of a function, the original code was created for actionscript 3, and you tweak it a  little to match your language, that is if its a C-based language.

reg  = "("+funcName+"\\([\\s\\S]*?\\)[\\s\\S]*?{[\\s\\S]*?)(?=(})[\\s\\S]*?((protected override|private|public) function))";

re = new RegExp(reg);
newCode = oldCode.replace(re, "$1 " + code);

The regular expression is
(yourFunc([\s\S]*?)[\s\S]*?{[\s\S]*?)(?=(})[\s\S]*?((protected override|private|public) function))

Explanation
(yourFunc([\s\S]*?)[\s\S]*?{[\s\S]*?)
First it finds the function named yourFunc followed by (
Then finds the arguements but stop finding mor, the *?, once it finds the first )
Then it continues to find anything, in as3 this is the : thing, and stops after it finds {
Lastly it finds everything after {, literally everything till the last one and to stop it you have to see the next pattern

(?=(})[\\s\\S]*?((protected override|private|public) function))
First it excludes to include on the results the following results it would find, the ?=
This exclusion starts with } followed by anything, \s\S until it finds the next function declaration.

The groupings
We grouped the results into 2 big groups and since we need everything that came before }, we group the regular expression before it into a big group so that once we substitute we could just use $1 to get all of them back.

Its so hard to explain this stuff on writing and i suggest you to just test them and comment if there is something wrong or there are some area where the regular expression could be enhance. Thanks

Popular posts from this blog

Winamp Spotify Treasure hunting

Back in the days when WinAmp was huge (So was tripod and geocities), WinAmp users like to share their playlist. Most of these playlist are still available online through googling and a lot of them are actually good throwback playlist. With that in mind, I created a javascript script that would change the winamp playlist (pure text) into a spotify search link.

An example of this, say you liked the 90s rock scene. You would google "winamp playlist pearl jam silverchair" and some of the results will return with the title "Winamp Generated PlayList" and these are what we would like to treasure hunt on. Then
Click on of the result.
Right click anywhere in the page, select Inspect (Chrome) or Inspect Element (Firefox)
Select the Console
Paste this
$$('ul font small')[0].innerHTML = $$('ul font small')[0].innerHTML.split('<br>').map((val) => { return '<a style="color:white" href="spotify:search:' + encodeURIComp…

Laravel 4.2 and App Engine

Was trying to make Laravel work with App Engine when i saw this post Laravel 4 on Google AppEngine for PHP, have tried to make it work but it seems there are some things that needs to be updated to make it work.

First off follow everything the blog until THE MCRYPT PHP EXTENSION then on that part we have to change "require": { "laravel/framework": "4.2.*", "neoxia/laravel-openssl-encryption-42": "dev-master" },
Then continue to follow the blog again. Then on THE LARAVEL 4 LOGGER, change $monolog->pushHandler(new Monolog\Handler\SyslogHandler('intranet', 'user', Monolog\Logger::DEBUG, false, LOG_PID));
Then before executing ./artisan optimize     open LaravelOpensslEncryptionServiceProvider.php, add to the top use Illuminate\Encryption\Encrypter;
Then lasty the part of UNIX_SOCKET, you could ignore it, it seems fixed for 4.2

LaMetric Python App

Creating a personal stock app for LaMetric is super simple, all you need is create an account at developer.lametric.com and have an url with your data. Depending on how you want the data to appear, the format should be in json and how it appears in the creation process.

I used appengine to host my data and used the metric data format


Here is the python code
import urllib2 import json # get stocks data using yahoo finance stocks = ['0002.HK', '0005.HK', '0011.HK', '0992.HK', '0066.HK'] url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22" + ("%22%2C%22".join(stocks)) + "%22)%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json" result = urllib2.urlopen(url) data = json.loads(result.read()) # create frames based on the metric data format frames = [] for stock in data['query']['results']['quote']: …