← back to lcerezo__lcerezo.github.io

Function bodies 11 total

All specs Real LLM only Function bodies
getTimeGreeting function · javascript · L218-L225 (8 LOC)
assets/js/country-popover.js
  function getTimeGreeting(timezone) {
    const now = new Date();
    const hour = timezone ? new Date(now.toLocaleString('en-US', { timeZone: timezone })).getHours() : now.getHours();

    if (hour < 12) return 'Good morning';
    if (hour < 18) return 'Good afternoon';
    return 'Good evening';
  }
isReturningVisitor function · javascript · L228-L230 (3 LOC)
assets/js/country-popover.js
  function isReturningVisitor() {
    return localStorage.getItem('hasVisited') === 'true';
  }
markAsVisited function · javascript · L233-L235 (3 LOC)
assets/js/country-popover.js
  function markAsVisited() {
    localStorage.setItem('hasVisited', 'true');
  }
getDeviceType function · javascript · L238-L247 (10 LOC)
assets/js/country-popover.js
  function getDeviceType() {
    const ua = navigator.userAgent;
    if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {
      return 'tablet';
    }
    if (/Mobile|Android|iP(hone|od)|IEMobile|BlackBerry|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(ua)) {
      return 'mobile';
    }
    return 'desktop';
  }
getReferrerInfo function · javascript · L250-L262 (13 LOC)
assets/js/country-popover.js
  function getReferrerInfo() {
    const referrer = document.referrer;
    if (!referrer) return null;

    if (referrer.includes('linkedin.com')) return 'LinkedIn';
    if (referrer.includes('github.com')) return 'GitHub';
    if (referrer.includes('twitter.com') || referrer.includes('x.com')) return 'Twitter/X';
    if (referrer.includes('facebook.com')) return 'Facebook';
    if (referrer.includes('google.com')) return 'Google';
    if (referrer.includes('bing.com')) return 'Bing';

    return null;
  }
getBrowserLanguage function · javascript · L265-L267 (3 LOC)
assets/js/country-popover.js
  function getBrowserLanguage() {
    return navigator.language || navigator.userLanguage;
  }
detectCountryAndContext function · javascript · L270-L295 (26 LOC)
assets/js/country-popover.js
  function detectCountryAndContext() {
    // TEST MODE: Uncomment to test specific countries/cities
    // Remove sessionStorage flag first: sessionStorage.removeItem('countryPopoverShown')
    // const testConfig = {
    //   country_code: 'JP',  // Try: US, GB, CN, AU, ES, FR, JP, etc.
    //   timezone: 'Asia/Tokyo',
    //   city: 'Tokyo'  // Set to null to test country-only
    // };
    // showPopover(testConfig.country_code, testConfig.timezone, testConfig.city);
    // return;

    // Using ipapi.co - free tier allows 1000 requests/day
    fetch('https://ipapi.co/json/')
      .then(response => response.json())
      .then(data => {
        const country = data.country_code || 'default';
        const timezone = data.timezone || null;
        const city = data.city || null;

        showPopover(country, timezone, city);
      })
      .catch(error => {
        console.log('Could not detect country, showing default message');
        showPopover('default', null, null);
      })
Repobility (the analyzer behind this table) · https://repobility.com
sanitizeText function · javascript · L298-L302 (5 LOC)
assets/js/country-popover.js
  function sanitizeText(text) {
    const div = document.createElement('div');
    div.textContent = text;
    return div.innerHTML;
  }
showPopover function · javascript · L305-L397 (93 LOC)
assets/js/country-popover.js
  function showPopover(countryCode, timezone, city) {
    const config = countryMessages[countryCode] || countryMessages['default'];
    const isReturning = isReturningVisitor();
    const deviceType = getDeviceType();
    const referrer = getReferrerInfo();
    const language = getBrowserLanguage();
    const isFullPage = config.fullPage || false;

    // Build personalized greeting
    let greeting = getTimeGreeting(timezone);

    // Enhance greeting based on context
    if (isReturning) {
      greeting = 'Welcome back';
    }

    // Customize title with greeting
    let title;

    if (city && !isReturning) {
      // Sanitize city name to prevent XSS
      const sanitizedCity = sanitizeText(city);
      title = `${config.greeting} Thanks for visiting from ${sanitizedCity} and checking out my resume!`;
    } else if (isReturning) {
      title = `${greeting}!`;
    } else {
      // Country only (no city)
      title = `${config.greeting} Thanks for visiting from ${config.country
stemWord function · javascript · L49-L448 (400 LOC)
assets/js/lunr/lunr-gr.js
function stemWord(w) {
  var stem;
  var suffix;
  var firstch;
  var origword = w;
  test1 = new Boolean(true);

  if(w.length < 4) {
    return w;
  }

  var re;
  var re2;
  var re3;
  var re4;

  re = /(.*)(ΦΑΓΙΑ|ΦΑΓΙΟΥ|ΦΑΓΙΩΝ|ΣΚΑΓΙΑ|ΣΚΑΓΙΟΥ|ΣΚΑΓΙΩΝ|ΟΛΟΓΙΟΥ|ΟΛΟΓΙΑ|ΟΛΟΓΙΩΝ|ΣΟΓΙΟΥ|ΣΟΓΙΑ|ΣΟΓΙΩΝ|ΤΑΤΟΓΙΑ|ΤΑΤΟΓΙΟΥ|ΤΑΤΟΓΙΩΝ|ΚΡΕΑΣ|ΚΡΕΑΤΟΣ|ΚΡΕΑΤΑ|ΚΡΕΑΤΩΝ|ΠΕΡΑΣ|ΠΕΡΑΤΟΣ|ΠΕΡΑΤΑ|ΠΕΡΑΤΩΝ|ΤΕΡΑΣ|ΤΕΡΑΤΟΣ|ΤΕΡΑΤΑ|ΤΕΡΑΤΩΝ|ΦΩΣ|ΦΩΤΟΣ|ΦΩΤΑ|ΦΩΤΩΝ|ΚΑΘΕΣΤΩΣ|ΚΑΘΕΣΤΩΤΟΣ|ΚΑΘΕΣΤΩΤΑ|ΚΑΘΕΣΤΩΤΩΝ|ΓΕΓΟΝΟΣ|ΓΕΓΟΝΟΤΟΣ|ΓΕΓΟΝΟΤΑ|ΓΕΓΟΝΟΤΩΝ)$/;

  if(re.test(w)) {
    var fp = re.exec(w);
    stem = fp[1];
    suffix = fp[2];
    w = stem + step1list[suffix];
    test1 = false;
  }

  re = /^(.+?)(ΑΔΕΣ|ΑΔΩΝ)$/;

  if(re.test(w)) {
    var fp = re.exec(w);
    stem = fp[1];
    w = stem;

    reg1 = /(ΟΚ|ΜΑΜ|ΜΑΝ|ΜΠΑΜΠ|ΠΑΤΕΡ|ΓΙΑΓΙ|ΝΤΑΝΤ|ΚΥΡ|ΘΕΙ|ΠΕΘΕΡ)$/;

    if(!(reg1.test(w))) {
      w = w + "ΑΔ";
    }
  }

  re2 = /^(.+?)(ΕΔΕΣ|ΕΔΩΝ)$/;

  if(re2.test(w)) {
    var fp = re2.exec(w);
    stem = fp[1];
    w = stem;

    e
check function · javascript · L26-L56 (31 LOC)
assets/js/plugins/jquery.greedy-navigation.js
  function check() {
    // Get instant state
    availableSpace = $vlinks.width() - $btn.width();
    numOfVisibleItems = $vlinks.children().length;
    requiredSpace = breakWidths[numOfVisibleItems - 1];

    // There is not enough space
    if (requiredSpace > availableSpace) {
      $vlinks
        .children()
        .last()
        .prependTo($hlinks);
      numOfVisibleItems -= 1;
      check();
      // There is more than enough space
    } else if (availableSpace > breakWidths[numOfVisibleItems]) {
      $hlinks
        .children()
        .first()
        .appendTo($vlinks);
      numOfVisibleItems += 1;
      check();
    }
    // Update the button accordingly
    $btn.attr("count", numOfItems - numOfVisibleItems);
    if (numOfVisibleItems === numOfItems) {
      $btn.addClass("hidden");
    } else {
      $btn.removeClass("hidden");
    }
  }