Amazing tool.<p>Feature requests: allow for more than one example.<p><pre><code> Input:
{"class": "101", "students": 101}
{"class": "201", "students": 80}
{"class": "202", "students": 50}
{"class": "301", "students": 120}
Example:
Class 101 has 101 students
Output:
Class 101 has 101 students
Class 201 has 201 students
Class 202 has 202 students
Class 301 has 301 students
</code></pre>
Right now the first line cannot have any ambiguity. This is fixable by reordering, but with large enough data sets I may have some ambiguity in <i>all</i> lines, at different places. Multiple examples would fix that.<p>Again, loved the tool. I can see this going very far, specially with non-technical people.
As mentioned by others, this is implemented in Excel 2013 as Flash Fill feature.<p><a href="https://www.youtube.com/watch?v=UccfqwwOCoY" rel="nofollow">https://www.youtube.com/watch?v=UccfqwwOCoY</a>
Afaik, "LeBron" is his first name. The way you use it (and misspell it) is confusing, I'd suggest you replace him with a simpler alternative (Kobe Bryant? Tim Duncan? whatever).<p>Same for Kagawa -- the Japanese use surnames in a different way, might be simpler to replace him.
This area of research is called "program sketching", which creates programs by example.<p><a href="http://www.eecs.berkeley.edu/Pubs/TechRpts/2008/EECS-2008-177.html" rel="nofollow">http://www.eecs.berkeley.edu/Pubs/TechRpts/2008/EECS-2008-17...</a><p>edit: see below
On your main screen, make the example editable. It would be nice to be able to just enter into the green box to see how it works rather than have to click through the "Get Started"<p>Also, your instructions makes it seem like the example is editable:<p>SUPER EASY TO USE
1. Paste your source data in the white box on the left.<p>2. Type in the green box on the right how you would like the first line of your data to look.<p>3. Transformy will look at your example and transform every line from your source data into the same format.
This is a great idea! It didn't behave the way I expected with some URLs as input, though:<p><pre><code> http://example1.org/path/index.html
http://www.example2.org/path/index.html
http://www.example3.org/
https://www.example4.org/a/b/c/d/e/f/g/hijklmnop
</code></pre>
The pattern I gave was:<p><pre><code> example1.org, path/index.html
</code></pre>
So I expected to get:<p><pre><code> example1.org, path/index.html
www.example2.org, path/index.html
www.example3.org,
www.example4.org, a/b/c/d/e/f/g/hijklmnop
</code></pre>
Instead, I got:<p><pre><code> example1.org, path/index.html
wwwexample.2, org/path.index
wwwexample.3, org/.
wwwexample.4, org/a.b
</code></pre>
A few feature requests: allow downloading the output as a text file; show a pseudo-code formula of how transformy interpreted the transformation, like "s/.+:\/\/(.+?)\/(.*)/\1, \2/"; and add support for common arbitrary transformations like "November"↔"NOV"↔"11", or "2"↔"2nd".
Amongst other things this can be used for cleaning tables/lists from special characters, changing date formats and creating xml or json.<p>Feedback and suggestions are very much welcome! We plan on adding a few more features soon as right now it is fairly basic but would like to hear some opinions and see if there's people out there that have a use for this.
Good concept but doesn't work. Example, type different variations of legal well formatted addresses.<p><pre><code> 1 Microsoft Way Apt 43, Redmond, WA 98065, U.S.A.
1-1/4 Palm Hwy, Colino, MA 87009, USA
500 Potasium Cloride, Sunshite-Big Blow City, PA 30000, United States of America
</code></pre>
First line output should look like:<p><pre><code> 1 Redmond 98065 U.S.A.
</code></pre>
Also having country-specific obscure sports terminology on landing page example can cause lot of confusion.
Buggy, all I did is add Dean middle name to third line<p><pre><code> In:
3, Roberto Carlos, soccer, Brazil
35, Michael Jordan, baseball, USA
6, James Dean Lebron, basketball, USA
10, Shinji Kagawa, soccer, Japan
Ex: Carlos is number 3 playing soccer
Out:
Carlos is number 3 playing soccer
Jordan is number 35 playing baseball
Dean is number 6 playing Lebron (what??)
Kagawa is number 10 playing soccer
</code></pre>
I guess you can't really solve the ambiguity of Carlos meaning the second word on the second column versus the last word of the second column; but the commas should at least hint a tabular pattern, no?
You know, for people that don't know Awk or aren't comfortable with a scripting language, this is a really nice idea. Thinking back to grad school, which was in a non-computer science quantitative field, there are lots of people that would have appreciated having something like this easily available.
I love the product.<p>I have a small piece of feedback on the site. You could make it a tiny bit clearer that this is a free, registration free, service which people can start using with just one click.<p>When I first visited the site, I looked it over, noticed the email box and the "get started" and just assumed it was a library I'd need to buy. It wasn't until I came back to the comments here that I realised the site was a service (which is actually extremely useful to me, and it has been bookmarked).<p>Why not just make <a href="http://www.transformy.io/#/app" rel="nofollow">http://www.transformy.io/#/app</a> your homepage instead?
This is a very cool tool. I wouldn't trust it with any sensitive info though. The lack of terms, https, and the fact that it's closed source means I have no idea of what could happen to the data I put in there.
If anyone's interested here's my own rather less sophisticated effort for these kind of odd jobs: <a href="http://whalemerge.com/" rel="nofollow">http://whalemerge.com/</a>
If you're translating into text that's meant to be readable, it seems like you need to add a few items to your dataset that give additional information on natural language.<p>For example, I added some information in the example below about which pronoun to use based on gender. Would be really neat to have this sort of information built into the tool.<p>Input:<p><pre><code> {name: "James", age:"30", hobby: "running", genderWord: "his"}
{name: "Erin", age:"28, hobby: "cooking", genderWord: "her"}
{name: "Owen", age:"3", hobby: "playing chase", genderWord: "his"}
{name: "Luke", age:"1", hobby: "reading", genderWord: "his"}
</code></pre>
Example:
James is 30 years old and his favorite hobby is running<p>Output:<p><pre><code> James is 30 years old and his favorite hobby is running
Erin is 28 years old and her favorite hobby is cooking
Owen is 3 years old and his favorite hobby is playing chase
Luke is 1 years old and his favorite hobby is reading</code></pre>
Nice tool and concept dude.<p>But it doesn't seems to look properly at the meaning of content though.<p>I mean, I think it just finds the first presence of what the given pattern is and generates the result.<p>For example, I attempted this, with input data as date/time.<p>input data:<p><pre><code> 2015-09-15T09:15:17-05:00
1998-11-05T08:15:21-05:00
1999-01-03T04:33:30-05:00
2000-11-05T09:16:00-05:00
</code></pre>
pattern:<p><pre><code> 09:15 on 09-15
</code></pre>
result:<p><pre><code> 09:15 on 09-15
11:05 on 11-05
01:03 on 01-03
11:05 on 11-05
</code></pre>
What I was expecting:<p><pre><code> 09:15 on 09-15
08:15 on 11-05
04:33 on 01-03
09:16 on 11-05
</code></pre>
Although I helped it at certain level by using the same special character pattern the input data has.<p>And as I was afraid, it doesn't handle special characters, neither uses them in the process either, as @j2kun has mentioned in a comment.<p>But, it is promising at some point and have nice use cases too. :)
One can achieve the same in sublime text using the multiple cursors and edit feature. This is great for non tech people.<p>For those of you who are wondering what sublime text can do, do give a visit to a sublime text video series on tutsplus, its awesome and teaches you the power of sublime text
For a second I thought this is some kind of a data mining/ML/search tool that could transform<p>USA, Barack<p>Germany, Angela<p>to<p>USA, Obama<p>Germany, Merkel<p>based on a single example. Do this please. :)
There is a bug with multiword data points:<p><pre><code> Input:
Bogdan, "Yucca"
Josy, "Orange County"
Bill, "San Diego"
Example:
Bogdan lives in Yucca
Output:
Bogdan lives in Yucca
Josy lives in Orange
Bill lives in San</code></pre>
This is neat. I find myself wanting more detail on what works, though. For example, I c/ped your original example and tried "Roberto C. from Brazil."<p>It didn't infer that C. meant to truncate the last name, so everything ended up "John C." No biggie, but trying to figure out what does and doesn't work aside from tokenized string formatting was a bummer. Having the uppercase example led me to believe it could do more types of transformation.<p>Possible the right answer is hinting of some kind. "Roberto {C.} from Brazil" to hint that the C. should be matched with -something-, and since . naturally means abbreviation would mean "starts with C".
Avi Bryant demo'd this exact concept at an old CUSEC: <a href="https://vimeo.com/4763707#t=27m20s" rel="nofollow">https://vimeo.com/4763707#t=27m20s</a><p>I wish I knew which paper he was referring to - it's a great feature :).
I'd usually use 'perl -n -e' if I needed something like this. Not suggesting that perl is a better alternative but it's a reason why I'd never need to use that tool.<p>Here's the corresponding perl program using the same data and output as on the transformy home page:<p><pre><code> pbpaste | perl -p -e 's/(\d+), (\w+) (\w+), (\w+), (\w+)/@{[uc($3)]}, jersey number $1/'
</code></pre>
To use that (pbpaste I think is a mac only feature) first copy / paste that into your terminal, then copy the list, then hit enter in the terminal.
This! I wanted this feature to be in every text editor for years :)). Like <a href="http://nimbletext.com" rel="nofollow">http://nimbletext.com</a> but show and tell instead of expressions :).<p>Thanks!!!
I like the idea.<p>Does not seem to handle my main use case however (transforming a schema entry in Rails to a list of symbols).<p>Eg:<p>Input:<p>t.integer "Id"<p>t.integer "Active"<p>t.string "Email", null: false<p>t.string "CryptedPassword", null: false<p>t.datetime "created_at"<p>t.datetime "updated_at"<p>Example:<p>:Id<p>Output:<p>:Id<p>:Active<p>:Email<p>:CryptedPassword<p>:created<p>:updated
This is pretty neat. Since were asking for features: smarter date conversions. For instance on the input: '2015-04-24', and for example output: '26 April 2015'. The if another line has '2015-03-01' it would output '1 March 2015'. This seems like a somewhat difficult problem, but it'd be magical if it worked.
Great tool, but too bad it can't handle code very well.<p>An example (converting C++ to C):<p><pre><code> Input:
void FileStream::write(char* , int);
void VirtualMachine::cycle(int);
Example:
void FileStream_write(char* , int);
Output:
void FileStream_write(char* , int);
void VirtualMachine_cycle(int* , );
</code></pre>
Also, is it open-source?
This is essentially the idea behind Warp, which can do it on large data sets and databases (<a href="https://pixelspark.nl/2015/warp-a-query-by-example-analysis-tool-for-big-data" rel="nofollow">https://pixelspark.nl/2015/warp-a-query-by-example-analysis-...</a>)
The last example with JSON replace is really nice, I do this regularly with regular expression find-replace with groups, on larger datasets. I guess i can forget about regular expressions now. Nice work!
I'd be keen to use something like this as an offline library. Is there anything similar that exists out there for auto-detecting data formatting and structure, but as a library instead?
I tried a list of unicode characters and their codepoint numbers, but it doesn't seem to recognize the unicode characters probably. Perhaps a normalization issue?
Really great. Manipulating lists is the hardest thing in the world for common people, while for any programmer it is really easy. This should even the things a little.
Not sure that this is doing what it's supposed to. This series:<p>11/1/2008,
12/1/2008,
6/1/2009<p>transformed to this:<p>November 1, 2008,
November 1, 2008,
November 1, 2009
Another bug:<p>Adding a middle initial to the first player (Carlos), but no other lines, and I typed in "Carlos plays soccer" results in:<p>Carlos plays soccer<p>baseball plays USA<p>basketball plays USA<p>soccer plays Japan<p>Cool idea though.
There is a bug with the tool, I have list data in this format (modified data for privacy)<p>abc, The Institue of<p>xyz, The school of<p>nbc2, The college of<p>jor5, School of<p>and if I try to extract just the name of the person it gives me the following<p>abc<p>xyz<p>nbc<p>jor<p>It's missing the numbers
Is anyone else bothered by the fact that 5 years ago, this would have been a free command line tool? But nowadays it's a closed-source web app instead?