Guest User

Untitled

a guest
Dec 17th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.56 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2. require 'fileutils'
  3. class RenameModule
  4. attr_reader :current_module_name, :new_module_name, :dir
  5. def initialize(current_module_name:,
  6. new_module_name:,
  7. dir:
  8. )
  9. @current_module_name = current_module_name
  10. @new_module_name = new_module_name
  11. @dir = dir
  12. end
  13.  
  14. def rename
  15. puts "[rename-module] "
  16. puts "[rename-module] Rename module #{current_module_name} to module #{new_module_name} in #{dir}"
  17. puts "[rename-module]"
  18. rename_in_dir
  19. end
  20.  
  21. def rename_in_dir
  22. Dir["#{dir}/**/*.elm"].each do |file|
  23. _as_ = false
  24. processed_file = []
  25. IO.readlines(file).each do |line|
  26. if line =~ /module\s+#{current_module_name}\s/
  27. p new_line = line.sub(current_module_name, new_module_name)
  28. processed_file << new_line
  29. elsif line =~ /import\s+#{current_module_name}\s/
  30. if line =~ /\sas\s/
  31. _as_ = true
  32. end
  33. p new_line = line.sub(current_module_name, new_module_name)
  34. processed_file << new_line
  35. else
  36. # somewhere below imports
  37. # if _as_ is false then the module can be referenced directly
  38. # using . operater ie
  39. # \sModuleName\.
  40. if line =~ /\s#{current_module_name}\./
  41. new_line = line.sub(/ #{current_module_name}\./," #{new_module_name}.")
  42. processed_file << new_line
  43. elsif line =~ /\(#{current_module_name}\./
  44. new_line = line.sub(/\(#{current_module_name}\./,"(#{new_module_name}.")
  45. processed_file << new_line
  46. else
  47. processed_file << line
  48. end
  49. end
  50. end
  51. if File.basename(file) =~/#{current_module_name}.elm/
  52. p new_file = file.sub(current_module_name,new_module_name)
  53.  
  54. IO.write(new_file,
  55. processed_file.join(''))
  56. FileUtils.rm file
  57. else
  58. IO.write(file,
  59. processed_file.join(''))
  60. end
  61. end
  62. end
  63. end
  64. current_module_name = ARGV.shift
  65. new_module_name = ARGV.shift
  66. dir = ARGV.shift
  67.  
  68. if current_module_name && new_module_name && dir
  69. RenameModule.new(current_module_name: current_module_name,
  70. new_module_name: new_module_name,
  71. dir: dir).rename
  72.  
  73. else
  74. puts "[rename-module]"
  75. puts "[rename-module] Expecting 3 arguments"
  76. puts "[rename-module]"
  77. puts "[rename-modlue] Usage Example:"
  78. puts "[rename-module]"
  79. puts "[rename-module] .\\rename-module CurrentModuleName NewModuleName srcDirectory"
  80. puts "[rename-module]"
  81. exit(-1)
  82. end
Add Comment
Please, Sign In to add comment