153 lines
6.8 KiB
JavaScript
153 lines
6.8 KiB
JavaScript
// exercise01
|
|
{
|
|
let p = document.querySelector("p");
|
|
p.innerHTML = ((__rkt_body) => {
|
|
const __rkt_to_regexp = (__pat, __global) => {
|
|
const __flags = (__pat instanceof RegExp)
|
|
? Array.from(new Set((__pat.flags.replace(/g/g, '') + (__global ? 'g' : '')).split(''))).join('')
|
|
: (__global ? 'g' : '');
|
|
return (__pat instanceof RegExp) ? new RegExp(__pat.source, __flags) : new RegExp(String(__pat), __flags);
|
|
};
|
|
const __rkt_match_array = (__m) => (__m === null ? false : Array.from(__m, (__x) => __x === undefined ? false : __x));
|
|
const __rkt_replacement = (__s) => {
|
|
if (typeof __s !== 'string') return __s;
|
|
let __out = '';
|
|
for (let __i = 0; __i < __s.length; __i++) {
|
|
const __ch = __s[__i];
|
|
if (__ch === '$') { __out += '$$'; continue; }
|
|
if (__ch === '\\' && __i + 1 < __s.length) {
|
|
const __n = __s[++__i];
|
|
if (__n >= '0' && __n <= '9') __out += (__n === '0' ? '$&' : ('$' + __n));
|
|
else __out += __n;
|
|
} else __out += __ch;
|
|
}
|
|
return __out;
|
|
};
|
|
return __rkt_body(__rkt_to_regexp, __rkt_match_array, __rkt_replacement);
|
|
})((__rkt_to_regexp, __rkt_match_array, __rkt_replacement) => String(p.innerHTML).replace(__rkt_to_regexp(new RegExp("\\b\\w{9,}\\b"), true), __rkt_replacement(function(word) {
|
|
return ("<span style=\"background: yellow\">" + word + "</span>");
|
|
})));
|
|
}
|
|
|
|
// exercise02
|
|
{
|
|
let p = document.querySelector("p");
|
|
p.insertAdjacentHTML("afterend", "<a href=\"https://forcemipsum.com/\">Source: ForceM Ipsum</a>");
|
|
}
|
|
|
|
// exercise03
|
|
{
|
|
let p = document.querySelector("p");
|
|
p.innerHTML = ((__rkt_body) => {
|
|
const __rkt_to_regexp = (__pat, __global) => {
|
|
const __flags = (__pat instanceof RegExp)
|
|
? Array.from(new Set((__pat.flags.replace(/g/g, '') + (__global ? 'g' : '')).split(''))).join('')
|
|
: (__global ? 'g' : '');
|
|
return (__pat instanceof RegExp) ? new RegExp(__pat.source, __flags) : new RegExp(String(__pat), __flags);
|
|
};
|
|
const __rkt_match_array = (__m) => (__m === null ? false : Array.from(__m, (__x) => __x === undefined ? false : __x));
|
|
const __rkt_replacement = (__s) => {
|
|
if (typeof __s !== 'string') return __s;
|
|
let __out = '';
|
|
for (let __i = 0; __i < __s.length; __i++) {
|
|
const __ch = __s[__i];
|
|
if (__ch === '$') { __out += '$$'; continue; }
|
|
if (__ch === '\\' && __i + 1 < __s.length) {
|
|
const __n = __s[++__i];
|
|
if (__n >= '0' && __n <= '9') __out += (__n === '0' ? '$&' : ('$' + __n));
|
|
else __out += __n;
|
|
} else __out += __ch;
|
|
}
|
|
return __out;
|
|
};
|
|
return __rkt_body(__rkt_to_regexp, __rkt_match_array, __rkt_replacement);
|
|
})((__rkt_to_regexp, __rkt_match_array, __rkt_replacement) => String(p.textContent).replace(__rkt_to_regexp(new RegExp("\\.\\s*"), true), __rkt_replacement(".<br>")));
|
|
}
|
|
|
|
// exercise04
|
|
{
|
|
let heading = document.querySelector("h1");
|
|
let p = document.querySelector("p");
|
|
let words = ((__rkt_body) => {
|
|
const __rkt_to_regexp = (__pat, __global) => {
|
|
const __flags = (__pat instanceof RegExp)
|
|
? Array.from(new Set((__pat.flags.replace(/g/g, '') + (__global ? 'g' : '')).split(''))).join('')
|
|
: (__global ? 'g' : '');
|
|
return (__pat instanceof RegExp) ? new RegExp(__pat.source, __flags) : new RegExp(String(__pat), __flags);
|
|
};
|
|
const __rkt_match_array = (__m) => (__m === null ? false : Array.from(__m, (__x) => __x === undefined ? false : __x));
|
|
const __rkt_replacement = (__s) => {
|
|
if (typeof __s !== 'string') return __s;
|
|
let __out = '';
|
|
for (let __i = 0; __i < __s.length; __i++) {
|
|
const __ch = __s[__i];
|
|
if (__ch === '$') { __out += '$$'; continue; }
|
|
if (__ch === '\\' && __i + 1 < __s.length) {
|
|
const __n = __s[++__i];
|
|
if (__n >= '0' && __n <= '9') __out += (__n === '0' ? '$&' : ('$' + __n));
|
|
else __out += __n;
|
|
} else __out += __ch;
|
|
}
|
|
return __out;
|
|
};
|
|
return __rkt_body(__rkt_to_regexp, __rkt_match_array, __rkt_replacement);
|
|
})((__rkt_to_regexp, __rkt_match_array, __rkt_replacement) => String(p.textContent).split(__rkt_to_regexp(new RegExp(" "), true)));
|
|
let count = (words).length;
|
|
heading.insertAdjacentHTML("afterend", ("<p>" + String(count) + " words</p>"));
|
|
}
|
|
|
|
// exercise05
|
|
{
|
|
let p = document.querySelector("p");
|
|
let step = ((__rkt_body) => {
|
|
const __rkt_to_regexp = (__pat, __global) => {
|
|
const __flags = (__pat instanceof RegExp)
|
|
? Array.from(new Set((__pat.flags.replace(/g/g, '') + (__global ? 'g' : '')).split(''))).join('')
|
|
: (__global ? 'g' : '');
|
|
return (__pat instanceof RegExp) ? new RegExp(__pat.source, __flags) : new RegExp(String(__pat), __flags);
|
|
};
|
|
const __rkt_match_array = (__m) => (__m === null ? false : Array.from(__m, (__x) => __x === undefined ? false : __x));
|
|
const __rkt_replacement = (__s) => {
|
|
if (typeof __s !== 'string') return __s;
|
|
let __out = '';
|
|
for (let __i = 0; __i < __s.length; __i++) {
|
|
const __ch = __s[__i];
|
|
if (__ch === '$') { __out += '$$'; continue; }
|
|
if (__ch === '\\' && __i + 1 < __s.length) {
|
|
const __n = __s[++__i];
|
|
if (__n >= '0' && __n <= '9') __out += (__n === '0' ? '$&' : ('$' + __n));
|
|
else __out += __n;
|
|
} else __out += __ch;
|
|
}
|
|
return __out;
|
|
};
|
|
return __rkt_body(__rkt_to_regexp, __rkt_match_array, __rkt_replacement);
|
|
})((__rkt_to_regexp, __rkt_match_array, __rkt_replacement) => String(p.innerHTML).replace(__rkt_to_regexp(new RegExp("\\?"), true), __rkt_replacement("🤔")));
|
|
let out = ((__rkt_body) => {
|
|
const __rkt_to_regexp = (__pat, __global) => {
|
|
const __flags = (__pat instanceof RegExp)
|
|
? Array.from(new Set((__pat.flags.replace(/g/g, '') + (__global ? 'g' : '')).split(''))).join('')
|
|
: (__global ? 'g' : '');
|
|
return (__pat instanceof RegExp) ? new RegExp(__pat.source, __flags) : new RegExp(String(__pat), __flags);
|
|
};
|
|
const __rkt_match_array = (__m) => (__m === null ? false : Array.from(__m, (__x) => __x === undefined ? false : __x));
|
|
const __rkt_replacement = (__s) => {
|
|
if (typeof __s !== 'string') return __s;
|
|
let __out = '';
|
|
for (let __i = 0; __i < __s.length; __i++) {
|
|
const __ch = __s[__i];
|
|
if (__ch === '$') { __out += '$$'; continue; }
|
|
if (__ch === '\\' && __i + 1 < __s.length) {
|
|
const __n = __s[++__i];
|
|
if (__n >= '0' && __n <= '9') __out += (__n === '0' ? '$&' : ('$' + __n));
|
|
else __out += __n;
|
|
} else __out += __ch;
|
|
}
|
|
return __out;
|
|
};
|
|
return __rkt_body(__rkt_to_regexp, __rkt_match_array, __rkt_replacement);
|
|
})((__rkt_to_regexp, __rkt_match_array, __rkt_replacement) => String(step).replace(__rkt_to_regexp(new RegExp("!"), true), __rkt_replacement("😲")));
|
|
p.innerHTML = out;
|
|
}
|
|
|