* I just select `public` on my first PHP class property
* Use multiple cursors to select all `public`'s that are before the properties I want (Normally by adding 1 selection at a time since I only want the props, not the public methods)
* Arrow over right 3 times (Now my cursor is right before the property names, after the `$`, this is PHP remember)
* Hold shift + control
* Arrow once more to the right (now the variable names are selected)
* Hit Cmd+c (copy all variable names)
* Open new IMyInterfaceDTO.ts file
* Type `export interface IMyInterfaceDTO { <cursor is here now> }`
* Paste in all my variables between the `{}`
* Select the new-line between each variable (I want a cursor before each variable name)
* Then add in `: string;` after each variable (string is the most common, I then manually change it to number/boolean/etc on the props that need it)
Done, now I have a TypeScript interface that matches my php class that gets turned into JSON.
Here is an example of what I'm talking about: https://cs.joshstrange.com/jlH4BnT3
Yes, I could accomplish the same thing with find and replace using a regex but this lets me see each step of the transformation and react easier. Maybe if I was a regex pro I'd feel differently but this method works really well for me and how my brain works. I know it's a lot of steps but I do it reflexively almost on autopilot verses having to stop and think about a regex.
Here it is: https://streamable.com/vwj0hs
I did three things there:
1. Replace the prefix of several variables from `$mock` to `$stub`
2. Added a prefix to all properties of the object `$r`, which left the camelCasing missing an uppercase letter, I selected that letter on all properties and used "Transform To Uppercase" action on VSCode to camelCase it properly back again.
3. Aligned some keys of two arrays. I selected them, placed some minimal spacing, then hit `Home` to align the cursors to indentation, then used `Ctrl+Delete` to trim the added spaces.
I'll try the range based search, I never used something like that and might like it.