]> git.openstreetmap.org Git - rails.git/commitdiff
Improve encapsulation / location of osm-community-index files
authorAdam Hoyle <atomoil@gmail.com>
Wed, 8 Sep 2021 19:28:28 +0000 (20:28 +0100)
committerAdam Hoyle <atomoil@gmail.com>
Wed, 8 Sep 2021 19:44:35 +0000 (20:44 +0100)
app/controllers/site_controller.rb
app/models/local_chapter.rb [deleted file]
app/models/osm_community_index.rb [deleted file]
lib/osm_community_index/local_chapter.rb [new file with mode: 0644]
lib/osm_community_index/osm_community_index.rb [new file with mode: 0644]

index c2d5a73ae4720a6fb043c8367b4bbf27e1a349bf..17353fe96ddc398bc6c42730bd4f0882e3e47772 100644 (file)
@@ -108,7 +108,7 @@ class SiteController < ApplicationController
 
   def communities
     @locale = I18n.locale
-    @local_chapters = LocalChapter.local_chapters_with_locale(@locale)
+    @local_chapters = OsmCommunityIndex::LocalChapter.local_chapters_with_locale(@locale)
   end
 
   def export; end
diff --git a/app/models/local_chapter.rb b/app/models/local_chapter.rb
deleted file mode 100644 (file)
index 99e6963..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-class LocalChapter
-
-  attr_reader :id, :name, :url
-
-  @localised_chapters = {}
-
-  def initialize(id, name, url)
-    @id = id
-    @name = name
-    @url = url
-  end
-
-  def self.local_chapters_with_locale(locale)
-    @localised_chapters[locale] ||= load_local_chapters(locale)
-  end
-
-  protected
-
-  def self.load_local_chapters(locale)
-    community_index = OsmCommunityIndex.community_index
-    localised_strings = OsmCommunityIndex.localised_strings(locale)
-    local_chapters = []
-    community_index["resources"].each do |id, resource|
-      resource.each do |key, value|
-        next unless key == "type" && value == "osm-lc" && id != "OSMF"
-
-        strings = resource["strings"]
-        name = localised_strings.dig(id, "name") || strings["name"] || strings["community"]
-        url = strings["url"]
-        local_chapters.push(LocalChapter.new(id, name, url))
-      end
-    end
-    local_chapters
-  end
-
-end
\ No newline at end of file
diff --git a/app/models/osm_community_index.rb b/app/models/osm_community_index.rb
deleted file mode 100644 (file)
index 1f2bfd4..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-class OsmCommunityIndex
-  require "yaml"
-
-  @localised_strings = {}
-
-  def self.community_index
-    @community_index ||= community_index_from_json
-  end
-
-  def self.localised_strings(locale)
-    @localised_strings[locale] ||= locale_hash_from_json(locale)
-  end
-
-  protected
-
-  def self.community_index_from_json
-    json_file = Rails.root.join("node_modules/osm-community-index/dist/resources.json")
-    JSON.parse(File.read(json_file))
-  end
-
-  def self.locale_hash_from_json(locale_in)
-    locale = locale_in.to_s.tr("-", "_")
-    # try the passed in locale
-    json = load_locale_json(locale)
-    unless json.nil?
-      return json
-    end
-
-    # now try it without it's country part (eg 'en' instead of 'en_GB')
-    shortened_locale = locale.split("_").first
-    unless shortened_locale === locale
-      json = load_locale_json(shortened_locale)
-      unless json.nil?
-        return json
-      end
-    end
-
-    # if nothing else works, then return "en"
-    load_locale_json("en")
-  end
-
-  def self.load_locale_json(locale)
-    json_path = Rails.root.join("node_modules/osm-community-index/i18n/#{locale}.yaml")
-    if File.exist?(json_path)
-      response = YAML.safe_load(File.read(json_path))[locale]
-    else
-      response = nil
-    end
-    response
-  end
-
-end
diff --git a/lib/osm_community_index/local_chapter.rb b/lib/osm_community_index/local_chapter.rb
new file mode 100644 (file)
index 0000000..6b203af
--- /dev/null
@@ -0,0 +1,39 @@
+module OsmCommunityIndex
+  class LocalChapter
+
+    attr_reader :id, :name, :url
+
+    @localised_chapters = {}
+
+    def initialize(id, name, url)
+      @id = id
+      @name = name
+      @url = url
+    end
+
+    def self.local_chapters_with_locale(locale)
+      @localised_chapters[locale] ||= load_local_chapters(locale)
+    end
+
+    protected
+
+    def self.load_local_chapters(locale)
+      community_index = OsmCommunityIndex.community_index
+      localised_strings = OsmCommunityIndex.localised_strings(locale)
+      local_chapters = []
+      community_index["resources"].each do |id, resource|
+        resource.each do |key, value|
+          next unless key == "type" && value == "osm-lc" && id != "OSMF"
+
+          strings = resource["strings"]
+          name = localised_strings.dig(id, "name") || strings["name"] || strings["community"]
+          url = strings["url"]
+          local_chapters.push(LocalChapter.new(id, name, url))
+        end
+      end
+      local_chapters
+    end
+
+  end
+
+end
\ No newline at end of file
diff --git a/lib/osm_community_index/osm_community_index.rb b/lib/osm_community_index/osm_community_index.rb
new file mode 100644 (file)
index 0000000..987f946
--- /dev/null
@@ -0,0 +1,52 @@
+module OsmCommunityIndex
+  class OsmCommunityIndex
+    require "yaml"
+
+    @localised_strings = {}
+
+    def self.community_index
+      @community_index ||= community_index_from_json
+    end
+
+    def self.localised_strings(locale)
+      @localised_strings[locale] ||= locale_hash_from_json(locale)
+    end
+
+    protected
+
+    def self.community_index_from_json
+      json_file = Rails.root.join("node_modules/osm-community-index/dist/resources.json")
+      JSON.parse(File.read(json_file))
+    end
+
+    def self.locale_hash_from_json(locale_in)
+      locale = locale_in.to_s.tr("-", "_")
+      # try the passed in locale
+      json = load_locale_json(locale)
+      unless json.nil?
+        return json
+      end
+
+      # now try it without it's country part (eg 'en' instead of 'en_GB')
+      shortened_locale = locale.split("_").first
+      unless shortened_locale === locale
+        json = load_locale_json(shortened_locale)
+        unless json.nil?
+          return json
+        end
+      end
+
+      # if nothing else works, then return "en"
+      load_locale_json("en")
+    end
+
+    def self.load_locale_json(locale)
+      json_path = Rails.root.join("node_modules/osm-community-index/i18n/#{locale}.yaml")
+      if File.exist?(json_path)
+        return YAML.safe_load(File.read(json_path))[locale]
+      end
+      nil
+    end
+
+  end
+end
\ No newline at end of file