lcsort 0.9.0 → 0.9.1
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.
- checksums.yaml +4 -4
- data/lib/lcsort.rb +23 -23
- data/lib/lcsort/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df87391476a2e78eff938aa6599553f4dc278c78
|
4
|
+
data.tar.gz: 99b5ed3babdc1d7f4c5fe5ec827169c57b7d32d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a834dd67dadc7d5d12e22745408d2a15eb6fb02097d04a0d1f3bc5aa0d74d7dd908f98a38b5bf8e3b2649d716f2123aa71a158c018401a566810ff58612c5e2
|
7
|
+
data.tar.gz: c3dc779121332d735296d1c5264c42e40aede8ca6610092dfea31a2963fd6870872a9570bae6bcdfaead78536295b058587425d79b24ebf4956f219da163cd0d
|
data/lib/lcsort.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
# The sorting code is organized as a class for code organization
|
4
|
-
# and possible future parameterization.
|
4
|
+
# and possible future parameterization.
|
5
5
|
#
|
6
6
|
# Lcsort.new.normalize(call)
|
7
7
|
#
|
@@ -43,7 +43,7 @@ class Lcsort
|
|
43
43
|
(?: # optional doon2 -- date or other number eg 1991 , 103rd, 103d
|
44
44
|
\.?
|
45
45
|
(\d{1,4})
|
46
|
-
(?:ST|ND|RD|TH|D)?
|
46
|
+
(?:ST|ND|RD|TH|D|Q)?
|
47
47
|
)?
|
48
48
|
\s*
|
49
49
|
(?: # optional cutter
|
@@ -80,22 +80,22 @@ class Lcsort
|
|
80
80
|
# cutter prefix separator must be lower ascii value than digit 0,
|
81
81
|
# but higher than cutter_extralow_separator. `.` gives us
|
82
82
|
# something that makes debugging easy and doesn't need to be
|
83
|
-
# URI-escaped, which is nice.
|
83
|
+
# URI-escaped, which is nice.
|
84
84
|
self.low_prefix_separator = '.'
|
85
85
|
# cutter extralow separator separates cutter letter suffixes
|
86
86
|
# ei as in the 'ab' A234ab. It must be LOWER ascii value than
|
87
|
-
# low_prefix_separator to make sort work.
|
87
|
+
# low_prefix_separator to make sort work.
|
88
88
|
# Could use space ` `, but `-` is
|
89
|
-
# less confusing debugging and nice that it doesn't need to be URI-escaped.
|
89
|
+
# less confusing debugging and nice that it doesn't need to be URI-escaped.
|
90
90
|
self.cutter_extralow_separator = '-'
|
91
91
|
|
92
92
|
# Using anything less than ascii 0 should work, but `.` is nice for
|
93
|
-
# debugging.
|
93
|
+
# debugging.
|
94
94
|
self.class_letter_padding = '.'
|
95
95
|
|
96
96
|
# Extra separator needs to be lower than our other separators,
|
97
|
-
# especially cutter_extralow_separator.
|
98
|
-
# Doubling the cutter_extralow_separator works.
|
97
|
+
# especially cutter_extralow_separator.
|
98
|
+
# Doubling the cutter_extralow_separator works.
|
99
99
|
self.extra_separator = (self.cutter_extralow_separator * 2)
|
100
100
|
|
101
101
|
# Needs to sort LOWER than extra separator, at least in cases
|
@@ -104,24 +104,24 @@ class Lcsort
|
|
104
104
|
# three dashes.
|
105
105
|
self.append_suffix_separator = (self.cutter_extralow_separator * 3)
|
106
106
|
|
107
|
-
# Only state should be configuration, not about individual call numbers.
|
107
|
+
# Only state should be configuration, not about individual call numbers.
|
108
108
|
# We re-use this for multiple call numbers, and don't want callnum-specific
|
109
109
|
# state; we also want to ensure it's thread-safe for using between multiple
|
110
110
|
# threads. So freeze it! Doesn't absolutely prevent state changes, but
|
111
|
-
# helps and sends the message.
|
111
|
+
# helps and sends the message.
|
112
112
|
self.freeze
|
113
113
|
end
|
114
114
|
|
115
115
|
|
116
116
|
# Our code is organized in a class, for code organization and
|
117
|
-
# possibility of sub-class and constructor customization in the future.
|
117
|
+
# possibility of sub-class and constructor customization in the future.
|
118
118
|
#
|
119
|
-
# But most people will want to call as a simple class-method.
|
119
|
+
# But most people will want to call as a simple class-method.
|
120
120
|
# Store a singleton instance of Lcsort to let class method
|
121
|
-
# be efficient and not need to instantiate a new one every time.
|
121
|
+
# be efficient and not need to instantiate a new one every time.
|
122
122
|
#
|
123
123
|
# Initialize singleton NOT lazily but here on class def, for
|
124
|
-
# thread safety.
|
124
|
+
# thread safety.
|
125
125
|
@global = Lcsort.new
|
126
126
|
def self.normalize(*args)
|
127
127
|
@global.normalize(*args)
|
@@ -165,7 +165,7 @@ class Lcsort
|
|
165
165
|
|
166
166
|
# Add cutters and doons in order, if present
|
167
167
|
normal_str << normalize_doon(doon1) if doon1
|
168
|
-
|
168
|
+
|
169
169
|
normal_str << normalize_cutter(c1alpha, c1num) if c1alpha
|
170
170
|
|
171
171
|
normal_str << normalize_doon(doon2) if doon2
|
@@ -178,25 +178,25 @@ class Lcsort
|
|
178
178
|
normal_str << normalize_append_suffix(options[:append_suffix]) if options[:append_suffix]
|
179
179
|
|
180
180
|
# normally we REQUIRE an alpha and number for a good call number,
|
181
|
-
# but for creating truncated_end_ranges, we relax that.
|
181
|
+
# but for creating truncated_end_ranges, we relax that.
|
182
182
|
unless options[:range_end_construction]
|
183
183
|
unless alpha && num
|
184
184
|
return nil
|
185
185
|
end
|
186
186
|
end
|
187
187
|
|
188
|
-
return normal_str
|
188
|
+
return normal_str
|
189
189
|
end
|
190
190
|
|
191
191
|
def truncated_range_end(callnum)
|
192
192
|
# Tell normalize to relax it's restrictions for range_end
|
193
|
-
# construction.
|
193
|
+
# construction.
|
194
194
|
normalized = normalize(callnum, :range_end_construction => true)
|
195
195
|
|
196
196
|
return nil unless normalized
|
197
197
|
|
198
198
|
# We just add a HIGH_CHAR on the end to make sure this sorts
|
199
|
-
# after the original normalized with ANYTHING else on the end.
|
199
|
+
# after the original normalized with ANYTHING else on the end.
|
200
200
|
return normalized + HIGH_CHAR
|
201
201
|
end
|
202
202
|
|
@@ -214,7 +214,7 @@ class Lcsort
|
|
214
214
|
fill_spots = width - content.length
|
215
215
|
fill_spots = 0 if fill_spots < 0
|
216
216
|
|
217
|
-
return ('0' * fill_spots) + content
|
217
|
+
return ('0' * fill_spots) + content
|
218
218
|
end
|
219
219
|
|
220
220
|
def normalize_cutter(c_alpha_prefix, c_rest)
|
@@ -234,13 +234,13 @@ class Lcsort
|
|
234
234
|
end
|
235
235
|
|
236
236
|
# The 'extra' component is normalized by making it all alphanumeric,
|
237
|
-
# and adding an ultra low prefix separator.
|
237
|
+
# and adding an ultra low prefix separator.
|
238
238
|
def normalize_extra(extra)
|
239
239
|
# Left-pad any volume/number type designations with zeros, so
|
240
240
|
# they sort appropriately. We just find ALL numbers and
|
241
|
-
# normalize them accordingly, it's good enough!
|
241
|
+
# normalize them accordingly, it's good enough!
|
242
242
|
extra_normalized = extra.gsub(/(\d+)/) do |match|
|
243
|
-
left_fill_number($1, self.extra_vol_num_width)
|
243
|
+
left_fill_number($1, self.extra_vol_num_width)
|
244
244
|
end
|
245
245
|
|
246
246
|
# remove all non-alphanumeric
|
data/lib/lcsort/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lcsort
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikitas Tampakis
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2018-09-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -92,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
92
92
|
version: '0'
|
93
93
|
requirements: []
|
94
94
|
rubyforge_project:
|
95
|
-
rubygems_version: 2.
|
95
|
+
rubygems_version: 2.6.14.1
|
96
96
|
signing_key:
|
97
97
|
specification_version: 4
|
98
98
|
summary: Sort-normalized forms of LC Call Numbers
|