ass-compiler
Advanced tools
Comparing version 0.0.6 to 0.0.7
@@ -655,3 +655,3 @@ (function (global, factory) { | ||
slices.push(slice); | ||
slice = createSlice(reset || name, styles); | ||
slice = createSlice(styles[reset] ? reset : name, styles); | ||
} | ||
@@ -760,15 +760,21 @@ if (fragment.text || fragment.drawing) { | ||
var result = {}; | ||
var ds = assign({}, DEFAULT_STYLE, defaultStyle, { Name: 'Default' }); | ||
var styles = [format.map(function (fmt) { return ds[fmt]; })].concat(style); | ||
for (var i = 0; i < styles.length; i++) { | ||
var stl = styles[i]; | ||
var s = {}; | ||
for (var j = 0; j < format.length; j++) { | ||
var fmt = format[j]; | ||
s[fmt] = (fmt === 'Name' || fmt === 'Fontname' || /Colour/.test(fmt)) ? stl[j] : stl[j] * 1; | ||
// this behavior is same as Aegisub by black-box testing | ||
if (fmt === 'Name' && /^(\*+)Default$/.test(s[fmt])) { | ||
s[fmt] = 'Default'; | ||
var styles = [ | ||
assign({}, DEFAULT_STYLE, defaultStyle, { Name: 'Default' }) ].concat( style.map(function (stl) { | ||
var s = {}; | ||
for (var i = 0; i < format.length; i++) { | ||
s[format[i]] = stl[i]; | ||
} | ||
return s; | ||
}) ); | ||
var loop = function ( i ) { | ||
var s = styles[i]; | ||
// this behavior is same as Aegisub by black-box testing | ||
if (/^(\*+)Default$/.test(s.Name)) { | ||
s.Name = 'Default'; | ||
} | ||
Object.keys(s).forEach(function (key) { | ||
if (key !== 'Name' && key !== 'Fontname' && !/Colour/.test(key)) { | ||
s[key] *= 1; | ||
} | ||
}); | ||
var ref$1 = parseStyleColor(s.PrimaryColour); | ||
@@ -812,3 +818,5 @@ var a1 = ref$1[0]; | ||
result[s.Name] = { style: s, tag: tag }; | ||
} | ||
}; | ||
for (var i = 0; i < styles.length; i++) loop( i ); | ||
return result; | ||
@@ -815,0 +823,0 @@ } |
@@ -1,1 +0,1 @@ | ||
(function(t,r){typeof exports==="object"&&typeof module!=="undefined"?r(exports):typeof define==="function"&&define.amd?define(["exports"],r):r(t.assCompiler={})})(this,function(t){"use strict";function r(t){var r=t.toLowerCase().trim().split(/\s*;\s*/);if(r[0]==="banner"){return{name:r[0],delay:r[1]*1||0,leftToRight:r[2]*1||0,fadeAwayWidth:r[3]*1||0}}if(/^scroll\s/.test(r[0])){return{name:r[0],y1:Math.min(r[1]*1,r[2]*1),y2:Math.max(r[1]*1,r[2]*1),delay:r[3]*1||0,fadeAwayHeight:r[4]*1||0}}return null}function a(t){return t.toLowerCase().replace(/([mnlbspc])/g," $1 ").trim().replace(/\s+/g," ").split(/\s(?=[mnlbspc])/).map(function(t){return t.split(" ")})}var e=["b","i","u","s","fsp","k","K","kf","ko","kt","fe","q","p","pbo","a","an","fscx","fscy","fax","fay","frx","fry","frz","fr","be","blur","bord","xbord","ybord","shad","xshad","yshad"];var n=e.map(function(t){return{name:t,regex:new RegExp("^"+t+"-?\\d")}});function i(t){var r={};for(var e=0;e<n.length;e++){var s=n[e];var l=s.name;var f=s.regex;if(f.test(t)){r[l]=t.slice(l.length)*1;return r}}if(/^fn/.test(t)){r.fn=t.slice(2)}else if(/^r/.test(t)){r.r=t.slice(1)}else if(/^fs[\d+-]/.test(t)){r.fs=t.slice(2)}else if(/^\d?c&?H?[0-9a-f]+|^\d?c$/i.test(t)){var v=t.match(/^(\d?)c&?H?(\w*)/);var o=v[1];var u=v[2];r["c"+(o||1)]=u&&("000000"+u).slice(-6)}else if(/^\da&?H?[0-9a-f]+/i.test(t)){var c=t.match(/^(\d)a&?H?(\w\w)/);var p=c[1];var d=c[2];r["a"+p]=d}else if(/^alpha&?H?[0-9a-f]+/i.test(t)){var g;g=t.match(/^alpha&?H?([0-9a-f]+)/i),r.alpha=g[1];r.alpha=("00"+r.alpha).slice(-2)}else if(/^(?:pos|org|move|fad|fade)\(/.test(t)){var y=t.match(/^(\w+)\((.*?)\)?$/);var h=y[1];var m=y[2];r[h]=m.trim().split(/\s*,\s*/).map(Number)}else if(/^i?clip/.test(t)){var x=t.match(/^i?clip\((.*?)\)?$/)[1].trim().split(/\s*,\s*/);r.clip={inverse:/iclip/.test(t),scale:1,drawing:null,dots:null};if(x.length===1){r.clip.drawing=a(x[0])}if(x.length===2){r.clip.scale=x[0]*1;r.clip.drawing=a(x[1])}if(x.length===4){r.clip.dots=x.map(Number)}}else if(/^t\(/.test(t)){var b=t.match(/^t\((.*?)\)?$/)[1].trim().replace(/\\.*/,function(t){return t.replace(/,/g,"\n")}).split(/\s*,\s*/);if(!b[0]){return r}r.t={t1:0,t2:0,accel:1,tags:b[b.length-1].replace(/\n/g,",").split("\\").slice(1).map(i)};if(b.length===2){r.t.accel=b[0]*1}if(b.length===3){r.t.t1=b[0]*1;r.t.t2=b[1]*1}if(b.length===4){r.t.t1=b[0]*1;r.t.t2=b[1]*1;r.t.accel=b[2]*1}}return r}function s(t){var r=[];var a=0;var e="";for(var n=0;n<t.length;n++){var s=t[n];if(s==="("){a++}if(s===")"){a--}if(a<0){a=0}if(!a&&s==="\\"){if(e){r.push(e)}e=""}else{e+=s}}r.push(e);return r.map(i)}function l(t){var r=t.split(/{([^{}]*?)}/);var e=[];if(r[0].length){e.push({tags:[],text:r[0],drawing:[]})}for(var n=1;n<r.length;n+=2){var i=s(r[n]);var l=i.reduce(function(t,r){return r.p===undefined?t:!!r.p},false);e.push({tags:i,text:l?"":r[n+1],drawing:l?a(r[n+1]):[]})}return{raw:t,combined:e.map(function(t){return t.text}).join(""),parsed:e}}function f(t){var r=t.split(":");return r[0]*3600+r[1]*60+r[2]*1}function v(t,a){var e=t.split(",");if(e.length>a.length){var n=e.slice(a.length-1).join();e=e.slice(0,a.length-1);e.push(n)}var i={};for(var s=0;s<e.length;s++){var v=a[s];var o=e[s].trim();switch(v){case"Layer":case"MarginL":case"MarginR":case"MarginV":i[v]=o*1;break;case"Start":case"End":i[v]=f(o);break;case"Effect":i[v]=r(o);break;case"Text":i[v]=l(o);break;default:i[v]=o}}return i}function o(t){return t.match(/Format\s*:\s*(.*)/i)[1].split(/\s*,\s*/)}function u(t){return t.match(/Style\s*:\s*(.*)/i)[1].split(/\s*,\s*/)}function c(t){var r={info:{},styles:{format:[],style:[]},events:{format:[],comment:[],dialogue:[]}};var a=t.split(/\r?\n/);var e=0;for(var n=0;n<a.length;n++){var i=a[n].trim();if(/^;/.test(i)){continue}if(/^\[Script Info\]/i.test(i)){e=1}else if(/^\[V4\+? Styles\]/i.test(i)){e=2}else if(/^\[Events\]/i.test(i)){e=3}else if(/^\[.*\]/.test(i)){e=0}if(e===0){continue}if(e===1){if(/:/.test(i)){var s=i.match(/(.*?)\s*:\s*(.*)/);var l=s[1];var f=s[2];r.info[l]=f}}if(e===2){if(/^Format\s*:/i.test(i)){r.styles.format=o(i)}if(/^Style\s*:/i.test(i)){r.styles.style.push(u(i))}}if(e===3){if(/^Format\s*:/i.test(i)){r.events.format=o(i)}if(/^(?:Comment|Dialogue)\s*:/i.test(i)){var c=i.match(/^(\w+?)\s*:\s*(.*)/i);var p=c[1];var d=c[2];r.events[p.toLowerCase()].push(v(d,r.events.format))}}}return r}var p=Object.assign||function t(r){var a=[],e=arguments.length-1;while(e-- >0)a[e]=arguments[e+1];for(var n=0;n<a.length;n++){if(!a[n]){continue}var i=Object.keys(a[n]);for(var s=0;s<i.length;s++){r[i[s]]=a[n][i[s]]}}return r};function d(t){var r={type:null,prev:null,next:null,points:[]};if(/[mnlbs]/.test(t[0])){r.type=t[0].toUpperCase().replace("N","L").replace("B","C")}for(var a=t.length-!(t.length&1),e=1;e<a;e+=2){r.points.push({x:t[e]*1,y:t[e+1]*1})}return r}function g(t){if(!t.points.length||!t.type){return false}if(/C|S/.test(t.type)&&t.points.length<3){return false}return true}function y(t){var r=Infinity;var a=Infinity;var e=-Infinity;var n=-Infinity;(i=[]).concat.apply(i,t.map(function(t){var r=t.points;return r})).forEach(function(t){var i=t.x;var s=t.y;r=Math.min(r,i);a=Math.min(a,s);e=Math.max(e,i);n=Math.max(n,s)});return{minX:r,minY:a,width:e-r,height:n-a};var i}function h(t,r,a){var e=[];var n=[0,2/3,1/3,0];var i=[0,1/3,2/3,0];var s=[0,1/6,2/3,1/6];var l=function(t,r){return t[0]*r[0]+t[1]*r[1]+t[2]*r[2]+t[3]*r[3]};var f=[t[t.length-1].x,t[0].x,t[1].x,t[2].x];var v=[t[t.length-1].y,t[0].y,t[1].y,t[2].y];e.push({type:r==="M"?"M":"L",points:[{x:l(s,f),y:l(s,v)}]});for(var o=3;o<t.length;o++){f=[t[o-3].x,t[o-2].x,t[o-1].x,t[o].x];v=[t[o-3].y,t[o-2].y,t[o-1].y,t[o].y];e.push({type:"C",points:[{x:l(n,f),y:l(n,v)},{x:l(i,f),y:l(i,v)},{x:l(s,f),y:l(s,v)}]})}if(a==="L"||a==="C"){var u=t[t.length-1];e.push({type:"L",points:[{x:u.x,y:u.y}]})}return e}function m(t){return t.map(function(t){var r=t.type;var a=t.points;return r+a.map(function(t){var r=t.x;var a=t.y;return r+","+a}).join(",")}).join("")}function x(t){var r=[];var a=0;while(a<t.length){var e=t[a];var n=d(e);if(n.type){if(n.type==="S"){var i=r[a-1].points.slice(-1)[0];var s=i.x;var l=i.y;n.points.unshift({x:s,y:l})}if(g(n)){if(a){n.prev=r[a-1].type;r[a-1].next=n.type}r.push(n)}a++}else{if(r[a-1].type==="S"){var f={p:n.points,c:r[a-1].points.slice(0,3)};r[a-1].points=r[a-1].points.concat((f[e[0]]||[]).map(function(t){var r=t.x;var a=t.y;return{x:r,y:a}}))}t.splice(a,1)}}var v=(o=[]).concat.apply(o,r.map(function(t){var r=t.type;var a=t.points;var e=t.prev;var n=t.next;return r==="S"?h(a,e,n):{type:r,points:a}}));return p({instructions:v,d:m(v)},y(r));var o}var b=["fs","clip","c1","c2","c3","c4","a1","a2","a3","a4","alpha","fscx","fscy","fax","fay","frx","fry","frz","fr","be","blur","bord","xbord","ybord","shad","xshad","yshad"];function S(t,r,a){var e,n,i;if(a===void 0)a={};var s=t[r];if(s===undefined){return null}if(r==="pos"||r==="org"){return s.length===2?(e={},e[r]={x:s[0],y:s[1]},e):null}if(r==="move"){var l=s[0];var f=s[1];var v=s[2];var o=s[3];var u=s[4];if(u===void 0)u=0;var c=s[5];if(c===void 0)c=0;return s.length===4||s.length===6?{move:{x1:l,y1:f,x2:v,y2:o,t1:u,t2:c}}:null}if(r==="fad"||r==="fade"){if(s.length===2){var d=s[0];var g=s[1];return{fade:{type:"fad",t1:d,t2:g}}}if(s.length===7){var y=s[0];var h=s[1];var m=s[2];var w=s[3];var M=s[4];var C=s[5];var O=s[6];return{fade:{type:"fade",a1:y,a2:h,a3:m,t1:w,t2:M,t3:C,t4:O}}}return null}if(r==="clip"){var k=s.inverse;var F=s.scale;var L=s.drawing;var H=s.dots;if(L){return{clip:{inverse:k,scale:F,drawing:x(L),dots:H}}}if(H){var j=H[0];var E=H[1];var N=H[2];var $=H[3];return{clip:{inverse:k,scale:F,drawing:L,dots:{x1:j,y1:E,x2:N,y2:$}}}}return null}if(/^[xy]?(bord|shad)$/.test(r)){s=Math.max(s,0)}if(r==="bord"){return{xbord:s,ybord:s}}if(r==="shad"){return{xshad:s,yshad:s}}if(/^c\d$/.test(r)){return n={},n[r]=s||a[r],n}if(r==="alpha"){return{a1:s,a2:s,a3:s,a4:s}}if(r==="fr"){return{frz:s}}if(r==="fs"){return{fs:/^\+|-/.test(s)?(s*1>-10?1+s/10:1)*a.fs:s*1}}if(r==="t"){var I=s.t1;var R=s.accel;var A=s.tags;var B=s.t2||(a.end-a.start)*1e3;var z={};A.forEach(function(t){var r=Object.keys(t)[0];if(~b.indexOf(r)&&!(r==="clip"&&!t[r].dots)){p(z,S(t,r,a))}});return{t:{t1:I,t2:B,accel:R,tag:z}}}return i={},i[r]=s,i}var w=[null,1,2,3,null,7,8,9,null,4,5,6];var M=["r","a","an","pos","org","move","fade","fad","clip"];function C(t,r){return{name:t,borderStyle:r[t].style.BorderStyle,tag:r[t].tag,fragments:[]}}function O(t){var r=t.styles;var a=t.name;var e=t.parsed;var n=t.start;var i=t.end;var s;var l;var f;var v;var o;var u;var c=[];var d=C(a,r);var g={};for(var y=0;y<e.length;y++){var h=e[y];var m=h.tags;var b=h.text;var O=h.drawing;var k=void 0;for(var F=0;F<m.length;F++){var L=m[F];k=L.r===undefined?k:L.r}var H={tag:k===undefined?JSON.parse(JSON.stringify(g)):{},text:b,drawing:O.length?x(O):null};for(var j=0;j<m.length;j++){var E=m[j];s=s||w[E.a||0]||E.an;l=l||S(E,"pos");f=f||S(E,"org");v=v||S(E,"move");o=o||S(E,"fade")||S(E,"fad");u=S(E,"clip")||u;var N=Object.keys(E)[0];if(N&&!~M.indexOf(N)){var $=d.tag;var I=$.c1;var R=$.c2;var A=$.c3;var B=$.c4;var z=g.fs||d.tag.fs;var D=S(E,N,{start:n,end:i,c1:I,c2:R,c3:A,c4:B,fs:z});if(N==="t"){H.tag.t=H.tag.t||[];H.tag.t.push(D.t)}else{p(H.tag,D)}}}g=H.tag;if(k!==undefined){c.push(d);d=C(k||a,r)}if(H.text||H.drawing){var P=d.fragments[d.fragments.length-1]||{};if(P.text&&H.text&&!Object.keys(H.tag).length){P.text+=H.text}else{d.fragments.push(H)}}}c.push(d);return p({alignment:s,slices:c},l,f,v,o,u)}function k(t){var r=t.info;var a=t.styles;var e=t.dialogues;var n=Infinity;var i=[];for(var s=0;s<e.length;s++){var l=e[s];if(l.Start>=l.End){continue}if(!a[l.Style]){l.Style="Default"}var f=a[l.Style].style;var v=r.Timer/100||1;var o=O({styles:a,name:l.Style,parsed:l.Text.parsed,start:l.Start,end:l.End});var u=o.alignment||f.Alignment;n=Math.min(n,l.Layer);i.push(p({layer:l.Layer,start:l.Start/v,end:l.End/v,margin:{left:l.MarginL||f.MarginL,right:l.MarginR||f.MarginR,vertical:l.MarginV||f.MarginV},effect:l.Effect},o,{alignment:u}))}for(var c=0;c<i.length;c++){i[c].layer-=n}return i.sort(function(t,r){return t.start-r.start||t.end-r.end})}var F={Name:"Default",Fontname:"Arial",Fontsize:"20",PrimaryColour:"&H00FFFFFF&",SecondaryColour:"&H000000FF&",OutlineColour:"&H00000000&",BackColour:"&H00000000&",Bold:"0",Italic:"0",Underline:"0",StrikeOut:"0",ScaleX:"100",ScaleY:"100",Spacing:"0",Angle:"0",BorderStyle:"1",Outline:"2",Shadow:"2",Alignment:"2",MarginL:"10",MarginR:"10",MarginV:"10",Encoding:"1"};function L(t){var r=t.match(/&H(\w\w)?(\w{6})&?/);var a=r[1];var e=r[2];return[a||"00",e]}function H(t){var r=t.info;var a=t.style;var e=t.format;var n=t.defaultStyle;var i={};var s=p({},F,n,{Name:"Default"});var l=[e.map(function(t){return s[t]})].concat(a);for(var f=0;f<l.length;f++){var v=l[f];var o={};for(var u=0;u<e.length;u++){var c=e[u];o[c]=c==="Name"||c==="Fontname"||/Colour/.test(c)?v[u]:v[u]*1;if(c==="Name"&&/^(\*+)Default$/.test(o[c])){o[c]="Default"}}var d=L(o.PrimaryColour);var g=d[0];var y=d[1];var h=L(o.SecondaryColour);var m=h[0];var x=h[1];var b=L(o.OutlineColour);var S=b[0];var w=b[1];var M=L(o.BackColour);var C=M[0];var O=M[1];var k={fn:o.Fontname,fs:o.Fontsize,c1:y,a1:g,c2:x,a2:m,c3:w,a3:S,c4:O,a4:C,b:Math.abs(o.Bold),i:Math.abs(o.Italic),u:Math.abs(o.Underline),s:Math.abs(o.StrikeOut),fscx:o.ScaleX,fscy:o.ScaleY,fsp:o.Spacing,frz:o.Angle,xbord:o.Outline,ybord:o.Outline,xshad:o.Shadow,yshad:o.Shadow,q:/^[0-3]$/.test(r.WrapStyle)?r.WrapStyle*1:2};i[o.Name]={style:o,tag:k}}return i}function j(t,r){if(r===void 0)r={};var a=c(t);var e=H({info:a.info,style:a.styles.style,format:a.styles.format,defaultStyle:r.defaultStyle||{}});return{info:a.info,width:a.info.PlayResX*1||null,height:a.info.PlayResY*1||null,collisions:a.info.Collisions||"Normal",styles:e,dialogues:k({info:a.info,styles:e,dialogues:a.events.dialogue})}}t.parse=c;t.compile=j;Object.defineProperty(t,"__esModule",{value:true})}); | ||
(function(t,r){typeof exports==="object"&&typeof module!=="undefined"?r(exports):typeof define==="function"&&define.amd?define(["exports"],r):r(t.assCompiler={})})(this,function(t){"use strict";function r(t){var r=t.toLowerCase().trim().split(/\s*;\s*/);if(r[0]==="banner"){return{name:r[0],delay:r[1]*1||0,leftToRight:r[2]*1||0,fadeAwayWidth:r[3]*1||0}}if(/^scroll\s/.test(r[0])){return{name:r[0],y1:Math.min(r[1]*1,r[2]*1),y2:Math.max(r[1]*1,r[2]*1),delay:r[3]*1||0,fadeAwayHeight:r[4]*1||0}}return null}function a(t){return t.toLowerCase().replace(/([mnlbspc])/g," $1 ").trim().replace(/\s+/g," ").split(/\s(?=[mnlbspc])/).map(function(t){return t.split(" ")})}var e=["b","i","u","s","fsp","k","K","kf","ko","kt","fe","q","p","pbo","a","an","fscx","fscy","fax","fay","frx","fry","frz","fr","be","blur","bord","xbord","ybord","shad","xshad","yshad"];var n=e.map(function(t){return{name:t,regex:new RegExp("^"+t+"-?\\d")}});function i(t){var r={};for(var e=0;e<n.length;e++){var s=n[e];var l=s.name;var f=s.regex;if(f.test(t)){r[l]=t.slice(l.length)*1;return r}}if(/^fn/.test(t)){r.fn=t.slice(2)}else if(/^r/.test(t)){r.r=t.slice(1)}else if(/^fs[\d+-]/.test(t)){r.fs=t.slice(2)}else if(/^\d?c&?H?[0-9a-f]+|^\d?c$/i.test(t)){var v=t.match(/^(\d?)c&?H?(\w*)/);var o=v[1];var c=v[2];r["c"+(o||1)]=c&&("000000"+c).slice(-6)}else if(/^\da&?H?[0-9a-f]+/i.test(t)){var u=t.match(/^(\d)a&?H?(\w\w)/);var p=u[1];var d=u[2];r["a"+p]=d}else if(/^alpha&?H?[0-9a-f]+/i.test(t)){var y;y=t.match(/^alpha&?H?([0-9a-f]+)/i),r.alpha=y[1];r.alpha=("00"+r.alpha).slice(-2)}else if(/^(?:pos|org|move|fad|fade)\(/.test(t)){var g=t.match(/^(\w+)\((.*?)\)?$/);var h=g[1];var m=g[2];r[h]=m.trim().split(/\s*,\s*/).map(Number)}else if(/^i?clip/.test(t)){var x=t.match(/^i?clip\((.*?)\)?$/)[1].trim().split(/\s*,\s*/);r.clip={inverse:/iclip/.test(t),scale:1,drawing:null,dots:null};if(x.length===1){r.clip.drawing=a(x[0])}if(x.length===2){r.clip.scale=x[0]*1;r.clip.drawing=a(x[1])}if(x.length===4){r.clip.dots=x.map(Number)}}else if(/^t\(/.test(t)){var b=t.match(/^t\((.*?)\)?$/)[1].trim().replace(/\\.*/,function(t){return t.replace(/,/g,"\n")}).split(/\s*,\s*/);if(!b[0]){return r}r.t={t1:0,t2:0,accel:1,tags:b[b.length-1].replace(/\n/g,",").split("\\").slice(1).map(i)};if(b.length===2){r.t.accel=b[0]*1}if(b.length===3){r.t.t1=b[0]*1;r.t.t2=b[1]*1}if(b.length===4){r.t.t1=b[0]*1;r.t.t2=b[1]*1;r.t.accel=b[2]*1}}return r}function s(t){var r=[];var a=0;var e="";for(var n=0;n<t.length;n++){var s=t[n];if(s==="("){a++}if(s===")"){a--}if(a<0){a=0}if(!a&&s==="\\"){if(e){r.push(e)}e=""}else{e+=s}}r.push(e);return r.map(i)}function l(t){var r=t.split(/{([^{}]*?)}/);var e=[];if(r[0].length){e.push({tags:[],text:r[0],drawing:[]})}for(var n=1;n<r.length;n+=2){var i=s(r[n]);var l=i.reduce(function(t,r){return r.p===undefined?t:!!r.p},false);e.push({tags:i,text:l?"":r[n+1],drawing:l?a(r[n+1]):[]})}return{raw:t,combined:e.map(function(t){return t.text}).join(""),parsed:e}}function f(t){var r=t.split(":");return r[0]*3600+r[1]*60+r[2]*1}function v(t,a){var e=t.split(",");if(e.length>a.length){var n=e.slice(a.length-1).join();e=e.slice(0,a.length-1);e.push(n)}var i={};for(var s=0;s<e.length;s++){var v=a[s];var o=e[s].trim();switch(v){case"Layer":case"MarginL":case"MarginR":case"MarginV":i[v]=o*1;break;case"Start":case"End":i[v]=f(o);break;case"Effect":i[v]=r(o);break;case"Text":i[v]=l(o);break;default:i[v]=o}}return i}function o(t){return t.match(/Format\s*:\s*(.*)/i)[1].split(/\s*,\s*/)}function c(t){return t.match(/Style\s*:\s*(.*)/i)[1].split(/\s*,\s*/)}function u(t){var r={info:{},styles:{format:[],style:[]},events:{format:[],comment:[],dialogue:[]}};var a=t.split(/\r?\n/);var e=0;for(var n=0;n<a.length;n++){var i=a[n].trim();if(/^;/.test(i)){continue}if(/^\[Script Info\]/i.test(i)){e=1}else if(/^\[V4\+? Styles\]/i.test(i)){e=2}else if(/^\[Events\]/i.test(i)){e=3}else if(/^\[.*\]/.test(i)){e=0}if(e===0){continue}if(e===1){if(/:/.test(i)){var s=i.match(/(.*?)\s*:\s*(.*)/);var l=s[1];var f=s[2];r.info[l]=f}}if(e===2){if(/^Format\s*:/i.test(i)){r.styles.format=o(i)}if(/^Style\s*:/i.test(i)){r.styles.style.push(c(i))}}if(e===3){if(/^Format\s*:/i.test(i)){r.events.format=o(i)}if(/^(?:Comment|Dialogue)\s*:/i.test(i)){var u=i.match(/^(\w+?)\s*:\s*(.*)/i);var p=u[1];var d=u[2];r.events[p.toLowerCase()].push(v(d,r.events.format))}}}return r}var p=Object.assign||function t(r){var a=[],e=arguments.length-1;while(e-- >0)a[e]=arguments[e+1];for(var n=0;n<a.length;n++){if(!a[n]){continue}var i=Object.keys(a[n]);for(var s=0;s<i.length;s++){r[i[s]]=a[n][i[s]]}}return r};function d(t){var r={type:null,prev:null,next:null,points:[]};if(/[mnlbs]/.test(t[0])){r.type=t[0].toUpperCase().replace("N","L").replace("B","C")}for(var a=t.length-!(t.length&1),e=1;e<a;e+=2){r.points.push({x:t[e]*1,y:t[e+1]*1})}return r}function y(t){if(!t.points.length||!t.type){return false}if(/C|S/.test(t.type)&&t.points.length<3){return false}return true}function g(t){var r=Infinity;var a=Infinity;var e=-Infinity;var n=-Infinity;(i=[]).concat.apply(i,t.map(function(t){var r=t.points;return r})).forEach(function(t){var i=t.x;var s=t.y;r=Math.min(r,i);a=Math.min(a,s);e=Math.max(e,i);n=Math.max(n,s)});return{minX:r,minY:a,width:e-r,height:n-a};var i}function h(t,r,a){var e=[];var n=[0,2/3,1/3,0];var i=[0,1/3,2/3,0];var s=[0,1/6,2/3,1/6];var l=function(t,r){return t[0]*r[0]+t[1]*r[1]+t[2]*r[2]+t[3]*r[3]};var f=[t[t.length-1].x,t[0].x,t[1].x,t[2].x];var v=[t[t.length-1].y,t[0].y,t[1].y,t[2].y];e.push({type:r==="M"?"M":"L",points:[{x:l(s,f),y:l(s,v)}]});for(var o=3;o<t.length;o++){f=[t[o-3].x,t[o-2].x,t[o-1].x,t[o].x];v=[t[o-3].y,t[o-2].y,t[o-1].y,t[o].y];e.push({type:"C",points:[{x:l(n,f),y:l(n,v)},{x:l(i,f),y:l(i,v)},{x:l(s,f),y:l(s,v)}]})}if(a==="L"||a==="C"){var c=t[t.length-1];e.push({type:"L",points:[{x:c.x,y:c.y}]})}return e}function m(t){return t.map(function(t){var r=t.type;var a=t.points;return r+a.map(function(t){var r=t.x;var a=t.y;return r+","+a}).join(",")}).join("")}function x(t){var r=[];var a=0;while(a<t.length){var e=t[a];var n=d(e);if(n.type){if(n.type==="S"){var i=r[a-1].points.slice(-1)[0];var s=i.x;var l=i.y;n.points.unshift({x:s,y:l})}if(y(n)){if(a){n.prev=r[a-1].type;r[a-1].next=n.type}r.push(n)}a++}else{if(r[a-1].type==="S"){var f={p:n.points,c:r[a-1].points.slice(0,3)};r[a-1].points=r[a-1].points.concat((f[e[0]]||[]).map(function(t){var r=t.x;var a=t.y;return{x:r,y:a}}))}t.splice(a,1)}}var v=(o=[]).concat.apply(o,r.map(function(t){var r=t.type;var a=t.points;var e=t.prev;var n=t.next;return r==="S"?h(a,e,n):{type:r,points:a}}));return p({instructions:v,d:m(v)},g(r));var o}var b=["fs","clip","c1","c2","c3","c4","a1","a2","a3","a4","alpha","fscx","fscy","fax","fay","frx","fry","frz","fr","be","blur","bord","xbord","ybord","shad","xshad","yshad"];function S(t,r,a){var e,n,i;if(a===void 0)a={};var s=t[r];if(s===undefined){return null}if(r==="pos"||r==="org"){return s.length===2?(e={},e[r]={x:s[0],y:s[1]},e):null}if(r==="move"){var l=s[0];var f=s[1];var v=s[2];var o=s[3];var c=s[4];if(c===void 0)c=0;var u=s[5];if(u===void 0)u=0;return s.length===4||s.length===6?{move:{x1:l,y1:f,x2:v,y2:o,t1:c,t2:u}}:null}if(r==="fad"||r==="fade"){if(s.length===2){var d=s[0];var y=s[1];return{fade:{type:"fad",t1:d,t2:y}}}if(s.length===7){var g=s[0];var h=s[1];var m=s[2];var w=s[3];var M=s[4];var C=s[5];var O=s[6];return{fade:{type:"fade",a1:g,a2:h,a3:m,t1:w,t2:M,t3:C,t4:O}}}return null}if(r==="clip"){var k=s.inverse;var F=s.scale;var L=s.drawing;var j=s.dots;if(L){return{clip:{inverse:k,scale:F,drawing:x(L),dots:j}}}if(j){var E=j[0];var H=j[1];var N=j[2];var $=j[3];return{clip:{inverse:k,scale:F,drawing:L,dots:{x1:E,y1:H,x2:N,y2:$}}}}return null}if(/^[xy]?(bord|shad)$/.test(r)){s=Math.max(s,0)}if(r==="bord"){return{xbord:s,ybord:s}}if(r==="shad"){return{xshad:s,yshad:s}}if(/^c\d$/.test(r)){return n={},n[r]=s||a[r],n}if(r==="alpha"){return{a1:s,a2:s,a3:s,a4:s}}if(r==="fr"){return{frz:s}}if(r==="fs"){return{fs:/^\+|-/.test(s)?(s*1>-10?1+s/10:1)*a.fs:s*1}}if(r==="t"){var I=s.t1;var R=s.accel;var A=s.tags;var B=s.t2||(a.end-a.start)*1e3;var z={};A.forEach(function(t){var r=Object.keys(t)[0];if(~b.indexOf(r)&&!(r==="clip"&&!t[r].dots)){p(z,S(t,r,a))}});return{t:{t1:I,t2:B,accel:R,tag:z}}}return i={},i[r]=s,i}var w=[null,1,2,3,null,7,8,9,null,4,5,6];var M=["r","a","an","pos","org","move","fade","fad","clip"];function C(t,r){return{name:t,borderStyle:r[t].style.BorderStyle,tag:r[t].tag,fragments:[]}}function O(t){var r=t.styles;var a=t.name;var e=t.parsed;var n=t.start;var i=t.end;var s;var l;var f;var v;var o;var c;var u=[];var d=C(a,r);var y={};for(var g=0;g<e.length;g++){var h=e[g];var m=h.tags;var b=h.text;var O=h.drawing;var k=void 0;for(var F=0;F<m.length;F++){var L=m[F];k=L.r===undefined?k:L.r}var j={tag:k===undefined?JSON.parse(JSON.stringify(y)):{},text:b,drawing:O.length?x(O):null};for(var E=0;E<m.length;E++){var H=m[E];s=s||w[H.a||0]||H.an;l=l||S(H,"pos");f=f||S(H,"org");v=v||S(H,"move");o=o||S(H,"fade")||S(H,"fad");c=S(H,"clip")||c;var N=Object.keys(H)[0];if(N&&!~M.indexOf(N)){var $=d.tag;var I=$.c1;var R=$.c2;var A=$.c3;var B=$.c4;var z=y.fs||d.tag.fs;var D=S(H,N,{start:n,end:i,c1:I,c2:R,c3:A,c4:B,fs:z});if(N==="t"){j.tag.t=j.tag.t||[];j.tag.t.push(D.t)}else{p(j.tag,D)}}}y=j.tag;if(k!==undefined){u.push(d);d=C(r[k]?k:a,r)}if(j.text||j.drawing){var P=d.fragments[d.fragments.length-1]||{};if(P.text&&j.text&&!Object.keys(j.tag).length){P.text+=j.text}else{d.fragments.push(j)}}}u.push(d);return p({alignment:s,slices:u},l,f,v,o,c)}function k(t){var r=t.info;var a=t.styles;var e=t.dialogues;var n=Infinity;var i=[];for(var s=0;s<e.length;s++){var l=e[s];if(l.Start>=l.End){continue}if(!a[l.Style]){l.Style="Default"}var f=a[l.Style].style;var v=r.Timer/100||1;var o=O({styles:a,name:l.Style,parsed:l.Text.parsed,start:l.Start,end:l.End});var c=o.alignment||f.Alignment;n=Math.min(n,l.Layer);i.push(p({layer:l.Layer,start:l.Start/v,end:l.End/v,margin:{left:l.MarginL||f.MarginL,right:l.MarginR||f.MarginR,vertical:l.MarginV||f.MarginV},effect:l.Effect},o,{alignment:c}))}for(var u=0;u<i.length;u++){i[u].layer-=n}return i.sort(function(t,r){return t.start-r.start||t.end-r.end})}var F={Name:"Default",Fontname:"Arial",Fontsize:"20",PrimaryColour:"&H00FFFFFF&",SecondaryColour:"&H000000FF&",OutlineColour:"&H00000000&",BackColour:"&H00000000&",Bold:"0",Italic:"0",Underline:"0",StrikeOut:"0",ScaleX:"100",ScaleY:"100",Spacing:"0",Angle:"0",BorderStyle:"1",Outline:"2",Shadow:"2",Alignment:"2",MarginL:"10",MarginR:"10",MarginV:"10",Encoding:"1"};function L(t){var r=t.match(/&H(\w\w)?(\w{6})&?/);var a=r[1];var e=r[2];return[a||"00",e]}function j(t){var r=t.info;var a=t.style;var e=t.format;var n=t.defaultStyle;var i={};var s=[p({},F,n,{Name:"Default"})].concat(a.map(function(t){var r={};for(var a=0;a<e.length;a++){r[e[a]]=t[a]}return r}));var l=function(t){var a=s[t];if(/^(\*+)Default$/.test(a.Name)){a.Name="Default"}Object.keys(a).forEach(function(t){if(t!=="Name"&&t!=="Fontname"&&!/Colour/.test(t)){a[t]*=1}});var e=L(a.PrimaryColour);var n=e[0];var l=e[1];var f=L(a.SecondaryColour);var v=f[0];var o=f[1];var c=L(a.OutlineColour);var u=c[0];var p=c[1];var d=L(a.BackColour);var y=d[0];var g=d[1];var h={fn:a.Fontname,fs:a.Fontsize,c1:l,a1:n,c2:o,a2:v,c3:p,a3:u,c4:g,a4:y,b:Math.abs(a.Bold),i:Math.abs(a.Italic),u:Math.abs(a.Underline),s:Math.abs(a.StrikeOut),fscx:a.ScaleX,fscy:a.ScaleY,fsp:a.Spacing,frz:a.Angle,xbord:a.Outline,ybord:a.Outline,xshad:a.Shadow,yshad:a.Shadow,q:/^[0-3]$/.test(r.WrapStyle)?r.WrapStyle*1:2};i[a.Name]={style:a,tag:h}};for(var f=0;f<s.length;f++)l(f);return i}function E(t,r){if(r===void 0)r={};var a=u(t);var e=j({info:a.info,style:a.styles.style,format:a.styles.format,defaultStyle:r.defaultStyle||{}});return{info:a.info,width:a.info.PlayResX*1||null,height:a.info.PlayResY*1||null,collisions:a.info.Collisions||"Normal",styles:e,dialogues:k({info:a.info,styles:e,dialogues:a.events.dialogue})}}t.parse=u;t.compile=E;Object.defineProperty(t,"__esModule",{value:true})}); |
{ | ||
"name": "ass-compiler", | ||
"version": "0.0.6", | ||
"version": "0.0.7", | ||
"description": "Parses and compiles ASS subtitle format to easy-to-use data structure.", | ||
@@ -44,14 +44,14 @@ "main": "dist/ass-compiler.js", | ||
"cross-env": "^5.1.3", | ||
"eslint": "^4.15.0", | ||
"eslint": "^4.16.0", | ||
"eslint-config-airbnb-base": "^12.1.0", | ||
"eslint-plugin-import": "^2.8.0", | ||
"istanbul": "^0.4.5", | ||
"mocha": "^4.1.0", | ||
"mocha": "^5.0.0", | ||
"mocha-istanbul": "^0.3.0", | ||
"rollup": "^0.54.0", | ||
"rollup": "^0.54.1", | ||
"rollup-plugin-buble": "^0.18.0", | ||
"rollup-plugin-istanbul": "^2.0.0", | ||
"rollup-plugin-multi-entry": "^2.0.2", | ||
"uglify-js": "^3.3.6" | ||
"uglify-js": "^3.3.7" | ||
} | ||
} |
@@ -38,15 +38,23 @@ import { assign } from '../utils.js'; | ||
const result = {}; | ||
const ds = assign({}, DEFAULT_STYLE, defaultStyle, { Name: 'Default' }); | ||
const styles = [format.map(fmt => ds[fmt])].concat(style); | ||
const styles = [ | ||
assign({}, DEFAULT_STYLE, defaultStyle, { Name: 'Default' }), | ||
...style.map((stl) => { | ||
const s = {}; | ||
for (let i = 0; i < format.length; i++) { | ||
s[format[i]] = stl[i]; | ||
} | ||
return s; | ||
}), | ||
]; | ||
for (let i = 0; i < styles.length; i++) { | ||
const stl = styles[i]; | ||
const s = {}; | ||
for (let j = 0; j < format.length; j++) { | ||
const fmt = format[j]; | ||
s[fmt] = (fmt === 'Name' || fmt === 'Fontname' || /Colour/.test(fmt)) ? stl[j] : stl[j] * 1; | ||
// this behavior is same as Aegisub by black-box testing | ||
if (fmt === 'Name' && /^(\*+)Default$/.test(s[fmt])) { | ||
s[fmt] = 'Default'; | ||
const s = styles[i]; | ||
// this behavior is same as Aegisub by black-box testing | ||
if (/^(\*+)Default$/.test(s.Name)) { | ||
s.Name = 'Default'; | ||
} | ||
Object.keys(s).forEach((key) => { | ||
if (key !== 'Name' && key !== 'Fontname' && !/Colour/.test(key)) { | ||
s[key] *= 1; | ||
} | ||
} | ||
}); | ||
const [a1, c1] = parseStyleColor(s.PrimaryColour); | ||
@@ -53,0 +61,0 @@ const [a2, c2] = parseStyleColor(s.SecondaryColour); |
@@ -68,3 +68,3 @@ import { compileDrawing } from './drawing.js'; | ||
slices.push(slice); | ||
slice = createSlice(reset || name, styles); | ||
slice = createSlice(styles[reset] ? reset : name, styles); | ||
} | ||
@@ -71,0 +71,0 @@ if (fragment.text || fragment.drawing) { |
59859
1520