Commit e493e3e1994d8166e7d053bc9b875776374f971d
1 parent
5391262c
Exists in
staging
and in
29 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 |