Commit e493e3e1994d8166e7d053bc9b875776374f971d
1 parent
5391262c
Exists in
ratings_minor_fixes
and in
4 other branches
Move core extensions out of noosfero scope
Showing
10 changed files
with
167 additions
and
167 deletions
Show diff stats
... | ... | @@ -0,0 +1,10 @@ |
1 | +ActiveRecord::Calculations.class_eval do | |
2 | + def count_with_distinct column_name=self.primary_key | |
3 | + if column_name | |
4 | + distinct.count_without_distinct column_name | |
5 | + else | |
6 | + count_without_distinct | |
7 | + end | |
8 | + end | |
9 | + alias_method_chain :count, :distinct | |
10 | +end | ... | ... |
... | ... | @@ -0,0 +1,20 @@ |
1 | + | |
2 | +# on STI classes tike Article and Profile, plugins' extensions | |
3 | +# on associations should be reflected on descendants | |
4 | +module ActiveRecord | |
5 | + module Reflection | |
6 | + | |
7 | + class << self | |
8 | + | |
9 | + def add_reflection_with_descendants(ar, name, reflection) | |
10 | + self.add_reflection_without_descendants ar, name, reflection | |
11 | + ar.descendants.each do |k| | |
12 | + k._reflections.merge!(name.to_s => reflection) | |
13 | + end if ar.base_class == ar | |
14 | + end | |
15 | + | |
16 | + alias_method_chain :add_reflection, :descendants | |
17 | + | |
18 | + end | |
19 | + end | |
20 | +end | ... | ... |
... | ... | @@ -0,0 +1,39 @@ |
1 | +class Integer | |
2 | + def to_humanreadable | |
3 | + value = self | |
4 | + if value < 1023 | |
5 | + return "%i bytes" % value | |
6 | + end | |
7 | + value /= 1024 | |
8 | + | |
9 | + if value < 1023 | |
10 | + return "%1.1f KB" % value | |
11 | + end | |
12 | + value /= 1024 | |
13 | + | |
14 | + if value < 1023 | |
15 | + return "%1.1f MB" % value | |
16 | + end | |
17 | + value /= 1024 | |
18 | + | |
19 | + if value < 1023 | |
20 | + return "%1.1f GB" % value | |
21 | + end | |
22 | + value /= 1024 | |
23 | + | |
24 | + if value < 1023 | |
25 | + return "%1.1f TB" % value | |
26 | + end | |
27 | + value /= 1024 | |
28 | + | |
29 | + if value < 1023 | |
30 | + return "%1.1f PB" % value | |
31 | + end | |
32 | + value /= 1024 | |
33 | + | |
34 | + if value < 1023 | |
35 | + return "%1.1f EB" % value | |
36 | + end | |
37 | + value /= 1024 | |
38 | + end | |
39 | +end | ... | ... |
... | ... | @@ -0,0 +1,93 @@ |
1 | +# encoding: utf-8 | |
2 | + | |
3 | +class String | |
4 | + | |
5 | + TRANSLITERATIONS = { | |
6 | + [ 'Á', 'À', 'À', 'Â', 'Ã', 'Ä', 'Å' ] => 'A', | |
7 | + [ 'á', 'à', 'à', 'â', 'ã', 'ä', 'å' ,'ª' ] => 'a', | |
8 | + [ 'É', 'È', 'Ê', 'Ë' ] => 'E', | |
9 | + [ 'é', 'è', 'ê', 'ë' ] => 'e', | |
10 | + [ 'Í', 'Ì', 'Î', 'Ï' ] => 'I', | |
11 | + [ 'í', 'ì', 'î', 'ï' ] => 'i', | |
12 | + [ 'Ó', 'Ò', 'Ô', 'Ö', 'Õ', 'º' ] => 'O', | |
13 | + [ 'ó', 'ò', 'ô', 'ö', 'õ', 'º' ] => 'o', | |
14 | + [ 'Ú', 'Ù', 'Û', 'Ü' ] => 'U', | |
15 | + [ 'ú', 'ù', 'û', 'ü' ] => 'u', | |
16 | + [ 'ß' ] => 'ss', | |
17 | + [ 'Ç' ] => 'C', | |
18 | + [ 'ç' ] => 'c', | |
19 | + [ 'Ñ' ] => 'N', | |
20 | + [ 'ñ' ] => 'n', | |
21 | + [ 'Ÿ' ] => 'Y', | |
22 | + [ 'ÿ' ] => 'y', | |
23 | +# Cyrillic alphabet transliteration | |
24 | + [ 'а', 'А' ] => 'a', | |
25 | + [ 'б', 'Б' ] => 'b', | |
26 | + [ 'в', 'В' ] => 'v', | |
27 | + [ 'г', 'Г' ] => 'g', | |
28 | + [ 'д', 'Д' ] => 'd', | |
29 | + [ 'е', 'Е' ] => 'e', | |
30 | + [ 'ё', 'Ё' ] => 'yo', | |
31 | + [ 'ж', 'Ж' ] => 'zh', | |
32 | + [ 'з', 'З' ] => 'z', | |
33 | + [ 'и', 'И' ] => 'i', | |
34 | + [ 'й', 'Й' ] => 'y', | |
35 | + [ 'к', 'К' ] => 'k', | |
36 | + [ 'л', 'Л' ] => 'l', | |
37 | + [ 'м', 'М' ] => 'm', | |
38 | + [ 'н', 'Н' ] => 'n', | |
39 | + [ 'о', 'О' ] => 'o', | |
40 | + [ 'п', 'П' ] => 'p', | |
41 | + [ 'р', 'Р' ] => 'r', | |
42 | + [ 'с', 'С' ] => 's', | |
43 | + [ 'т', 'Т' ] => 't', | |
44 | + [ 'у', 'У' ] => 'u', | |
45 | + [ 'ф', 'Ф' ] => 'f', | |
46 | + [ 'х', 'Х' ] => 'h', | |
47 | + [ 'ц', 'Ц' ] => 'ts', | |
48 | + [ 'ч', 'Ч' ] => 'ch', | |
49 | + [ 'ш', 'Ш' ] => 'sh', | |
50 | + [ 'щ', 'Щ' ] => 'sch', | |
51 | + [ 'э', 'Э' ] => 'e', | |
52 | + [ 'ю', 'Ю' ] => 'yu', | |
53 | + [ 'я', 'Я' ] => 'ya', | |
54 | + [ 'ы', 'Ы' ] => 'i', | |
55 | + [ 'ь', 'Ь' ] => '', | |
56 | + [ 'ъ', 'Ъ' ] => '', | |
57 | +# Ukrainian lovely letters | |
58 | + [ 'і', 'І' ] => 'i', | |
59 | + [ 'ї', 'Ї' ] => 'yi', | |
60 | + [ 'є', 'Є' ] => 'ye', | |
61 | + [ 'ґ', 'Ґ' ] => 'g', | |
62 | + } | |
63 | + | |
64 | + # transliterate a string (assumed to contain UTF-8 data) | |
65 | + # into ASCII by replacing non-ascii characters to their | |
66 | + # ASCII. | |
67 | + # | |
68 | + # The transliteration is, of course, lossy, and its performance is poor. | |
69 | + # Don't abuse this method. | |
70 | + def transliterate | |
71 | + | |
72 | + new = self.dup | |
73 | + TRANSLITERATIONS.each { |from,to| | |
74 | + from.each { |seq| | |
75 | + new.gsub!(seq, to) | |
76 | + } | |
77 | + } | |
78 | + new | |
79 | + end | |
80 | + | |
81 | + def to_slug | |
82 | + transliterate.downcase.gsub(/[^[[:word:]]~\s:;+=_."'`-]/, '').gsub(/[\s:;+=_"'`-]+/, '-').gsub(/-$/, '').gsub(/^-/, '').to_s | |
83 | + end | |
84 | + | |
85 | + def to_css_class | |
86 | + underscore.dasherize.gsub('/','_') | |
87 | + end | |
88 | + | |
89 | + def fix_i18n | |
90 | + self.sub('{fn} ', '') | |
91 | + end | |
92 | + | |
93 | +end | ... | ... |
lib/noosfero/core_ext.rb
lib/noosfero/core_ext/active_record/calculations.rb
lib/noosfero/core_ext/active_record/reflection.rb
... | ... | @@ -1,20 +0,0 @@ |
1 | - | |
2 | -# on STI classes tike Article and Profile, plugins' extensions | |
3 | -# on associations should be reflected on descendants | |
4 | -module ActiveRecord | |
5 | - module Reflection | |
6 | - | |
7 | - class << self | |
8 | - | |
9 | - def add_reflection_with_descendants(ar, name, reflection) | |
10 | - self.add_reflection_without_descendants ar, name, reflection | |
11 | - ar.descendants.each do |k| | |
12 | - k._reflections.merge!(name.to_s => reflection) | |
13 | - end if ar.base_class == ar | |
14 | - end | |
15 | - | |
16 | - alias_method_chain :add_reflection, :descendants | |
17 | - | |
18 | - end | |
19 | - end | |
20 | -end |
lib/noosfero/core_ext/integer.rb
... | ... | @@ -1,39 +0,0 @@ |
1 | -class Integer | |
2 | - def to_humanreadable | |
3 | - value = self | |
4 | - if value < 1023 | |
5 | - return "%i bytes" % value | |
6 | - end | |
7 | - value /= 1024 | |
8 | - | |
9 | - if value < 1023 | |
10 | - return "%1.1f KB" % value | |
11 | - end | |
12 | - value /= 1024 | |
13 | - | |
14 | - if value < 1023 | |
15 | - return "%1.1f MB" % value | |
16 | - end | |
17 | - value /= 1024 | |
18 | - | |
19 | - if value < 1023 | |
20 | - return "%1.1f GB" % value | |
21 | - end | |
22 | - value /= 1024 | |
23 | - | |
24 | - if value < 1023 | |
25 | - return "%1.1f TB" % value | |
26 | - end | |
27 | - value /= 1024 | |
28 | - | |
29 | - if value < 1023 | |
30 | - return "%1.1f PB" % value | |
31 | - end | |
32 | - value /= 1024 | |
33 | - | |
34 | - if value < 1023 | |
35 | - return "%1.1f EB" % value | |
36 | - end | |
37 | - value /= 1024 | |
38 | - end | |
39 | -end |
lib/noosfero/core_ext/string.rb
... | ... | @@ -1,93 +0,0 @@ |
1 | -# encoding: utf-8 | |
2 | - | |
3 | -class String | |
4 | - | |
5 | - TRANSLITERATIONS = { | |
6 | - [ 'Á', 'À', 'À', 'Â', 'Ã', 'Ä', 'Å' ] => 'A', | |
7 | - [ 'á', 'à', 'à', 'â', 'ã', 'ä', 'å' ,'ª' ] => 'a', | |
8 | - [ 'É', 'È', 'Ê', 'Ë' ] => 'E', | |
9 | - [ 'é', 'è', 'ê', 'ë' ] => 'e', | |
10 | - [ 'Í', 'Ì', 'Î', 'Ï' ] => 'I', | |
11 | - [ 'í', 'ì', 'î', 'ï' ] => 'i', | |
12 | - [ 'Ó', 'Ò', 'Ô', 'Ö', 'Õ', 'º' ] => 'O', | |
13 | - [ 'ó', 'ò', 'ô', 'ö', 'õ', 'º' ] => 'o', | |
14 | - [ 'Ú', 'Ù', 'Û', 'Ü' ] => 'U', | |
15 | - [ 'ú', 'ù', 'û', 'ü' ] => 'u', | |
16 | - [ 'ß' ] => 'ss', | |
17 | - [ 'Ç' ] => 'C', | |
18 | - [ 'ç' ] => 'c', | |
19 | - [ 'Ñ' ] => 'N', | |
20 | - [ 'ñ' ] => 'n', | |
21 | - [ 'Ÿ' ] => 'Y', | |
22 | - [ 'ÿ' ] => 'y', | |
23 | -# Cyrillic alphabet transliteration | |
24 | - [ 'а', 'А' ] => 'a', | |
25 | - [ 'б', 'Б' ] => 'b', | |
26 | - [ 'в', 'В' ] => 'v', | |
27 | - [ 'г', 'Г' ] => 'g', | |
28 | - [ 'д', 'Д' ] => 'd', | |
29 | - [ 'е', 'Е' ] => 'e', | |
30 | - [ 'ё', 'Ё' ] => 'yo', | |
31 | - [ 'ж', 'Ж' ] => 'zh', | |
32 | - [ 'з', 'З' ] => 'z', | |
33 | - [ 'и', 'И' ] => 'i', | |
34 | - [ 'й', 'Й' ] => 'y', | |
35 | - [ 'к', 'К' ] => 'k', | |
36 | - [ 'л', 'Л' ] => 'l', | |
37 | - [ 'м', 'М' ] => 'm', | |
38 | - [ 'н', 'Н' ] => 'n', | |
39 | - [ 'о', 'О' ] => 'o', | |
40 | - [ 'п', 'П' ] => 'p', | |
41 | - [ 'р', 'Р' ] => 'r', | |
42 | - [ 'с', 'С' ] => 's', | |
43 | - [ 'т', 'Т' ] => 't', | |
44 | - [ 'у', 'У' ] => 'u', | |
45 | - [ 'ф', 'Ф' ] => 'f', | |
46 | - [ 'х', 'Х' ] => 'h', | |
47 | - [ 'ц', 'Ц' ] => 'ts', | |
48 | - [ 'ч', 'Ч' ] => 'ch', | |
49 | - [ 'ш', 'Ш' ] => 'sh', | |
50 | - [ 'щ', 'Щ' ] => 'sch', | |
51 | - [ 'э', 'Э' ] => 'e', | |
52 | - [ 'ю', 'Ю' ] => 'yu', | |
53 | - [ 'я', 'Я' ] => 'ya', | |
54 | - [ 'ы', 'Ы' ] => 'i', | |
55 | - [ 'ь', 'Ь' ] => '', | |
56 | - [ 'ъ', 'Ъ' ] => '', | |
57 | -# Ukrainian lovely letters | |
58 | - [ 'і', 'І' ] => 'i', | |
59 | - [ 'ї', 'Ї' ] => 'yi', | |
60 | - [ 'є', 'Є' ] => 'ye', | |
61 | - [ 'ґ', 'Ґ' ] => 'g', | |
62 | - } | |
63 | - | |
64 | - # transliterate a string (assumed to contain UTF-8 data) | |
65 | - # into ASCII by replacing non-ascii characters to their | |
66 | - # ASCII. | |
67 | - # | |
68 | - # The transliteration is, of course, lossy, and its performance is poor. | |
69 | - # Don't abuse this method. | |
70 | - def transliterate | |
71 | - | |
72 | - new = self.dup | |
73 | - TRANSLITERATIONS.each { |from,to| | |
74 | - from.each { |seq| | |
75 | - new.gsub!(seq, to) | |
76 | - } | |
77 | - } | |
78 | - new | |
79 | - end | |
80 | - | |
81 | - def to_slug | |
82 | - transliterate.downcase.gsub(/[^[[:word:]]~\s:;+=_."'`-]/, '').gsub(/[\s:;+=_"'`-]+/, '-').gsub(/-$/, '').gsub(/^-/, '').to_s | |
83 | - end | |
84 | - | |
85 | - def to_css_class | |
86 | - underscore.dasherize.gsub('/','_') | |
87 | - end | |
88 | - | |
89 | - def fix_i18n | |
90 | - self.sub('{fn} ', '') | |
91 | - end | |
92 | - | |
93 | -end |