Salin code berikut ini, simpan dengan nama "index.html".

<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>

    <meta content="text/html; charset=UTF-8" http-equiv="content-type" />
    <meta charset="UTF-8" />
    <meta content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=0, shrink-to-fit=no" name="viewport" />

    <title>Content Checker</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

    <script src="script.js"></script>

    <link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
    <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" />

</head>

<body>

    <div class="container">

        <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
            <a class="btn btn-primary" role="button" type="button" id="countWordsBtn" href="javascript:void(0);" onClick="typeText()">
Check Unique
</a>

            <a class="btn btn-primary" role="button" href="javascript:void(0);" onClick="typeText()">
Check Point
</a>

            <a class="btn btn-primary" role="button" href="javascript:void(0);" onClick="htmlMode()">
HTML Output
</a>

            <a class="btn btn-primary" role="button" href="javascript:void(0);" onClick="youTubeText()">
YouTube Description
</a>

            <a class="btn btn-primary" role="button" href="javascript:void(0);" onClick="spin()">
Spin Text
</a>

            <a class="btn btn-primary" role="button" href="javascript:void(0);" onClick="preview()">
Preview Content
</a>
        </nav>

        <form name="seo" role="main">
            <div class="form-group">
                <label>Judul Postingan</label>
                <input class="form-control" autocomplete="off" type="text" onkeyup="typeText()" onkeydown="typeText()" name="title" value="">
            </div>

            <div class="form-group">
                <label>Fokus Kata Kunci</label>
                <input class="form-control" autocomplete="off" type="text" onkeyup="typeText()" onkeydown="typeText()" name="target" value="" placeholder="Fokus Kata Kunci" title="Fokus Kata Kunci">
            </div>

            <div class="form-group">
                <label>Isi Postingan</label>
                <textarea id="wordsTxtAra" class="form-control" cols="1500" rows="1500" onkeyup="typeText()" onkeydown="typeText()" name="text" title="Isi Postingan"></textarea>
            </div>
        </form>

        <div id="count"></div>

        <div id="word"></div>

        <div id="wordFreq" class="container"></div>

        <div id="check" class="container"></div>

        <div id="youtube" class="container"></div>

        <div id="spinResult" class="container"></div>

        <div id="preview" class="container"></div>

        <br /> <br /> <br />
    </div>
    <!-- .container -->

    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>

</body>

</html>

Kemudian copy code di bawah ini dan simpan dengan nama "script.js".

function cleanAll(str) {
    str = str.replace("  ", "");
    return str.replace(new RegExp(" \/ ", "g"), "/");
}


String.prototype.titleDenayWords = function() {
    var x;
    var y;
    var word;
    var denay_word;
    var regex_str;
    var regex;
    var cleansed_string = this.valueOf();
    var denay_words = new Array('akibat', 'atas', 'bagai', 'bagi', 'berkat', 'dalam', 'dari', 'demi', 'dengan', 'di', 'hingga', 'karena', 'ke', 'kecuali', 'lewat', 'oleh', 'pada', 'sampai', 'sejak', 'seperti', 'tanpa', 'tentang', 'untuk', 'bersama', 'secara', 'bserta', 'sekitar', 'mengenai', 'selain', 'melalui', 'selaku', 'menurut', 'selama', 'sebagai', 'setelah', 'sebelum', 'terhadap', 'daripada', 'kepada', 'di', 'ke', 'pada', 'dalam', 'yaitu', 'kepada', 'daripada', 'untuk', 'bagi', 'ala', 'bak', 'tentang', 'mengenai', 'sebab', 'secara', 'terhadap', 'dan', 'atau', 'adalah', 'tetapi', 'ketika', 'seandainya', 'supaya', 'pun', 'seperti', 'oleh', 'karena', 'sehingga', 'bahwa', 'kalau', 'untuk', 'kemudian', 'yang', 'akan')
    words = cleansed_string.match(/[^\s]+|\s+[^\s+]$/g)
    for (x = 0; x < words.length; x++) {

        for (y = 0; y < denay_words.length; y++) {
            // Get the current word
            word = words[x].replace(/\s+|[^a-z]+/ig, "");  

            denay_word = denay_words[y];

            // If the word matches, remove it from the keywords
            if (word.toLowerCase() == denay_word) {
                // Build the regex
                regex_str = "^\\s*" + denay_word + "\\s*$";  // Only word
                regex_str += "|\\s+" + denay_word + "\\s*$"; // Last word
                regex_str += "|\\s+" + denay_word + "\\s+";  // Word somewhere in the middle
                regex = new RegExp(regex_str, "ig");

                // Remove the word from the keywords
                cleansed_string = cleansed_string.replace(regex, " " + denay_word.toLowerCase() + " ");
            }
        }
    }
    return cleansed_string.replace(/^\s+|\s+$/g, "");
}

function allCaps(capital) {
    return capital.toUpperCase();
}

function createNewSummary(strx, chop) {
    if (strx.indexOf("<") != -1) {
        var s = strx.split("<");
        for (var i = 0; i < s.length; i++) {
            if (s[i].indexOf(">") != -1) {
                s[i] = s[i].substring(s[i].indexOf(">") + 1, s[i].length);
            }
        }
        strx = s.join("");
    }
    chop = (chop < strx.length - 1) ? chop : strx.length - 2;
    while (strx.charAt(chop - 1) != ' ' && strx.indexOf(' ', chop) != -1) chop++;
    strx = strx.substring(0, chop - 1);
    return strx;
}

function createDesc(str) {
    var summ = 150;
    var summary = createNewSummary(str, summ);
    return summary;
}

function createYouTubeDesc(str) {
    var summ = 500;
    var summary = createNewSummary(str, summ);
    return summary;
}

function changeToHtml(str) {
    s = str.split("\n");

    s = s.clean("");

    for (var i = 0; i < s.length; i++) {
        s[i] = '<p>' + sentenceCase(s[i].capitalizeWord()) + '</p>';
    }

    str = s.join("\n");

    return str;
}

Array.prototype.clean = function(deleteValue) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] == deleteValue) {
            this.splice(i, 1);
            i--;
        }
    }
    return this;
};

function sentenceCase(input, lowercaseBefore) {
    input = (input === undefined || input === null) ? '' : input;
    if (lowercaseBefore) {
        input = input.toLowerCase();
    }
    input = input.toString().replace(/(^|\. *)([a-z])/g, function(match, separator, char) {
        return separator + char.toUpperCase();
    });
    input = input.toString().replace(/(^|\? *)([a-z])/g, function(match, separator, char) {
        return separator + char.toUpperCase();
    });
    input = input.toString().replace(/(^|\! *)([a-z])/g, function(match, separator, char) {
        return separator + char.toUpperCase();
    });
    return input;
}

String.prototype.capitalizeWord = function() {
    str = this.valueOf();

    nama = new Array(" allah", "andy", "andi", "ageng", "setiawan", "setyawan", "agus", "bondan", "mahardika", "nova", "mohammad", "adam", "isa", "esa", "ibrahim", "abraham", "daud", "david", "sulaiman", "solomon", "nuh", "noah", "siti", "hawa", "hajar", "sarah", "laras", "raras", "swastika", "hitler", "luth", "bambang", "nur", "arjuna", "bima", "sakti", "pandawa", "pandhawa", "hastina", "astina", "tina", "tini", "soeharto", "soekarno", "gatot", "subroto", "al-masih", "al masih", "dedy", "dedi", "renaldi", "akbar", "dewi", "tanjung", "ayu", "fitri", "fitriani", "susi", "susan", "susanti", "eva", "rebeca", "rebecca", "helmi", "helmy", "gus", "abdul", "rahman", "neno", "mega", "megawati", "susilo", "tomi", "tommy", "rudi", "tri", "try", "sulistiono", "sulistyono", "yono", "edi", "sudrajad", "yusuf", "josef", "joseph", "michael", "jackson", "donald", "panjaitan", "haryono", "rustam", "saraswati", "abimanyu", "ineke", "amel", "koes", "koes plus", "iwan fals", "iwan", "indah", "endah", "endang", "pertiwi", "pratiwi", "irma", "fajar", "yanti", "fajarianti", "fajariyanti", "sri", "diah", "joko", "suryo", "pramono", "surya", "suryadi", "erna", "suwanti", "suryati", "ningsih", "suryatiningsih", "eni", "yanto", "sunan", "kalijaga", "kalijogo", "sultan", "imogiri", "didik", "irwan", "agustina", "agustin", "handayani", "ahmad", "dhani", "albar", "habib", "jawa pos", "jawa", "sunda", "batak", "madura", "minang", "bugis", "papua", "kompas", "republika", "suara merdeka", "elshinta", "siliwangi", "prabu", "silihwangi", "agung", "budiono", "budiyono", "kristanto", "sutanto", "mahfud", "mahmud", "abdullah", "antasena", "sutiyoso", "suara pembaruan", "vodka", "martini", "tuti", "astuti", "sukma", "sukmawati", "putri", "putra", "wahyu", "setyo", "budiwan", "prasetyo", "budiman", "roni", "sianturi", "harahap", "haris", "nasution", "mochtar", "mokhtar", "pakpahan", "raja guk-guk", "siahaan", "siagian", "situmorang", "agustinus", "lukas", "markus", "petrus", "paulus", "yohanes", "aries", "ariel", "batman", "superman", "robin", "robin hood", "peter", "peter pan", "dicky", "zulkarnaen", "zakaria", "maryam", "maria", "maddona", "gabriel", "zainudin", "hulk", "yunus", "hedi", "heidi", "deni", "desy", "desi", "ari", "fahri", "hamzah", "fakhri", "agum", "gumelar", "iswanto", "alfred", "thomas", "edison", "rina", "gunawan", "syahrul", "sahrul", "syafrizal", "rizal", "devi", "permatasari", "yamaha", "toyota", "mitsubishi", "opel", "honda", "android", "panasonic", "polytron", "grundig", "motorola", "ericson", "spyderman", "yesus", "yahya", "munandar", "goenawan", "nunung", "nining", "neneng", "iin", "indrawati", "rommy", "juliet", "cinderella", "tamtowi", "yusril", "ihza", "mahendra", "karni", "ilyas", "emil", "salim", "said", "rahmat", "hidayat", "fajri", "hidayatullah", "majid", "sheila", "siska", "fransiska", "icha", "sisca", "fransisca", "shanty", "shanti", "rosalia", "anita", "mitha", "paramitha", "nita", "lestari", "tari", "retno", "wulandari", "ndari", "abigail", "adelia", "adel", "lia", "natalia", "natalie", "kristanti", "tanti", "kristianti", "renny", "reni", "djayusman", "novi", "dwi", "catur", "windu", "galuh", "nina", "khalid", "basalamah", "raizal", "rosihan", "chairil", "khairil", "anwar", "hasan", "husein", "sadam", "saddam", "qadafi", "vicky", "usman", "harun");

    nama.forEach(function(cap) {
        str = str.replace(new RegExp("\\b" + cap, "g"), titleCase(cap));
    });

    caps = new Array("rivana snack & catering", "villa melati mas", "utan kayu utara", "utan kayu selatan", "tentara nasional indonesia", "tanjung duren utara", "tanjung duren selatan", "taman semanan indah", "taman palem lestari", "rawa mekar jaya", "rawa badak utara", "rawa badak selatan", "rangkap jaya baru", "pembicara internet marketing", "pasir gunung selatan", "pantai indah kapuk", "pangkal jati lama", "pangkal jati baru", "mutiara taman palem", "mangga dua selatan", "kota bambu utara", "kota bambu selatan", "kelapa gading timur", "kelapa gading barat", "kelapa dua wetan", "kedaung kali angke", "kebayoran lama utara", "kebayoran lama selatan", "kampung duri kosambi", "halim perdana kusuma", "gunung sahari utara", "gunung sahari selatan", "green serpong bintaro", "fish n chip", "cisaranten bina harapan", "cipinang besar utara", "cipinang besar selatan", "cempaka putih timur", "cempaka putih barat", "catering resepsi pernikahan", "catering pesta pernikahan", "catering jakarta utara", "catering jakarta timur", "catering jakarta selatan", "catering jakarta pusat", "catering jakarta barat", "bumi serpong damai", "bojong pondok terong", "black & decker", "b & b", "wijaya kusuma", "vila serpong", "uwung jaya", "utan panjang", "utan kayu", "ujung menteng", "tugu utara", "tugu selatan", "tubagus angke", "tlogosari wetan", "tlogosari kulon", "terboyo wetan", "terboyo kulon", "teknik daya", "tegal parang", "tegal alur", "tebing tinggi", "tebet timur", "tebet barat", "tanjung priok", "tanjung duren", "tanjung barat", "tangerang selatan", "tangerang kota", "tanah tinggi", "tanah sereal", "tanah baru", "tanah abang", "tambak aji", "taman sari", "taman ratu", "taman palem", "taman mini", "taman kota", "taman anggrek", "sunter jaya", "sunter agung", "sungai bambu", "sumur pancing", "sumur batu", "sukamaju baru", "sukabumi utara", "sukabumi selatan", "suka nagara", "suka murni", "suka mulya", "suka jadi", "suka damai", "suka asih", "srondol wetan", "srondol kulon", "srengseng sawah", "serpong park", "semper timur", "semper barat", "selapajang jaya", "sawangan baru", "sawah lama", "sawah besar", "sawah baru", "sarua indah", "sangiang jaya", "sandrina catering", "syakira catering", "roxi mas", "rooswati catering", "roa malaka", "rawa terate", "rawa jati", "rawa buntu", "rawa bunga", "rawa buaya", "rawa barat", "rawa badak", "ratu jaya", "rangkapan jaya", "randu garut", "raa jati", "puri media", "puri mansion", "puri kembangan", "puri indah", "pulo gadung", "pucang gading", "poris plawad", "poris jaya", "pondok terong", "pondok ranji", "pondok ranggon", "pondok pucung", "pondok pinang", "pondok petir", "pondok melati", "pondok labu", "pondok kopi", "pondok kelapa", "pondok karya", "pondok kacang", "pondok jaya", "pondok jagung", "pondok indah", "pondok gede", "pondok cina", "pondok cabe", "pondok betung", "pondok benda", "pondok bambu", "pondok bahar", "pondok aren", "plamongan sari", "pisangan timur", "pisangan baru", "pinang ranti", "petukangan utara", "petukangan selatan", "petojo utara", "petojo selatan", "permata buana", "periuk jaya", "perigi lama", "perigi baru", "penggaron lor", "penggaron kidul", "pendrikan lor", "pendrikan kidul", "pela mampang", "pekayon jaya", "pejaten timur", "pejaten barat", "pegangsaan dua", "pedurungan tengah", "pedurungan lor", "pedurungan kidul", "pasta italia", "pasir putih", "pasir jaya", "pasir gunung", "pasir gadung", "pasar rebo", "pasar minggu", "pasar manggis", "pasar kemis", "pasar baru", "parung serab", "parung panjang", "parung jaya", "paninggilan utara", "pangkalan jati", "pangkal jati", "panggung lor", "panggung kidul", "pandean lamper", "pancoran mas", "palangka raya", "pal meriam", "paku jaya", "pademangan timur", "pademangan barat", "padang sidempuan", "padang panjang", "pabuaran tumpeng", "nusa tenggara", "nusa jaya", "nambo jaya", "mustika jaya", "muktiharjo lor", "muktiharjo kidul", "muara angke", "meruya utara", "meruya selatan", "menteng dalam", "menteng atas", "mekar sari", "medan satria", "margahayu utara", "marga sari", "marga mulya", "marga jaya", "manis jaya", "mangkang wetan", "mangkang kulon", "manggarai selatan", "mangga dua", "mangga besar", "mampang prapatan", "malaka sari", "malaka jaya", "lubang buaya", "lippo karawaci", "lingkar selatan", "lenteng agung", "lebak bulus", "larangan indah", "lamper tengah", "lamper lor", "lamper kidul", "kuningan timur", "kuningan barat", "kreo selatan", "kramat pela", "kramat jati", "kota bogor", "kota baru", "kota bambu", "koja utara", "koja selatan", "koang jaya", "kemiri muka", "kembangan utara", "kembangan selatan", "kelapa indah", "kelapa gading", "kelapa dua", "kedoya utara", "kedoya selatan", "kedaung wetan", "kedaung baru", "kebon sirih", "kebon pala", "kebon nanas", "kebon melati", "kebon manggis", "kebon lega", "kebon kosong", "kebon kelapa", "kebon kacang", "kebon jeruk", "kebon besar", "kebon bawang", "kebon baru", "kebayoran lama", "kebayoran baru", "kayuringin jaya", "kayu putih", "kayu manis", "karet tengsin", "karet semanggi", "karet kuningan", "karang timur", "karang tengah", "karang sari", "karang mulya", "karang anyar", "kapuk muara", "kampung tengah", "kampung rawa", "kampung rambutan", "kampung melayu", "kampung gedong", "kampung baru", "kampung bali", "kamal muara", "kalimantan tengah", "kalibanteng kulon", "kalibanteng kidul", "kaliabang tengah", "kali deres", "kali baru", "kali anyar", "jurumudi baru", "jurang mangu", "johar baru", "jembatan lima", "jembatan dua", "jembatan besi", "jembaran lima", "jelambar baru", "jawa timur", "jawa tengah", "jawa barat", "jatinegara kaum", "jatibening baru", "jati pulo", "jati pag", "jati padang", "jakarta utara", "jakarta timur", "jakarta selatan", "jakarta pusat", "jakarta barat", "internet marketing", "idul fitri", "husen sastranegara", "harapan mulya", "harapan jaya", "harapan baru", "halim perdanakusuma", "gunung sindur", "gunung sahari", "gunung putri", "grogol utara", "grogol selatan", "grogol petamburan", "green garden", "graha raya", "gebang raya", "gandaria utara", "gandaria selatan", "gading serpong", "duri utara", "duri selatan", "duri pulo", "duri kosambi", "duri kepa", "duren tiga", "duren seribu", "duren sawit", "duren mekar", "duren jaya", "dpawon catering", "digital marketing", "depok jaya", "daan mogot", "d'pawon catering", "citra raya", "cisaranten wetan", "cisaranten kulon", "cisaranten endah", "cisalak pasar", "cipinang muara", "cipinang melayu", "cipinang cempedak", "cipinang besar", "cipete utara", "cipete selatan", "cipayung jaya", "cipadung wetan", "cipadung kulon", "cipadung kidul", "cipadu jaya", "cimone jaya", "cilandak timur", "cilandak barat", "cigondewah rahayu", "cigondewah kidul", "cibeunying kidul", "cibeunying kaler", "cibaduyut wetan", "cibaduyut kidul", "cengkareng timur", "cengkareng barat", "cempaka putih", "cempaka baru", "catering tangerang", "catering semarang", "catering jakarta", "catering depok", "catering bogor", "catering bekasi", "casa jardin", "cakung timur", "bumi serpong", "bulu lor", "bulan ramadhan", "bukit duri", "budi mulya", "buaran indah", "bojongsari baru", "bojongloa kidul", "bojongloa kaler", "bojong sari", "bojong nangka", "bojong jaya", "bojong indah", "bojong gede", "blok m", "bitung jaya", "bintara jaya", "bendungan hilir", "benda baru", "bekasi utara", "bekasi timur", "bekasi selatan", "bekasi jaya", "bekasi barat", "beji timur", "batu sari", "batu jaya", "batu ceper", "batu ampar", "bantar gebang", "bangetayu wetan", "bangetayu kulon", "bandung wetan", "bandung kulon", "bandung kidul", "bandara soekarno", "bandar lampung", "banda aceh", "bambu apus", "bali mester", "bakti jaya", "babakan tarogong", "babakan penghulu", "babakan asih", "b b", "aren jaya", "antapani wetan", "antapani tengah", "antapani kulon", "antapani kidul", "andi setiawan", "alam sutera", "alam jaya", "yogyakarta", "yahoo", "wonotingal", "wonosari", "wonoplumbon", "wonolopo", "wonodri", "wetan", "wates", "warungmuncang", "warakas", "utara", "ulujami", "ujungberung", "twitter", "turangga", "tugurejo", "tugu", "trimulyo", "tomang", "tobat", "tlogomulyo", "tirtajaya", "tinjomoyo", "timur", "tigaraksa", "tidore", "ternate", "tengah", "tembalang", "tegalsari", "tegal", "tebet", "tawangsari", "tawangmas", "tasikmalaya", "tarakan", "tapos", "tanjungpinang", "tanjungmas", "tanjungbalai", "tangki", "tangerang", "tandang", "tambora", "tambangan", "tambakrejo", "tambakharjo", "tamansari", "talagasari", "talaga", "tajur", "susukan", "surakarta", "surabaya", "sunda", "sumurejo", "sumurboto", "sumurbandung", "sumatera", "sulawesi", "sukorejo", "sukmajaya", "sukawarna", "sukatani", "sukasari", "sukarasa", "sukaraja", "sukapura", "sukapada", "sukamulya", "sukamiskin", "sukamaju", "sukaluyu", "sukajadi", "sukahaji", "sukagalih", "sukabungah", "sukabumi", "sudimara", "srengseng", "sorong", "sony", "solok", "solo", "slipi", "skill", "siwalan", "situsaeur", "singkawang", "sindangjaya", "sidoarjo", "setu", "setiabudi", "serua", "serpong", "serg", "serdang", "serang", "september", "sentul", "senin", "senen", "sendangmulyo", "sendangguwo", "senayan", "semper", "sembungharjo", "semarang", "semanan", "selong", "selatan", "selasa", "sekeloa", "sekejati", "sekayu", "sekaran,", "sekaran ", "sawangan", "sawahlunto", "sarua", "sarirejo", "sarijadi", "sandrina", "samsung", "sampangan", "samoja", "sambiroto", "sambirejo", "samarinda", "salemba", "salatiga", "salamanmloyo", "sakti", "saga", "sadeng", "sadangserang", "sabtu", "ryobi", "rumpin", "roxy", "roxi", "rowosari", "rorotan", "tumini", "rooswati", "robin", "riau", "republik", "rengas", "rempoa", "rejosari", "rejomulyo", "regol", "rawasari", "rawamangun", "randusari", "rancasari", "rancanumpang", "rancabolang", "rambutan", "ramadhan", "ramadan", "ragunan", "rabu", "pusat", "purwoyoso", "purwosari", "purwokerto", "purwodinatan", "purbalingga", "pungkur", "pulogebang", "pulo", "pudakpayung", "probolinggo", "pramuka", "prabumulih", "poris", "pontianak", "pongangan", "polaman", "podorejo", "pluit", "plombokan", "pleburan", "plalangan", "pisangan", "pinangsia", "pinang", "petukangan", "petompon", "petojo", "petogogan", "peterongan", "petamburan", "pesing", "pesantren", "pesanggrahan", "perwira", "periuk", "penjaringan", "penggilingan", "pengasinan", "pengadeggan", "pengadegan", "penang", "pematangsiantar", "pelindunghewan", "pekunden", "pekojan", "pekayon", "pekanbaru", "pekalongan", "pejuang", "pejaten", "pejagalan", "pegangsaan", "pegadungan", "pedurenan", "pedalangan", "payakumbuh", "patemon", "pasuruan", "pasteur", "pasirwangi", "pasirluyu", "pasirlayung", "pasirkaliki", "pasirjati", "pasirendah", "pasirbiru", "paseban", "pasanggrahan", "parung", "pariaman", "parepare", "papua", "papanggo", "panyileukan", "panunggangan", "panjunan", "paninggilan", "pangkalpinang", "pandeglang", "pandansari", "pancoran", "pamulang", "pamoyanan", "palu", "palopo", "palmerah", "palembang", "paledang", "palebon", "palasari", "palangkaraya", "pakulonan", "pakualam", "pakojan", "pakintelan", "pakemitan", "pajang", "pajajaran", "padurenan", "pademangan", "padasuka", "padangsari", "padang", "pacing", "pabuaran", "oktober", "nyengseret", "nusantara", "nokia", "november", "nongkosawit", "ngijo", "ngesrep", "ngemplaksimongan", "ngaliyan", "ngadirgo", "nerogtog", "neglasari", "natal", "mustikasari", "mustikajaya", "munjul", "muncul", "mugassari", "mojokerto", "mlatiharjo", "mlatibaru", "miroto", "minggu", "mikasa", "mijen", "metro", "meteseh", "meruyung", "meruya", "merdeka", "menteng", "mengger", "menceng", "melawai", "mekarwangi", "mekarsari", "mekarmulya", "mekarjaya", "mei", "megamendung", "medan", "mccullok", "matraman", "mataram", "master", "marunda", "margonda", "margasuka", "margasari", "margahayu", "maret", "maphar", "manyaran", "manjahlega", "mangunsari", "mangunharjo", "manggarai", "mandalajati", "manado", "mampang", "maluku", "maleer", "maleber", "malang", "malabar", "makita", "makassar", "makasar", "magelang", "madura", "madiun", "lubuklinggau", "lor", "limo", "lhokseumawe", "leuwinanggung", "lengkong", "lempongsari", "legok", "ledeng", "lebaksiliwangi", "lebakgede", "latumenten", "larangan", "langsa", "lampung", "lagoa", "kwitang", "kupang", "kuningan", "kunciran", "kulon", "kukusan", "kujangsari", "kudus", "kudu", "krukut", "krobokan", "kreo", "kreng", "krendang", "krapyak", "kranji", "kranggan", "kramat", "kramas", "kopo", "koja", "klender", "kidul", "kiaracondong", "ketapang", "keroncong", "kendari", "kenari", "kenanga", "ken", "kemijen", "kembangsari", "kembangarum", "kembangan", "kemayoran", "kemanggisan", "kemang", "kedungpane", "kedungmundu", "kedoya", "kediri", "kedaung", "kebunjayanti", "kebonwaru", "kebonpisang", "kebonkangkung", "kebonjeruk", "kebongedang", "kebonagung", "kebagusan", "keagungan", "kauman", "kartini", "karet", "karawaci", "karasak", "karangturi", "karangtempel", "karangroto", "karangrejo", "karangpamulang", "karangmalang", "karangkidul", "karanggan", "karangayu", "karanganyargunung", "karanganyar", "kapuk", "kandri", "kamis", "kamal", "kaliwiru", "kalisegoro", "kalisari", "kalipancur", "kalimulya", "kalimantan", "kalimalang", "kaligawe", "kalideres", "kalicari", "kalibata", "kalibaru", "kalianyar", "kademangan", "kacapiring", "jurumudi", "juni", "jumat", "jum'at", "juli", "jonggol", "jomblang", "jombang", "joglo", "jogja", "jerakan", "jelupang", "jelambar", "jaya", "jawa", "jatiwarna", "jatiwaringin", "jatiuwung", "jatisari", "jatisampurna", "jatirejo", "jatiranggon", "jatirangga", "jatirahayu", "jatiraden", "jatingaleh", "jatinegara", "jatimurni", "jatimulya", "jatimelati", "jatimekar", "jatimakmur", "jatiluhur", "jatikramat", "jatikarya", "jatijajar", "jatihandap", "jaticempaka", "jatibening", "jatibarang", "jatiasih", "jati", "jatake", "januari", "jangli", "jamika", "jambi", "jakasetia", "jakasampurna", "jakarta", "jakamulya", "jagalan", "jagakarsa", "jabungan", "italia", "isola", "islam", "internasional", "instagram", "indramayu", "indosiar", "indonesia", "honda", "hitachi", "hilti", "hegarmanah", "hatta", "harjamukti", "halim", "gunungpati", "gunung", "guntur", "gumuruh", "grogol", "gramedia", "gorontalo", "google", "gongdia", "gondrong", "gondoriyo", "gondangdia", "gombong", "goldstar", "glodok", "gisikdrono", "gerendeng", "genuksari", "gempolsari", "gembor", "gembong", "gemah", "gelora", "gegerkalong", "gedebage", "gedawang", "gebangsari", "gayamsari", "garuda", "garnish", "gandul", "gandasari", "gandaria", "gambir", "galur", "gajahmungkur", "gaga", "gabahan", "fitr", "februari", "facebook", "eid", "dunguscariang", "dumai", "dukuh", "dpawon", "dewalt", "desember", "depok", "denpasar", "demak", "darwati", "dago", "dadapsari", "curug", "condet", "coblong", "ciumbuleuit", "citra", "citeureup", "citarum", "cisurupan", "ciseureuh", "cisarua", "cisaranten", "cisalak", "ciroyom", "cireundeu", "cirebon", "cirangrang", "ciracas", "ciputat", "cipulir", "cipondoh", "cipinang", "cipete", "cipedes", "cipedak", "cipayung", "cipamokolan", "cipaganti", "cipadung", "cinere", "cinangka", "cinambo", "cina", "cimuning", "cimpaeun", "cimone", "cimincrang", "cimanggis", "cimahi", "cilodong", "cilincing", "cililitan", "cilenggang", "cilegon", "ciledug", "cilangkap", "cilandak", "cilacap", "cikutra", "cikupa", "cikokol", "cikoko", "cikini", "cikeas", "cikawao", "cijerah", "cijawura", "cijantung", "cijagra", "cihaurgeulis", "cihapit", "cigondewah", "cigereleng", "cigending", "ciganjur", "cigadung", "cideng", "cidadap", "cicendo", "cicaheum", "cicadas", "cibuntu", "cibubur", "cibodas", "cibiru", "cibinong", "cibangkong", "cibaduyut", "cibadak", "ciawi", "ciateul", "ciater", "cepoko", "cengkareng", "cempedak", "ceger", "cawang", "caringin", "cangkudu", "cangkiran", "candi", "campaka", "cakung", "cabean", "burangrang", "bungur", "bunder", "bulustalan", "bulusan", "bukittinggi", "bugel", "bugangan", "bubakan", "buahbatu", "brumbungan", "braga", "bosch", "bontang", "bongsari", "bojongsari", "bojongsalaman", "bojong", "bogor", "blitar", "bitung", "bintaro", "bintara", "binong", "binjai", "bing", "bima", "bidarancina", "bidaracina", "betawi", "beringin", "bengkulu", "bendungan", "bendanngisor", "bendanduwur", "benda", "belitung", "belendung", "bekasi", "beji", "bedahan", "baubau", "batununggal", "batu", "batam", "barusari", "barat", "banyumanik", "banten", "banjarmasin", "banjardowo", "banjarbaru", "banjar", "bangunharjo", "bangka", "bandung", "bandarharjo", "bambankerep", "balonggede", "bali", "balekambang", "balaraja", "baktijaya", "babakansurabaya", "babakansari", "babakanciparay", "babakanciamis", "babakan", "astanaanyar", "arjuna", "arcamanik", "april", "antapani", "angke", "andir", "anda", "ancol", "ahli", "agustus", "aceh", "abadijaya");

    caps.forEach(function(cap) {
        str = str.replace(new RegExp("\\b" + cap, "g"), titleCase(cap));
    });

    allcaps = new Array("bsd", "gsb", "seo", "tni", "saw", "lg", "dki", "mnc", "rcti", "swt", "bmw");

    allcaps.forEach(function(capital) {
        str = str.replace(new RegExp("\\b" + capital + "\\b", "g"), allCaps(capital));
    });

    return str;
}

function changeToParagraph(str) {

    s = str.split("\n");

    s = s.clean("");

    for (var i = 0; i < s.length; i++) {

        s[i] = sentenceCase(s[i].capitalizeWord());
    }
    str = s.join("\n");

    return str;
}

function correctCapitalize(str) {

    str = str.capitalizeWord();

    return str;
}



function removeHtmlTag(strx) {
    if (strx.indexOf("<") != -1) {
        var s = strx.split("<");
        for (var i = 0; i < s.length; i++) {
            if (s[i].indexOf(">") != -1) {
                s[i] = s[i].substring(s[i].indexOf(">") + 1, s[i].length);
            }
        }
        strx = s.join("");
    }
    return strx;
}

String.prototype.removeStopWords = function() {
    var x;
    var y;
    var word;
    var stop_word;
    var regex_str;
    var regex;
    var cleansed_string = this.valueOf();
    var stop_words = new Array(
        'ada', 'adanya', 'adalah', 'adapun', 'agak', 'agaknya', 'agar', 'akan', 'akankah', 'akhirnya', 'aku', 'akulah', 'amat', 'amatlah', 'anda', 'andalah', 'antar', 'diantaranya', 'antara', 'antaranya', 'diantara', 'apa', 'apaan', 'mengapa', 'apabila', 'apakah', 'apalagi', 'apatah', 'atau', 'ataukah', 'ataupun', 'bagai', 'bagaikan', 'sebagai', 'sebagainya', 'bagaimana', 'bagaimanapun', 'sebagaimana', 'bagaimanakah', 'bagi', 'bahkan', 'bahwa', 'bahwasanya', 'sebaliknya', 'banyak', 'sebanyak', 'beberapa', 'seberapa', 'begini', 'beginian', 'beginikah', 'beginilah', 'sebegini', 'begitu', 'begitukah', 'begitulah', 'begitupun', 'sebegitu', 'belum', 'belumlah', 'sebelum', 'sebelumnya', 'sebenarnya', 'berapa', 'berapakah', 'berapalah', 'berapapun', 'betulkah', 'sebetulnya', 'biasa', 'biasanya', 'bila', 'bilakah', 'bisa', 'bisakah', 'sebisanya', 'boleh', 'bolehkah', 'bolehlah', 'buat', 'bukan', 'bukankah', 'bukanlah', 'bukannya', 'cuma', 'percuma', 'dahulu', 'dalam', 'dan', 'dapat', 'dari', 'daripada', 'dekat', 'demi', 'demikian', 'demikianlah', 'sedemikian', 'dengan', 'depan', 'di', 'dia', 'dialah', 'dini', 'diri', 'dirinya', 'terdiri', 'dong', 'dulu', 'enggak', 'enggaknya', 'entah', 'entahlah', 'terhadap', 'terhadapnya', 'hal', 'hampir', 'hanya', 'hanyalah', 'harus', 'haruslah', 'harusnya', 'seharusnya', 'hendak', 'hendaklah', 'hendaknya', 'hingga', 'sehingga', 'ia', 'ialah', 'ibarat', 'ingin', 'inginkah', 'inginkan', 'ini', 'inikah', 'inilah', 'itu', 'itukah', 'itulah', 'jangan', 'jangankan', 'janganlah', 'jika', 'jikalau', 'juga', 'justru', 'kala', 'kalau', 'kalaulah', 'kalaupun', 'kalian', 'kami', 'kamilah', 'kamu', 'kamulah', 'kan', 'kapan', 'kapankah', 'kapanpun', 'dikarenakan', 'karena', 'karenanya', 'ke', 'kecil', 'kemudian', 'kenapa', 'kepada', 'kepadanya', 'ketika', 'seketika', 'khususnya', 'kini', 'kinilah', 'kiranya', 'sekiranya', 'kita', 'kitalah', 'kok', 'lagi', 'lagian', 'selagi', 'lah', 'lain', 'lainnya', 'melainkan', 'selaku', 'lalu', 'melalui', 'terlalu', 'lama', 'lamanya', 'selama', 'selama', 'selamanya', 'lebih', 'terlebih', 'bermacam', 'macam', 'semacam', 'maka', 'makanya', 'makin', 'malah', 'malahan', 'mampu', 'mampukah', 'mana', 'manakala', 'manalagi', 'masih', 'masihkah', 'semasih', 'masing', 'mau', 'maupun', 'semaunya', 'memang', 'mereka', 'merekalah', 'meski', 'meskipun', 'semula', 'mungkin', 'mungkinkah', 'nah', 'namun', 'nanti', 'nantinya', 'nyaris', 'oleh', 'olehnya', 'seorang', 'seseorang', 'pada', 'padanya', 'padahal', 'paling', 'sepanjang', 'pantas', 'sepantasnya', 'sepantasnyalah', 'para', 'pasti', 'pastilah', 'per', 'pernah', 'pula', 'pun', 'merupakan', 'rupanya', 'serupa', 'saat', 'saatnya', 'sesaat', 'saja', 'sajalah', 'saling', 'bersama', 'sama', 'sesama', 'sambil', 'sampai', 'sana', 'sangat', 'sangatlah', 'saya', 'sayalah', 'se', 'sebab', 'sebabnya', 'sebuah', 'tersebut', 'tersebutlah', 'sedang', 'sedangkan', 'sedikit', 'sedikitnya', 'segala', 'segalanya', 'segera', 'sesegera', 'sejak', 'sejenak', 'sekali', 'sekalian', 'sekalipun', 'sesekali', 'sekaligus', 'sekarang', 'sekarang', 'sekitar', 'sekitarnya', 'sela', 'selain', 'selalu', 'seluruh', 'seluruhnya', 'semakin', 'sementara', 'sempat', 'semua', 'semuanya', 'sendiri', 'sendirinya', 'seolah', 'seperti', 'sepertinya', 'sering', 'seringnya', 'serta', 'siapa', 'siapakah', 'siapapun', 'disini', 'disinilah', 'sini', 'sinilah', 'sesuatu', 'sesuatunya', 'suatu', 'sesudah', 'sesudahnya', 'sudah', 'sudahkah', 'sudahlah', 'supaya', 'tadi', 'tadinya', 'tak', 'tanpa', 'setelah', 'telah', 'tentang', 'tentu', 'tentulah', 'tentunya', 'tertentu', 'seterusnya', 'tapi', 'tetapi', 'setiap', 'tiap', 'setidaknya', 'tidak', 'tidakkah', 'tidaklah', 'toh', 'waduh', 'wah', 'wahai', 'sewaktu', 'walau', 'walaupun', 'wong', 'yaitu', 'yakni', 'yang'
    )
    words = cleansed_string.match(/[^\s]+|\s+[^\s+]$/g)
    for (x = 0; x < words.length; x++) {
        // For each word, check all the stop words
        for (y = 0; y < stop_words.length; y++) {
            // Get the current word
            word = words[x].replace(/\s+|[^a-z]+/ig, "");   // Trim the word and remove non-alpha

            // Get the stop word
            stop_word = stop_words[y];

            // If the word matches the stop word, remove it from the keywords
            if (word.toLowerCase() == stop_word) {
                // Build the regex
                regex_str = "^\\s*" + stop_word + "\\s*$";  // Only word
                regex_str += "|^\\s*" + stop_word + "\\s+"; // First word
                regex_str += "|\\s+" + stop_word + "\\s*$"; // Last word
                regex_str += "|\\s+" + stop_word + "\\s+";  // Word somewhere in the middle
                regex = new RegExp(regex_str, "ig");

                // Remove the word from the keywords
                cleansed_string = cleansed_string.replace(regex, " ");
            }
        }
    }
    return cleansed_string.replace(/^\s+|\s+$/g, "");
}

function upperCase(str) {
    return str.toUpperCase();
}

function titleCase(str) {
    var firstLetterRx = /(^|\s)[a-z]/g;
    return str.replace(firstLetterRx, upperCase);
}

function seoSlug(str) {
    s = str.toLowerCase();

    t = s.replace(/[^\w]/g, "-");

    return t.replace(/\-\-+/g, "-");
}

function typeText() {

    input_title = removeHtmlTag(seo.title.value);

    output = '';

    quantity_keyword_title = "";

    if (input_title.length != 0) {

        seo.title.value = titleCase(input_title.toLowerCase()).titleDenayWords();

        title_without_stopword = titleCase(seo.title.value.toLowerCase().removeStopWords().toLowerCase());

        quantity_character_title = seo.title.value.length;

        quantity_word_title = seo.title.value.split(' ').length;

        title_slug = seoSlug(seo.title.value);

        output += '<h2>SEO Title</h2><div class="form-group"><input class="form-control" readonly="readonly" value="' + title_without_stopword + '"/></div><div class="form-group">' + quantity_character_title + ' Karakter</div><div class="form-group">' + quantity_word_title + ' Kata</div><div class="form-group">Saran URL: <input class="form-control" readonly="readonly" value="' + title_slug + '"/></div>';

        if (seo.title.value.toLowerCase().indexOf(seo.target.value.toLowerCase()) != -1) {

            if (seo.target.value.match(new RegExp(/\S+/, "g")).length != -1) {
                quantity_keyword_title = seo.title.value.toLowerCase().match(new RegExp(seo.target.value.toLowerCase(), "g")).length;
            }

        } else {
            quantity_keyword_title = "0";
        }

    }

    output += quantity_keyword_title;





    g = seo.text.value.replace(/\?/g, "? ").replace(/\!/g, "! ").replace(/\,/g, ", ").replace(/\./g, ". ").replace(/<br\/>|<br \/>|<\/p>|<\/li>|<\/h2>|<\/h3>/g, "\n").toLowerCase().replace(/\ \ /g, " ").replace(/\,\,/g, ", ");

    if (g.split(" ").clean("").length == 0) {
        h = g.split(" ").clean("");

        seo.text.value = h;


    } else {

        h = removeHtmlTag(g);

        i = changeToParagraph(h);

        seo.text.value = cleanAll(i);

        j = countWords(i);

        k = i.length;

        output += '<h2>SEO Content</h2><div class="form-group">' + j + ' Kata</div><div class="form-group">' + k + ' Karakter</div><div class="form-group"><h2 class="text-center">SEO Description</h2><input class="form-control" readonly="readonly" value="' + createDesc(i) + '"/> (' + createDesc(i).length + ' Karakter)</div>';

        l = seo.target.value;

        seo.target.value = correctCapitalize(l);

        if (l.split(" ").clean("").length == 0) {
            output += '';
        } else {
            m = l.split(' ').length;

            n = new RegExp(l, "ig");

            o = h.match(n);

            p = o.length;

            q = (p * 100) / j;

            r = Math.round(q * 100) / 100;


            output += '<h2>SEO Keyword</h2><div class="form-group">' + p + ' Keyword, Kepadatan kata kunci : ' + r + '%</div>';
        }

    }



    document.getElementById("word").innerHTML = output;
}

function htmlMode() {


    if (seo.target.value.split(" ").clean("").length == 0) {
        s = seo.text.value;
    } else {
        s = seo.text.value.replace(new RegExp(seo.target.value, "g"), function boldText(x) {
            return "<b>" + x + "</b>";
        });;
    }


    document.getElementById("check").innerHTML = '<div class="form-group"><label>HTML</label><textarea class="form-control">' + changeToHtml(s) + '</textarea></div>';
}

function youTubeText() {
    s = seo.text.value;

    document.getElementById("youtube").innerHTML = '<div class="form-group"><input class="form-control" readonly="readonly" value="' + createDesc(s.removeStopWords()) + '"/></div><h2 class="text-center">YouTube SEO Text Description</h2><label>YouTube</label><textarea class="form-control">' + createYouTubeDesc(s) + '</textarea></div><div class="">' + createYouTubeDesc(s).length + ' Karakter</div>';
}



function cleanString(str) {
    return str.replace(/[^\w\s]|_/g, '')
        .replace(/\s+/g, ' ')
        .toLowerCase();
}

function extractSubstr(str, regexp) {
    return cleanString(str).match(regexp) || [];
}

function getWordsByNonWhiteSpace(str) {
    return extractSubstr(str, /\S+/g);
}

function getWordsByWordBoundaries(str) {
    return extractSubstr(str, /\b[a-z\d]+\b/g);
}

function wordMap(str) {
    return getWordsByWordBoundaries(str).reduce(function(map, word) {
        map[word] = (map[word] || 0) + 1;
        return map;
    }, {});
}

function mapToTuples(map) {
    return Object.keys(map).map(function(key) {
        return [key, map[key]];
    });
}

function mapToSortedTuples(map, sortFn, sortOrder) {
    return mapToTuples(map).sort(function(a, b) {
        return sortFn.call(undefined, a, b, sortOrder);
    });
}

function countWords(str) {
    return getWordsByWordBoundaries(str).length;
}

function wordFrequency(str) {
    return mapToSortedTuples(wordMap(str), function(a, b, order) {
        if (b[1] > a[1]) {
            return order[1] * -1;
        } else if (a[1] > b[1]) {
            return order[1] * 1;
        } else {
            return order[0] * (a[0] < b[0] ? -1 : (a[0] > b[0] ? 1 : 0));
        }
    }, [1, -1]);
}

function printTuples(tuples) {
    return tuples.map(function(tuple) {
        return padStr(tuple[0], ' ', 12, 1) + ' -> ' + tuple[1];
    }).join('\n');
}

function padStr(str, ch, width, dir) {
    return (width <= str.length ? str : padStr(dir < 0 ? ch + str : str + ch, ch, width, dir)).substr(0, width);
}

function toTable(data, headers) {
    return $('<table>').append($('<thead>').append($('<tr>').append(headers.map(function(header) {
        return $('<th>').html(header);
    })))).append($('<tbody>').append(data.map(function(row) {
        return $('<tr>').append(row.map(function(cell) {
            return $('<td>').html(cell);
        }));
    })));
}

function addRowsBefore(table, data) {
    table.find('tbody').prepend(data.map(function(row) {
        return $('<tr>').append(row.map(function(cell) {
            return $('<td>').html(cell);
        }));
    }));
    return table;
}

$(function() {
    $('#countWordsBtn').on('click', function(e) {
        var str = $('#wordsTxtAra').val();
        var wordFreq = wordFrequency(str);
        var wordCount = countWords(str);
        var uniqueWords = wordFreq.length;
        var percentage = (uniqueWords * 100) / wordCount;
        var percent = Math.round(percentage * 100) / 100;

        var summaryData = [
            ['TOTAL', wordCount],
            ['UNIQUE', uniqueWords + " (" + percent + "%)"]
        ];
        var table = toTable(wordFreq, ['Word', 'Frequency']);
        addRowsBefore(table, summaryData);
        $('#wordFreq').html(table);
    });
});


function GetSpinContent(text) {
    var result = text;
    var reg = new RegExp(/{([^{}]*)\}/i);
    while (matches = reg.exec(result)) {
        var array = new Array();
        array = matches[1].split('|');
        result = result.replace(matches[0], array[Math.floor(Math.random() * array.length)]);
    }

    reg = new RegExp(/\{\{([\s\S]*?)\}\}/i);
    while (match = reg.exec(result)) {
        var array = new Array();
        array = match[1].split('||');
        result = result.replace(match[0], array[Math.floor(Math.random() * array.length)]);
    }
    return result;
}

function fileAndReplace(sentence, synonyms) {
    let newSentence = sentence;

    Object.keys(synonyms).forEach(key => {
        const checkSynonyms = new RegExp("\\b" + synonyms[key].join('|'), 'gi');
        newSentence = newSentence.replace(checkSynonyms, key);
    })

    return newSentence;
}

function spin() {
    sentence = document.getElementById("wordsTxtAra").value;

    const synonyms = {
        "{pintar|cerdas}": ['cerdas', 'pintar'],
        "{sistem|metode|tata cara}": ['tata cara', 'metode', 'sistem'],
        "{selaku|sebagai}": ['selaku', 'sebagai'],
        "{mengerti|faham}": ['mengerti', 'faham'],
        "{telah|sudah}": ['telah', 'sudah'],
        "{nyaris|hampir}": ['nyaris', 'hampir'],
        "{karena|sebab}": ['karena', 'sebab'],
        "{kesuksesan|keberhasilan}": ['kesuksesan', 'keberhasilan'],
        "{sukses|berhasil|berjaya}": ['sukses', 'berhasil', 'berjaya'],
        "{hadir|tiba}": ['hadir', 'tiba'],
        "{kunjungan|lawatan}": ['kunjungan', 'lawatan'],
        "{turis|pelancong|wisatawan}": ['turis', 'pelancong', 'wisatawan'],
        "{saudara|kerabat}": ['saudara', 'kerabat'],
        "{usaha|upaya}": ['usaha', 'upaya'],
        "{cocok|sesuai|sepadan}": ['cocok', 'sesuai', 'sepadan'],
        "{pakar|ahli|spesialis}": ['pakar', 'ahli', 'spesialis'],
        "{pelbagai|berbagai}": ['pelbagai', 'berbagai'],
        "{disokong|didukung}": ['disokong', 'didukung'],
        "{acara|perhelatan}": ['acara', 'perhelatan'],
        "{saat ini|dewasa ini}": ['saat ini', 'dewasa ini'],
        "{melalui|lewat}": ['melalui', 'lewat'],
        "{saat|ketika|sewaktu}": ['saat', 'ketika', 'sewaktu'],
        "{memiliki|mempunyai}": ['memiliki', 'mempunyai'],
        "{milik|punya}": ['milik', 'punya']
    };

    var content = fileAndReplace(sentence, synonyms).trim();



    document.getElementById("spinResult").innerHTML = "<textarea class=\"form-control\" cols=\"500\" rows=\"500\" name=\"spin\" title=\"Hasil Spin\">" + GetSpinContent(content) + "</textarea>";
}

function preview() {

    if (seo.target.value.split(" ").clean("").length == 0) {
        s = seo.text.value;
    } else {
        s = seo.text.value.replace(new RegExp(seo.target.value, "g"), function boldText(x) {
            return "<b>" + x + "</b>";
        });;
    }

    document.getElementById("preview").innerHTML = '<article class="preview"><h2 class="text-center">Preview</h2>' + changeToHtml(s) + '</article>';
}

Untuk menggunakannya, buka file index.html menggunakan Firefox atau Google Chrome.

Read More

Berikut ini adalah kodenya:

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>

<meta content="text/html; charset=UTF-8" http-equiv="content-type" />
<meta charset="UTF-8" />
<meta content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=0, shrink-to-fit=no" name="viewport" />

<title>Prasmanan | Dpawon Catering</title>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css"/>

<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet"/>
</head>
<body>

<div class="container">

<p>Untuk informasi lebih lanjut, silakan kunjungi website resmi Dpawon Catering:</p>
<p><a href="https://cateringprasmanan.blogspot.com/">https://cateringprasmanan.blogspot.com/</a></p>

</div><!-- .container -->

<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>

</body>
</html>
Read More