OSDN Git Service

Adds scripts for missing sw.
[dianzhuhui/script.git] / mkMissingFormat.rb
diff --git a/mkMissingFormat.rb b/mkMissingFormat.rb
new file mode 100644 (file)
index 0000000..6c0978a
--- /dev/null
@@ -0,0 +1,94 @@
+# -*- coding: utf-8 -*-
+#  Daxuの抜けている箇所を入力する枠
+
+require 'yaml'
+require 'erb'
+require File.join(File.dirname(__FILE__), 'lib', 'sw_seals')
+require File.join(File.dirname(__FILE__), 'lib', 'unicode')
+#require File.join(File.dirname(__FILE__), 'lib', 'tex_commands')
+
+SOURCE_DIR = File.join(File.dirname(__FILE__), '..', 'yml', 'daxu')
+TEMPLATE = File.join(File.dirname(__FILE__), 'lib', 'missing_format.ryml')
+TARGET = File.join(File.dirname(__FILE__), 'missing.yml')
+WORDINFO = "%04i「%s」(%s)"
+
+class FormatMaker
+# extend ERB::DefMethod
+#  def_erb_method('render()', TEMPLATE)
+  def initialize
+    @count = 0
+    @previous_id = 0
+    @previous_wd = ''
+    @previous_sw = 0
+    @daxu_page = 0
+    @wordlist = Array.new
+    @unicode = UnicodeUtility.new
+    @sw_seals = SWSeals.new
+  end
+  def check(path)
+    chapter = File.basename(path)[0,4]
+ #   push_wordinfo(sprintf("\\subsubsection*{%s}", chapter))
+    printf("\n# %s\n", chapter)
+    YAML::parse_documents(File.open(path)) do |syck|
+      doc = syck.transform
+      doc.each do |wordinfo|
+        check_wordinfo(wordinfo)
+      end
+    end
+  end
+  def check_wordinfo(wordinfo)
+    id = wordinfo['id']
+    wd = wordinfo['wd']
+    sw = wordinfo['sw']
+    rad = wordinfo['rd']
+    daxu = wordinfo['dx']
+    duan = wordinfo['dn']
+    unless id == @previous_id + 1 then
+      @count += 1
+      line1 = sprintf("[%i] %i頁: ", @count, daxu)
+      line2 = sprintf(WORDINFO, @previous_id, @previous_wd, @previous_sw)
+      line3 = sprintf("-" + WORDINFO, id, wd, sw)
+      print_wordinfo(line1 + line2 + line3)
+#      mssw = @previous_sw.to_s(16).to_i(16) if @previous_sw
+      mssw = sprintf("%s", @previous_sw).to_i(16) if @previous_sw
+      (@previous_id+1 .. id-1).each do |msid|
+        printf("- id: %i\n", msid)
+        if mssw then
+          mssw += 1 
+          (mswd, mssw2) = @sw_seals.next_main(mssw)
+          printf("  sw: %X\n", mssw2)
+          printf("  wd: %s\n", mswd)
+        else
+          printf("  sw: \n")
+          printf("  wd: \n")
+        end
+        printf("  rd: %s\n", rad)
+        printf("  py: \n")
+        printf("  dx: %i\n", daxu)
+        printf("  dn: %s\n", duan)
+        printf("  fn: \n")
+        printf("  ex: \n")
+        printf("  dex: \n")
+        printf("  xex: \n")
+      end
+    end
+    @previous_id = id
+    @previous_wd = wd
+    @previous_sw = sw
+    @daxu_page = daxu
+  end
+  def print_wordinfo(info)
+    printf("# %s\n", info)
+  end
+end
+
+maker = FormatMaker.new
+Dir.foreach(SOURCE_DIR) do |filename|
+  if filename =~ /^.*\.yml$/ then 
+#    if filename =~ /^sw01.yml$/ then 
+    maker.check(File.join(SOURCE_DIR, filename))
+  end
+end
+#out = File.open(File.join(TARGET), "w")
+#out.print checker.render()
+