1function populateCV(cvData) { 2 const educationList = document.getElementById('education-list'); 3 cvData.education.forEach(item => { 4 const li = document.createElement('li'); 5 li.innerHTML = `<strong>${item.title}</strong><br>${item.institution}, ${item.year}`; 6 educationList.appendChild(li); 7 }); 8 if (cvData.education.length === 0) { 9 const cvEduSection = document.getElementById('cv-edu'); 10 cvEduSection.style.display = 'none'; 11 } 12 13 const experienceList = document.getElementById('experience-list'); 14 cvData.experience.forEach(item => { 15 const li = document.createElement('li'); 16 li.innerHTML = `<strong>${item.title}</strong><br>${item.company}, ${item.period}<br>${item.description}`; 17 experienceList.appendChild(li); 18 }); 19 if (cvData.experience.length === 0) { 20 const cvExpSection = document.getElementById('cv-exp'); 21 cvExpSection.style.display = 'none'; 22 } 23 const skillsList = document.getElementById('skills-list'); 24 cvData.skills.forEach(skill => { 25 const li = document.createElement('li'); 26 li.textContent = skill; 27 skillsList.appendChild(li); 28 }); 29 if (cvData.skills.length === 0) { 30 const cvSkillsSection = document.getElementById('cv-sk'); 31 cvSkillsSection.style.display = 'none'; 32 } 33 const projectsList = document.getElementById('projects-list'); 34 cvData.projects.forEach(project => { 35 const li = document.createElement('li'); 36 if(project.link) { 37 project.title = `<a href="${project.link}">${project.title}</a>`; 38 } 39 li.innerHTML = ` 40 <strong>${project.title}<br> 41 ${convertMarkdownLinks(project.description)}<br> 42 <span class="project-tags">${project.tags.join(', ')}</span> 43 `; 44 projectsList.appendChild(li); 45 }); 46 if (cvData.education.length === 0 && cvData.experience.length === 0 && cvData.skills.length === 0) { 47 const cvSection = document.getElementById('cv'); 48 if (cvSection) { 49 cvSection.style.display = 'none'; 50 } 51 } 52 if (cvData.projects.length === 0) { 53 const cvProjectsSection = document.getElementById('cv-pr'); 54 if (cvProjectsSection) { 55 cvProjectsSection.style.display = 'none'; 56 } 57 } 58 } 59 60 function convertMarkdownLinks(text) { 61 return text.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2">$1</a>'); 62 }
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.