PHP replace $this-> with something shorter? - verbose

Can anyone think of some sort of preprocessing or something that could be put in place to reduce this horrible verbosity?
Typing $this-> constantly is driving me insane, why can't it just be achieved with a different symbol from $; $ for normal scoping £ for $this-> scoping.
Thank you.

Unfortunately this is not really possible. Unless you create your own version of PHP and change the interpreter (Which I strongly recommend against for numerous reasons).
Also changing $this-> to your own thing would hurt your code compatibility greatly. Especially if someone were to work on your code in the future.
If you really have a hard time dealing with this, I strongly recommend you install a IDE like PHPStorm or any other IDE with auto completion or setup your own macro to type it out for you.

Sed to the rescue! Here's my code for condensing some of the verbosity.
run.sh
#!/bin/bash
echo Running server
for f in ./src/*.php
do
sed -f ./preprocess.sed $f > ./live/`basename $f`
done
cd live
php ./server.php
preprocess.sed
s/£/$this->/g
Before / After
case TableState::INIT:
$this->gone->reset($this->tableSpot, $this->tableNote);
$this->state = TableState::WAITING;
break;
And after
case TableState::INIT:
£gone->reset(£tableSpot, £tableNote);
£state = TableState::WAITING;
break;
As everyone else has said, this makes your code not functional be default, so you need to do sufficient documentation around how preprocess. But I think sed -f ../preprocessor.sed ./* in the source directory will make it all normal code.

Related

Perl: console / command-line tool for interactive code evaluation and testing

Python offers an interactive interpreter allowing the evaluation of little code snippets by submitting a couple of lines of code to the console. I was wondering if a tool with similar functionality (e.g. including a history accessible with the arrow keys) also exists for Perl?
There seem to be all kinds of solutions out there, but I can't seem to find any good recommendations. I.e. lots of tools are mentioned, but I'm interested in which tools people actually use and why. So, do you have any good recommendations, excluding the standard perl debugging (perl -d -e 1)?
Here are some interesting pages I've had a look at:
a question in the official Perl FAQ
another Stackoverflow question, where the answer mostly is the perl debugger and several links are broken
Perl Console
Perl Shell
perl -d -e 1
Is perfectly suitable, I've been using it for years and years. But if you just can't,
then you can check out Devel::REPL
If your problem with perl -d -e 1 is that it lacks command line history, then you should install Term::ReadLine::Perl which the debugger will use when installed.
Even though this question has plenty of answers, I'll add my two cents on the topic. My approach to the problem is easy if you are a ViM user, but I guess it can be done from other editors as well:
Open your ViM, and type your code. You don't need to save it on any file.
:w !perl for evaluation (:w !COMMAND pipes the buffer to the process obtained by running COMMAND. In this case the mighty perl interpreter!)
Take a look at the output
This approach is good for any interpreted language, not just for Perl.
In the case of Perl it is extremely convenient when you are writing your own modules, since in my experience the perl interpreter will refuse to reload a module (even when loading was attempted and failed). On the minus side, you will loose all your context every time, so if you are doing some heavy or slow operation, you need to save some intermediate results (whilst the perl console approach preserves the previously computed data).
If you just need the evaluation of an expression - which is the other use case for a perl console program - another good alternative is seeing the evaluation out of a perl -e command. It's fast to launch, but you have to deal with escaping (for this thing the $'...' syntax of Bash does the job pretty well.
Just use to get history and arrows:
rlwrap perl -de1

How can I get the most out of macros in Notepad++?

What I really want is something similar to Photoshop's automation feature, where you can set it up so it will open a file, preform a macro, and then save the file.
I would prefer if this could be done in Notepad++, but does Dreamweaver or any other IDE have something similar?
I have a couple hundred HTML files that I want to make fairly repetitive modifications to, and really think there is an easier way than doing it manually.
Any help greatly appreciated!
If you're open to installing the Cygwin tools then the sed or awk tools might be appropriate for exactly this kind of repetitive editing. I've used sed to prepend a license to files that didn't already have an explicit license, rename variables, etc. There isn't much hand-holding with these tools though -- you write little tiny sed or awk programs to do the job:
sed -i 's/foo/bar/g' * # replace 'foo' with 'bar' in all files in current dir

General help for deciphering/explaining sed one-liners?

I've just stumbled upon some cryptic sed expression in a legacy script. Could you give me some hints how to start decoding it?
Best thing would be some automatic tool translating sed incantations to English, but for a close runner up, I'd be very grateful for some nice index of (all) sed commands. Otherwise, I'm certainly highly interested in any help at all on how to quickly attack the problem (other than having to read the manual cover to cover...).
(Side note: as you may have guessed, I don't want to just paste the expression here, as I'd like to be able to do it easier and faster next time I stumble on some similar line noise...)
I'd be very grateful for help!
Edit: regexps themselves aren't problem, by the way, I'm good enough at them.
i don't think there is automatic tool that can 'transalte' sed commands to english. however you may want to check http://aurelio.net/sedsed/ . it will help you to understand one sed script, what it does, and how.
anyway, if you list some examples would be good.
This might work for you.
Unix in a Nutshell by Robbins has a very nice chapter on sed. Clear and concise descriptions of the commands.
Your best bet would be to learn the sed language in-depth. Unforunately, the sed documentation is more like a reference. Here's a nice step by step guide that doesn't take too long to read.
I found "Sed One-Liners Explained" to be very informative as well as fun.

Is there a command line program to lookup Scaladoc?

Ruby has a program called ri where you can type in 'ri Array' and get its manpage. Is there something like that for scaladoc?
Now that the Scaladoc web "app" is being enhanced with indexes for fast in-browser search, this kind of thing should become much easier, especially now that there's always a JS interpreter in JDK6. I'd suggest filing an enhancement request. :)
Not that I know of, but it would be cool. I don't think it would be too hard to do it, given that scaladoc (I heard) is supposed to be kind of pluggable.
vim-scaladoc was released in late 2012.
With a command-line browser like elinks, and just one directory which matches scaladoc, you can use:
#!/bin/bash
for link in $(locate scaladoc | grep $1); do elinks $link ; done
Stefan Zeiger's Extradoc would probably be a good basis for this and other documentation tools.

What is a good method for inventing a command name?

We're struggling to come up with a command name for our all purpose "developer helper" tool, which we are using on our project. It's like a wrapper for our existing tools like cmake and hg. The purpose of the command is really just to make our lives easier by combining multiple commands into one (for example, publishing packages). For example, we have commands like:
do conf
do build
do install
do publish
We've considered a few ambiguous names like do (as above) and run, but obviously, do is a Linux bash command and run is pretty ambiguous.
We'd like our command to be 2 chars short, preferably - but who thinks we're asking the impossible? Is there a practical way to check the availability of command names (other than just typing them into your terminal), or is it just a case of choose one and hope nobody else will use it? Are we worrying about nothing?
Since it's a "developer helper" tool why not use hm [run|build|port|deploy|test], Help Me ...
Give it a verbose name, then let everyone alias it to whatever they want. Make sure you use the verbose name in other scripts so that it removes ambiguity.
This way, each user gets to use whatever makes sense to him/her, and the scripts are more readable and more easily searchable (for example, grepping four "our_cool_tool" will usually yield better results than grepping for "run").
How many 2-character words are useful in this context? I think you need four. With that in mind, here are some suggestions.
omni
torq
fluf
mega
spif
crnk
splt
argh
quat
drul
scud
prun
sqat
zoom
sizl
I have more if you need them.
Pick one: http://en.wikipedia.org/wiki/List_of_all_two-letter_combinations
To check the availability of command names, I suggest looking for all two-letter filenames that are in the directories in your path. You can use a script like this
for item in `echo $PATH | sed 's/:/ /g'` ; do
ls -1d $item/??
done
It won't show builtins in your shell (like "do" as you mentioned) but it's a good start.
Change ?? to ??? for three-letter files, etc.
I'm going to vote for qp (quick package?) since it's easy to pronounce, easy to type, and easy to remember where the keys are on the keyboard.
I use "asd". it's short and most developers type it without thinking
(oh, and you can always claim later that it stands for some "Advanced Script for Developers" if you need to justify yourself a few years from now)
How about fu? As in Kung Fu. It's a special purpose tool. And it's really easy to type.
I think that run is a good name, at least anybody that will download your project will know what to do. Calling it without parameters should reveal your options.
Even 'do' will do, I think you can use backquotes to run it from bash scripts.
Also remember that running the tools without parameters will tell you what options you have.
Use makefiles to do everything for you.
How about calling it something descriptive, like 'build_runner', and then just aliasing it to 'br' (or preferred acronym) in your .bashrc?
There is a really crappy tool called cleartool (part of clearcase), and people will alias it on their machine to "ct". Perhaps you can have a longer command and suggest users alias it.
It would probably be best to do something like ire_and_curses suggested, name it descriptively then alias it to a 2 letter command. If I was choosing, I would name it dev_help and alias it to dh.
I think you're worrying about nothing. Install the program as 'the-command-to-do-evertyhing-and-if-you-dont-make-your-own-alias-for-it-you-should'. I don't think that will be too long for any modern filesystems, but you might need to shorten it to 'tctdeaiydmyoafiys'. See what common aliases are used, and then change the program's name to that. In other words: don't decide, let natural selection decide for you. If you are working with a team of < 10, this should not even remotely cause any problems.
Call it devtool alias to dt
Custom tools like that I like to start with the prefix 'jj-'. I can type (with big index-finger power) 'jj ' and see all my personal commands. Also, they group together in alphabetical lists. 'J' is not a very common character for built-inc commands, but you can pick your own.
Since you want two characters, you can use just 'zz', or something starting with 'z'.
Are you sure you want to put all your functionality in one command? That might be simultaneously over-constraining and over-loading the interface a little.
do conf
do build
do install
do publish