The Pry-higlight gem (gem install pry-highlight
) adds a highlight
command (aka. >>
) to Pry.
This intelligently formats and colourizes the result, so you don't have to.
Features
By default this pretty-prints the previous output value:
[1] pry(main)> '{"hi":"world"}'
=> "{\"hi\":\"world\"}"
[2] pry(main)> >>
{
"hi": "world"
}
It can auto-detect JSON, XML and Ruby code by default:
[3] pry(main)> JSON.method(:pretty_print).source
=> " def pretty_print(q)\n q.text inspect\n end\n"
[4] pry(main)> >>
def pretty_print(q)
q.text inspect
end
You can also tell it which highlighter to use, see CodeRay's homepage for the full list.
[5] pry(main)> "function () {\n return 'meh';\n}"
=> "function () {\n return 'meh';\n}"
[6] pry(main)> >> -t javascript
function () {
return 'meh';
}
You can give it the value to higlight explicitly:
[7] pry(main)> >> "<meta><foo/></meta>"
<?xml version="1.0"?>
<meta>
<foo/>
</meta>
In fact, any combination of ruby and a -t flag works :)
[8] pry(main)> >> -t html File.read("/var/www/foo.html")
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<h1>It works!</h1>
</body>
</html>
Even if you try to >>
a String that isn't understood, you'll still get nice results because newlines will be interpreted correctly:
[9] pry(main)> "1 2 3\n4 5 6\n7 8 9\n"
=> "1 2 3\n4 5 6\n7 8 9\n"
[10] pry(main)> >>
1 2 3
4 5 6
7 8 9
Issues
The guessing of type based on the string could do with improvement.
Meta-foo
Licensed under the MIT license, contributions and bug-reports welcome :).