class SourceFile

Public Instance Methods

fetch() click to toggle source
# File lib/select2-rails/source_file.rb, line 9
def fetch
  filtered_tags = fetch_tags
  tag = select("Which tag do you want to fetch?", filtered_tags)
  self.destination_root = "vendor/assets"
  remote = "https://github.com/select2/select2"
  get "#{remote}/raw/#{tag}/dist/css/select2.css", "stylesheets/select2.css"
  get "#{remote}/raw/#{tag}/dist/js/select2.full.js", "javascripts/select2-full.js"
  get "#{remote}/raw/#{tag}/dist/js/select2.js", "javascripts/select2.js"
  languages(tag).each do |lang|
    get "#{remote}/raw/#{tag}/dist/js/i18n/#{lang}.js", "javascripts/select2_locale_#{lang}.js"
  end
end

Private Instance Methods

fetch_tags() click to toggle source
# File lib/select2-rails/source_file.rb, line 24
def fetch_tags
  response = JSON.parse(http_client.get("https://api.github.com/repos/select2/select2/tags").body)
  response.map{|tag| tag["name"]}.sort
end
http_client() click to toggle source
# File lib/select2-rails/source_file.rb, line 29
def http_client
  @http_client ||= HTTPClient.new
end
languages(tag) click to toggle source
# File lib/select2-rails/source_file.rb, line 33
def languages(tag)
  response = JSON.parse(http_client.get("https://api.github.com/repos/select2/select2/contents/src/js/select2/i18n?ref=#{tag}").body)
  response.map {|file| file["name"].gsub('.js', '')}.sort
end
select(msg, elements) { |element, index + 1| ... } click to toggle source
# File lib/select2-rails/source_file.rb, line 38
def select msg, elements
  elements.each_with_index do |element, index|
    say(block_given? ? yield(element, index + 1) : ("#{index + 1}. #{element.to_s}"))
  end
  result = ask(msg).to_i
  elements[result - 1]
end