series_joiner 1.2.1 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/series_joiner/array_additions.rb +40 -0
- data/lib/series_joiner/version.rb +3 -0
- data/lib/series_joiner.rb +2 -39
- metadata +38 -115
- data/.document +0 -5
- data/Gemfile +0 -13
- data/Gemfile.lock +0 -20
- data/LICENSE.txt +0 -20
- data/README.rdoc +0 -74
- data/Rakefile +0 -53
- data/VERSION +0 -1
- data/series_joiner.gemspec +0 -63
- data/test/helper.rb +0 -18
- data/test/test_series_joiner.rb +0 -97
@@ -0,0 +1,40 @@
|
|
1
|
+
module SeriesJoiner
|
2
|
+
module ArrayAdditions
|
3
|
+
# Joins items in an array together in a grammatically correct manner.
|
4
|
+
#
|
5
|
+
# Options:
|
6
|
+
# * `delimiter` - inserted between items, except for the final two (default: ', ')
|
7
|
+
# * `final_delimiter` - inserted between the final two items (if > 2), but before the conjunction (default: '')
|
8
|
+
# * `conjunction` - inserted between the final two items (default: ' and ')
|
9
|
+
def join_as_series(options = {})
|
10
|
+
if defined?(I18n)
|
11
|
+
default_delimiter = I18n.translate(:'series_joiner.default_delimiter', :locale => options[:locale])
|
12
|
+
default_final_delimiter = I18n.translate(:'series_joiner.default_final_delimiter', :locale => options[:locale])
|
13
|
+
default_conjunction = I18n.translate(:'series_joiner.default_conjunction', :locale => options[:locale])
|
14
|
+
else
|
15
|
+
default_delimiter = ', '
|
16
|
+
default_final_delimiter = ''
|
17
|
+
default_conjunction = ' and '
|
18
|
+
end
|
19
|
+
|
20
|
+
delimiter = options[:delimiter] || default_delimiter
|
21
|
+
final_delimiter = options[:final_delimiter] || default_final_delimiter
|
22
|
+
conjunction = options[:conjunction] || default_conjunction
|
23
|
+
|
24
|
+
sz = self.size
|
25
|
+
if sz > 0
|
26
|
+
r = self[0]
|
27
|
+
if sz > 1
|
28
|
+
if sz > 2
|
29
|
+
for i in 1..(sz - 2)
|
30
|
+
r += delimiter + self[i]
|
31
|
+
end
|
32
|
+
r += final_delimiter
|
33
|
+
end
|
34
|
+
r += conjunction + self[sz - 1]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
return r
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/series_joiner.rb
CHANGED
@@ -1,42 +1,5 @@
|
|
1
|
-
|
2
|
-
# Joins items in an array together in a grammatically correct manner.
|
3
|
-
#
|
4
|
-
# Options:
|
5
|
-
# * <tt>delimiter</tt> - inserted between items, except for the final two (default: ', ')
|
6
|
-
# * <tt>final_delimiter</tt> - inserted between the final two items (if > 2), but before the conjunction (default: '')
|
7
|
-
# * <tt>conjunction</tt> - inserted between the final two items (default: ' and ')
|
8
|
-
def join_as_series(options = {})
|
9
|
-
if defined?(I18n)
|
10
|
-
default_delimiter = I18n.translate(:'series_joiner.default_delimiter', :locale => options[:locale])
|
11
|
-
default_final_delimiter = I18n.translate(:'series_joiner.default_final_delimiter', :locale => options[:locale])
|
12
|
-
default_conjunction = I18n.translate(:'series_joiner.default_conjunction', :locale => options[:locale])
|
13
|
-
else
|
14
|
-
default_delimiter = ', '
|
15
|
-
default_final_delimiter = ''
|
16
|
-
default_conjunction = ' and '
|
17
|
-
end
|
18
|
-
|
19
|
-
delimiter = options[:delimiter] || default_delimiter
|
20
|
-
final_delimiter = options[:final_delimiter] || default_final_delimiter
|
21
|
-
conjunction = options[:conjunction] || default_conjunction
|
22
|
-
|
23
|
-
sz = self.size
|
24
|
-
if sz > 0
|
25
|
-
r = self[0]
|
26
|
-
if sz > 1
|
27
|
-
if sz > 2
|
28
|
-
for i in 1..(sz - 2)
|
29
|
-
r += delimiter + self[i]
|
30
|
-
end
|
31
|
-
r += final_delimiter
|
32
|
-
end
|
33
|
-
r += conjunction + self[sz - 1]
|
34
|
-
end
|
35
|
-
end
|
36
|
-
return r
|
37
|
-
end
|
38
|
-
end
|
1
|
+
require "series_joiner/array_additions"
|
39
2
|
|
40
3
|
class Array
|
41
|
-
include SeriesJoiner
|
4
|
+
include SeriesJoiner::ArrayAdditions
|
42
5
|
end
|
metadata
CHANGED
@@ -1,138 +1,61 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: series_joiner
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.2.2
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 2
|
9
|
-
- 1
|
10
|
-
version: 1.2.1
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Dan Gebhardt
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
prerelease: false
|
23
|
-
name: shoulda
|
24
|
-
type: :development
|
25
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
12
|
+
date: 2012-02-10 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: &70182283182780 !ruby/object:Gem::Requirement
|
26
17
|
none: false
|
27
|
-
requirements:
|
28
|
-
- -
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
|
31
|
-
segments:
|
32
|
-
- 0
|
33
|
-
version: "0"
|
34
|
-
requirement: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
prerelease: false
|
37
|
-
name: bundler
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
38
22
|
type: :development
|
39
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
40
|
-
none: false
|
41
|
-
requirements:
|
42
|
-
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
hash: 23
|
45
|
-
segments:
|
46
|
-
- 1
|
47
|
-
- 0
|
48
|
-
- 0
|
49
|
-
version: 1.0.0
|
50
|
-
requirement: *id002
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
23
|
prerelease: false
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
- - ~>
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
hash: 7
|
61
|
-
segments:
|
62
|
-
- 1
|
63
|
-
- 5
|
64
|
-
- 2
|
65
|
-
version: 1.5.2
|
66
|
-
requirement: *id003
|
67
|
-
- !ruby/object:Gem::Dependency
|
68
|
-
prerelease: false
|
69
|
-
name: rcov
|
70
|
-
type: :development
|
71
|
-
version_requirements: &id004 !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
|
-
requirements:
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
hash: 3
|
77
|
-
segments:
|
78
|
-
- 0
|
79
|
-
version: "0"
|
80
|
-
requirement: *id004
|
81
|
-
description: Extends Array with a join_as_series() method for joining arrays of items together into grammatically correct series. Useful for joining series like 'a, b and c'. Custom delimiters and conjunctions can be specified.
|
82
|
-
email: contact@cerebris.com
|
24
|
+
version_requirements: *70182283182780
|
25
|
+
description: Extends Array with a join_as_series() method for joining arrays of items
|
26
|
+
together into grammatically correct series. Useful for joining series like 'a, b
|
27
|
+
and c'. Custom delimiters and conjunctions can be specified.
|
28
|
+
email: support@cerebris.com
|
83
29
|
executables: []
|
84
|
-
|
85
30
|
extensions: []
|
86
|
-
|
87
|
-
|
88
|
-
- LICENSE.txt
|
89
|
-
- README.rdoc
|
90
|
-
files:
|
91
|
-
- .document
|
92
|
-
- Gemfile
|
93
|
-
- Gemfile.lock
|
94
|
-
- LICENSE.txt
|
95
|
-
- README.rdoc
|
96
|
-
- Rakefile
|
97
|
-
- VERSION
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
98
33
|
- lib/series_joiner.rb
|
99
|
-
- series_joiner.
|
100
|
-
-
|
101
|
-
|
102
|
-
|
103
|
-
homepage: http://github.com/cerebris/series_joiner
|
104
|
-
licenses:
|
105
|
-
- MIT
|
34
|
+
- lib/series_joiner/array_additions.rb
|
35
|
+
- lib/series_joiner/version.rb
|
36
|
+
homepage: https://github.com/cerebris/series_joiner
|
37
|
+
licenses: []
|
106
38
|
post_install_message:
|
107
39
|
rdoc_options: []
|
108
|
-
|
109
|
-
require_paths:
|
40
|
+
require_paths:
|
110
41
|
- lib
|
111
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
42
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
112
43
|
none: false
|
113
|
-
requirements:
|
114
|
-
- -
|
115
|
-
- !ruby/object:Gem::Version
|
116
|
-
|
117
|
-
|
118
|
-
- 0
|
119
|
-
version: "0"
|
120
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
49
|
none: false
|
122
|
-
requirements:
|
123
|
-
- -
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
|
126
|
-
segments:
|
127
|
-
- 0
|
128
|
-
version: "0"
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
129
54
|
requirements: []
|
130
|
-
|
131
55
|
rubyforge_project:
|
132
|
-
rubygems_version: 1.
|
56
|
+
rubygems_version: 1.8.10
|
133
57
|
signing_key:
|
134
58
|
specification_version: 3
|
135
59
|
summary: Join items in arrays together into grammatically correct series.
|
136
|
-
test_files:
|
137
|
-
|
138
|
-
- test/test_series_joiner.rb
|
60
|
+
test_files: []
|
61
|
+
has_rdoc:
|
data/.document
DELETED
data/Gemfile
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
source "http://rubygems.org"
|
2
|
-
# Add dependencies required to use your gem here.
|
3
|
-
# Example:
|
4
|
-
# gem "activesupport", ">= 2.3.5"
|
5
|
-
|
6
|
-
# Add dependencies to develop your gem here.
|
7
|
-
# Include everything needed to run rake, tests, features, etc.
|
8
|
-
group :development do
|
9
|
-
gem "shoulda", ">= 0"
|
10
|
-
gem "bundler", "~> 1.0.0"
|
11
|
-
gem "jeweler", "~> 1.5.2"
|
12
|
-
gem "rcov", ">= 0"
|
13
|
-
end
|
data/Gemfile.lock
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: http://rubygems.org/
|
3
|
-
specs:
|
4
|
-
git (1.2.5)
|
5
|
-
jeweler (1.5.2)
|
6
|
-
bundler (~> 1.0.0)
|
7
|
-
git (>= 1.2.5)
|
8
|
-
rake
|
9
|
-
rake (0.8.7)
|
10
|
-
rcov (0.9.9)
|
11
|
-
shoulda (2.11.3)
|
12
|
-
|
13
|
-
PLATFORMS
|
14
|
-
ruby
|
15
|
-
|
16
|
-
DEPENDENCIES
|
17
|
-
bundler (~> 1.0.0)
|
18
|
-
jeweler (~> 1.5.2)
|
19
|
-
rcov
|
20
|
-
shoulda
|
data/LICENSE.txt
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
Copyright (c) 2011 Cerebris Corporation
|
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.rdoc
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
= SeriesJoiner
|
2
|
-
|
3
|
-
A gem for joining items in arrays together into grammatically correct series, such as "a, b and c".
|
4
|
-
|
5
|
-
SeriesJoiner extends the <tt>Array</tt> class with a <tt>join_as_series()</tt> method which is similar to the built-in <tt>join()</tt> method. However, <tt>join_as_series()</tt> allows for custom delimiters and conjunctions.
|
6
|
-
|
7
|
-
== Installation
|
8
|
-
|
9
|
-
Run the following (perhaps as sudo):
|
10
|
-
|
11
|
-
gem install series_joiner
|
12
|
-
|
13
|
-
== Bundler Configuration
|
14
|
-
|
15
|
-
Add the following to your Gemfile:
|
16
|
-
|
17
|
-
gem 'series_joiner'
|
18
|
-
|
19
|
-
== Usage
|
20
|
-
|
21
|
-
<tt>join_as_series()</tt> accepts the following options:
|
22
|
-
|
23
|
-
:delimiter # inserted between items, except for the final two (default => ', ')
|
24
|
-
:final_delimiter # inserted between the final two items (if > 2), but before the conjunction (default => '')
|
25
|
-
:conjunction # inserted between the final two items (default => ' and ')
|
26
|
-
|
27
|
-
By default, items are joined as follows:
|
28
|
-
|
29
|
-
['a'].join_as_series #=> 'a'
|
30
|
-
|
31
|
-
['a', 'b'].join_as_series #=> 'a and b'
|
32
|
-
|
33
|
-
['a', 'b', 'c'].join_as_series #=> 'a, b and c'
|
34
|
-
|
35
|
-
['a', 'b', 'c', 'd'].join_as_series #=> 'a, b, c and d'
|
36
|
-
|
37
|
-
Here are some examples using custom delimiters and/or conjunctions:
|
38
|
-
|
39
|
-
['a', 'b', 'c'].join_as_series(:delimiter => '; ') #=> 'a; b and c'
|
40
|
-
|
41
|
-
['a', 'b', 'c'].join_as_series(:conjunction => ' or ') #=> 'a, b or c'
|
42
|
-
|
43
|
-
['a', 'b', 'c'].join_as_series(:delimiter => '; ', :conjunction => '; or, ') #=> 'a; b; or, c'
|
44
|
-
|
45
|
-
The use of the serial comma (i.e. the final comma sometimes used before the conjunction) is much debated in grammar circles (http://en.wikipedia.org/wiki/Serial_comma). And who doesn't enjoy a rousing debate about grammar? Don't answer that. Anyway, SeriesJoiner does not use the serial comma by default. If you prefer to use it, just set the <tt>:final_delimiter</tt> option to <tt>','</tt>:
|
46
|
-
|
47
|
-
['a', 'b', 'c'].join_as_series(:final_delimiter => ',') #=> 'a, b, and c'
|
48
|
-
|
49
|
-
== I18n Support
|
50
|
-
|
51
|
-
If you're using SeriesJoiner in a project with I18n support, include the following translations for your locales:
|
52
|
-
|
53
|
-
en:
|
54
|
-
series_joiner:
|
55
|
-
default_delimiter: ', '
|
56
|
-
default_final_delimiter: ''
|
57
|
-
default_conjunction: ' and '
|
58
|
-
|
59
|
-
== Implementation
|
60
|
-
|
61
|
-
This gem is generated with jeweler and uses shoulda for testing. To run tests:
|
62
|
-
|
63
|
-
rake test
|
64
|
-
|
65
|
-
== Notes
|
66
|
-
|
67
|
-
This gem's <tt>join_as_series()</tt> method may be compared with the similar <tt>to_sentence()</tt> method implemented in ActiveSupport (https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/array/conversions.rb). There are several differences:
|
68
|
-
* <tt>to_sentence()</tt> is part of ActiveSupport, while <tt>join_as_series</tt> is independent;
|
69
|
-
* <tt>to_sentence()</tt> implements the serial comma (see definition above) by default, while <tt>join_as_series()</tt> does not; and,
|
70
|
-
* <tt>to_sentence()</tt> requires two options (<tt>:two_words_connector</tt> and <tt>:last_word_connector</tt>) to override a conjunction, instead of the one (<tt>:conjunction</tt>) required by <tt>join_as_series()</tt>.
|
71
|
-
|
72
|
-
== License
|
73
|
-
|
74
|
-
MIT License. Copyright (c) 2011 Cerebris Corporation. See LICENSE.txt for further details.
|
data/Rakefile
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
begin
|
4
|
-
Bundler.setup(:default, :development)
|
5
|
-
rescue Bundler::BundlerError => e
|
6
|
-
$stderr.puts e.message
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
-
exit e.status_code
|
9
|
-
end
|
10
|
-
require 'rake'
|
11
|
-
|
12
|
-
require 'jeweler'
|
13
|
-
Jeweler::Tasks.new do |gem|
|
14
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
15
|
-
gem.name = "series_joiner"
|
16
|
-
gem.homepage = "http://github.com/cerebris/series_joiner"
|
17
|
-
gem.license = "MIT"
|
18
|
-
gem.summary = "Join items in arrays together into grammatically correct series."
|
19
|
-
gem.description = "Extends Array with a join_as_series() method for joining arrays of items together into grammatically correct series. Useful for joining series like 'a, b and c'. Custom delimiters and conjunctions can be specified."
|
20
|
-
gem.email = "contact@cerebris.com"
|
21
|
-
gem.authors = ["Dan Gebhardt"]
|
22
|
-
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
23
|
-
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
24
|
-
# gem.add_runtime_dependency 'jabber4r', '> 0.1'
|
25
|
-
# gem.add_development_dependency 'rspec', '> 1.2.3'
|
26
|
-
end
|
27
|
-
Jeweler::RubygemsDotOrgTasks.new
|
28
|
-
|
29
|
-
require 'rake/testtask'
|
30
|
-
Rake::TestTask.new(:test) do |test|
|
31
|
-
test.libs << 'lib' << 'test'
|
32
|
-
test.pattern = 'test/**/test_*.rb'
|
33
|
-
test.verbose = true
|
34
|
-
end
|
35
|
-
|
36
|
-
require 'rcov/rcovtask'
|
37
|
-
Rcov::RcovTask.new do |test|
|
38
|
-
test.libs << 'test'
|
39
|
-
test.pattern = 'test/**/test_*.rb'
|
40
|
-
test.verbose = true
|
41
|
-
end
|
42
|
-
|
43
|
-
task :default => :test
|
44
|
-
|
45
|
-
require 'rake/rdoctask'
|
46
|
-
Rake::RDocTask.new do |rdoc|
|
47
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
48
|
-
|
49
|
-
rdoc.rdoc_dir = 'rdoc'
|
50
|
-
rdoc.title = "series_joiner #{version}"
|
51
|
-
rdoc.rdoc_files.include('README*')
|
52
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
53
|
-
end
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
1.2.1
|
data/series_joiner.gemspec
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = %q{series_joiner}
|
8
|
-
s.version = "1.2.1"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Dan Gebhardt"]
|
12
|
-
s.date = %q{2011-01-06}
|
13
|
-
s.description = %q{Extends Array with a join_as_series() method for joining arrays of items together into grammatically correct series. Useful for joining series like 'a, b and c'. Custom delimiters and conjunctions can be specified.}
|
14
|
-
s.email = %q{contact@cerebris.com}
|
15
|
-
s.extra_rdoc_files = [
|
16
|
-
"LICENSE.txt",
|
17
|
-
"README.rdoc"
|
18
|
-
]
|
19
|
-
s.files = [
|
20
|
-
".document",
|
21
|
-
"Gemfile",
|
22
|
-
"Gemfile.lock",
|
23
|
-
"LICENSE.txt",
|
24
|
-
"README.rdoc",
|
25
|
-
"Rakefile",
|
26
|
-
"VERSION",
|
27
|
-
"lib/series_joiner.rb",
|
28
|
-
"series_joiner.gemspec",
|
29
|
-
"test/helper.rb",
|
30
|
-
"test/test_series_joiner.rb"
|
31
|
-
]
|
32
|
-
s.homepage = %q{http://github.com/cerebris/series_joiner}
|
33
|
-
s.licenses = ["MIT"]
|
34
|
-
s.require_paths = ["lib"]
|
35
|
-
s.rubygems_version = %q{1.4.1}
|
36
|
-
s.summary = %q{Join items in arrays together into grammatically correct series.}
|
37
|
-
s.test_files = [
|
38
|
-
"test/helper.rb",
|
39
|
-
"test/test_series_joiner.rb"
|
40
|
-
]
|
41
|
-
|
42
|
-
if s.respond_to? :specification_version then
|
43
|
-
s.specification_version = 3
|
44
|
-
|
45
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
46
|
-
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
47
|
-
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
48
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
49
|
-
s.add_development_dependency(%q<rcov>, [">= 0"])
|
50
|
-
else
|
51
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
52
|
-
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
53
|
-
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
54
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
55
|
-
end
|
56
|
-
else
|
57
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
58
|
-
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
59
|
-
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
60
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
data/test/helper.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
begin
|
4
|
-
Bundler.setup(:default, :development)
|
5
|
-
rescue Bundler::BundlerError => e
|
6
|
-
$stderr.puts e.message
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
-
exit e.status_code
|
9
|
-
end
|
10
|
-
require 'test/unit'
|
11
|
-
require 'shoulda'
|
12
|
-
|
13
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
15
|
-
require 'series_joiner'
|
16
|
-
|
17
|
-
class Test::Unit::TestCase
|
18
|
-
end
|
data/test/test_series_joiner.rb
DELETED
@@ -1,97 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
class TestSeriesJoiner < Test::Unit::TestCase
|
4
|
-
context "using default options" do
|
5
|
-
should "join an empty array as nil" do
|
6
|
-
assert_equal nil, [].join_as_series
|
7
|
-
end
|
8
|
-
should "join an array of one item" do
|
9
|
-
assert_equal 'a', ['a'].join_as_series
|
10
|
-
end
|
11
|
-
should "join an array of two items" do
|
12
|
-
assert_equal 'a and b', ['a', 'b'].join_as_series
|
13
|
-
end
|
14
|
-
should "join an array of three items" do
|
15
|
-
assert_equal 'a, b and c', ['a', 'b', 'c'].join_as_series
|
16
|
-
end
|
17
|
-
should "join an array of four items" do
|
18
|
-
assert_equal 'a, b, c and d', ['a', 'b', 'c', 'd'].join_as_series
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
context "using an 'or' conjunction" do
|
23
|
-
setup do
|
24
|
-
@options = {:conjunction => ' or '}
|
25
|
-
end
|
26
|
-
|
27
|
-
should "join an array of one item" do
|
28
|
-
assert_equal 'a', ['a'].join_as_series(@options)
|
29
|
-
end
|
30
|
-
should "join an array of two items" do
|
31
|
-
assert_equal 'a or b', ['a', 'b'].join_as_series(@options)
|
32
|
-
end
|
33
|
-
should "join an array of three items" do
|
34
|
-
assert_equal 'a, b or c', ['a', 'b', 'c'].join_as_series(@options)
|
35
|
-
end
|
36
|
-
should "join an array of four items" do
|
37
|
-
assert_equal 'a, b, c or d', ['a', 'b', 'c', 'd'].join_as_series(@options)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
context "using a ';' delimiter" do
|
42
|
-
setup do
|
43
|
-
@options = {:delimiter => '; '}
|
44
|
-
end
|
45
|
-
|
46
|
-
should "join an array of one item" do
|
47
|
-
assert_equal 'a', ['a'].join_as_series(@options)
|
48
|
-
end
|
49
|
-
should "join an array of two items" do
|
50
|
-
assert_equal 'a and b', ['a', 'b'].join_as_series(@options)
|
51
|
-
end
|
52
|
-
should "join an array of three items" do
|
53
|
-
assert_equal 'a; b and c', ['a', 'b', 'c'].join_as_series(@options)
|
54
|
-
end
|
55
|
-
should "join an array of four items" do
|
56
|
-
assert_equal 'a; b; c and d', ['a', 'b', 'c', 'd'].join_as_series(@options)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
context "using a ';' delimiter properly" do
|
61
|
-
setup do
|
62
|
-
@options = {:delimiter => '; ', :conjunction => '; or, '}
|
63
|
-
end
|
64
|
-
|
65
|
-
should "join an array of one item" do
|
66
|
-
assert_equal 'a', ['a'].join_as_series(@options)
|
67
|
-
end
|
68
|
-
should "join an array of two items" do
|
69
|
-
assert_equal 'a; or, b', ['a', 'b'].join_as_series(@options)
|
70
|
-
end
|
71
|
-
should "join an array of three items" do
|
72
|
-
assert_equal 'a; b; or, c', ['a', 'b', 'c'].join_as_series(@options)
|
73
|
-
end
|
74
|
-
should "join an array of four items" do
|
75
|
-
assert_equal 'a; b; c; or, d', ['a', 'b', 'c', 'd'].join_as_series(@options)
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
context "using a ',' final delimiter" do
|
80
|
-
setup do
|
81
|
-
@options = {:final_delimiter => ','}
|
82
|
-
end
|
83
|
-
|
84
|
-
should "join an array of one item" do
|
85
|
-
assert_equal 'a', ['a'].join_as_series(@options)
|
86
|
-
end
|
87
|
-
should "join an array of two items" do
|
88
|
-
assert_equal 'a and b', ['a', 'b'].join_as_series(@options)
|
89
|
-
end
|
90
|
-
should "join an array of three items" do
|
91
|
-
assert_equal 'a, b, and c', ['a', 'b', 'c'].join_as_series(@options)
|
92
|
-
end
|
93
|
-
should "join an array of four items" do
|
94
|
-
assert_equal 'a, b, c, and d', ['a', 'b', 'c', 'd'].join_as_series(@options)
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|