viernes, 16 de noviembre de 2012

JDGui_noComments PowerShell style

Acá la versión PowerShell V2, mucho mas cómodo para mover en entornos Windows 7... y mas bonito para mostrar gracias a la Copy-ColoredAsHtml option del PowerShellPack ;-)

$fcount = 0             
$search = '^\/\* [ \d]{1,4} \*\/ '             
Get-ChildItem \source *.java -recurse |           
  Foreach-Object {             
    $c = ($_ | Get-Content)             
    if ($c -match $search) {             
      $c = $c -replace $search, ''             
      [IO.File]::WriteAllText($_.FullName, ($c -join "`r`n"))             
      Write-Host $_.FullName "... updated"             
      $fcount++             
    }             
  }             
Write-Host $fcount "file(s) updated"             

Remove JD-Gui line comments

Ok, ok.. no es la gloria.. pero es mi primer script en Ruby y merecía un lugar de privilegio... and, here is JDGui_noComments!, para quitar los odiosos comentarios que JD-Gui agrega al principio de cada linea de los archivos java decompilados... algo es algo como diría mi vieja ;-)

# JDGui_noComments.rb

def treeReplace(dir, filename, search, replace)
  fcount = 0
  Dir["#{dir}/*"].each do |fd|
    if File.directory?(fd)
      fcount += treeReplace(fd, filename, search, replace)
    else
      if fd =~ filename
        text = File.read(fd)
        if text =~ search
          File.open(fd, 'w') {|f| f << text.gsub!(search, replace)}
          puts "#{fd}... updated"
          fcount += 1
        end
      end
    end
  end
  return fcount
end

# Main program
#

if __FILE__ == $0
  if ARGV.size < 1
    puts "Usage: #{$0} <dir>"
    exit
  end

  dir = ARGV[0].dup
  dir.gsub!(/\\/, "/") # MS-DOS/Microsoft Windows style path compatible
  puts treeReplace(dir, /\.java$/, /^\/\* [ \d]{1,4} \*\/ ?/, "").to_s() + " file(s) updated"
end

Mañana la versión PowerShell que terminé usando... mas sencillo para entornos Windows Seven porque ya viene como parte del SO.