OSDN Git Service

arc.create_zip_entries
authornomeu <nomeu@nomeu.org>
Sat, 12 Jun 2010 19:21:01 +0000 (04:21 +0900)
committernomeu <nomeu@nomeu.org>
Sat, 12 Jun 2010 19:21:01 +0000 (04:21 +0900)
bin/load-entries.rb
lib/arc.rb

index c0d95c4..015d4ab 100644 (file)
@@ -17,55 +17,15 @@ unless location
 end
 scrap = Scrap.find_by_location(location.code)
 
-require 'rubygems'
-gem 'zipruby'
-require 'zipruby'
-require 'nkf'
-
-def encode(str)
-  str && NKF.nkf('-Sw', str)
-end
-
-def dump_zip(path, location, name)
-  Zip::Archive.open(path) do |ar|
-    puts "# #{path}"
-    code, extname = location.generate_arc_code_and_extname(name)
-    arc = location.arcs.find_by_code(code)
-    next unless arc
-
-    n = ar.num_files # number of entries
-    n.times do |i|
-      # entry_name = ar.get_name(i) # get entry name from archive
-
-      # open entry
-      ar.fopen(i) do |f|
-        path = encode(f.name)
-        case path
-        when /\.pmd\z/
-          puts [ code, path ].join(' ')
-          arc.pmds.find_or_create_by_path(path)
-        when /\.vmd\z/
-          puts [ code, path ].join(' ')
-          arc.vmds.find_or_create_by_path(path)
-        when /\.x\z/
-          puts [ code, path ].join(' ')
-          arc.xes.find_or_create_by_path(path)
-        end
-
-        # content = f.read # read entry content
-      end
-    end
-  end
-rescue Zip::Error => exc
-  puts "error: " + exc.message
-end
-
 ent = "/Volumes/uploader/src/#{location.code}/index.html"
 open(ent) do |f|
   while line = f.gets
     if scrap.match(line)
       name, = scrap.row
-      dump_zip("/Volumes/uploader/arc/#{location.code}/#{name}", location, name)
+      code, extname = location.generate_arc_code_and_extname(name)
+      arc = location.arcs.find_by_code(code)
+      next unless arc
+      arc.create_zip_entries("/Volumes/uploader/arc/#{location.code}/#{name}")
       puts
     end
   end
index c3d5c26..2944655 100644 (file)
@@ -1,6 +1,45 @@
+gem 'zipruby'
+require 'zipruby'
+require 'nkf'
+
 class Arc < ActiveRecord::Base
   belongs_to :location
   has_many :pmds
   has_many :vmds
   has_many :xes
+
+  def encode(str)
+    str && NKF.nkf('-Sw', str)
+  end
+
+  def create_zip_entries(path)
+    Zip::Archive.open(path) do |ar|
+      puts "# #{path}"
+
+      n = ar.num_files # number of entries
+      n.times do |i|
+        # entry_name = ar.get_name(i) # get entry name from archive
+
+        # open entry
+        ar.fopen(i) do |f|
+          path = encode(f.name)
+          case path
+          when /\.pmd\z/
+            puts [ code, path ].join(' ')
+            pmds.find_or_create_by_path(path)
+          when /\.vmd\z/
+            puts [ code, path ].join(' ')
+            vmds.find_or_create_by_path(path)
+          when /\.x\z/
+            puts [ code, path ].join(' ')
+            xes.find_or_create_by_path(path)
+          end
+
+          # content = f.read # read entry content
+        end
+      end
+    end
+  rescue Zip::Error => exc
+    puts "error: " + exc.message
+  end
 end