Module: Ripper::RubyBuilder::Array

Included in:
Ripper::RubyBuilder
Defined in:
lib/ripper/ruby_builder/events/array.rb

Instance Method Summary collapse

Instance Method Details

#on_aref(target, args) ⇒ Object



45
46
47
48
49
50
# File 'lib/ripper/ruby_builder/events/array.rb', line 45

def on_aref(target, args)
  args ||= Ruby::ArgsList.new
  args.ldelim ||= pop_token(:@lbracket, :left => target)
  args.rdelim ||= pop_token(:@rbracket, :reverse => true, :pass => true, :left => args.ldelim)
  Ruby::Call.new(target, nil, nil, args)
end

#on_aref_field(target, args) ⇒ Object



52
53
54
55
56
57
# File 'lib/ripper/ruby_builder/events/array.rb', line 52

def on_aref_field(target, args)
  args ||= Ruby::ArgsList.new
  args.ldelim ||= pop_token(:@lbracket, :left => target)
  args.rdelim ||= pop_token(:@rbracket, :reverse => true, :pass => true, :left => args.ldelim)
  Ruby::Call.new(target, nil, nil, args)
end

#on_array(args) ⇒ Object



4
5
6
7
8
# File 'lib/ripper/ruby_builder/events/array.rb', line 4

def on_array(args)
  rdelim = pop_token(:@rbracket)
  ldelim = pop_token(:@lbracket)
  args ? args.to_array(ldelim, rdelim) : Ruby::Array.new(nil, ldelim, rdelim)
end

#on_qwords_add(array, word) ⇒ Object



32
33
34
35
36
37
# File 'lib/ripper/ruby_builder/events/array.rb', line 32

def on_qwords_add(array, word)
  word = on_word_add(on_word_new, word) # simulating missing on_word_new and on_word_add events
  array.rdelim ||= pop_token(:@words_end)
  array << word
  array
end

#on_qwords_new(*args) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/ripper/ruby_builder/events/array.rb', line 24

def on_qwords_new(*args)
  rdelim = pop_token(:@words_end)
  ldelim = pop_token(:@qwords_beg)
  words = Ruby::Array.new(nil, ldelim, rdelim)
  string_stack << words unless rdelim
  words
end

#on_words_add(array, word) ⇒ Object



18
19
20
21
22
# File 'lib/ripper/ruby_builder/events/array.rb', line 18

def on_words_add(array, word)
  array.rdelim ||= pop_token(:@words_end)
  array << word
  array
end

#on_words_end(rdelim = nil) ⇒ Object



39
40
41
42
43
# File 'lib/ripper/ruby_builder/events/array.rb', line 39

def on_words_end(rdelim = nil)
  words = string_stack.pop
  words.rdelim ||= pop_token(:@tstring_end, :@words_sep)
  words
end

#on_words_new(*args) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/ripper/ruby_builder/events/array.rb', line 10

def on_words_new(*args)
  rdelim = pop_token(:@words_end)
  ldelim = pop_token(:@words_beg)
  words = Ruby::Array.new(nil, ldelim, rdelim)
  string_stack << words
  words
end