blackwinter-ruby-nuggets 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. data/COPYING +676 -0
  2. data/ChangeLog +5 -0
  3. data/README +60 -0
  4. data/Rakefile +20 -0
  5. data/lib/nuggets/all.rb +34 -0
  6. data/lib/nuggets/array/combination.rb +86 -0
  7. data/lib/nuggets/array/flatten_once.rb +68 -0
  8. data/lib/nuggets/array/format.rb +124 -0
  9. data/lib/nuggets/array/in_order.rb +62 -0
  10. data/lib/nuggets/array/monotone.rb +101 -0
  11. data/lib/nuggets/array/only.rb +56 -0
  12. data/lib/nuggets/array/rand.rb +45 -0
  13. data/lib/nuggets/array/shuffle.rb +133 -0
  14. data/lib/nuggets/array/to_hash.rb +86 -0
  15. data/lib/nuggets/enumerable/agrep.rb +82 -0
  16. data/lib/nuggets/enumerable/all_any_extended.rb +99 -0
  17. data/lib/nuggets/enumerable/minmax.rb +119 -0
  18. data/lib/nuggets/env/user_encoding.rb +53 -0
  19. data/lib/nuggets/env/user_home.rb +54 -0
  20. data/lib/nuggets/file/which.rb +74 -0
  21. data/lib/nuggets/hash/at.rb +87 -0
  22. data/lib/nuggets/hash/in_order.rb +52 -0
  23. data/lib/nuggets/hash/insert.rb +65 -0
  24. data/lib/nuggets/hash/only.rb +68 -0
  25. data/lib/nuggets/integer/factorial.rb +74 -0
  26. data/lib/nuggets/integer/to_binary_s.rb +47 -0
  27. data/lib/nuggets/io/agrep.rb +43 -0
  28. data/lib/nuggets/io/modes.rb +133 -0
  29. data/lib/nuggets/numeric/between.rb +2 -0
  30. data/lib/nuggets/numeric/duration.rb +109 -0
  31. data/lib/nuggets/numeric/limit.rb +70 -0
  32. data/lib/nuggets/numeric/signum.rb +60 -0
  33. data/lib/nuggets/numeric/to_multiple.rb +68 -0
  34. data/lib/nuggets/object/blank.rb +119 -0
  35. data/lib/nuggets/object/boolean.rb +69 -0
  36. data/lib/nuggets/object/eigenclass.rb +2 -0
  37. data/lib/nuggets/object/ghost_class.rb +2 -0
  38. data/lib/nuggets/object/metaclass.rb +2 -0
  39. data/lib/nuggets/object/msend.rb +55 -0
  40. data/lib/nuggets/object/singleton_class.rb +150 -0
  41. data/lib/nuggets/object/uniclass.rb +2 -0
  42. data/lib/nuggets/object/virtual_class.rb +2 -0
  43. data/lib/nuggets/proc/bind.rb +68 -0
  44. data/lib/nuggets/string/capitalize_first.rb +63 -0
  45. data/lib/nuggets/string/case.rb +104 -0
  46. data/lib/nuggets/string/evaluate.rb +53 -0
  47. data/lib/nuggets/string/msub.rb +82 -0
  48. data/lib/nuggets/string/nsub.rb +80 -0
  49. data/lib/nuggets/string/sub_with_md.rb +131 -0
  50. data/lib/nuggets/string/word_wrap.rb +111 -0
  51. data/lib/nuggets/tempfile/open.rb +54 -0
  52. data/lib/nuggets/uri/content_type.rb +65 -0
  53. data/lib/nuggets/uri/exist.rb +63 -0
  54. data/lib/nuggets/util/added_methods/init.rb +3 -0
  55. data/lib/nuggets/util/added_methods.rb +407 -0
  56. data/lib/nuggets/util/ansicolor2css.rb +90 -0
  57. data/lib/nuggets/util/content_type.rb +104 -0
  58. data/lib/nuggets/util/dotted_decimal.rb +66 -0
  59. data/lib/nuggets/util/i18n.rb +143 -0
  60. data/lib/nuggets/version.rb +27 -0
  61. data/lib/nuggets.rb +73 -0
  62. 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
+