blackwinter-ruby-nuggets 0.4.0

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.
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
+