ancestors

in lib/twitter_cldr/resources/cldr_locale.rb [18:48]


      def ancestors
        @ancestors ||= [].tap do |ancestry|
          locale = from_fs(base_locale)
          ancestry << locale

          loop do
            cur = from_fs(ancestry.last)

            if parents = parent_locales[cur]
              ancestry << to_fs(parents)
            elsif I18n::Locale::Tag.tag(cur).self_and_parents.count > 1
              ancestry << I18n::Locale::Tag.tag(cur).self_and_parents.last.to_sym
            else
              parents = TwitterCldr::Shared::Locale
                .parse(cur)
                .permutations

              ancestry.concat(parents - [cur])
              break
            end
          end

          ancestry.select! do |locale|
            File.exist?(File.join(cldr_requirement.common_path, 'main', "#{from_fs(locale)}.xml"))
          end

          ancestry << "root"
          ancestry.freeze
        end
      end