OSDN Git Service

add wp_imgswap2.py for new OSDN Magazine
[otptools/otptools.git] / markupper.py
index dd3e4e9..bfdcdc6 100644 (file)
@@ -9,6 +9,7 @@ import pickle
 
 import HTMLTagFilter
 import deterfile
+import getjpggeom
 
 #sys.stdin = codecs.getreader('utf_8')(sys.stdin)
 #sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
@@ -114,6 +115,12 @@ class Markupper(object):
             elif re.search(ur"^☆end-column", line):
                 self._end_column(line)
                 continue
+            elif re.search(ur"^☆begin-note:", line):
+                self._begin_note(line)
+                continue
+            elif re.search(ur"^☆end-note", line):
+                self._end_note(line)
+                continue
             elif re.search(ur"^☆space", line):
                 self._space(line)
                 continue
@@ -126,6 +133,9 @@ class Markupper(object):
             elif re.search(ur"^○", line):
                 self._head_m(line)
                 continue
+            elif re.search(ur"^◇", line):
+                self._head_s(line)
+                continue
             elif re.search(ur"^☆----", line):
                 self._newpage(line)
                 continue
@@ -144,6 +154,9 @@ class Markupper(object):
             elif re.search(ur"^☆リスト", line):
                 self._list(line)
                 continue
+            elif re.search(ur"^☆実行例", line):
+                self._list(line)
+                continue
             elif re.search(ur"^☆flow", line):
                 self._flow(line)
                 continue
@@ -193,6 +206,20 @@ class Markupper(object):
             line = re.sub(ur"^○(.*)$", ur"<h4>\1</h4>", line)
         print line
 
+    def _head_s(self, line):
+        line = line.rstrip()
+        if re.search(ur"\*{[a-zA-Z0-9_]*}\s*$", line):
+            self._anchor = re.search(ur"\*\{([a-zA-Z0-9_]*)\}\s*$", line).group(1)
+            line = re.sub(ur"\s*\*\{[a-zA-Z0-9_]*\}\s*$", "", line)
+
+        line = self._default_markup_rule(line)
+        if self._anchor != "":
+            line = re.sub(ur"^◇(.*)$", ur'<div id="%s"><h5>\1</h5></div>' % self._anchor, line)
+            self._anchor = ""
+        else:
+            line = re.sub(ur"^◇(.*)$", ur"<h5>\1</h5>", line)
+        print line
+
     def _paragraph(self, line):
         line = self._default_markup_rule(line)
         line = "<p>" + line + "</p>"
@@ -272,9 +299,11 @@ class Markupper(object):
         # apply filter
         # line = tag_filter.apply(line)
 
+        line = re.sub(ur"[★*](動画[0-9〜~、]+)", ur"<b>\1</b>", line)
         line = re.sub(ur"[★*](表[0-9〜~、]+)", ur"<b>\1</b>", line)
         line = re.sub(ur"[★*](図[0-9〜~、]+)", ur"<b>\1</b>", line)
         line = re.sub(ur"[★*](写真[0-9〜~、]+)", ur"<b>\1</b>", line)
+        line = re.sub(ur"[★*](実行例[0-9〜~、]+)", ur"<b>\1</b>", line)
         line = re.sub(ur"[★*](リスト[0-9~〜、]+)", ur"<b>\1</b>", line)
         line = re.sub(ur"[★*](コラム[0-9〜~、]+)", ur"<b>\1</b>", line)
         line = re.sub(ur"[★*]b\[(.*?)\]", ur"<b>\1</b>", line)
@@ -310,7 +339,6 @@ class Markupper(object):
         print "</ol>\n"
 
 
-
     def _begin_column(self, line):
         """Proccess column"""
         try:
@@ -329,6 +357,25 @@ class Markupper(object):
 </div>
     """
 
+    def _begin_note(self, line):
+        """Proccess note"""
+        try:
+            str_title = re.search(ur"^☆begin-note:(.*)$", line).group(1)
+        except AttributeError:
+            str_title = ""
+
+        html = """
+<div class="column" style="background:#F0F8FF;border:1px solid gray; font-size:85%%;padding:8px 8px 4px;margin-bottom: 1em;"> 
+"""
+        if len(str_title.strip()) > 0:
+            html = html + "<strong>%s</strong>" % (str_title)
+        print html
+
+    def _end_note(self, line):
+        print """
+</div>
+    """
+
     def _list_start(self):
         return "<pre>"
 
@@ -337,10 +384,10 @@ class Markupper(object):
 
     def _list(self, line):
         try:
-            str_title = re.search(ur"^☆(リスト.*)$", line).group(1)
+            str_title = re.search(ur"^☆((リスト|実行例).*)$", line).group(1)
         except AttributeError:
             str_title = ""
-        print "<p><b>%s</b></p>" % (str_title)
+        print "<p class='caption'><b>%s</b></p>" % (str_title)
         print self._list_start()
 
         for line in self.input_iter:
@@ -457,11 +504,18 @@ class Markupper(object):
     """ % (cap)
 
     def _get_png_geom(self, filepath):
-        desc = deterfile.file(filepath)
+        s = filepath.split('.')
+        ext = s[-1]
+        if (ext == 'JPG') or (ext == 'jpg'):
+            (w, h) = getjpggeom.get_jpeg_geometory(filepath)
+            return (w, h)
+        else:
+            desc = deterfile.file(filepath)
+
         try:
             m = re.match(r"([0-9]+)\s*x\s*([0-9]+)", desc[1])
         except IndexError:
-            err = ",".join(desc)
+            err = ", ".join(desc)
             raise Exception("deterfile error: %s, file: %s . " % (err,filepath))
         if m:
             w = m.group(1)