blackwinter-ruby-nuggets 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/COPYING +676 -0
- data/ChangeLog +5 -0
- data/README +60 -0
- data/Rakefile +20 -0
- data/lib/nuggets/all.rb +34 -0
- data/lib/nuggets/array/combination.rb +86 -0
- data/lib/nuggets/array/flatten_once.rb +68 -0
- data/lib/nuggets/array/format.rb +124 -0
- data/lib/nuggets/array/in_order.rb +62 -0
- data/lib/nuggets/array/monotone.rb +101 -0
- data/lib/nuggets/array/only.rb +56 -0
- data/lib/nuggets/array/rand.rb +45 -0
- data/lib/nuggets/array/shuffle.rb +133 -0
- data/lib/nuggets/array/to_hash.rb +86 -0
- data/lib/nuggets/enumerable/agrep.rb +82 -0
- data/lib/nuggets/enumerable/all_any_extended.rb +99 -0
- data/lib/nuggets/enumerable/minmax.rb +119 -0
- data/lib/nuggets/env/user_encoding.rb +53 -0
- data/lib/nuggets/env/user_home.rb +54 -0
- data/lib/nuggets/file/which.rb +74 -0
- data/lib/nuggets/hash/at.rb +87 -0
- data/lib/nuggets/hash/in_order.rb +52 -0
- data/lib/nuggets/hash/insert.rb +65 -0
- data/lib/nuggets/hash/only.rb +68 -0
- data/lib/nuggets/integer/factorial.rb +74 -0
- data/lib/nuggets/integer/to_binary_s.rb +47 -0
- data/lib/nuggets/io/agrep.rb +43 -0
- data/lib/nuggets/io/modes.rb +133 -0
- data/lib/nuggets/numeric/between.rb +2 -0
- data/lib/nuggets/numeric/duration.rb +109 -0
- data/lib/nuggets/numeric/limit.rb +70 -0
- data/lib/nuggets/numeric/signum.rb +60 -0
- data/lib/nuggets/numeric/to_multiple.rb +68 -0
- data/lib/nuggets/object/blank.rb +119 -0
- data/lib/nuggets/object/boolean.rb +69 -0
- data/lib/nuggets/object/eigenclass.rb +2 -0
- data/lib/nuggets/object/ghost_class.rb +2 -0
- data/lib/nuggets/object/metaclass.rb +2 -0
- data/lib/nuggets/object/msend.rb +55 -0
- data/lib/nuggets/object/singleton_class.rb +150 -0
- data/lib/nuggets/object/uniclass.rb +2 -0
- data/lib/nuggets/object/virtual_class.rb +2 -0
- data/lib/nuggets/proc/bind.rb +68 -0
- data/lib/nuggets/string/capitalize_first.rb +63 -0
- data/lib/nuggets/string/case.rb +104 -0
- data/lib/nuggets/string/evaluate.rb +53 -0
- data/lib/nuggets/string/msub.rb +82 -0
- data/lib/nuggets/string/nsub.rb +80 -0
- data/lib/nuggets/string/sub_with_md.rb +131 -0
- data/lib/nuggets/string/word_wrap.rb +111 -0
- data/lib/nuggets/tempfile/open.rb +54 -0
- data/lib/nuggets/uri/content_type.rb +65 -0
- data/lib/nuggets/uri/exist.rb +63 -0
- data/lib/nuggets/util/added_methods/init.rb +3 -0
- data/lib/nuggets/util/added_methods.rb +407 -0
- data/lib/nuggets/util/ansicolor2css.rb +90 -0
- data/lib/nuggets/util/content_type.rb +104 -0
- data/lib/nuggets/util/dotted_decimal.rb +66 -0
- data/lib/nuggets/util/i18n.rb +143 -0
- data/lib/nuggets/version.rb +27 -0
- data/lib/nuggets.rb +73 -0
- metadata +124 -0
@@ -0,0 +1,143 @@
|
|
1
|
+
#--
|
2
|
+
###############################################################################
|
3
|
+
# #
|
4
|
+
# A component of ruby-nuggets, some extensions to the Ruby programming #
|
5
|
+
# language. #
|
6
|
+
# #
|
7
|
+
# Copyright (C) 2007 Jens Wille #
|
8
|
+
# #
|
9
|
+
# Authors: #
|
10
|
+
# Jens Wille <jens.wille@uni-koeln.de> #
|
11
|
+
# #
|
12
|
+
# ruby-nuggets is free software; you can redistribute it and/or modify it #
|
13
|
+
# under the terms of the GNU General Public License as published by the Free #
|
14
|
+
# Software Foundation; either version 3 of the License, or (at your option) #
|
15
|
+
# any later version. #
|
16
|
+
# #
|
17
|
+
# ruby-nuggets is distributed in the hope that it will be useful, but WITHOUT #
|
18
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
|
19
|
+
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
|
20
|
+
# more details. #
|
21
|
+
# #
|
22
|
+
# You should have received a copy of the GNU General Public License along #
|
23
|
+
# with ruby-nuggets. If not, see <http://www.gnu.org/licenses/>. #
|
24
|
+
# #
|
25
|
+
###############################################################################
|
26
|
+
#++
|
27
|
+
|
28
|
+
module Util
|
29
|
+
|
30
|
+
module I18n
|
31
|
+
|
32
|
+
DIACRITICS = {
|
33
|
+
"À" => "A", # LATIN CAPITAL LETTER A WITH GRAVE
|
34
|
+
"Á" => "A", # LATIN CAPITAL LETTER A WITH ACUTE
|
35
|
+
"Â" => "A", # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
36
|
+
"Ã" => "A", # LATIN CAPITAL LETTER A WITH TILDE
|
37
|
+
"Ä" => "AE", # LATIN CAPITAL LETTER A WITH DIAERESIS
|
38
|
+
"Å" => "A", # LATIN CAPITAL LETTER A WITH RING ABOVE
|
39
|
+
"Æ" => "AE", # LATIN CAPITAL LETTER AE
|
40
|
+
"Ç" => "C", # LATIN CAPITAL LETTER C WITH CEDILLA
|
41
|
+
"È" => "E", # LATIN CAPITAL LETTER E WITH GRAVE
|
42
|
+
"É" => "E", # LATIN CAPITAL LETTER E WITH ACUTE
|
43
|
+
"Ê" => "E", # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
44
|
+
"Ë" => "E", # LATIN CAPITAL LETTER E WITH DIAERESIS
|
45
|
+
"Ì" => "I", # LATIN CAPITAL LETTER I WITH GRAVE
|
46
|
+
"Í" => "I", # LATIN CAPITAL LETTER I WITH ACUTE
|
47
|
+
"Î" => "I", # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
48
|
+
"Ï" => "I", # LATIN CAPITAL LETTER I WITH DIAERESIS
|
49
|
+
"Ð" => "DH", # LATIN CAPITAL LETTER ETH
|
50
|
+
"Ñ" => "N", # LATIN CAPITAL LETTER N WITH TILDE
|
51
|
+
"Ò" => "O", # LATIN CAPITAL LETTER O WITH GRAVE
|
52
|
+
"Ó" => "O", # LATIN CAPITAL LETTER O WITH ACUTE
|
53
|
+
"Ô" => "O", # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
54
|
+
"Õ" => "O", # LATIN CAPITAL LETTER O WITH TILDE
|
55
|
+
"Ö" => "OE", # LATIN CAPITAL LETTER O WITH DIAERESIS
|
56
|
+
"Ø" => "O", # LATIN CAPITAL LETTER O WITH STROKE
|
57
|
+
"Ù" => "U", # LATIN CAPITAL LETTER U WITH GRAVE
|
58
|
+
"Ú" => "U", # LATIN CAPITAL LETTER U WITH ACUTE
|
59
|
+
"Û" => "U", # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
60
|
+
"Ü" => "UE", # LATIN CAPITAL LETTER U WITH DIAERESIS
|
61
|
+
"Ý" => "Y", # LATIN CAPITAL LETTER Y WITH ACUTE
|
62
|
+
"Þ" => "TH", # LATIN CAPITAL LETTER THORN
|
63
|
+
"ß" => "ss", # LATIN SMALL LETTER SHARP S
|
64
|
+
"à" => "a", # LATIN SMALL LETTER A WITH GRAVE
|
65
|
+
"á" => "a", # LATIN SMALL LETTER A WITH ACUTE
|
66
|
+
"â" => "a", # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
67
|
+
"ã" => "a", # LATIN SMALL LETTER A WITH TILDE
|
68
|
+
"ä" => "ae", # LATIN SMALL LETTER A WITH DIAERESIS
|
69
|
+
"å" => "a", # LATIN SMALL LETTER A WITH RING ABOVE
|
70
|
+
"æ" => "ae", # LATIN SMALL LETTER AE
|
71
|
+
"ç" => "c", # LATIN SMALL LETTER C WITH CEDILLA
|
72
|
+
"è" => "e", # LATIN SMALL LETTER E WITH GRAVE
|
73
|
+
"é" => "e", # LATIN SMALL LETTER E WITH ACUTE
|
74
|
+
"ê" => "e", # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
75
|
+
"ë" => "e", # LATIN SMALL LETTER E WITH DIAERESIS
|
76
|
+
"ì" => "i", # LATIN SMALL LETTER I WITH GRAVE
|
77
|
+
"í" => "i", # LATIN SMALL LETTER I WITH ACUTE
|
78
|
+
"î" => "i", # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
79
|
+
"ï" => "i", # LATIN SMALL LETTER I WITH DIAERESIS
|
80
|
+
"ð" => "dh", # LATIN SMALL LETTER ETH
|
81
|
+
"ñ" => "n", # LATIN SMALL LETTER N WITH TILDE
|
82
|
+
"ò" => "o", # LATIN SMALL LETTER O WITH GRAVE
|
83
|
+
"ó" => "o", # LATIN SMALL LETTER O WITH ACUTE
|
84
|
+
"ô" => "o", # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
85
|
+
"õ" => "o", # LATIN SMALL LETTER O WITH TILDE
|
86
|
+
"ö" => "oe", # LATIN SMALL LETTER O WITH DIAERESIS
|
87
|
+
"ø" => "o", # LATIN SMALL LETTER O WITH STROKE
|
88
|
+
"ù" => "u", # LATIN SMALL LETTER U WITH GRAVE
|
89
|
+
"ú" => "u", # LATIN SMALL LETTER U WITH ACUTE
|
90
|
+
"û" => "u", # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
91
|
+
"ü" => "ue", # LATIN SMALL LETTER U WITH DIAERESIS
|
92
|
+
"ý" => "y", # LATIN SMALL LETTER Y WITH ACUTE
|
93
|
+
"þ" => "th", # LATIN SMALL LETTER THORN
|
94
|
+
"ÿ" => "y" # LATIN SMALL LETTER Y WITH DIAERESIS
|
95
|
+
}
|
96
|
+
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
class String
|
102
|
+
|
103
|
+
# call-seq:
|
104
|
+
# str.replace_diacritics => new_str
|
105
|
+
#
|
106
|
+
# Substitutes any diacritics in _str_ with their replacements as per
|
107
|
+
# Util::I18n::DIACRITICS.
|
108
|
+
def replace_diacritics
|
109
|
+
(_dup = dup).replace_diacritics! || _dup
|
110
|
+
end
|
111
|
+
|
112
|
+
# call-seq:
|
113
|
+
# str.replace_diacritics! => str or nil
|
114
|
+
#
|
115
|
+
# Destructive version of #replace_diacritics.
|
116
|
+
def replace_diacritics!
|
117
|
+
gsub!(/#{Regexp.union(*Util::I18n::DIACRITICS.keys)}/) { |m|
|
118
|
+
s = Util::I18n::DIACRITICS[m]
|
119
|
+
|
120
|
+
# Try to adjust case:
|
121
|
+
# 'Äh' => 'AEh' => 'Aeh'
|
122
|
+
#
|
123
|
+
# But:
|
124
|
+
# 'SÖS' => 'SOES' (not 'SOeS'!)
|
125
|
+
if s.length > 1
|
126
|
+
t = $'[0..0]
|
127
|
+
s[1..-1] = s[1..-1].downcase if t == t.downcase
|
128
|
+
end
|
129
|
+
|
130
|
+
s
|
131
|
+
}
|
132
|
+
end
|
133
|
+
|
134
|
+
end
|
135
|
+
|
136
|
+
if $0 == __FILE__
|
137
|
+
s = 'Äh, Rüby iß sö cüül, nö? SÖS!'
|
138
|
+
p s
|
139
|
+
p s.replace_diacritics
|
140
|
+
|
141
|
+
s.replace_diacritics!
|
142
|
+
p s
|
143
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Nuggets
|
2
|
+
|
3
|
+
module Version
|
4
|
+
|
5
|
+
MAJOR = 0
|
6
|
+
MINOR = 4
|
7
|
+
TINY = 0
|
8
|
+
|
9
|
+
class << self
|
10
|
+
|
11
|
+
# Returns array representation.
|
12
|
+
def to_a
|
13
|
+
[MAJOR, MINOR, TINY]
|
14
|
+
end
|
15
|
+
|
16
|
+
# Short-cut for version string.
|
17
|
+
def to_s
|
18
|
+
to_a.join('.')
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
VERSION = Version.to_s
|
26
|
+
|
27
|
+
end
|
data/lib/nuggets.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
#--
|
2
|
+
###############################################################################
|
3
|
+
# #
|
4
|
+
# ruby-nuggets - some extensions to the Ruby programming language. #
|
5
|
+
# #
|
6
|
+
# Copyright (C) 2007-2008 Jens Wille #
|
7
|
+
# #
|
8
|
+
# Authors: #
|
9
|
+
# Jens Wille <jens.wille@uni-koeln.de> #
|
10
|
+
# #
|
11
|
+
# ruby-nuggets is free software; you can redistribute it and/or modify it #
|
12
|
+
# under the terms of the GNU General Public License as published by the Free #
|
13
|
+
# Software Foundation; either version 3 of the License, or (at your option) #
|
14
|
+
# any later version. #
|
15
|
+
# #
|
16
|
+
# ruby-nuggets is distributed in the hope that it will be useful, but WITHOUT #
|
17
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
|
18
|
+
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
|
19
|
+
# more details. #
|
20
|
+
# #
|
21
|
+
# You should have received a copy of the GNU General Public License along #
|
22
|
+
# with ruby-nuggets. If not, see <http://www.gnu.org/licenses/>. #
|
23
|
+
# #
|
24
|
+
###############################################################################
|
25
|
+
#++
|
26
|
+
|
27
|
+
# Load selected +nuggets+.
|
28
|
+
#
|
29
|
+
# Examples:
|
30
|
+
# # All String nuggets
|
31
|
+
# Nuggets(:string)
|
32
|
+
# Nuggets(String)
|
33
|
+
#
|
34
|
+
# # Only 'msub' and 'word_wrap' String nuggets
|
35
|
+
# Nuggets(:string => %w[msub word_wrap])
|
36
|
+
#
|
37
|
+
# # Selected String nuggets and all Numeric nuggets
|
38
|
+
# Nuggets(:numeric, :string => %w[msub word_wrap])
|
39
|
+
#
|
40
|
+
# # ...you see the pattern ;-)
|
41
|
+
def Nuggets(*nuggets)
|
42
|
+
loaded_nuggets = []
|
43
|
+
|
44
|
+
load_nuggets = lambda { |base, *nuggets|
|
45
|
+
nuggets_by_hierarchy = nuggets.last.is_a?(Hash) ? nuggets.pop : {}
|
46
|
+
|
47
|
+
nuggets.each { |nugget|
|
48
|
+
begin
|
49
|
+
require path = File.join(base.to_s, nugget.to_s.downcase)
|
50
|
+
loaded_nuggets << path
|
51
|
+
rescue LoadError
|
52
|
+
# if it's a directory, load anything in it
|
53
|
+
$LOAD_PATH.each { |dir|
|
54
|
+
if File.directory?(dir_path = File.join(dir, path))
|
55
|
+
load_nuggets[path, *Dir[File.join(dir_path, '*')].map { |file|
|
56
|
+
File.basename(file, '.rb')
|
57
|
+
}]
|
58
|
+
break
|
59
|
+
end
|
60
|
+
} and raise # otherwise, re-raise
|
61
|
+
end
|
62
|
+
}
|
63
|
+
|
64
|
+
nuggets_by_hierarchy.each { |hierarchy, nuggets|
|
65
|
+
nuggets = [nuggets] if nuggets.is_a?(Hash)
|
66
|
+
load_nuggets[File.join(base.to_s, hierarchy.to_s.downcase), *nuggets]
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
load_nuggets['nuggets', *nuggets]
|
71
|
+
|
72
|
+
loaded_nuggets
|
73
|
+
end
|
metadata
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: blackwinter-ruby-nuggets
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jens Wille
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-12-05 00:00:00 -08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: Some extensions to the Ruby programming language.
|
17
|
+
email: jens.wille@uni-koeln.de
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- COPYING
|
24
|
+
- ChangeLog
|
25
|
+
- README
|
26
|
+
files:
|
27
|
+
- lib/nuggets/env/user_home.rb
|
28
|
+
- lib/nuggets/env/user_encoding.rb
|
29
|
+
- lib/nuggets/numeric/limit.rb
|
30
|
+
- lib/nuggets/numeric/to_multiple.rb
|
31
|
+
- lib/nuggets/numeric/between.rb
|
32
|
+
- lib/nuggets/numeric/duration.rb
|
33
|
+
- lib/nuggets/numeric/signum.rb
|
34
|
+
- lib/nuggets/array/to_hash.rb
|
35
|
+
- lib/nuggets/array/shuffle.rb
|
36
|
+
- lib/nuggets/array/format.rb
|
37
|
+
- lib/nuggets/array/monotone.rb
|
38
|
+
- lib/nuggets/array/only.rb
|
39
|
+
- lib/nuggets/array/flatten_once.rb
|
40
|
+
- lib/nuggets/array/rand.rb
|
41
|
+
- lib/nuggets/array/combination.rb
|
42
|
+
- lib/nuggets/array/in_order.rb
|
43
|
+
- lib/nuggets/hash/only.rb
|
44
|
+
- lib/nuggets/hash/at.rb
|
45
|
+
- lib/nuggets/hash/insert.rb
|
46
|
+
- lib/nuggets/hash/in_order.rb
|
47
|
+
- lib/nuggets/enumerable/agrep.rb
|
48
|
+
- lib/nuggets/enumerable/all_any_extended.rb
|
49
|
+
- lib/nuggets/enumerable/minmax.rb
|
50
|
+
- lib/nuggets/io/agrep.rb
|
51
|
+
- lib/nuggets/io/modes.rb
|
52
|
+
- lib/nuggets/all.rb
|
53
|
+
- lib/nuggets/uri/content_type.rb
|
54
|
+
- lib/nuggets/uri/exist.rb
|
55
|
+
- lib/nuggets/string/msub.rb
|
56
|
+
- lib/nuggets/string/capitalize_first.rb
|
57
|
+
- lib/nuggets/string/evaluate.rb
|
58
|
+
- lib/nuggets/string/case.rb
|
59
|
+
- lib/nuggets/string/sub_with_md.rb
|
60
|
+
- lib/nuggets/string/nsub.rb
|
61
|
+
- lib/nuggets/string/word_wrap.rb
|
62
|
+
- lib/nuggets/integer/to_binary_s.rb
|
63
|
+
- lib/nuggets/integer/factorial.rb
|
64
|
+
- lib/nuggets/object/uniclass.rb
|
65
|
+
- lib/nuggets/object/virtual_class.rb
|
66
|
+
- lib/nuggets/object/blank.rb
|
67
|
+
- lib/nuggets/object/ghost_class.rb
|
68
|
+
- lib/nuggets/object/metaclass.rb
|
69
|
+
- lib/nuggets/object/singleton_class.rb
|
70
|
+
- lib/nuggets/object/eigenclass.rb
|
71
|
+
- lib/nuggets/object/msend.rb
|
72
|
+
- lib/nuggets/object/boolean.rb
|
73
|
+
- lib/nuggets/proc/bind.rb
|
74
|
+
- lib/nuggets/util/added_methods.rb
|
75
|
+
- lib/nuggets/util/content_type.rb
|
76
|
+
- lib/nuggets/util/dotted_decimal.rb
|
77
|
+
- lib/nuggets/util/ansicolor2css.rb
|
78
|
+
- lib/nuggets/util/i18n.rb
|
79
|
+
- lib/nuggets/util/added_methods/init.rb
|
80
|
+
- lib/nuggets/version.rb
|
81
|
+
- lib/nuggets/tempfile/open.rb
|
82
|
+
- lib/nuggets/file/which.rb
|
83
|
+
- lib/nuggets.rb
|
84
|
+
- Rakefile
|
85
|
+
- HEADER
|
86
|
+
- COPYING
|
87
|
+
- ChangeLog
|
88
|
+
- README
|
89
|
+
has_rdoc: true
|
90
|
+
homepage: http://prometheus.rubyforge.org/ruby-nuggets
|
91
|
+
post_install_message:
|
92
|
+
rdoc_options:
|
93
|
+
- --line-numbers
|
94
|
+
- --inline-source
|
95
|
+
- --title
|
96
|
+
- ruby-nuggets Application documentation
|
97
|
+
- --main
|
98
|
+
- README
|
99
|
+
- --charset
|
100
|
+
- UTF-8
|
101
|
+
- --all
|
102
|
+
require_paths:
|
103
|
+
- lib
|
104
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: "0"
|
109
|
+
version:
|
110
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: "0"
|
115
|
+
version:
|
116
|
+
requirements: []
|
117
|
+
|
118
|
+
rubyforge_project: prometheus
|
119
|
+
rubygems_version: 1.2.0
|
120
|
+
signing_key:
|
121
|
+
specification_version: 2
|
122
|
+
summary: Some extensions to the Ruby programming language.
|
123
|
+
test_files: []
|
124
|
+
|