language_select 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/Appraisals ADDED
@@ -0,0 +1,15 @@
1
+ appraise 'actionpack3.0' do
2
+ gem 'actionpack', '~> 3.0.0'
3
+ end
4
+
5
+ appraise 'actionpack3.1' do
6
+ gem 'actionpack', '~> 3.1.0'
7
+ end
8
+
9
+ appraise 'actionpack3.2' do
10
+ gem 'actionpack', '~> 3.2.0'
11
+ end
12
+
13
+ appraise 'actionpack4.0' do
14
+ gem 'actionpack', '~> 4.0.0'
15
+ end
data/CHANGELOG.md ADDED
File without changes
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in language_select.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,62 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ language_select (0.0.1)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ actionpack (4.0.2)
10
+ activesupport (= 4.0.2)
11
+ builder (~> 3.1.0)
12
+ erubis (~> 2.7.0)
13
+ rack (~> 1.5.2)
14
+ rack-test (~> 0.6.2)
15
+ activesupport (4.0.2)
16
+ i18n (~> 0.6, >= 0.6.4)
17
+ minitest (~> 4.2)
18
+ multi_json (~> 1.3)
19
+ thread_safe (~> 0.1)
20
+ tzinfo (~> 0.3.37)
21
+ appraisal (0.5.2)
22
+ bundler
23
+ rake
24
+ atomic (1.1.14)
25
+ builder (3.1.4)
26
+ coderay (1.1.0)
27
+ diff-lcs (1.2.5)
28
+ erubis (2.7.0)
29
+ i18n (0.6.9)
30
+ method_source (0.8.2)
31
+ minitest (4.7.5)
32
+ multi_json (1.8.2)
33
+ pry (0.9.12.4)
34
+ coderay (~> 1.0)
35
+ method_source (~> 0.8)
36
+ slop (~> 3.4)
37
+ rack (1.5.2)
38
+ rack-test (0.6.2)
39
+ rack (>= 1.0)
40
+ rake (10.1.1)
41
+ rspec (2.14.1)
42
+ rspec-core (~> 2.14.0)
43
+ rspec-expectations (~> 2.14.0)
44
+ rspec-mocks (~> 2.14.0)
45
+ rspec-core (2.14.7)
46
+ rspec-expectations (2.14.4)
47
+ diff-lcs (>= 1.1.3, < 2.0)
48
+ rspec-mocks (2.14.4)
49
+ slop (3.4.7)
50
+ thread_safe (0.1.3)
51
+ atomic
52
+ tzinfo (0.3.38)
53
+
54
+ PLATFORMS
55
+ ruby
56
+
57
+ DEPENDENCIES
58
+ actionpack
59
+ appraisal
60
+ language_select!
61
+ pry
62
+ rspec
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008 Michael Koziarski
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,63 @@
1
+ # Rails – Language Select
2
+ [![Build Status](https://travis-ci.org/apide/language_select.png?branch=master)](https://travis-ci.org/apide/language_select)
3
+
4
+ Provides a simple helper to get an HTML select list of languages using the
5
+ [ISO 639-1 standard](https://en.wikipedia.org/wiki/ISO_639-1).
6
+
7
+ Uses the two letter alpha codes to identify the language.
8
+
9
+ ## Installation
10
+
11
+ Install as a gem using
12
+
13
+ ```shell
14
+ gem install language_select
15
+ ```
16
+ Or put the following in your Gemfile
17
+
18
+ ```ruby
19
+ gem 'language_select'
20
+ ```
21
+
22
+ ## Example
23
+
24
+ Simple use supplying model and attribute as parameters:
25
+
26
+ ```ruby
27
+ language_select("user", "language")
28
+ ```
29
+
30
+ Supplying priority languages to be placed at the top of the list:
31
+
32
+ ```ruby
33
+ language_select("user", "language", [ "English", "French", "German" ])
34
+ ```
35
+
36
+ The language is stored using the ISO-639-1 two letter codes.
37
+
38
+ #### Getting the Language from ISO codes
39
+
40
+ ```ruby
41
+ class User < ActiveRecord::Base
42
+
43
+ def language_name
44
+ ::LanguageSelect::LANGUAGES[language]
45
+ end
46
+
47
+ end
48
+ ```
49
+
50
+ ## Tests
51
+
52
+ ```shell
53
+ bundle
54
+ bundle exec rspec
55
+ ```
56
+
57
+ ### Running with multiple versions of actionpack
58
+
59
+ ```shell
60
+ bundle exec appraisal
61
+ ```
62
+
63
+ Copyright (c) 2013 Apide ApS, released under the MIT license
data/Rakefile ADDED
@@ -0,0 +1,24 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'bundler/gem_tasks'
4
+
5
+ require 'appraisal'
6
+
7
+ require 'rspec/core/rake_task'
8
+ RSpec::Core::RakeTask.new(:spec)
9
+
10
+ task :default => :spec
11
+
12
+ namespace :appraisal do
13
+ desc "Run the given task for a particular integration's appraisals"
14
+ task :integration do
15
+ Appraisal::File.each do |appraisal|
16
+ if RUBY_VERSION < '1.9.3' and appraisal.name == 'actionpack4.0'
17
+ # skip rails 4 for ruby < 1.9.3
18
+ else
19
+ appraisal.install
20
+ Appraisal::Command.from_args(appraisal.gemfile_path).run
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "actionpack", "~> 3.0.0"
6
+
7
+ gemspec :path=>"../"
@@ -0,0 +1,64 @@
1
+ PATH
2
+ remote: /home/eiler/Documents/apide/apide-language_select
3
+ specs:
4
+ language_select (0.0.1)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ abstract (1.0.0)
10
+ actionpack (3.0.20)
11
+ activemodel (= 3.0.20)
12
+ activesupport (= 3.0.20)
13
+ builder (~> 2.1.2)
14
+ erubis (~> 2.6.6)
15
+ i18n (~> 0.5.0)
16
+ rack (~> 1.2.5)
17
+ rack-mount (~> 0.6.14)
18
+ rack-test (~> 0.5.7)
19
+ tzinfo (~> 0.3.23)
20
+ activemodel (3.0.20)
21
+ activesupport (= 3.0.20)
22
+ builder (~> 2.1.2)
23
+ i18n (~> 0.5.0)
24
+ activesupport (3.0.20)
25
+ appraisal (0.5.2)
26
+ bundler
27
+ rake
28
+ builder (2.1.2)
29
+ coderay (1.0.9)
30
+ diff-lcs (1.2.4)
31
+ erubis (2.6.6)
32
+ abstract (>= 1.0.0)
33
+ i18n (0.5.0)
34
+ method_source (0.8.1)
35
+ pry (0.9.12.2)
36
+ coderay (~> 1.0.5)
37
+ method_source (~> 0.8)
38
+ slop (~> 3.4)
39
+ rack (1.2.8)
40
+ rack-mount (0.6.14)
41
+ rack (>= 1.0.0)
42
+ rack-test (0.5.7)
43
+ rack (>= 1.0)
44
+ rake (10.0.4)
45
+ rspec (2.13.0)
46
+ rspec-core (~> 2.13.0)
47
+ rspec-expectations (~> 2.13.0)
48
+ rspec-mocks (~> 2.13.0)
49
+ rspec-core (2.13.1)
50
+ rspec-expectations (2.13.0)
51
+ diff-lcs (>= 1.1.3, < 2.0)
52
+ rspec-mocks (2.13.1)
53
+ slop (3.4.5)
54
+ tzinfo (0.3.37)
55
+
56
+ PLATFORMS
57
+ ruby
58
+
59
+ DEPENDENCIES
60
+ actionpack (~> 3.0.0)
61
+ appraisal
62
+ country_select!
63
+ pry
64
+ rspec
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "actionpack", "~> 3.1.0"
6
+
7
+ gemspec :path=>"../"
@@ -0,0 +1,72 @@
1
+ PATH
2
+ remote: /home/eiler/Documents/apide/apide-language_select
3
+ specs:
4
+ language_select (0.0.1)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ actionpack (3.1.12)
10
+ activemodel (= 3.1.12)
11
+ activesupport (= 3.1.12)
12
+ builder (~> 3.0.0)
13
+ erubis (~> 2.7.0)
14
+ i18n (~> 0.6)
15
+ rack (~> 1.3.6)
16
+ rack-cache (~> 1.2)
17
+ rack-mount (~> 0.8.2)
18
+ rack-test (~> 0.6.1)
19
+ sprockets (~> 2.0.4)
20
+ activemodel (3.1.12)
21
+ activesupport (= 3.1.12)
22
+ builder (~> 3.0.0)
23
+ i18n (~> 0.6)
24
+ activesupport (3.1.12)
25
+ multi_json (~> 1.0)
26
+ appraisal (0.5.2)
27
+ bundler
28
+ rake
29
+ builder (3.0.4)
30
+ coderay (1.0.9)
31
+ diff-lcs (1.2.4)
32
+ erubis (2.7.0)
33
+ hike (1.2.2)
34
+ i18n (0.6.4)
35
+ method_source (0.8.1)
36
+ multi_json (1.7.3)
37
+ pry (0.9.12.2)
38
+ coderay (~> 1.0.5)
39
+ method_source (~> 0.8)
40
+ slop (~> 3.4)
41
+ rack (1.3.10)
42
+ rack-cache (1.2)
43
+ rack (>= 0.4)
44
+ rack-mount (0.8.3)
45
+ rack (>= 1.0.0)
46
+ rack-test (0.6.2)
47
+ rack (>= 1.0)
48
+ rake (10.0.4)
49
+ rspec (2.13.0)
50
+ rspec-core (~> 2.13.0)
51
+ rspec-expectations (~> 2.13.0)
52
+ rspec-mocks (~> 2.13.0)
53
+ rspec-core (2.13.1)
54
+ rspec-expectations (2.13.0)
55
+ diff-lcs (>= 1.1.3, < 2.0)
56
+ rspec-mocks (2.13.1)
57
+ slop (3.4.5)
58
+ sprockets (2.0.4)
59
+ hike (~> 1.2)
60
+ rack (~> 1.0)
61
+ tilt (~> 1.1, != 1.3.0)
62
+ tilt (1.4.1)
63
+
64
+ PLATFORMS
65
+ ruby
66
+
67
+ DEPENDENCIES
68
+ actionpack (~> 3.1.0)
69
+ appraisal
70
+ country_select!
71
+ pry
72
+ rspec
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "actionpack", "~> 3.2.0"
6
+
7
+ gemspec :path=>"../"
@@ -0,0 +1,71 @@
1
+ PATH
2
+ remote: /home/eiler/Documents/apide/apide-language_select
3
+ specs:
4
+ language_select (0.0.1)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ actionpack (3.2.13)
10
+ activemodel (= 3.2.13)
11
+ activesupport (= 3.2.13)
12
+ builder (~> 3.0.0)
13
+ erubis (~> 2.7.0)
14
+ journey (~> 1.0.4)
15
+ rack (~> 1.4.5)
16
+ rack-cache (~> 1.2)
17
+ rack-test (~> 0.6.1)
18
+ sprockets (~> 2.2.1)
19
+ activemodel (3.2.13)
20
+ activesupport (= 3.2.13)
21
+ builder (~> 3.0.0)
22
+ activesupport (3.2.13)
23
+ i18n (= 0.6.1)
24
+ multi_json (~> 1.0)
25
+ appraisal (0.5.2)
26
+ bundler
27
+ rake
28
+ builder (3.0.4)
29
+ coderay (1.0.9)
30
+ diff-lcs (1.2.4)
31
+ erubis (2.7.0)
32
+ hike (1.2.2)
33
+ i18n (0.6.1)
34
+ journey (1.0.4)
35
+ method_source (0.8.1)
36
+ multi_json (1.7.3)
37
+ pry (0.9.12.2)
38
+ coderay (~> 1.0.5)
39
+ method_source (~> 0.8)
40
+ slop (~> 3.4)
41
+ rack (1.4.5)
42
+ rack-cache (1.2)
43
+ rack (>= 0.4)
44
+ rack-test (0.6.2)
45
+ rack (>= 1.0)
46
+ rake (10.0.4)
47
+ rspec (2.13.0)
48
+ rspec-core (~> 2.13.0)
49
+ rspec-expectations (~> 2.13.0)
50
+ rspec-mocks (~> 2.13.0)
51
+ rspec-core (2.13.1)
52
+ rspec-expectations (2.13.0)
53
+ diff-lcs (>= 1.1.3, < 2.0)
54
+ rspec-mocks (2.13.1)
55
+ slop (3.4.5)
56
+ sprockets (2.2.2)
57
+ hike (~> 1.2)
58
+ multi_json (~> 1.0)
59
+ rack (~> 1.0)
60
+ tilt (~> 1.1, != 1.3.0)
61
+ tilt (1.4.1)
62
+
63
+ PLATFORMS
64
+ ruby
65
+
66
+ DEPENDENCIES
67
+ actionpack (~> 3.2.0)
68
+ appraisal
69
+ country_select!
70
+ pry
71
+ rspec
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "actionpack", "~> 4.0.0"
6
+
7
+ gemspec :path=>"../"
@@ -0,0 +1,62 @@
1
+ PATH
2
+ remote: /home/eiler/Documents/apide/apide-language_select
3
+ specs:
4
+ language_select (0.0.1)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ actionpack (4.0.0)
10
+ activesupport (= 4.0.0)
11
+ builder (~> 3.1.0)
12
+ erubis (~> 2.7.0)
13
+ rack (~> 1.5.2)
14
+ rack-test (~> 0.6.2)
15
+ activesupport (4.0.0)
16
+ i18n (~> 0.6, >= 0.6.4)
17
+ minitest (~> 4.2)
18
+ multi_json (~> 1.3)
19
+ thread_safe (~> 0.1)
20
+ tzinfo (~> 0.3.37)
21
+ appraisal (0.5.2)
22
+ bundler
23
+ rake
24
+ atomic (1.1.10)
25
+ builder (3.1.4)
26
+ coderay (1.0.9)
27
+ diff-lcs (1.2.4)
28
+ erubis (2.7.0)
29
+ i18n (0.6.4)
30
+ method_source (0.8.1)
31
+ minitest (4.7.5)
32
+ multi_json (1.7.7)
33
+ pry (0.9.12.2)
34
+ coderay (~> 1.0.5)
35
+ method_source (~> 0.8)
36
+ slop (~> 3.4)
37
+ rack (1.5.2)
38
+ rack-test (0.6.2)
39
+ rack (>= 1.0)
40
+ rake (10.1.0)
41
+ rspec (2.13.0)
42
+ rspec-core (~> 2.13.0)
43
+ rspec-expectations (~> 2.13.0)
44
+ rspec-mocks (~> 2.13.0)
45
+ rspec-core (2.13.1)
46
+ rspec-expectations (2.13.0)
47
+ diff-lcs (>= 1.1.3, < 2.0)
48
+ rspec-mocks (2.13.1)
49
+ slop (3.4.5)
50
+ thread_safe (0.1.0)
51
+ atomic
52
+ tzinfo (0.3.37)
53
+
54
+ PLATFORMS
55
+ ruby
56
+
57
+ DEPENDENCIES
58
+ actionpack (~> 4.0.0)
59
+ appraisal
60
+ country_select!
61
+ pry
62
+ rspec
@@ -0,0 +1,30 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'language_select/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'language_select'
7
+ s.version = LanguageSelect::VERSION
8
+ s.authors = ['Jacob Eiler']
9
+ s.email = ['jacob.eiler@apide.com']
10
+ s.homepage = 'https://github.com/apide/language_select'
11
+ s.summary = %q{Language Select Plugin}
12
+ s.description = %q{Provides a simple helper to get an HTML select list of ISO-639-1 languages. The list of languages is obtained from Wikipedia (http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).}
13
+
14
+ s.rubyforge_project = 'language_select'
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ['lib']
20
+
21
+ # specify any dependencies here; for example:
22
+ s.add_development_dependency 'rspec'
23
+ if RUBY_VERSION < '1.9.3'
24
+ s.add_development_dependency 'actionpack', '~> 3.2.13'
25
+ else
26
+ s.add_development_dependency 'actionpack'
27
+ end
28
+ s.add_development_dependency 'appraisal'
29
+ s.add_development_dependency 'pry'
30
+ end
@@ -0,0 +1,60 @@
1
+ # encoding: utf-8
2
+
3
+ module LanguageSelect
4
+
5
+ LANGUAGES = {
6
+ "ab" => "Abkhaz",
7
+ "ar" => "Arabic",
8
+ "be" => "Belarusian",
9
+ "bs" => "Bosnian",
10
+ "bg" => "Bulgarian",
11
+ "da" => "Danish",
12
+ "el" => "Greek",
13
+ "en" => "English",
14
+ "es" => "Spanish",
15
+ "et" => "Estonian",
16
+ "fa" => "Persian (Farsi)",
17
+ "fi" => "Finnish",
18
+ "fr" => "French",
19
+ "ga" => "Irish",
20
+ "he" => "Hebrew",
21
+ "hi" => "Hindi",
22
+ "hr" => "Croatian",
23
+ "hu" => "Hungarian",
24
+ "hy" => "Armenian",
25
+ "id" => "Indonesian",
26
+ "is" => "Icelandic",
27
+ "it" => "Italian",
28
+ "ja" => "Janapese",
29
+ "ko" => "Korean",
30
+ "ku" => "Kurdish",
31
+ "lo" => "Lao",
32
+ "lt" => "Lithuanian",
33
+ "lv" => "Latvian",
34
+ "mk" => "Macedonian",
35
+ "ms" => "Malay",
36
+ "nl" => "Dutch",
37
+ "no" => "Norwegian",
38
+ "pa" => "Panjabi",
39
+ "pl" => "Polish",
40
+ "ps" => "Pashto",
41
+ "pt" => "Portuguese",
42
+ "ro" => "Romanian",
43
+ "ru" => "Russian",
44
+ "se" => "Swedish",
45
+ "sk" => "Slovak",
46
+ "sl" => "Slovene",
47
+ "sr" => "Serbian",
48
+ "sq" => "Albanian",
49
+ "th" => "Thai",
50
+ "tr" => "Turkish",
51
+ "uk" => "Ukranian",
52
+ "ur" => "Urdu",
53
+ "vi" => "Vietnamese",
54
+ "zh" => "Chinese",
55
+ "zu" => "Zulu"
56
+ } unless const_defined?("LANGUAGES")
57
+
58
+ LANGUAGES_FOR_SELECT = LANGUAGES.invert unless const_defined?("LANGUAGES_FOR_SELECT")
59
+
60
+ end
@@ -0,0 +1,3 @@
1
+ module LanguageSelect
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,105 @@
1
+ # LanguageSelect
2
+ #
3
+ # Adds #language_select method to
4
+ # ActionView::FormBuilder
5
+ #
6
+ require 'language_select/version'
7
+ require 'language_select/languages'
8
+
9
+ module ActionView
10
+ module Helpers
11
+ module FormOptionsHelper
12
+ #
13
+ # Return select and option tags for the given object and method,
14
+ # using language_options_for_select to generate the list of option tags.
15
+ #
16
+ def language_select(object, method, priority_languages = nil,
17
+ options = {},
18
+ html_options = {})
19
+
20
+ tag = if defined?(ActionView::Helpers::InstanceTag) &&
21
+ ActionView::Helpers::InstanceTag.instance_method(:initialize).arity != 0
22
+
23
+ InstanceTag.new(object, method, self, options.delete(:object))
24
+ else
25
+ LanguageSelect.new(object, method, self, options)
26
+ end
27
+
28
+ tag.to_language_select_tag(priority_languages, options, html_options)
29
+ end
30
+
31
+ #
32
+ # Returns a string of option tags for most languages throughout the World.
33
+ #
34
+ # You can also supply an array of languages as +priority_languages+. They
35
+ # will be listed at the top of the (long) list.
36
+ #
37
+ # NOTE: Only the option tags are returned, you have to wrap this call in
38
+ # a regular HTML select tag.
39
+ #
40
+ def language_options_for_select(selected = nil, priority_languages = nil)
41
+ language_options = "".html_safe
42
+
43
+ if priority_languages then
44
+ priority_languages_options = priority_languages.map do |code|
45
+ [
46
+ ::LanguageSelect::LANGUAGES[code],
47
+ code
48
+ ]
49
+ end
50
+
51
+ language_options += options_for_select(priority_languages_options, selected)
52
+ language_options += '<option value="" disabled="disabled">-------------</option>\n'.html_safe
53
+ #
54
+ # prevents selected from being included
55
+ # twice in the HTML which causes
56
+ # some browsers to select the second
57
+ # selected option (not priority)
58
+ # which makes it harder to select an
59
+ # alternative priority language
60
+ #
61
+ selected = nil if priority_languages.include?(selected)
62
+ end
63
+
64
+ return language_options + options_for_select(::LanguageSelect::LANGUAGES_FOR_SELECT, selected)
65
+ end
66
+
67
+ end
68
+
69
+ module ToLanguageSelectTag
70
+ def to_language_select_tag(priority_languages, options, html_options)
71
+ html_options = html_options.stringify_keys
72
+ add_default_name_and_id(html_options)
73
+ value = value(object)
74
+ content_tag("select",
75
+ add_options(
76
+ language_options_for_select(value, priority_languages),
77
+ options, value
78
+ ), html_options
79
+ )
80
+ end
81
+ end
82
+
83
+ if defined?(ActionView::Helpers::InstanceTag) &&
84
+ ActionView::Helpers::InstanceTag.instance_method(:initialize).arity != 0
85
+ class InstanceTag
86
+ include ToCountrySelectTag
87
+ end
88
+ else
89
+ class LanguageSelect < Tags::Base
90
+ include ToLanguageSelectTag
91
+ end
92
+ end
93
+
94
+ class FormBuilder
95
+ def language_select(method, priority_languages = nil,
96
+ options = {},
97
+ html_options = {})
98
+
99
+ @template.language_select(@object_name, method, priority_languages,
100
+ options.merge(:object => @object),
101
+ html_options)
102
+ end
103
+ end
104
+ end
105
+ end
@@ -0,0 +1,87 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Copyright (c) 2014 Apide ApS; all rights reserved
3
+
4
+ require 'spec_helper'
5
+
6
+ require 'action_view'
7
+ require 'language_select'
8
+
9
+ module ActionView
10
+
11
+ module Helpers
12
+
13
+ describe LanguageSelect do
14
+ include TagHelper
15
+
16
+ class Walrus
17
+ attr_accessor :language
18
+ end
19
+
20
+ let(:walrus) { Walrus.new }
21
+
22
+ let!(:template) { ActionView::Base.new }
23
+
24
+ let(:select_tag) do
25
+ '<select id="walrus_language" name="walrus[language]">'
26
+ end
27
+
28
+ let(:selected_en_option) do
29
+ if defined?(Tags::Base)
30
+ content_tag(:option, 'English', :selected => :selected, :value => 'en')
31
+ else
32
+ '<option value="en" selected="selected">English</option>'
33
+ end
34
+ end
35
+
36
+ let(:builder) do
37
+ if defined?(Tags::Base)
38
+ FormBuilder.new(:walrus, walrus, template, {})
39
+ else
40
+ FormBuilder.new(:walrus, walrus, template, {}, Proc.new { })
41
+ end
42
+ end
43
+
44
+ describe "#language_select" do
45
+ let(:tag) { builder.language_select(:language) }
46
+ it "creates a select tag" do
47
+ tag.should include(select_tag)
48
+ end
49
+
50
+ it "creates option for each language" do
51
+ ::LanguageSelect::LANGUAGES.each do |code, name|
52
+ tag.should include(content_tag(:option, name, :value => code))
53
+ end
54
+ end
55
+
56
+ it "selects the value of language" do
57
+ walrus.language = 'en'
58
+ t = builder.language_select(:language)
59
+ t.should include(selected_en_option)
60
+ end
61
+ end # language_select
62
+
63
+ describe "#priority_languages" do
64
+ let(:tag) { builder.language_select(:language, ['en']) }
65
+
66
+ it "puts the priority languages at the top" do
67
+ tag.should include("#{select_tag}<option value=\"en")
68
+ end
69
+
70
+ it "inserts a divider" do
71
+ tag.should include('>English</option><option value="" disabled="disabled">-------------</option>')
72
+ end
73
+
74
+ it "does not mark two languages as selected" do
75
+ walrus.language = "en"
76
+ str = <<-EOS.strip
77
+ </option>\n<option value="en" selected="selected">English</option>
78
+ EOS
79
+ tag.should_not include(str)
80
+ end
81
+ end #proprity_languages
82
+
83
+ end #LanguageSelect
84
+
85
+ end
86
+
87
+ end
@@ -0,0 +1,20 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+
8
+ require 'pry'
9
+
10
+ RSpec.configure do |config|
11
+ config.treat_symbols_as_metadata_keys_with_true_values = true
12
+ config.run_all_when_everything_filtered = true
13
+ config.filter_run :focus
14
+
15
+ # Run specs in random order to surface order dependencies. If you find an
16
+ # order dependency and want to debug it, you can fix the order by providing
17
+ # the seed, which is printed after each run.
18
+ # --seed 1234
19
+ config.order = 'random'
20
+ end
metadata ADDED
@@ -0,0 +1,137 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: language_select
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jacob Eiler
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-01-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: actionpack
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: appraisal
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: pry
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ description: Provides a simple helper to get an HTML select list of ISO-639-1 languages. The
79
+ list of languages is obtained from Wikipedia (http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).
80
+ email:
81
+ - jacob.eiler@apide.com
82
+ executables: []
83
+ extensions: []
84
+ extra_rdoc_files: []
85
+ files:
86
+ - Appraisals
87
+ - CHANGELOG.md
88
+ - Gemfile
89
+ - Gemfile.lock
90
+ - MIT-LICENSE
91
+ - README.md
92
+ - Rakefile
93
+ - gemfiles/actionpack3.0.gemfile
94
+ - gemfiles/actionpack3.0.gemfile.lock
95
+ - gemfiles/actionpack3.1.gemfile
96
+ - gemfiles/actionpack3.1.gemfile.lock
97
+ - gemfiles/actionpack3.2.gemfile
98
+ - gemfiles/actionpack3.2.gemfile.lock
99
+ - gemfiles/actionpack4.0.gemfile
100
+ - gemfiles/actionpack4.0.gemfile.lock
101
+ - language_select.gemspec
102
+ - lib/language_select.rb
103
+ - lib/language_select/languages.rb
104
+ - lib/language_select/version.rb
105
+ - spec/language_select_spec.rb
106
+ - spec/spec_helper.rb
107
+ homepage: https://github.com/apide/language_select
108
+ licenses: []
109
+ post_install_message:
110
+ rdoc_options: []
111
+ require_paths:
112
+ - lib
113
+ required_ruby_version: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ segments:
120
+ - 0
121
+ hash: -4540007196477433491
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ none: false
124
+ requirements:
125
+ - - ! '>='
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ segments:
129
+ - 0
130
+ hash: -4540007196477433491
131
+ requirements: []
132
+ rubyforge_project: language_select
133
+ rubygems_version: 1.8.25
134
+ signing_key:
135
+ specification_version: 3
136
+ summary: Language Select Plugin
137
+ test_files: []