ruscountrylist 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ .DS_Store
2
+ *.swp
3
+ pkg
4
+ .bundle
5
+ .rvmrc
6
+ *.gem
7
+ .bundle
8
+ .idea
9
+ Gemfile.lock
10
+ gemfiles/*.lock
11
+ pkg/*
12
+
13
+ doc
14
+ log
data/.travis.yml ADDED
@@ -0,0 +1,2 @@
1
+ rvm:
2
+ -1.9.3
data/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ ## v0.0.2
2
+
3
+ * removed unstable version of ruscountrylist v0.0.1
4
+
5
+ ## v0.0.1
6
+
7
+ * initial release
8
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in ruscountrylist.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 vasche
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,87 @@
1
+ # Ruscountrylist
2
+
3
+ Список стран на русском языке.
4
+ Russian country list.
5
+
6
+ ## Требования
7
+ * Ruby 1.9.3 (возможо, подойдет версия старше)
8
+ * Rails 3.2 (возможо, подойдет версия старше)
9
+
10
+ ## Установка
11
+
12
+ Add this line to your application's Gemfile:
13
+
14
+ gem 'ruscountrylist'
15
+
16
+ And then execute:
17
+
18
+ $ bundle
19
+
20
+ Or install it yourself as:
21
+
22
+ $ gem install ruscountrylist
23
+
24
+ ## Как использовать
25
+
26
+ ### Список стран без генерации модели
27
+
28
+ В переменной содержится список стран
29
+
30
+ Ruscountrylist::RUS_COUNTRIES
31
+
32
+ Вывести список в select можно вот так:
33
+
34
+ select_tag "countries", options_for_select(Ruscountrylist::RUS_COUNTRIES)
35
+
36
+ Получаем:
37
+
38
+ <select id="countries" name="countries"><option value="Абхазия">Абхазия</option><option value="Австралия">Австралия</option>...</select>
39
+
40
+ ###Установка с моделью по умолчанию: Country
41
+
42
+ Генерация модели и миграции
43
+
44
+ $ rails generate ruscountrylist
45
+
46
+ Выполнение миграции
47
+
48
+ $ rake db:migrate
49
+
50
+ Заполнение таблицы countries
51
+
52
+ $ rake ruscountrylist:install
53
+
54
+ ### Модель с другим именем
55
+ Генерируем модель с именем "mymodel":
56
+
57
+ $ rails generate ruscountrylist --model=mymodel
58
+
59
+ Миграция:
60
+
61
+ $ rake db:migrate
62
+
63
+ Заполняем таблицу mymodels значениями:
64
+
65
+ $ rake ruscountrylist:install[mymodel]
66
+
67
+ ### Использование после миграции
68
+
69
+ В контроллер добавляем:
70
+
71
+ @countries = Country.all
72
+
73
+ В шаблоне (на примере slim)
74
+
75
+ select_tag 'countries', options_from_collection_for_select(@countries, 'id', 'name')
76
+
77
+ ## Contributing
78
+
79
+ 1. Fork it
80
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
81
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
82
+ 4. Push to the branch (`git push origin my-new-feature`)
83
+ 5. Create new Pull Request
84
+
85
+ ## Авторы
86
+
87
+ * vasche
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require "bundler/gem_tasks"
@@ -0,0 +1,46 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'rails/generators/migration'
4
+
5
+ module Ruscountrylist
6
+ module Generators
7
+ class RuscountrylistGenerator < Rails::Generators::Base
8
+ include Rails::Generators::Migration
9
+
10
+ namespace "ruscountrylist"
11
+ source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
12
+
13
+ class_option :model, :optional => true, :type => :string, :banner => "model",
14
+ :desc => "Specify the model class name if you will use anything other than 'Country'"
15
+
16
+
17
+ #generate model file
18
+ def create_model
19
+ generate("model #{model_class_name} --skip-migration")
20
+ end
21
+
22
+
23
+ #copy migration file
24
+ def copy_migration_file
25
+ migration_template "migration.rb", "db/migrate/create_#{model_class_name.pluralize.underscore}.rb"
26
+ end
27
+
28
+ def self.next_migration_number(dirname) #:nodoc:
29
+ next_migration_number = current_migration_number(dirname) + 1
30
+ if ActiveRecord::Base.timestamped_migrations
31
+ [Time.now.strftime("%Y%m%d%H%M%S"), "%.14d" % next_migration_number].max
32
+ else
33
+ "%.3d" % next_migration_number
34
+ end
35
+ end
36
+
37
+
38
+ private
39
+
40
+ def model_class_name
41
+ options[:model] ? options[:model].classify : "Country"
42
+ end
43
+
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ class Create<%= model_class_name.pluralize %> < ActiveRecord::Migration
3
+ def self.up
4
+ create_table :<%= model_class_name.pluralize.underscore %> do |t|
5
+ t.string :name, null: false #Наименование
6
+ t.string :fullname #Полное наименование
7
+ t.string :english #На английском
8
+ t.string :alpha2 #Alpha2
9
+ t.string :alpha3 #Alpha3
10
+ t.string :iso #ISO
11
+ t.string :location #Часть света
12
+ t.string :location_precise #Расположение
13
+ t.boolean :enabled, :default => true
14
+ t.integer :show_order, :default => 0
15
+
16
+ t.timestamps
17
+ end
18
+ add_index :<%= model_class_name.pluralize.underscore %> , :name, :unique => true
19
+ end
20
+
21
+ def self.down
22
+ drop_table :<%= model_class_name.pluralize.underscore %>
23
+ end
24
+ end
25
+
@@ -0,0 +1,11 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'ruscountrylist'
3
+ require 'rails'
4
+
5
+ module Ruscountrylist
6
+ class Railtie < Rails::Railtie
7
+ rake_tasks do
8
+ load "ruscountrylist/tasks.rb"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,33 @@
1
+ # -*- encoding: utf-8 -*-
2
+ namespace :ruscountrylist do
3
+ desc "Populate country list"
4
+ task :install, [:model] => :environment do |t, args|
5
+ args.with_defaults(:model => "Country")
6
+ model_name_for_country = args[:model].camelize
7
+
8
+ require "rexml/document"
9
+
10
+ begin
11
+ model_name_for_country.constantize.first
12
+ rescue ActiveRecord::StatementInvalid => e
13
+ raise "Please run migration first"
14
+ end
15
+
16
+ xml = File.open(File.expand_path('../../../source', __FILE__) +'/country-list.xml')
17
+ doc = REXML::Document.new(xml)
18
+ h = REXML::XPath.each( doc, "//country" )
19
+ h.each do |pars|
20
+ country = model_name_for_country.constantize.new
21
+ country.name = pars.elements[1].text
22
+ country.fullname = pars.elements[2].text
23
+ country.english = pars.elements[3].text
24
+ country.alpha2 = pars.elements[4].text
25
+ country.alpha3 = pars.elements[5].text
26
+ country.iso = pars.elements[6].text
27
+ country.location = pars.elements[7].text
28
+ country.location_precise = pars.elements[8].text
29
+ country.save
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,4 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module Ruscountrylist
3
+ VERSION = "0.0.2"
4
+ end
@@ -0,0 +1,49 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require "ruscountrylist/version"
3
+ require 'ruscountrylist/railtie' if defined?(Rails)
4
+
5
+ module Ruscountrylist
6
+ RUS_COUNTRIES = ["Абхазия", "Австралия", "Австрия", "Азербайджан", "Албания", "Алжир", "Американское Самоа",\
7
+ "Ангилья", "Ангола", "Андорра", "Антарктида", "Антигуа и Барбуда", "Аргентина", "Армения", "Аруба", \
8
+ "Афганистан", "Багамы", "Бангладеш", "Барбадос", "Бахрейн", "Беларусь", "Белиз", "Бельгия", "Бенин", \
9
+ "Бермуды", "Болгария", "Боливия, Многонациональное Государство", "Бонайре, Саба и Синт-Эстатиус", \
10
+ "Босния и Герцеговина", "Ботсвана", "Бразилия", "Британская территория в Индийском океане", \
11
+ "Бруней-Даруссалам", "Буркина-Фасо", "Бурунди", "Бутан", "Вануату", "Венгрия", \
12
+ "Венесуэла Боливарианская Республика", "Виргинские острова, Британские", "Виргинские острова, США", \
13
+ "Вьетнам", "Габон", "Гаити", "Гайана", "Гамбия", "Гана", "Гваделупа", "Гватемала", "Гвинея", "Гвинея-Бисау", \
14
+ "Германия", "Гернси", "Гибралтар", "Гондурас", "Гонконг", "Гренада", "Гренландия", "Греция", "Грузия", \
15
+ "Гуам", "Дания", "Джерси", "Джибути", "Доминика", "Доминиканская Республика", "Египет", "Замбия", "Западная Сахара", \
16
+ "Зимбабве", "Израиль", "Индия", "Индонезия", "Иордания", "Ирак", "Иран, Исламская Республика", "Ирландия", \
17
+ "Исландия", "Испания", "Италия", "Йемен", "Кабо-Верде", "Казахстан", "Камбоджа", "Камерун", "Канада", "Катар", \
18
+ "Кения", "Кипр", "Киргизия", "Кирибати", "Китай", "Кокосовые (Килинг) острова", "Колумбия", "Коморы", "Конго", \
19
+ "Конго, Демократическая Республика", "Корея, Народно-Демократическая Республика", "Корея, Республика", "Коста-Рика", \
20
+ "Кот д'Ивуар", "Куба", "Кувейт", "Кюрасао", "Лаос", "Латвия", "Лесото", "Ливан", "Ливийская Арабская Джамахирия", \
21
+ "Либерия", "Лихтенштейн", "Литва", "Люксембург", "Маврикий", "Мавритания", "Мадагаскар", "Майотта", "Макао", "Малави", \
22
+ "Малайзия", "Мали", "Малые Тихоокеанские отдаленные острова Соединенных Штатов", "Мальдивы", "Мальта", "Марокко", \
23
+ "Мартиника", "Маршалловы острова", "Мексика", "Микронезия, Федеративные Штаты", "Мозамбик", "Молдова, Республика", \
24
+ "Монако", "Монголия", "Монтсеррат", "Мьянма", "Намибия", "Науру", "Непал", "Нигер", "Нигерия", "Нидерланды", "Никарагуа", \
25
+ "Ниуэ", "Новая Зеландия", "Новая Каледония", "Норвегия", "Объединенные Арабские Эмираты", "Оман", "Остров Буве", \
26
+ "Остров Мэн", "Остров Норфолк", "Остров Рождества", "Остров Херд и острова Макдональд", "Острова Кайман", "Острова Кука", \
27
+ "Острова Теркс и Кайкос", "Пакистан", "Палау", "Палестинская территория, оккупированная", "Панама", \
28
+ "Папский Престол (Государство - город Ватикан)", "Папуа-Новая Гвинея", "Парагвай", "Перу", "Питкерн", \
29
+ "Польша", "Португалия", "Пуэрто-Рико", "Республика Македония", "Реюньон", "Россия", "Руанда", "Румыния", \
30
+ "Самоа", "Сан-Марино", "Сан-Томе и Принсипи", "Саудовская Аравия", "Свазиленд", "Святая Елена, Остров вознесения, Тристан-да-Кунья", \
31
+ "Северные Марианские острова", "Сен-Бартельми", "Сен-Мартен", "Сенегал", "Сент-Винсент и Гренадины", \
32
+ "Сент-Китс и Невис", "Сент-Люсия", "Сент-Пьер и Микелон", "Сербия", "Сейшелы", "Сингапур", "Синт-Мартен", \
33
+ "Сирийская Арабская Республика", "Словакия", "Словения", "Соединенное Королевство", "Соединенные Штаты", \
34
+ "Соломоновы острова", "Сомали", "Судан", "Суринам", "Сьерра-Леоне", "Таджикистан", "Таиланд", "Тайвань (Китай)", \
35
+ "Танзания, Объединенная Республика", "Тимор-Лесте", "Того", "Токелау", "Тонга", "Тринидад и Тобаго", "Тувалу", \
36
+ "Тунис", "Туркмения", "Турция", "Уганда", "Узбекистан", "Украина", "Уоллис и Футуна", "Уругвай", "Фарерские острова", \
37
+ "Фиджи", "Филиппины", "Финляндия", "Фолклендские острова (Мальвинские)", "Франция", "Французская Гвиана", \
38
+ "Французская Полинезия", "Французские Южные территории", "Хорватия", "Центрально-Африканская Республика", "Чад", \
39
+ "Черногория", "Чешская Республика", "Чили", "Швейцария", "Швеция", "Шпицберген и Ян Майен", "Шри-Ланка", "Эквадор", \
40
+ "Экваториальная Гвинея", "Эландские острова", "Эль-Сальвадор", "Эритрея", "Эстония", "Эфиопия", "Южная Африка", \
41
+ "Южная Джорджия и Южные Сандвичевы острова", "Южная Осетия", "Южный Судан", "Ямайка", "Япония"] unless const_defined?("RUS_COUNTRIES")
42
+ end
43
+
44
+ begin
45
+ require 'rails'
46
+ rescue LoadError
47
+ #do nothing
48
+ end
49
+
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'ruscountrylist/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "ruscountrylist"
8
+ gem.version = Ruscountrylist::VERSION
9
+ gem.platform = Gem::Platform::RUBY
10
+ gem.authors = ["vasche"]
11
+ gem.email = ["cho.vasche@gmail.com"]
12
+ gem.description = %q{Create russian country list table}
13
+ gem.summary = %q{Create russian country list table}
14
+ gem.homepage = "https://github.com/vasche"
15
+
16
+ gem.files = `git ls-files`.split($/)
17
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
+ gem.require_paths = ["lib"]
20
+
21
+ gem.rubyforge_project = "ruscountrylist"
22
+
23
+ gem.add_development_dependency 'rake'
24
+ end