lib/jekyll/geolexica/glossary.rb in jekyll-geolexica-1.8.6 vs lib/jekyll/geolexica/glossary.rb in jekyll-geolexica-1.8.7

- old
+ new

@@ -6,54 +6,54 @@ class Glossary < Hash include Configuration attr_reader :site - alias_method :each_concept, :each_value - alias_method :each_termid, :each_key + alias each_concept each_value + alias each_termid each_key def initialize(site) @site = site end def load_glossary - Jekyll.logger.info("Geolexica:", "Loading concepts") + Jekyll.logger.info('Geolexica:', 'Loading concepts') Dir.glob(concepts_glob).each { |path| load_concept(path) } end def store(concept) - super(concept.data["termid"], concept) + super(concept.data['termid'], concept) end def language_statistics @language_statistics ||= calculate_language_statistics end # Defines how Glossary is exposed in Liquid templates. def to_liquid { - "language_statistics" => language_statistics, + 'language_statistics' => language_statistics } end protected def load_concept(concept_file_path) - Jekyll.logger.debug("Geolexica:", - "reading concept from file #{concept_file_path}") + Jekyll.logger.debug('Geolexica:', + "reading concept from file #{concept_file_path}") - concept_hash = if glossary_format == "paneron" + concept_hash = if glossary_format == 'paneron' read_paneron_concept_file(concept_file_path) else read_concept_file(concept_file_path) end preprocess_concept_hash(concept_hash) store Concept.new(concept_hash) - rescue - Jekyll.logger.error("Geolexica:", - "failed to read concept from file #{concept_file_path}") + rescue StandardError + Jekyll.logger.error('Geolexica:', + "failed to read concept from file #{concept_file_path}") raise end # Reads and parses concept file located at given path. def read_concept_file(path) @@ -61,51 +61,55 @@ end def read_paneron_concept_file(path) safe_load_options = { permitted_classes: [Date, Time] } concept = YAML.safe_load(File.read(path), **safe_load_options) - concept["termid"] = concept["data"]["identifier"] + concept['termid'] = concept['data']['identifier'] - concept["data"]["localizedConcepts"].each do |lang, local_concept_id| + concept['data']['localizedConcepts'].each do |lang, local_concept_id| localized_concept_path = File.join(localized_concepts_path, "#{local_concept_id}.yaml") - concept[lang] = YAML.safe_load(File.read(localized_concept_path), **safe_load_options)["data"] + concept[lang] = YAML.safe_load(File.read(localized_concept_path), **safe_load_options)['data'] - if lang == "eng" && concept[lang] - concept["term"] = concept[lang]["terms"].first["designation"] + next unless concept[lang] + + concept['term'] = concept[lang]['terms'].first['designation'] if lang == 'eng' + + if concept[lang]['status'] && !concept[lang]['status'].empty? && + (concept[lang]['entry_status'].nil? || concept[lang]['entry_status'].empty?) + concept['entry_status'] = concept[lang]['status'] end end concept end # Does nothing, but some sites may replace this method. - def preprocess_concept_hash(concept_hash) - end + def preprocess_concept_hash(concept_hash); end def calculate_language_statistics - unsorted = each_value.lazy. - flat_map{ |concept| term_languages & concept.data.keys }. - group_by(&:itself). - transform_values(&:count) + unsorted = each_value.lazy + .flat_map { |concept| term_languages & concept.data.keys } + .group_by(&:itself) + .transform_values(&:count) # This is not crucial, but gives nicer output, and ensures that # all +term_languages+ are present. term_languages.to_h { |key| [key, unsorted[key] || 0] } end class Concept attr_reader :data - # TODO Maybe some kind of Struct instead of Hash. + # TODO: Maybe some kind of Struct instead of Hash. attr_reader :pages def initialize(data) @data = data @pages = LiquidCompatibleHash.new end def termid - data["termid"] + data['termid'] end class LiquidCompatibleHash < Hash def to_liquid Jekyll::Utils.stringify_hash_keys(self)