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 |