OSDN Git Service

Lighten an offset method
authordhrname <dhrname@users.sourceforge.jp>
Sun, 1 Feb 2015 11:25:52 +0000 (20:25 +0900)
committerdhrname <dhrname@users.sourceforge.jp>
Sun, 1 Feb 2015 11:25:52 +0000 (20:25 +0900)
org/w3c/dom/smil.js
org/w3c/dom/svg.js
tool/Spec/spec/SvgDomSpec.js

index d4a4a1a..891d02c 100644 (file)
@@ -199,30 +199,23 @@ base("$frame").mix ( {
     offset: function(str) {\r
       str = str || "0";\r
       var plusminus = str.charAt(0),\r
-          s =  ms() + sec() + min() + h();\r
+          /*parseFloatのエイリアス*/\r
+          _float = parseFloat,\r
+          s = _float( str.match(/[\d.]+ms$/) || "0") + sec() + min() + h();\r
       if (plusminus === "-") {\r
         s *= -1;\r
       }\r
-      plusminus = ms = min = h = void 0;\r
+      plusminus = _float = sec = min = h = void 0;\r
       return s;\r
       \r
-      function ms() {\r
-        return  parseFloat( str.match(/[\d.]+ms$/) || "0");\r
-      };\r
       function sec() {\r
-        var deg = str.match(/[\d.]+s$/) || "0",\r
-            de = str.match(/[\d.]+$/) || "0";\r
-        return  ( 1000*( parseFloat(deg) || parseFloat(de) ) );\r
+        return  ( 1000*( _float(str.match(/[\d.]+s$/) || "0") || _float(str.match(/[\d.]+$/) || "0") ) );\r
       };\r
       function min() {\r
-        var deg = str.match(/[\d.]+min$/) || "0",\r
-            de = str.match(/\d\d:[^:]+$/) || "0";\r
-        return ( 60000*( parseFloat(deg) || parseFloat(de) ) );\r
+        return ( 60000*( _float(str.match(/[\d.]+min$/) || "0") || _float(str.match(/\d\d:[^:]+$/) || "0") ) );\r
       };\r
       function h() {\r
-        var deg = str.match(/\d+:\d\d:/) || "0",\r
-            de = str.match(/[\d.]+h$/) || "0";\r
-        return ( 3600000*( parseFloat(deg) || parseFloat(de) ) );\r
+        return ( 3600000*( _float(str.match(/\d+:\d\d:/) || "0") || _float(str.match(/[\d.]+h$/) || "0") ) );\r
       };\r
     },\r
     event: function() {\r
index 87bd753..aea72cb 100644 (file)
@@ -6496,6 +6496,7 @@ function unsvgtovml() {
     window.detachEvent("onload", NAIBU._main);\r
     NAIBU.freeArg();\r
     base.free();\r
+    base("DOMImplementation")._buffer_ = null;\r
     base = Object._create = CSS2Properties = NAIBU.xmlhttp = NAIBU = STLog =  void 0;\r
     Array = ActiveXObject = void 0;\r
   } catch(e) {}\r
index 8d57ee8..e17e5a1 100644 (file)
@@ -2207,6 +2207,8 @@ describe("SMIL Animation Spec", function() {
         expect(begin.offset("-00:00:0.0")).toEqual(0);\r
         expect(begin.offset("00:1")).toEqual(1000);\r
         expect(begin.offset("-00:1")).toEqual(-1000);\r
+        expect(begin.offset("00:00:1")).toEqual(1000);\r
+        expect(begin.offset("-00:00:1")).toEqual(-1000);\r
 \r
         expect(begin.offset()).toEqual(0);\r
       } );\r
@@ -2239,6 +2241,14 @@ describe("SMIL Animation Spec", function() {
         expect(begin.offset("-0.20h")).toEqual(-0.20 * 3600000);\r
         expect(begin.offset(".20h")).toEqual(0.20 * 3600000);\r
 \r
+        expect(begin.offset("01:0")).toEqual(60000);\r
+        expect(begin.offset("-01:0")).toEqual(-60000);\r
+        expect(begin.offset("00:00:1")).toEqual(1000);\r
+        expect(begin.offset("-00:00:1")).toEqual(-1000);\r
+        expect(begin.offset("00:01:0")).toEqual(60000);\r
+        expect(begin.offset("-00:01:0")).toEqual(-60000);\r
+        expect(begin.offset("01:00:0")).toEqual(3600000);\r
+        expect(begin.offset("-01:00:0")).toEqual(-3600000);\r
         expect(begin.offset("00:10")).toEqual(10000);\r
         expect(begin.offset("00:0.01")).toEqual(10);\r
         expect(begin.offset("01:0.01")).toEqual(60010);\r
@@ -2247,7 +2257,6 @@ describe("SMIL Animation Spec", function() {
         expect(begin.offset("-00:0.01")).toEqual(-10);\r
         expect(begin.offset("-01:0.01")).toEqual(-60010);\r
         expect(begin.offset("-10:0")).toEqual(-600000);\r
-        expect(begin.offset("00:00:1")).toEqual(1000);\r
         expect(begin.offset("00:00:20")).toEqual(20000);\r
         expect(begin.offset("00:11:20")).toEqual(11*60*1000 + 20000);\r
         expect(begin.offset("12:11:20")).toEqual(12*60*60*1000 + 11*60*1000 + 20000);\r
@@ -2266,7 +2275,6 @@ describe("SMIL Animation Spec", function() {
         expect(begin.offset("-::0")).toEqual(0);\r
       } );\r
     } );\r
-\r
     describe("An event method in $begin object", function() {\r
       /*境界条件を調べておく (limit value analysis)*/\r
       it("should be this for the value  (limit value analysis)", function() {\r