Loading ...
Sorry, an error occurred while loading the content.
 

Ruby - Refactoring

Expand Messages
  • Widi Harsojo
    Kepada yth, almamater... Ruby Saya ada program kecil ruby... minta tolong di Refactor donk biar lebih pendek (tapi jangan kayak perl) ama lebih mudah di baca.
    Message 1 of 3 , Apr 28, 2006
      Kepada yth, almamater... Ruby

      Saya ada program kecil ruby... minta tolong di Refactor donk biar
      lebih pendek (tapi jangan kayak perl) ama lebih mudah di baca. (ini
      milis Ruby-kan kayak VB / Delphindo?)

      Ceritanya Gene, saya dah sedot website nya ikc.xxx.net.id pake wget di
      SuSE10 dengan parameter perintah "wget -c -N -E -k -r -p
      ikc.xxx.net.id", tapi trus saya ndak yakin apa dah semua di sedot?,
      jadi perintah wget saya jalankan sekali lagi.

      Nah..... pas dah selesai di sedot, saya coba liat file-file yang
      kebentuk, ternyata untuk file WEB akan di tambahin dengan ".html"
      sedang yang tipe lain ndak. Di coba Browsing. eh ternyata.... linknya
      jadi ancur-ancuran.
      Rangkuman link yang ancur-ancuran:
      1. link ke file WEB ".php" tetap ke remote padahal di local file ".php.html"
      2. link ke file ".zip" berubah ke ".zip.html" padahal di local file tetap ".zip"
      3. link ke file ".xxx" berubah ke ".xxx.html" padahal di local file tetap ".xxx"

      proses pembenarannya di M$Windoe di drive C:

      & ini contoh script yang minta di refactor itu
      ###################################################
      require 'find'

      def do_gsub( filename )
      print "process: #{filename} "
      patern1 = /\.(zip|ppt|doc|rtf|pdf|wmf|ico|txt|swf|(jp|pn)g)\.html"/
      patern2 = /"http:\/\/ikc/
      patern3 = /\.php"/
      File.open("#{filename}.tmp", "w") do |fw|
      File.open("#{filename}") do |fo|
      stream = fo.read
      if stream.length>0 then
      stream.gsub!(patern1) do |match|print '.'
      $~.to_s[ 0,4] + '"'
      end
      stream.gsub!(patern2) do |match|print '.'
      '"file:///c:/ick'
      end
      stream.gsub!(patern3) do |match|print '.'
      '.php.html"'
      end
      fw.write(stream)
      end
      end
      end
      print "\n"
      File.rename("#{filename}.tmp", "#{filename}")
      end

      Find.find('C:\ikc.xxx.net.id') do |x|
      if (x =~ /\.html$/) == nil
      next
      else
      do_gsub(x)
      end
      end
      p "Done!"

      ###################################################

      sebelonya tenkyu.....
      psssssst..... ama tips wget donk....
    • Arie Kusuma Atmaja
      ... sebelum ruby code nya di apa-apa-in , yg jadi pertanyaan : kenapa ga wget nya aja dulu yang dibikin simpler ? # disini ada hantu wget tuh monsieur
      Message 2 of 3 , Apr 29, 2006
        Widi Harsojo wrote:
        > Ceritanya Gene, saya dah sedot website nya ikc.xxx.net.id pake wget di
        > SuSE10 dengan parameter perintah "wget -c -N -E -k -r -p
        > ikc.xxx.net.id", tapi trus saya ndak yakin apa dah semua di sedot?,
        > jadi perintah wget saya jalankan sekali lagi.

        > psssssst..... ama tips wget donk....

        sebelum ruby code nya di "apa-apa-in" , yg jadi pertanyaan : kenapa ga
        wget nya aja dulu yang dibikin simpler ?
        # disini ada "hantu" wget tuh monsieur steve,
        # paling2 lagi sibuk beliau :p

        --
        sig "kind regards" :name => "Arie Kusuma Atmaja", :callme => "Arie",
        :yahoo_messenger => "riyari3", :email => "ariekusumaatmaja@...",
        :blog => %Q~ http://ariekusumaatmaja.wordpress.com ~

        heran! haree genee pake (as|ph)p ?
        heran! haree genee bela-bela'in (as|ph)p ?
        siape lu mo bikin framework Ruby test/unit pake php :p
      • rofiq
        ... maksudnya apa nih, yg udah lulus perguruan tinggi Ruby? :-D aku refactor jadi begini, daftar pencarian dimasukin ke hash kemudian string replacenya di eval
        Message 3 of 3 , May 1, 2006
          On 4/29/06, Widi Harsojo <wharsojo@...> wrote:
          > Kepada yth, almamater... Ruby

          maksudnya apa nih, yg udah lulus perguruan tinggi Ruby? :-D

          aku refactor jadi begini, daftar pencarian dimasukin ke hash kemudian
          string replacenya di eval kalo ketemu.

          <code>
          content = <<-CONTENT
          filename.zip.html"
          "http://ikc
          test.php"
          CONTENT

          find_replace = {
          /\.(zip|ppt|doc|rtf|pdf|wmf|ico|txt|swf|(jp|pn)g)\.html"/ =>
          %q($~.to_s[ 0,4] + '"'),
          /"http:\/\/ikc/ => %q('"file:///c:/ick'),
          /\.php"/ => %q('.php.html"')
          }

          find_replace.each do |find, replace|
          content.gsub!(find) do |match|
          eval(replace)
          end
          end

          puts content
          </code>

          usul juga gimana kalo taruh kode dimilis kodenya direfactory dulu jadi
          bisa jalan di irb pake copy-paste
        Your message has been successfully submitted and would be delivered to recipients shortly.