@@ -87,18 +87,58 @@ export const removeEmptyParagraphs: RewriteAdapter = ($) => {
87
87
} ) ;
88
88
} ;
89
89
90
+ /**
91
+ * Transforms legacy links to new ones
92
+ * @param url
93
+ */
94
+ function transformUrl ( url : string ) : URL {
95
+ const parsedUrl = new URL ( url ) ;
96
+
97
+ const hostnamesToModify = [ 'wp.angular.love' , 'replica.angular.love' ] ;
98
+
99
+ const matchedHostname = hostnamesToModify . find (
100
+ ( hostname ) => hostname === parsedUrl . hostname ,
101
+ ) ;
102
+
103
+ if ( matchedHostname ) {
104
+ parsedUrl . hostname = 'angular.love' ;
105
+
106
+ // Regex pattern to match optional language code and /{year}/{month}/{day}/{slug}/ structure
107
+ const dateSlugPattern =
108
+ / ^ ( \/ [ a - z ] { 2 } ) ? \/ ( \d { 4 } ) \/ ( \d { 2 } ) \/ ( \d { 2 } ) \/ ( [ ^ / ] + ) \/ ? $ / ;
109
+
110
+ const match = parsedUrl . pathname . match ( dateSlugPattern ) ;
111
+
112
+ if ( match ) {
113
+ // If the pattern matches, extract the language code (if present) and the slug
114
+ const [ , langCode , , , , slug ] = match ;
115
+
116
+ if ( langCode ) {
117
+ parsedUrl . pathname = `${ langCode } /${ slug } ` ;
118
+ } else {
119
+ parsedUrl . pathname = `/${ slug } ` ;
120
+ }
121
+ }
122
+ }
123
+
124
+ return parsedUrl ;
125
+ }
126
+
90
127
/**
91
128
* Appends aria-label and target attributes to links
92
129
* @param $
93
130
*/
94
131
export const modifyLinks : RewriteAdapter = ( $ ) => {
95
132
$ ( 'a' ) . each ( ( _ , element ) => {
96
133
const $element = $ ( element ) ;
97
- $element . attr ( 'target' , ` _blank` ) ;
134
+ $element . attr ( 'target' , ' _blank' ) ;
98
135
99
136
if ( $element . attr ( 'href' ) && ! $element . attr ( 'href' ) . startsWith ( '#' ) ) {
100
- const { hostname } = new URL ( $element . attr ( 'href' ) ) ;
101
- $element . attr ( 'aria-label' , `Read more on ${ hostname } ` ) ;
137
+ const originalHref = $element . attr ( 'href' ) ;
138
+ const transformedURL = transformUrl ( originalHref ) ;
139
+ $element . attr ( 'href' , transformedURL . toString ( ) ) ;
140
+
141
+ $element . attr ( 'aria-label' , `Read more on ${ transformedURL . hostname } ` ) ;
102
142
}
103
143
} ) ;
104
144
} ;
0 commit comments