Class: Avm::EacRubyBase1::Sources::NamespaceReplacer

Inherits:
Object
  • Object
show all
Defined in:
lib/avm/eac_ruby_base1/sources/namespace_replacer.rb

Instance Method Summary collapse

Instance Method Details

#concat_regex(regexes) ⇒ Object



9
10
11
12
13
14
15
# File 'lib/avm/eac_ruby_base1/sources/namespace_replacer.rb', line 9

def concat_regex(regexes)
  r = regexes.first
  regexes[1..-1].each do |x|
    r = ::Regexp.new(r.source + x.source)
  end
  r
end

#from_closeObject



26
27
28
# File 'lib/avm/eac_ruby_base1/sources/namespace_replacer.rb', line 26

def from_close
  concat_regex(from.split('::').count.times.map { / *end *\n/m })
end

#from_openObject



21
22
23
24
# File 'lib/avm/eac_ruby_base1/sources/namespace_replacer.rb', line 21

def from_open
  concat_regex(from.split('::')
    .map { |v| / *(?:class|module) +#{::Regexp.quote(v)} *\n/m })
end

#from_resultObject



17
18
19
# File 'lib/avm/eac_ruby_base1/sources/namespace_replacer.rb', line 17

def from_result
  /\n#{from_open.source}(.+)#{from_close.source}/m
end

#to_closeObject



42
43
44
45
46
47
48
49
50
51
# File 'lib/avm/eac_ruby_base1/sources/namespace_replacer.rb', line 42

def to_close
  parts = to.split('::')
  s = ''
  parts.each_with_index do |_part, index|
    tabc = (parts.count - 1 - index)
    tabc -= 1 if index.zero?
    s += ('  ' * tabc) + "end\n"
  end
  s
end

#to_openObject



34
35
36
37
38
39
40
# File 'lib/avm/eac_ruby_base1/sources/namespace_replacer.rb', line 34

def to_open
  s = ''
  to.split('::').each_with_index do |part, index|
    s += ('  ' * index) + "module #{part}\n"
  end
  s
end

#to_resultObject



30
31
32
# File 'lib/avm/eac_ruby_base1/sources/namespace_replacer.rb', line 30

def to_result
  "\n\n#{to_open}\\1#{to_close}"
end