Class: Ripper::RubyBuilder

Inherits:
SexpBuilder
  • Object
show all
Includes:
Args, Array, Assignment, Block, Call, Case, Const, For, Hash, Identifier, If, Lexer, Literal, Method, Operator, Statements, String, Symbol, While
Defined in:
lib/ripper/ruby_builder.rb,
lib/ripper/ruby_builder/queue.rb,
lib/ripper/ruby_builder/stack.rb,
lib/ripper/ruby_builder/token.rb,
lib/ripper/ruby_builder/buffer.rb,
lib/ripper/ruby_builder/events/if.rb,
lib/ripper/ruby_builder/events/for.rb,
lib/ripper/ruby_builder/events/args.rb,
lib/ripper/ruby_builder/events/call.rb,
lib/ripper/ruby_builder/events/case.rb,
lib/ripper/ruby_builder/events/hash.rb,
lib/ripper/ruby_builder/events/array.rb,
lib/ripper/ruby_builder/events/block.rb,
lib/ripper/ruby_builder/events/const.rb,
lib/ripper/ruby_builder/events/lexer.rb,
lib/ripper/ruby_builder/events/while.rb,
lib/ripper/ruby_builder/events/method.rb,
lib/ripper/ruby_builder/events/string.rb,
lib/ripper/ruby_builder/events/symbol.rb,
lib/ripper/ruby_builder/events/literal.rb,
lib/ripper/ruby_builder/events/operator.rb,
lib/ripper/ruby_builder/events/assignment.rb,
lib/ripper/ruby_builder/events/identifier.rb,
lib/ripper/ruby_builder/events/statements.rb

Defined Under Namespace

Modules: Args, Array, Assignment, Block, Call, Case, Const, For, Hash, Identifier, If, Lexer, Literal, Method, Operator, Statements, String, Symbol, While Classes: Buffer, ParseError, Queue, Stack, Token

Constant Summary collapse

NEWLINE =
[:@nl, :@ignored_nl]
WHITESPACE =
[:@sp, :@comment] + NEWLINE
OPENERS =
[:@lparen, :@lbracket, :@lbrace, :@class, :@module, :@def, :@begin, :@while, :@until,
:@for, :@if, :@elsif, :@else, :@unless, :@case, :@when, :@embexpr_beg, :@do, :@rescue,
:'@=', :'@::']
KEYWORDS =
[:@alias, :@and, :@BEGIN, :@begin, :@break, :@case, :@class, :@def, :@defined,
:@do, :@else, :@elsif, :@END, :@end, :@ensure, :@false, :@for, :@if, :@in,
:@module, :@next, :@nil, :@not, :@or, :@redo, :@rescue, :@retry, :@return,
:@self, :@super, :@then, :@true, :@undef, :@unless, :@until, :@when, :@while,
:@yield]
SEPARATORS =
[:@semicolon, :@comma]
UNARY_OPERATORS =
[:'@+', :'@-', :'@!', :'@~', :@not, :'@+@', :'@-@']
BINARY_OPERATORS =
[:'@**', :'@*', :'@/', :'@%', :'@+', :'@-', :'@<<', :'@>>', :'@&', :'@|', :'@^',
:'@>', :'@>=', :'@<', :'@<=', :'@<=>', :'@==', :'@===', :'@!=', :'@=~', :'@!~',
:'@&&', :'@||', :@and, :@or]
TERNARY_OPERATORS =
[:'@?', :'@:']
ASSIGN_OPERATORS =
[:'@=', :'@+=', :'@-=', :'@*=', :'@**=', :'@%=', :'@/=', :'@|=', :'@&=', :'@^=',
:'@[]=', :'@||=', :'@&&=', :'@<<=', :'@>>=']
ACCESS_OPERATORS =
[:'@[]']
OPERATORS =
UNARY_OPERATORS + BINARY_OPERATORS + TERNARY_OPERATORS + ASSIGN_OPERATORS + ACCESS_OPERATORS
@@filters =
[lambda { |src, file| file && File.extname(file) == '.erb' ? Erb::Stripper.new.to_ruby(src) : src }]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Lexer

#on___end__, #on_backtick, #on_comma, #on_comment, #on_embdoc, #on_embdoc_beg, #on_embdoc_end, #on_embexpr_beg, #on_embexpr_end, #on_embvar, #on_ignored_nl, #on_lbrace, #on_lbracket, #on_lparen, #on_nl, #on_op, #on_param_error, #on_parse_error, #on_period, #on_qwords_beg, #on_rbrace, #on_rbracket, #on_regexp_beg, #on_regexp_end, #on_rparen, #on_semicolon, #on_sp, #on_symbeg, #on_tstring_beg, #on_tstring_content, #on_tstring_end, #on_words_beg, #on_words_sep

Methods included from Statements

#on_body_stmt, #on_const_ref, #on_paren, #on_program, #on_stmts_add, #on_stmts_new, #on_var_field, #on_var_ref, #on_void_stmt

Methods included from Const

#on_class, #on_const_path_field, #on_const_path_ref, #on_module, #on_sclass, #on_top_const_field, #on_top_const_ref

Methods included from Method

#on_def, #on_defs

Methods included from Call

#on_BEGIN, #on_END, #on_alias, #on_break, #on_call, #on_command, #on_command_call, #on_defined, #on_fcall, #on_field, #on_next, #on_redo, #on_retry, #on_return, #on_return0, #on_super, #on_undef, #on_var_alias, #on_yield, #on_yield0, #on_zsuper

Methods included from Block

#on_begin, #on_block_var, #on_brace_block, #on_do_block, #on_ensure, #on_method_add_block, #on_params, #on_rescue, #on_rescue_mod, #on_rest_param

Methods included from Args

#on_arg_paren, #on_args_add, #on_args_add_block, #on_args_add_star, #on_args_new, #on_blockarg, #on_method_add_arg

Methods included from Assignment

#on_assign, #on_massign, #on_mlhs_add, #on_mlhs_add_star, #on_mlhs_new, #on_mlhs_paren, #on_mrhs_add, #on_mrhs_add_star, #on_mrhs_new, #on_mrhs_new_from_args, #on_opassign

Methods included from Operator

#on_binary, #on_ifop, #on_unary

Methods included from If

#build_if, #on_else, #on_elsif, #on_if, #on_if_mod, #on_unless, #on_unless_mod

Methods included from Case

#on_case, #on_when

Methods included from For

#on_for

Methods included from While

#on_until, #on_until_mod, #on_while, #on_while_mod

Methods included from Identifier

#on_backref, #on_const, #on_cvar, #on_gvar, #on_ident, #on_ivar

Methods included from Literal

#on_CHAR, #on_dot2, #on_dot3, #on_float, #on_int, #on_kw, #on_label

Methods included from String

#on_heredoc_beg, #on_heredoc_end, #on_heredoc_literal, #on_heredoc_new, #on_regexp_literal, #on_string_add, #on_string_concat, #on_string_content, #on_string_dvar, #on_string_embexpr, #on_string_literal, #on_word_add, #on_word_new, #on_xstring_add, #on_xstring_literal, #on_xstring_new

Methods included from Symbol

#on_dyna_symbol, #on_symbol, #on_symbol_literal

Methods included from Array

#on_aref, #on_aref_field, #on_array, #on_qwords_add, #on_qwords_new, #on_words_add, #on_words_end, #on_words_new

Methods included from Hash

#on_assoc_new, #on_assoclist_from_args, #on_bare_assoc_hash, #on_hash

Constructor Details

#initialize(src, filename = nil, lineno = nil) ⇒ RubyBuilder

Returns a new instance of RubyBuilder.



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/ripper/ruby_builder.rb', line 72

def initialize(src, filename = nil, lineno = nil)
  @src = src ||= filename && File.read(filename) || ''

  @filename = filename
  @stack = []
  @stack = Stack.new
  @string_stack = []

  src.gsub!(/([\s\n]*)\Z/) { |s| @trailing_whitespace = Ruby::Whitespace.new(s) and nil }
  src = filter(src, filename)

  super
rescue ArgumentError => e
  p filename
  raise e
end

Instance Attribute Details

#filenameObject (readonly)

Returns the value of attribute filename.



70
71
72
# File 'lib/ripper/ruby_builder.rb', line 70

def filename
  @filename
end

#srcObject (readonly)

Returns the value of attribute src.



70
71
72
# File 'lib/ripper/ruby_builder.rb', line 70

def src
  @src
end

#stackObject (readonly)

Returns the value of attribute stack.



70
71
72
# File 'lib/ripper/ruby_builder.rb', line 70

def stack
  @stack
end

#string_stackObject (readonly)

Returns the value of attribute string_stack.



70
71
72
# File 'lib/ripper/ruby_builder.rb', line 70

def string_stack
  @string_stack
end

#trailing_whitespaceObject (readonly)

Returns the value of attribute trailing_whitespace.



70
71
72
# File 'lib/ripper/ruby_builder.rb', line 70

def trailing_whitespace
  @trailing_whitespace
end

Class Method Details

.build(src, filename = nil) ⇒ Object



33
34
35
# File 'lib/ripper/ruby_builder.rb', line 33

def build(src, filename = nil)
  new(src, filename).parse
end

.filtersObject



37
38
39
# File 'lib/ripper/ruby_builder.rb', line 37

def filters
  @@filters
end