Sha256: ac018bae8365b6dcb7702a3ce5a0b7a68c3932fae5b3b47b1ab5d01b48cff45c

Contents?: true

Size: 1.23 KB

Versions: 14

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true

module Avm
  module EacRubyBase1
    module Sources
      class NamespaceReplacer
        common_constructor :from, :to

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

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

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

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

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

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

        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
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 2 rubygems

Version Path
avm-eac_ruby_base1-0.35.1 lib/avm/eac_ruby_base1/sources/namespace_replacer.rb
eac_tools-0.96.1 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/namespace_replacer.rb
avm-eac_ruby_base1-0.35.0 lib/avm/eac_ruby_base1/sources/namespace_replacer.rb
eac_tools-0.95.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/namespace_replacer.rb
avm-eac_ruby_base1-0.34.1 lib/avm/eac_ruby_base1/sources/namespace_replacer.rb
eac_tools-0.91.1 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/namespace_replacer.rb
avm-eac_ruby_base1-0.34.0 lib/avm/eac_ruby_base1/sources/namespace_replacer.rb
eac_tools-0.91.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/namespace_replacer.rb
avm-eac_ruby_base1-0.33.1 lib/avm/eac_ruby_base1/sources/namespace_replacer.rb
eac_tools-0.83.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/namespace_replacer.rb
eac_tools-0.82.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/namespace_replacer.rb
eac_tools-0.81.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/namespace_replacer.rb
avm-eac_ruby_base1-0.33.0 lib/avm/eac_ruby_base1/sources/namespace_replacer.rb
eac_tools-0.80.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/namespace_replacer.rb