OSDN Git Service

implement \8 and %*
authorShyouzou Sugitani <shy@users.sourceforge.jp>
Tue, 13 Nov 2012 13:37:10 +0000 (22:37 +0900)
committerShyouzou Sugitani <shy@users.sourceforge.jp>
Tue, 13 Nov 2012 13:37:10 +0000 (22:37 +0900)
ChangeLog
lib/ninix/sakura.py
lib/ninix/script.py
lib/ninix/sstp.py

index 349f1db..95f6521 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Tue November 13 2012   Shyouzou Sugitani <shy@users.sourceforge.jp>
+       * SakuraScriptの\8(WAV再生)を実装した.
+       * SakuraScriptの\8および\_vをSSTPで実行出来ないタグ
+         (lib/ninix/sstp.py内のPROHIBITED_TAGS)に追加した.
+
+Mon November 12 2012   Shyouzou Sugitani <shy@users.sourceforge.jp>
+       * SakuraScriptEnvの%*を実装した.
+
 Fri November 9 2012   Shyouzou Sugitani <shy@users.sourceforge.jp>
        * マウスイベントのOnMouseDragStart(マウスドラッグ開始)および
          OnMouseDragEnd(マウスドラッグ終了)を実装した.
index c7b26d2..fbc68ae 100644 (file)
@@ -1572,6 +1572,22 @@ class Sakura:
                 'uri', 'file://' + urllib.parse.quote(path))
             self.audio_player.set_state(Gst.State.PLAYING)
 
+    def __yen_8(self, args):
+        if self.audio_player is None:
+            return
+        filename = self.expand_meta(args[0])
+        filename = get_normalized_path(filename)
+        basename, ext = os.path.splitext(filename)
+        ext = ext.lower()
+        if ext != b'.wav':
+            return
+        path = os.path.join(self.get_prefix(), b'ghost/master', filename)
+        if os.path.isfile(path):
+            self.audio_player.set_state(Gst.State.NULL)
+            self.audio_player.set_property(
+                'uri', 'file://' + urllib.parse.quote(path))
+            self.audio_player.set_state(Gst.State.PLAYING)
+
     def __yen_exclamation(self, args): ## FIXME
         if not args:
             return
@@ -1757,6 +1773,7 @@ class Sakura:
         r'\_m': __yen__m,
         r'\_u': __yen__u,
         r'\_v': __yen__v,
+        r'\8': __yen_8,
         r'\!': __yen_exclamation,
         r'\__c': __yen___c,
         r'\__t': __yen___t, 
index f57dd3e..fbbd8ab 100644 (file)
@@ -30,7 +30,7 @@ patterns = [
     (TOKEN_META, re.compile(r'%month|%day|%hour|%minute|%second|%username|'
                             r'%selfname2?|%keroname|%friendname|%songname|'
                             r'%screen(width|height)|%exh|%et|%m[szlchtep?]|'
-                            r'%dms|%j|%c|%wronghour')),
+                            r'%dms|%j|%c|%wronghour|%\*')),
     (TOKEN_NUMBER, re.compile(r'[0-9]+')),
     (TOKEN_OPENED_SBRA, re.compile(r'\[')),
     (TOKEN_CLOSED_SBRA, re.compile(r'\]')),
@@ -182,6 +182,12 @@ class Parser:
                 if lexeme == '%j':
                     argument = self.read_sbra_id()
                     text.append((TEXT_META, lexeme, argument))
+                elif lexeme == '%*':
+                    if text:
+                        self.script.append((SCRIPT_TEXT, tuple(text)))
+                        text = []
+                    self.script.append((SCRIPT_TAG, '\\!',
+                                        ((TEXT_STRING, '*'),)))
                 else:
                     text.append((TEXT_META, lexeme))
                 continue
index 5cef448..a3d6747 100644 (file)
@@ -178,7 +178,7 @@ class SSTPRequestHandler(BaseSSTPRequestHandler):
                 entry_db, self.server)
             self.server.request_handler = self # keep alive
 
-    PROHIBITED_TAGS = [r'\j', r'\-', r'\+', r'\_+', r'\!']
+    PROHIBITED_TAGS = [r'\j', r'\-', r'\+', r'\_+', r'\!', r'\8', r'\_v']
 
     def check_script(self, script):
         if not self.local_request():