11class TransformerNotFound extends Error {
2- constructor ( message = "" , ...args ) {
3- super ( message , ...args ) ;
4- this . message = message + " was not found in the transformer list" ;
5- }
2+ constructor ( message = "" , ...args ) {
3+ super ( message , ...args ) ;
4+ this . message = message + " was not found in the transformer list" ;
5+ }
66}
77
8- async function getFormats ( ) {
9- return new Promise ( ( resolve , reject ) => {
10- browser . storage . local . get ( [ ` format` ] , ( r ) => {
11- if ( `format` in r ) {
8+ async function getFormats ( method = "default" ) {
9+ return new Promise ( ( resolve ) => {
10+ browser . storage . local . get ( [ " format" ] , ( r ) => {
11+ if ( r . format ) {
1212 resolve ( JSON . parse ( r . format ) ) ;
13+ return ;
1314 }
14- else {
15- resolve ( [
16- {
17- type : `title` ,
18- value : null
19- } ,
20- {
21- type : `string` ,
22- value : ` - `
23- } ,
24- {
25- type : `url` ,
26- value : null
27- }
28- ] ) ;
29- }
30- } )
31- } )
15+ const defaults = {
16+ quote : [
17+ { type : "title" , value : null } ,
18+ { type : "string" , value : " quoted from: " } ,
19+ { type : "url" , value : null }
20+ ] ,
21+ default : [
22+ { type : "title" , value : null } ,
23+ { type : "string" , value : " - " } ,
24+ { type : "url" , value : null }
25+ ]
26+ } ;
27+ resolve ( defaults [ method ] || defaults . default ) ;
28+ } ) ;
29+ } ) ;
30+ }
31+
32+ function defaultTransformers ( ) {
33+ return {
34+ "www.youtube.com" : { regex : / ^ (?: h t t p s ? : \/ \/ ) ? (?: w w w \. ) ? y o u t u b e \. c o m \/ s h o r t s \/ ( [ ^ \/ ? ] + ) $ / i, output : "https://www.youtube.com/watch?v=$1" } ,
35+ "m.youtube.com" : { regex : / ^ (?: h t t p s ? : \/ \/ ) ? (?: m \. ) ? y o u t u b e \. c o m \/ s h o r t s \/ ( [ ^ \/ ? ] + ) (?: \? [ ^ \/ ] * ) ? $ / i, output : "https://www.youtube.com/watch?v=$1" }
36+ }
3237}
3338
3439async function getTransformers ( ) {
3540 return new Promise ( ( resolve , reject ) => {
36- browser . storage . local . get ( [ `transformers` ] , ( r ) => {
41+ browser . storage . local . get ( [ `transformers` ] , async ( r ) => {
3742 if ( `transformers` in r ) {
3843 let result = JSON . parse ( r . transformers ) ;
3944 Object . keys ( result ) . forEach ( ( domain ) => {
@@ -47,10 +52,7 @@ async function getTransformers() {
4752 resolve ( result ) ;
4853 }
4954 else {
50- resolve ( {
51- "www.youtube.com" : { regex : / ^ (?: h t t p s ? : \/ \/ ) ? (?: w w w \. ) ? y o u t u b e \. c o m \/ s h o r t s \/ ( [ ^ \/ ? ] + ) $ / i, output : "https://www.youtube.com/watch?v=$1" } ,
52- "m.youtube.com" : { regex : / ^ (?: h t t p s ? : \/ \/ ) ? (?: m \. ) ? y o u t u b e \. c o m \/ s h o r t s \/ ( [ ^ \/ ? ] + ) (?: \? [ ^ \/ ] * ) ? $ / i, output : "https://www.youtube.com/watch?v=$1" }
53- } ) ;
55+ resolve ( defaultTransformers ( ) )
5456 }
5557 } )
5658 } )
@@ -69,6 +71,12 @@ async function getTransformer(hostname) {
6971async function updateTransformer ( hostname , regex , output ) {
7072 return new Promise ( async ( resolve , reject ) => {
7173 let transformers = await getTransformers ( ) ;
74+ if ( ! Object . keys ( transformers ) . includes ( hostname ) ) {
75+ console . log ( 'Cocksucker' )
76+ transformers [ hostname ] = {
77+ regex : null , output : null
78+ } ;
79+ }
7280 transformers [ hostname ] . regex = regex ;
7381 transformers [ hostname ] . output = output ;
7482
@@ -79,6 +87,17 @@ async function updateTransformer(hostname, regex, output) {
7987 } )
8088}
8189
90+ async function removeTransformer ( hostname ) {
91+ return new Promise ( async ( resolve , reject ) => {
92+ let transformers = await getTransformers ( ) ;
93+ delete transformers [ hostname ] ;
94+ Object . keys ( transformers ) . forEach ( ( host ) => {
95+ transformers [ host ] . regex = transformers [ host ] . regex . source ;
96+ } )
97+ resolve ( transformers ) ;
98+ } )
99+ }
100+
82101function convertFormatToTagify ( format ) {
83102 let result = `` ;
84103 for ( var i = 0 ; i < format . length ; i ++ ) {
@@ -138,15 +157,15 @@ async function fillFormatStructure(url, title, format) {
138157 return format ;
139158}
140159
141- function formatAsString ( format ) {
160+ function formatAsString ( format ) {
142161 let clipboardText = `` ;
143162 for ( var i = 0 ; i < format . length ; i ++ ) {
144163 clipboardText += format [ i ] . value ;
145164 }
146165 return clipboardText ;
147166}
148167
149- function pasteToClipboard ( format ) {
168+ function pasteToClipboard ( format ) {
150169 let clipboardText = `` ;
151170 for ( var i = 0 ; i < format . length ; i ++ ) {
152171 clipboardText += format [ i ] . value ;
@@ -155,16 +174,16 @@ function pasteToClipboard (format) {
155174}
156175
157176function RegExpFromStr ( patternString ) {
158- // Remove leading and trailing slashes
159- let trimmedPattern = patternString . replace ( / ^ \/ | \/ $ / g, '' ) ;
177+ // Remove leading and trailing slashes
178+ let trimmedPattern = patternString . replace ( / ^ \/ | \/ $ / g, '' ) ;
160179
161- // Extract flags from the end of the string
162- const flagsMatch = trimmedPattern . match ( / ( [ g i m y ] + ) $ / ) ;
163- let flags = flagsMatch ? flagsMatch [ 1 ] : '' ;
180+ // Extract flags from the end of the string
181+ const flagsMatch = trimmedPattern . match ( / ( [ g i m y ] + ) $ / ) ;
182+ let flags = flagsMatch ? flagsMatch [ 1 ] : '' ;
164183
165- // Remove flags from the pattern
166- trimmedPattern = trimmedPattern . replace ( / \/ ? [ g i m y ] + $ / , '' ) ;
184+ // Remove flags from the pattern
185+ trimmedPattern = trimmedPattern . replace ( / \/ ? [ g i m y ] + $ / , '' ) ;
167186
168- // Create and return the RegExp object
169- return new RegExp ( trimmedPattern , flags ) ;
187+ // Create and return the RegExp object
188+ return new RegExp ( trimmedPattern , flags ) ;
170189}
0 commit comments