lib/liquid/drops/concepts_drop.rb in metanorma-plugin-glossarist-0.1.8 vs lib/liquid/drops/concepts_drop.rb in metanorma-plugin-glossarist-0.2.0
- old
+ new
@@ -30,29 +30,24 @@
private
def filtered_concepts(concepts_collection, filters)
concept_filters = filters.dup
- language_filter = concept_filters.delete('lang')
- sort_filter = concept_filters.delete('sort_by')
- group_filter = concept_filters.delete('group')
+ language_filter = concept_filters.delete("lang")
+ sort_filter = concept_filters.delete("sort_by")
+ group_filter = concept_filters.delete("group")
concepts = concepts_collection.map do |concept|
filtered_concept = concept.to_h["data"]
filtered_concept["term"] = concept.default_designation
filtered_concept = filtered_concept.merge(
- extract_localized_concepts(
- concept,
- language_filter,
- ),
+ extract_localized_concepts(concept, language_filter),
)
if retain_concept?(filtered_concept, concept_filters)
filtered_concept
- else
- nil
end
end.compact
apply_group_filter(concepts, group_filter)
apply_sort_filter(concepts, sort_filter)
@@ -60,17 +55,17 @@
def extract_localized_concepts(concept, languages)
localized_concepts = {}
if !languages || languages.empty?
- concept.localized_concepts.each do |lang, localized_concept_uuid|
+ concept.localized_concepts.each do |lang, _localized_concept_uuid|
localized_concepts[lang] = concept.localizations[lang].to_h["data"]
end
else
languages.split(",").each do |lang|
- localization = concept.localizations[lang]&.to_h&.dig("data")
- localized_concepts[lang] = localization if localization
+ localization = concept.localizations[lang]&.to_h&.dig("data") and
+ localized_concepts[lang] = localization
end
end
localized_concepts
end
@@ -79,14 +74,12 @@
concept_filters.each do |name, value|
fields = extract_nested_field_names(name)
if fields.last.start_with?("start_with")
value = fields.last.gsub(/start_with\(([^\)]*)\)/, '\1')
fields = fields[0..-2]
-
- unless filtered_concept.dig(*fields).start_with?(value)
+ filtered_concept.dig(*fields).start_with?(value) or
return false
- end
elsif filtered_concept.dig(*fields) != value
return false
end
end
@@ -94,11 +87,13 @@
end
def apply_sort_filter(concepts, sort_by)
return concepts unless sort_by
- concepts.sort_by { |concept| concept.dig(*extract_nested_field_names(sort_by)) }
+ concepts.sort_by do |concept|
+ concept.dig(*extract_nested_field_names(sort_by))
+ end
end
def apply_group_filter(concepts, groups)
return concepts unless groups
@@ -111,10 +106,10 @@
def extract_nested_field_names(name)
name.split(".").map do |field|
field_name = field.strip
- field_name.match(/^\d+$/) ? field_name.to_i : field_name
+ /^\d+$/.match?(field_name) ? field_name.to_i : field_name
end
end
def allowed_language?(language, lang_filter)
return false if NON_LANGUAGE_FIELDS.include?(language)