Project

rpr

0.01
No commit activity in last 3 years
No release in over 3 years
RPR displays Ruby's AST on command line.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

~> 1.11
~> 0.8.15
~> 2.13.0
~> 5.9.0
~> 10.0
~> 0.12.0

Runtime

>= 0
~> 0.10.3
~> 3.8.3
 Project Readme

RPR

RPR displays Ruby's AST on command line.

Gem Version Build Status Coverage Status

Support parsers

Installation

Add this line to your application's Gemfile:

gem 'rpr'

And then execute:

$ bundle

Or install it yourself as:

$ gem install rpr

Usage

Basic Usage

$ echo 'puts "Hello world"' > hello.rb
$ rpr hello.rb
[:program,
 [[:command,
   [:@ident, "puts", [1, 0]],
   [:args_add_block,
    [[:string_literal,
      [:string_content, [:@tstring_content, "Hello world", [1, 6]]]]],
    false]]]]

Specify Parser

The default parser is sexp. You can find all supported parsers with --help option.

For example:

$ rpr hello.rb --parser rubocop
s(:send, nil, :puts,
  s(:str, "Hello world"))
$ rpr hello.rb --method tokenize
["puts", " ", "\"", "Hello world", "\"", "\n"]

Specify output formatter

The default formatter is pp. You can find all supported formatters with --help option.

For example:

$ rpr hello.rb --formatter json
[
  "program",
  [
    [
      "command",
      [
        "@ident",
        "puts",
        [
          1,
          0
        ]
      ],
      [
        "args_add_block",
        [
          [
            "string_literal",
            [
              "string_content",
              [
                "@tstring_content",
                "Hello world",
                [
                  1,
                  6
                ]
              ]
            ]
          ]
        ],
        false
      ]
    ]
  ]
]

Inspect an AST with pry.

$ rpr hello.rb --formatter pry
[1] pry(#<Array>)> self
=> [:program, [[:command, [:@ident, "puts", [1, 0]], [:args_add_block, [[:string_literal, [:string_content, [:@tstring_content, "Hello world", [1, 6]]]]], false]]]]
[2] pry(#<Array>)> ls
Enumerable#methods:
  all?   chunk_while     detect     each_entry  each_with_index   entries  find_all  grep    group_by  lazy  max_by   min     minmax     none?  partition  slice_after   slice_when
  chunk  collect_concat  each_cons  each_slice  each_with_object  find     flat_map  grep_v  inject    max   member?  min_by  minmax_by  one?   reduce     slice_before  sort_by
Array#methods:
  &  <<   []=    bsearch        collect!     concat  delete_at  drop_while  eql?        first     hash      inspect  length  permutation         product  reject!               reverse       rotate   select!    shuffle!  sort      take_while  to_s       unshift
  *  <=>  any?   bsearch_index  combination  count   delete_if  each        fetch       flatten   include?  join     map     pop                 push     repeated_combination  reverse!      rotate!  shelljoin  size      sort!     to_a        transpose  values_at
  +  ==   assoc  clear          compact      cycle   dig        each_index  fill        flatten!  index     keep_if  map!    pretty_print        rassoc   repeated_permutation  reverse_each  sample   shift      slice     sort_by!  to_ary      uniq       zip
  -  []   at     collect        compact!     delete  drop       empty?      find_index  frozen?   insert    last     pack    pretty_print_cycle  reject   replace               rindex        select   shuffle    slice!    take      to_h        uniq!      |
self.methods: __pry__
locals: _  __  _dir_  _ex_  _file_  _in_  _out_  _pry_
[3] pry(#<Array>)> exit

Print an AST as a PNG image with Graphviz.

$ rpr hello.rb -f dot | dot -Tpng -oast.png
$ open ast.png

ast

Configuration

Rpr searches config file from ./.rpr or ~/.config/rpr. ./.rpr is priority.

Config file is space separated options.

Example.

./.rpr or ~/.config/rpr

-f pry

Development

After checking out the repo, run bin/setup to install dependencies. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/pocke/rpr.

Links

License

These codes are licensed under CC0.

CC0