Hugo_stats.json is missing some classes when there is somewhere an apostrophe in string

In the direct link of this issue (bug now closed), I again have some <i> classes not writen in hugo_stats.json.

For example, I have a range over 6 items. And 3 on the 6 classes are not written.
I can’t see any obvious pattern or possible cause like the referring issue.

I’m also pretty sure it is on my side, but after battling for hours, I find nothing.

Any light / tip ?

OK in hugo_stats.json:

  • <i class="tf-ion-wifi"></i>
  • & a lot of other <i>class (see full json below).

Missing from hugo_stats.json in this loop.:

  • <i class="tf-ion-earth"></i>
  • <i class="tf-ion-images"></i>
  • <i class="tf-ion-home"></i>

HTML Produced (from homepage)

                    <!-- Single Feature Item -->
                    <div class="col-md-4 col-sm-6 col-xs-12">
                        <div class="service-block color-bg text-center">
                            <div class="service-icon text-center">
                                <i class="tf-ion-earth"></i>
                            </div>
                            <h3>Des produits naturels</h3>
                            <p>De l&rsquo;eau exceptionnelement pure en direct du glacier, produits locaux naturels. Nous utilisons exclusivement des produits nettoyants écologiques.</p>
                        </div>
                    </div>
                    <!-- End Single Feature Item -->
                
                    <!-- Single Feature Item -->
                    <div class="col-md-4 col-sm-6 col-xs-12">
                        <div class="service-block color-bg text-center">
                            <div class="service-icon text-center">
                                <i class="tf-ion-wifi"></i>
                            </div>
                            <h3>Internet Wifi gratuit</h3>
                            <p>Un réseau Internet Wifi gratuit <em>(étendu et rénové en 2021)</em> est disponible sur la quasi totalité du terrain de camping.</p>
                        </div>
                    </div>
                    <!-- End Single Feature Item -->
                
                    <!-- Single Feature Item -->
                    <div class="col-md-4 col-sm-6 col-xs-12">
                        <div class="service-block color-bg text-center">
                            <div class="service-icon text-center">
                                <i class="tf-ion-images"></i>
                            </div>
                            <h3>Des promenades magiques</h3>
                            <p>De nombreuses randonnées se font au départ d&rsquo;Arolla. Tous les goûts et tous les niveaux !</p>
                        </div>
                    </div>
                    <!-- End Single Feature Item -->
                
                    <!-- Single Feature Item -->
                    <div class="col-md-4 col-sm-6 col-xs-12">
                        <div class="service-block color-bg text-center">
                            <div class="service-icon text-center">
                                <i class="tf-ion-home"></i>
                            </div>
                            <h3>Des cabanes proches</h3>
                            <p>Une expérience unique. Six cabanes (refuges) sont directement accessibles depuis Arolla. Ces cabanes sont aussi une belle randonnée à la journée.</p>
                        </div>
                    </div>
                    <!-- End Single Feature Item -->

hugo code

{{ $data := index site.Data site.Language.Lang }}
{{ with $data.feature }}
    {{ if .enable }}
    {{ "<!-- Feature Section Start -->" | safeHTML }}
    <section class="services section-xs" id="services">
        <div class="container">
            <div class="row">
                {{ range .item }}
                    {{ "<!-- Single Feature Item -->" | safeHTML }}
                    <div class="col-md-4 col-sm-6 col-xs-12">
                        <div class="service-block color-bg text-center">
                            <div class="service-icon text-center">
                                <i class="{{ .icon }}"></i>
                            </div>
                            <h3>{{ .title }}</h3>
                            <p>{{ .description | markdownify }}</p>
                        </div>
                    </div>
                    {{ "<!-- End Single Feature Item -->" | safeHTML }}
                {{ end }}
            </div>
        </div>
    </section>
    {{ "<!-- End Feature section -->" | safeHTML }}
    {{ end }}
{{ end }}

hugo_stats.json

Summary

{
“htmlElements”: {
“tags”: [
“”,
“a”,
“article”,
“audio”,
“body”,
“br”,
“button”,
“div”,
“em”,
“footer”,
“form”,
“h1”,
“h2”,
“h3”,
“h4”,
“h5”,
“h6”,
“head”,
“hr”,
“html”,
“i”,
“iframe”,
“img”,
“input”,
“label”,
“li”,
“link”,
“meta”,
“nav”,
“ol”,
“p”,
“script”,
“section”,
“small”,
“source”,
“span”,
“strong”,
“style”,
“table”,
“tbody”,
“td”,
“textarea”,
“thead”,
“title”,
“tr”,
“ul”
],
“classes”: [
“MsgBoxBootstrap”,
“TF-ion-map”,
“about”,
“about-2”,
“about-mission-vision”,
“about-section”,
“active”,
“activemenu”,
“address-block”,
“alert”,
“alert-danger”,
“alert-info”,
“alert-success”,
“align-items-center”,
“align-self-center”,
“animated”,
“animaux”,
“arolla”,
“bg-gray”,
“bg-one”,
“bg-pricing-camping”,
“bg-pricing-cocoon”,
“bg-pricing-loc”,
“block”,
“blog”,
“blog-single”,
“border”,
“breadcrumb”,
“breadcrumb-item”,
“btn”,
“btn-main”,
“btn-main-access”,
“btn-main-inactif”,
“btn-main-sm”,
“btn-transparent”,
“cabanes”,
“camping”,
“caption”,
“checkbox”,
“checkbox-inline”,
“clearfix”,
“click-to-tel”,
“client-details”,
“client-meta”,
“client-thumb”,
“close”,
“close-text”,
“cocoon”,
“col”,
“col-12”,
“col-5”,
“col-6”,
“col-7”,
“col-form-label-lg”,
“col-form-label-sm”,
“col-lg-12”,
“col-lg-3”,
“col-lg-4”,
“col-lg-6”,
“col-md-12”,
“col-md-3”,
“col-md-4”,
“col-md-5”,
“col-md-6”,
“col-md-7”,
“col-md-8”,
“col-sm-12”,
“col-sm-3”,
“col-sm-6”,
“col-xs-12”,
“collapse”,
“commonTab”,
“contact-form”,
“contact-meta-block”,
“contact-section”,
“contact-text”,
“contact-us”,
“container”,
“container-fluid”,
“content”,
“count”,
“crise”,
“d-block”,
“d-flex”,
“disabled”,
“embed-responsive”,
“embed-responsive-16by9”,
“embed-responsive-item”,
“fade”,
“fadeInUp”,
“flagnoselect”,
“flagselect”,
“float-right”,
“footer-bottom”,
“form-control”,
“form-group”,
“form-pricing”,
“header”,
“hidden”,
“img-fluid”,
“img-thumbnail”,
“item”,
“justify-content-center”,
“kas_online_reception”,
“lachotte”,
“lazy”,
“list-inline”,
“list-inline-item”,
“map”,
“map-responsive”,
“mb-0”,
“mb-1”,
“mb-5”,
“mb-50”,
“mix”,
“ml-2”,
“ml-auto”,
“montagne”,
“mr-2”,
“mr-auto”,
“mt-0”,
“mt-20”,
“mt-50”,
“mx-auto”,
“nav”,
“nav-item”,
“nav-link”,
“nav-tabs”,
“navbar”,
“navbar-brand”,
“navbar-collapse”,
“navbar-expand-md”,
“navbar-nav”,
“navbar-toggler”,
“navigation”,
“newseason”,
“next”,
“no-js”,
“nouveautes”,
“offset-md-1”,
“p-0”,
“p-1”,
“padding-0”,
“page-404”,
“page-item”,
“page-link”,
“pagination”,
“phone-block”,
“plane”,
“portfolio”,
“portfolio-block”,
“portfolio-filter”,
“portfolio-items-wrapper”,
“post-content”,
“post-img”,
“post-item”,
“post-meta”,
“post-thumb”,
“post-title”,
“preloader”,
“press”,
“press-list”,
“prev”,
“price-title”,
“pricing-item”,
“pricing-table”,
“rando”,
“rounded”,
“row”,
“sanitaires”,
“search-icon”,
“section”,
“section-sm”,
“seo-hack”,
“service-2”,
“service-item”,
“service-list”,
“shadow”,
“show”,
“single-page-header”,
“sk-child”,
“sk-circle1”,
“sk-circle10”,
“sk-circle11”,
“sk-circle12”,
“sk-circle2”,
“sk-circle3”,
“sk-circle4”,
“sk-circle5”,
“sk-circle6”,
“sk-circle7”,
“sk-circle8”,
“sk-circle9”,
“social-icon”,
“social-icons-block”,
“subtitle”,
“subtitle-des”,
“tab-content”,
“tab-pane”,
“testimonial”,
“testimonial-slider”,
“text-center”,
“text-right”,
“tf-genius”,
“tf-gift2”,
“tf-ion-”,
“tf-ion-android-”,
“tf-ion-android-arrow-dropleft”,
“tf-ion-android-arrow-dropright”,
“tf-ion-android-bicycle”,
“tf-ion-android-bus”,
“tf-ion-android-calendar”,
“tf-ion-android-car”,
“tf-ion-android-checkmark-circle”,
“tf-ion-android-cloud-circle”,
“tf-ion-android-contact”,
“tf-ion-android-contacts”,
“tf-ion-android-home”,
“tf-ion-android-image”,
“tf-ion-android-menu”,
“tf-ion-android-open”,
“tf-ion-android-people”,
“tf-ion-android-pin”,
“tf-ion-android-plane”,
“tf-ion-android-sunny”,
“tf-ion-android-train”,
“tf-ion-android-walk”,
“tf-ion-arrow-graph-down-right”,
“tf-ion-at”,
“tf-ion-beer”,
“tf-ion-bonfire”,
“tf-ion-bowtie”,
“tf-ion-card”,
“tf-ion-cash”,
“tf-ion-coffee”,
“tf-ion-fork”,
“tf-ion-heart”,
“tf-ion-icecream”,
“tf-ion-information-circled”,
“tf-ion-ios-alarm-outline”,
“tf-ion-ios-analytics-outline”,
“tf-ion-ios-at”,
“tf-ion-ios-calendar-outline”,
“tf-ion-ios-contact”,
“tf-ion-ios-home-outline”,
“tf-ion-ios-information-outline”,
“tf-ion-ios-paw”,
“tf-ion-ios-photos-outline”,
“tf-ion-ios-search-strong”,
“tf-ion-ios-snowy”,
“tf-ion-ios-stopwatch-outline”,
“tf-ion-ios-telephone”,
“tf-ion-ios-videocam-outline”,
“tf-ion-iphone”,
“tf-ion-knife”,
“tf-ion-map”,
“tf-ion-outlet”,
“tf-ion-pizza”,
“tf-ion-power”,
“tf-ion-quote”,
“tf-ion-social-euro”,
“tf-ion-social-facebook”,
“tf-ion-social-instagram”,
“tf-ion-social-twitter”,
“tf-ion-spoon”,
“tf-ion-thermometer”,
“tf-ion-thumbsup”,
“tf-ion-trophy”,
“tf-ion-waterdrop”,
“tf-ion-wifi”,
“tf-ion-wineglass”,
“tf-tools”,
“tf-tools-2”,
“tf-trophy6”,
“tf-wallet”,
“title”,
“toast”,
“toast-body”,
“toast-header”,
“top-bar”,
“top-footer”,
“value”,
“vintage”,
“w-100”,
“widget”,
“wow”
],
“ids”: [
“CalculTarifs”,
“about”,
“administration-et-suppression-des-cookies”,
“aerial-videos-of-camping-arolla”,
“aiguilles”,
“aiguilles-tab”,
“amber”,
“amber-1”,
“amber-2”,
“amber-3”,
“amber-4”,
“amber-5”,
“amber-6”,
“amber-7”,
“amber-8”,
“amber-9”,
“amber-and-cyril”,
“ambre”,
“ambre-1”,
“ambre-2”,
“ambre-3”,
“ambre-4”,
“ambre-5”,
“ambre-6”,
“ambre-7”,
“ambre-8”,
“ambre-9”,
“ambre-et-cyril”,
“and-today-what-inspires-you-arolla-the-val-dhérens-in-general”,
“and-what-advice-would-you-give-to-a-visitor-wishing-to-discover-the-val-dhérens”,
“audio”,
“avec-cette-riche-activité-avez-vous-du-temps-pour-vos-loisirs-vos-passions–quels-sont-ils-”,
“bertol”,
“bertol-tab”,
“blog”,
“body”,
“bookingcom-guest-review-awards-2018”,
“bouquetins”,
“bouquetins-tab”,
“cette-année-nous-fêtons-les-50-ans-du-camping-arolla-créé-en-1969”,
“consentement-à-lutilisation-de-cookies”,
“contact”,
“contact-form”,
“contact-small”,
“contact-submit”,
“cookies-de-performance”,
“cookies-de-statistiques–marketing–tiers–à-base-de-consentement”,
“cookies-fonctionnels”,
“cookies-strictement-nécessaires”,
“cyril”,
“cyril-1”,
“cyril-2”,
“cyril-3”,
“cyril-4”,
“cyril-5”,
“cyril-6”,
“cyril-7”,
“cyril-8”,
“cyril-9”,
“date”,
“des-vidéos-aériennes-du-camping-arolla”,
“dit-jaar-vieren-we-de-50e-verjaardag-van-de-arolla-camping-opgericht-in-1969”,
“divers-liens”,
“dix”,
“dix-tab”,
“email”,
“en-vous-installant-dans-ce-lieu-quel-était-votre-ressenti-de-départ–choc-culturel-ou-easy-life-”,
“et-aujourdhui-que-vous-inspire-arolla–le-val-dhérens-en-général-”,
“et-quels-conseils-donneriez-vous-à-un-visiteur-souhaitant-découvrir-le-val-dhérens-”,
“faisons-connaissance-avec-”,
“footer”,
“inNbreAdulte”,
“inNbreBigCampingcar”,
“inNbreBigCaravan”,
“inNbreBigTent”,
“inNbreDog”,
“inNbreElectricity”,
“inNbreEnfant”,
“inNbreJours”,
“inNbreMandatoryTrashTax”,
“inNbreMidTent”,
“inNbreMoto”,
“inNbreSmallCampingcar”,
“inNbreSmallCaravan”,
“inNbreSmallTent”,
“inNbreVan”,
“inNbreVoiture”,
“interview-de-cyril-et-ambre-gérant-du-camping-darolla-et-lhôtel-bar-de-la-gouille”,
“interview-with-cyril-and-ambre-managers-of-camping-darolla-and-hotel-bar-de-la-gouille”,
“language-www”,
“le-concert-au-camping”,
“le-concert-au-pigne-darolla”,
“lets-get-to-know-”,
“luchtvideos-van-camping-arolla”,
“merci-à-vanupié-pour-ces-deux-concerts-juste-magiques”,
“message”,
“meteoblue”,
“myForm”,
“myTab”,
“myTabContent”,
“name”,
“navbarSupportedContent”,
“nbnuit”,
“one-last-word”,
“otherwise-lets-talk-about-val-dherens-what-are-your-highlights-in-the-valley-what-would-you-like-to-share”,
“ou-vivez-vous-aujourdhui-et-que-faites-vous-depuis-combien-de-temps-”,
“page-www”,
“parlez-moi-un-peu-de-votre-activité-professionnelle–le-camping-la-pension-du-lac-bleu”,
“photos-vintage”,
“portfolio”,
“preloader”,
“press”,
“pricing”,
“pricing2”,
“prixTotal”,
“que-sont-les-cookies”,
“quelles-sont-vos-perspectives-davenir-à-arolla–des-envies-des-projets-”,
“quest-ce-qui-vous-a-amené-dans-le-val-dhérens-à-arolla-”,
“quote”,
“rechaud”,
“service”,
“sinon-parlons-val-dhérens-quels-sont-vos-immanquables-dans-la-vallée-quaimeriez-vous-partager-”,
“source-www”,
“source-www-location”,
“source-www-page”,
“subject”,
“submit”,
“tell-me-a-bit-about-your-professional-activity-the-campsite-the-lac-bleu-pension”,
“tent-medium”,
“tent-small”,
“testimonial”,
“this-year-we-are-celebrating-the-50th-anniversary-of-the-arolla-campsite-created-in-1969”,
“toppage”,
“tsa”,
“tsa-tab”,
“type-www”,
“un-dernier-mot”,
“une-nouvelle-webcam-est-installée-au-camping”,
“vaisselle2p”,
“vaisselle4p”,
“various-links”,
“vignettes”,
“vignettes-tab”,
“vintage-fotos”,
“vintage-pictures”,
“what-are-your-prospects-for-the-future-at-arolla-desires-projects-”,
“what-brought-you-to-the-val-dhérens-in-arolla”,
“when-you-moved-to-this-place-what-was-your-initial-feeling-culture-shock-or-easy-life”,
“where-do-you-live-today-and-what-have-you-been-doing-for-how-long”,
“with-this-rich-activity-do-you-have-time-for-your-leisure-your-passions-what-are-they-”
]
}
}

Why do you close the i twice?

Mmmmmmm … Isn’t the correct syntax ?
I have a opening <i> and a closing </i>.

Not sure to understand. Will check.

I see, it is a typo in my message. But the code is OK.

Message edited.

This appears to be a multilingual site. If true, are there any feature.item differences between data/fr.json and data/en.json (or whatever language and formats are in use)?

Also, what happens when you run hugo --path-warnings?

  • No difference I can see. 3 language fr/en/nl. 6 items in each json.
  • A lot of warnings, but this is a known bug/problem (can’t find the issue right now).

[EDIT] : This issue : resources.PostProcess causes --path-warnings to falsely report duplicate content · Issue #7735 · gohugoio/hugo · GitHub

But this site is working flawlessly since ages. Just see this problem because I want to activate Bep’s tailwind purgecss.
This site is working if I whitelist the 3 missing classes in tailwind.config.js

I invite you to the repo.

data/fr/feature.yml

enable : true
item :

  • icon : tf-ion-waterdrop
    title : Sanitaires et douche
    description : >
    Douche chaude 1 CHF (4 min). Eviers vaisselle avec eau chaude, wc et lavabos.

  • icon : tf-ion-coffee
    title : Epicerie de produits locaux
    description : >
    Boissons chaudes et épicerie de produits locaux et bios.

  • icon : tf-ion-earth
    title : Des produits naturels
    description : >
    De l’eau exceptionnelement pure en direct du glacier, produits locaux naturels. Nous utilisons exclusivement des produits nettoyants écologiques.

  • icon : tf-ion-wifi
    title : Internet Wifi gratuit
    description : >
    Un réseau Internet Wifi gratuit (étendu et rénové en 2021) est disponible sur la quasi totalité du terrain de camping.

  • icon : tf-ion-images
    title : Des promenades magiques
    description : >
    De nombreuses randonnées se font au départ d’Arolla. Tous les goûts et tous les niveaux !

  • icon : tf-ion-home
    title : Des cabanes proches
    description : >
    Une expérience unique. Six cabanes (refuges) sont directement accessibles depuis Arolla. Ces cabanes sont aussi une belle randonnée à la journée.

data/en/feature.yml

enable: true
item:

  • icon: tf-ion-waterdrop
    title: Sanitary and shower
    description:
    Hot shower 1 CHF (4 min). Dish sink with hot water, wc and washbasin.

  • icon: tf-ion-coffee
    title: Grocery of local products
    description:
    Hot drinks and groceries of local and organic products.

  • icon: tf-ion-earth
    title: Natural products
    description:
    Exceptionally pure water live from the glacier, natural local products. We use only environmentally friendly cleaning products.

  • icon: tf-ion-wifi
    title: Free Wifi Internet
    description:
    Free Wi-Fi network (extended & renovated in 2021) is available on almost the entire campsite.

  • icon: tf-ion-images
    title: Magic walks
    description:
    Many hikes are from Arolla. All tastes and all levels!

  • icon: tf-ion-home
    title: Nearby huts
    description:
    A unique experience. Six mountin huts (shelters) are directly accessible from Arolla. These huts also make a nice target for a day’s walk.

data/nl/feature.yml

enable : true
item :

  • icon : tf-ion-waterdrop
    title : Sanitair en douche
    description : >
    Warme douche 1 CHF (4 min). Wasbakken en wastafels met warm water en toiletten.

  • icon : tf-ion-coffee
    title : Verkoop van lokale producten
    description : >
    Warme dranken, lokale en biologische producten.

  • icon : tf-ion-earth
    title : Natuurlijke producten
    description : >
    Uitzonderlijk zuiver water van de gletsjer, natuurlijke lokale producten. We gebruiken alleen milieuvriendelijke schoonmaakproducten.

  • icon : tf-ion-wifi
    title : Gratis wifi internet
    description : >
    Een gratis Wi-Fi internetnetwerk (uitgebreid en gerenoveerd in 2021) is beschikbaar op bijna de hele camping.

  • icon : tf-ion-images
    title : Magische wandelingen
    description : >
    Vanuit Arolla zÿn er veel wandelingen te maken op elle niveau!

  • icon : tf-ion-home
    title : Hutten in de buurt
    description : >
    Een unieke ervaring. Zes hutten (schuilplaatsen) zijn direct toegankelijk vanuit Arolla. Deze hutten zijn ook een leuke bestemming voor een dagwandeling.

WARN

WARN 2021/05/12 21:02:29 Duplicate target paths: /Users/myhome/Documents/Git/camping-navigator.com/public/404.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/contactez-nous/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/dernieres-nouveautes/booking_award_2018/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/dernieres-nouveautes/camping_50/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/dernieres-nouveautes/concert_vanupie/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/dernieres-nouveautes/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/dernieres-nouveautes/interview/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/dernieres-nouveautes/nouveautes-2020/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/dernieres-nouveautes/nouvelle_webcam/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/dernieres-nouveautes/page/2/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/dernieres-nouveautes/page/3/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/dernieres-nouveautes/video_drone/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/404.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/contact-us/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/faq/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/highres/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/hiking/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/latest-news/booking_award_2018/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/latest-news/camping_50/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/latest-news/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/latest-news/interview/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/latest-news/new-season-2020/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/latest-news/new_webcam/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/latest-news/page/2/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/latest-news/page/3/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/latest-news/vanupied_gig/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/latest-news/video_drone/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/legal/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/pictures/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/press/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/rates/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/en/services/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/faq/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/highres/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/legal/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/404.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/contact/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/diensten/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/faq/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/fotos/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/highres/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/laatste-niews/booking_award_2018/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/laatste-niews/camping_50/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/laatste-niews/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/laatste-niews/interview/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/laatste-niews/new_webcam/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/laatste-niews/niews-2020/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/laatste-niews/page/2/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/laatste-niews/page/3/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/laatste-niews/vanupied_gig/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/laatste-niews/video_drone/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/legal/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/pers/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/tarieven/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/nl/wandelen/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/photos/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/presse/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/randonnees/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/services/index.html (2), /Users/myhome/Documents/Git/camping-navigator.com/public/tarifs/index.html (2)

I can see an explanation for the difference between the 6 icons.

  • The ones writen in hugo_stats.json are used in an other part, the FAQ partial.
    So may be this explains why there are difference in this range.

The working code is below, but I can’t see any obvious difference.

May be a small difference on the faq => it is a slice of icons : For example - icon: [tf-ion-wifi]

{{ $data := index site.Data site.Language.Lang }}
{{ with $data.faq }}
    {{ if .enable }}

{{ "<!-- Start Payments Section -->" | safeHTML }}
<section class="about-2 section bg-gray" id="about">
    <div class="container">

    {{ range .content }}
        {{ range . }}
            {{ range . }}
                <div class="row">
                    <div class="col-12 col-md-5">
                        {{ with .icon }}<i class="{{ . }}"></i>{{ end }}
                        {{ with .title }}<h2>{{ . }}</h2>{{ end }}
                    </div>
                    <div class="col-12 col-md-7">
                        {{ range .item }}
                            <div class="block contact-section">
                                {{ range .icon }}<i class="{{.}}"></i> {{ end }}
                                {{ with .title }}<h3>{{.}}</h3>{{ end }}
                                <ul>
                                    {{ range .list }}
                                    <li>{{ .name | markdownify | emojify }}</li>
                                    {{ end }}
                                </ul>
                            </div>
                        {{ end }}
                    </div>
                </div>
            {{ end }}
        {{ end }}
    {{ end }}

    </div>
</section>
{{ "<!-- End pyments section -->" | safeHTML }}
{{ end }}

{{ end }}

The i elements in your initial post are empty. I suppose that empty elements might not be considered save-worthy.

Thanks for the help.

But all my icons are made the same way (<i class="whatever"></i>).
Only those 6 are forgotten by WriteStat.

I tested your HTML in the parser that “does this”, and all the i classes are preserved there, so this a little bit of a mystery.

Do you mean, that my final generated HTML, thru the parser, preserve all the i classes ??

That’s weird.
I doubled checked by removing the json. Restarting hugo regenerate the same classes.

This is a full Agatha Christie mystery.

[EDIT] The only difference I can see is you do not test the full index.html.
So here is the full index.html if it can help for diagnostic.

PS : Note that the given site works because I whitelist the problematic classes in tailwind.config.js as a workaround for production.

I can confirm.

If I remove the other reference to those 6 icons is feature.yml, then none of the 6 icons are writen in the hugo_stat.json.
All the others icons are well taken care of.

So this is really related to the surroundings/context of the feature.html calling feature.yml.

A - I added those 2 lines in both/either the 2 partials. And run hugo

<i class="tf-ion-bug"></i>
<i class="tf-ion-earth"></i>
  • Classes well writen in the json for faq.html.
  • Classes not writen in the json for feature.html

B - But an other weirdo, If i run hugo server, and add the 2 lines in the one with problem (feature.html) I can see that the 2 classes are added in the json.

Then I run hugo (not server) and the 2 classes disapears.

Those 2 partials are just call normally (no cache) and only once each in.

Only difference is :

  • working partial called from a layout/faq/list.html
  • problem partial is called for my main index.html

Ahhhhhhhhhh !!! I think I found something usefull (not for me but for diagnostic).

Call partial feature.html:

  • from main /index.html => Do not work (classes not written)
  • from layout/faq/list.html => It works (classes written in the json)

And the second :

Call partial faq.html:

  • from main /index.html => Do not work (classes not written)
  • from layout/faq/list.html => It works (classes written in the json)

So my conclusion is : The problem occurs when my partials with those icons/styles are called from main index.html, and works OK if called from my section template.

Could explain the weird and different behaviour for different people ?

[EDIT] I opened an issue : Some classes in partial called from main index.html not written in hugo_stats.json · Issue #8530 · gohugoio/hugo · GitHub

Assuming the HTML you posted above is … final.

I (think) see your point.
But to my knowledge there is no js stuff manipulating the DOM after the page load.

No, that’s not related. I have no real idea; it looks funky, I would hope that there is some bad HTML markup in there somewhere that’s not visible in your examples, but I think someone would need to see the actual site to do better “guesswork”.

I narrow again the problem. I miss interpreted. It is not index.html vs layout/list.html.

It is I have a partial code just before my problem. Removing this partial makes the bug disapear.
I gave the detail in GitHub.

I invite you as i’ve done for jmooring.

OK. Narrowing to one line responsible for making wasting time to all of you (but still no sensible explanation for me).

Removing the comment line {{ "<!-- Hero Area Image d'accueil -->" | safeHTML }} in this hero.html partial solves the bug.

Just that. Weird.

I. GET. IT !

Removing the ' in the comment solves the bug.