ruscountrylist 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +14 -0
- data/.travis.yml +2 -0
- data/CHANGELOG.md +8 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +87 -0
- data/Rakefile +2 -0
- data/lib/generators/ruscountrylist/ruscountrylist_generator.rb +46 -0
- data/lib/generators/ruscountrylist/templates/migration.rb +25 -0
- data/lib/ruscountrylist/railtie.rb +11 -0
- data/lib/ruscountrylist/tasks.rb +33 -0
- data/lib/ruscountrylist/version.rb +4 -0
- data/lib/ruscountrylist.rb +49 -0
- data/ruscountrylist.gemspec +24 -0
- data/source/country-list.xml +2786 -0
- metadata +82 -0
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
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,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,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,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
|