strikeroff-helpful_utils 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,2 +1,3 @@
1
- v0.0.1 "Add String extensions, event machine, deep clone for Hash and Array, humanized attributes and project configuration support"
2
- v0.0.2 "Change README"
1
+ v0.0.3 "Fix humanized_attributes_names for rais 2.3.*"
2
+ v0.0.2 "Change README"
3
+ v0.0.1 "Add String extensions, event machine, deep clone for Hash and Array, humanized attributes and project configuration support"
data/Manifest CHANGED
@@ -1,16 +1,16 @@
1
- CHANGELOG
2
- gem-build.sh
3
- heplful_utils.gemspec
4
- Manifest
5
- Rakefile
6
- README
7
- lib/helpful_utils.rb
8
- lib/helpful_utils/activerecord_ext/humanized_attributes.rb
9
- lib/helpful_utils/common/configuration.rb
10
- lib/helpful_utils/core_ext/array.rb
11
- lib/helpful_utils/core_ext/hash.rb
12
- lib/helpful_utils/core_ext/kernel.rb
13
- lib/helpful_utils/core_ext/string.rb
14
- lib/helpful_utils/patching_utils/event_machine.rb
15
- lib/helpful_utils/patching_utils/inheritance_tree.rb
16
- test/core_tests.rb
1
+ CHANGELOG
2
+ gem-build.sh
3
+ heplful_utils.gemspec
4
+ lib/helpful_utils/activerecord_ext/humanized_attributes.rb
5
+ lib/helpful_utils/common/configuration.rb
6
+ lib/helpful_utils/core_ext/array.rb
7
+ lib/helpful_utils/core_ext/hash.rb
8
+ lib/helpful_utils/core_ext/kernel.rb
9
+ lib/helpful_utils/core_ext/string.rb
10
+ lib/helpful_utils/patching_utils/event_machine.rb
11
+ lib/helpful_utils/patching_utils/inheritance_tree.rb
12
+ lib/helpful_utils.rb
13
+ Manifest
14
+ Rakefile
15
+ README
16
+ test/core_tests.rb
data/README CHANGED
@@ -1,38 +1,38 @@
1
- Гем представляет собой набор полезных инструменов для повседневной работы (пока только на русском)
2
-
3
- 1.Configuration
4
- Загрузка конфигурационных файлов в окружение Configuration из папки RAILS_ROOT/config/project(по умолчанию).
5
- Для каждого найденного yaml файла в папке project мы производим загрузку в окружение. Все это делается
6
- в целях удобства обращения к конфигурации. Доступ к конфигам из проекта - Configuration.НАЗВАНИЕ_ФАЙЛА.КЛЮЧ.
7
- 2. Расширение классов стандартной библиотеки
8
-
9
- а) Расширение классов Array и Hash
10
- метод deep_clone - выполняется рекурсивное клонирование всех элементов.
11
- б) Расширение модуля Kernel
12
- метод with - Переключение области видимости на объект.Использовать осторожно. Рекомендуется применять,
13
- когда в коде идет несколько операций над одним объектом. Таким образом следующий код:
14
-
15
- contexts.set_context(:region, :volga)
16
- contexts.set_context(:site, "gionet.ru")
17
- contexts.set_context(:special, special_object)
18
- contexts.run
19
-
20
- можно преобразовать в следующий:
21
-
22
- with contexts do
23
- set_context(:region, :volga)
24
- set_context(:site, "gionet.ru")
25
- set_context(:special, special_object)
26
- run
27
- end
28
- в) расширения класса String
29
- 1) метод to_json_with_russian_support - Если вызывать у строки с русским текстом стандартный метод to_json, а потом попробовать отобразить ее
30
- то получится что то невразумительное.Данный метод исправляет проблему. Пример
31
- "тут русский текст".to_json(:russian=>true). По умолчанию russian == false
32
- 2) json? - Проверка,является ли строка JSON'ом
33
- 3. Класс EventMachine
34
- Класс служит для подписывания на события и выполнения кода по выполнении этих событий.
35
- Пример с подписыванием на событие after_initialize можно посмотреть helpful_utils.rb
36
- 4. Другие утилиты для падчинга можно посмотреть в helpful_utils\patching_utils
37
- 5. Кастомные названия для полей моделей(по мотивам
38
- http://rubybrothers.ru/2008/9/9/custom-attributes-names-for-rails-validations)
1
+ Гем представляет собой набор полезных инструменов для повседневной работы (пока только на русском)
2
+
3
+ 1.Configuration
4
+ Загрузка конфигурационных файлов в окружение Configuration из папки RAILS_ROOT/config/project(по умолчанию).
5
+ Для каждого найденного yaml файла в папке project мы производим загрузку в окружение. Все это делается
6
+ в целях удобства обращения к конфигурации. Доступ к конфигам из проекта - Configuration.НАЗВАНИЕ_ФАЙЛА.КЛЮЧ.
7
+ 2. Расширение классов стандартной библиотеки
8
+
9
+ а) Расширение классов Array и Hash
10
+ метод deep_clone - выполняется рекурсивное клонирование всех элементов.
11
+ б) Расширение модуля Kernel
12
+ метод with - Переключение области видимости на объект.Использовать осторожно. Рекомендуется применять,
13
+ когда в коде идет несколько операций над одним объектом. Таким образом следующий код:
14
+
15
+ contexts.set_context(:region, :volga)
16
+ contexts.set_context(:site, "gionet.ru")
17
+ contexts.set_context(:special, special_object)
18
+ contexts.run
19
+
20
+ можно преобразовать в следующий:
21
+
22
+ with contexts do
23
+ set_context(:region, :volga)
24
+ set_context(:site, "gionet.ru")
25
+ set_context(:special, special_object)
26
+ run
27
+ end
28
+ в) расширения класса String
29
+ 1) метод to_json_with_russian_support - Если вызывать у строки с русским текстом стандартный метод to_json, а потом попробовать отобразить ее
30
+ то получится что то невразумительное.Данный метод исправляет проблему. Пример
31
+ "тут русский текст".to_json(:russian=>true). По умолчанию russian == false
32
+ 2) json? - Проверка,является ли строка JSON'ом
33
+ 3. Класс EventMachine
34
+ Класс служит для подписывания на события и выполнения кода по выполнении этих событий.
35
+ Пример с подписыванием на событие after_initialize можно посмотреть helpful_utils.rb
36
+ 4. Другие утилиты для падчинга можно посмотреть в helpful_utils\patching_utils
37
+ 5. Кастомные названия для полей моделей(по мотивам
38
+ http://rubybrothers.ru/2008/9/9/custom-attributes-names-for-rails-validations) - это для тех кто ниже Rails 2.3.* ветки сидит
data/Rakefile CHANGED
@@ -1,22 +1,22 @@
1
- require "echoe"
2
-
3
- Echoe.new( "helpful_utils" ) do |p|
4
- p.author = [ "Ilya Vesov","Anatoly Lapshin"]
5
- p.summary = "collection of helpful utils,hacks , etc"
6
- p.email = "strikeroff@gmail.com"
7
- p.url = "http://github.com/strikeroff/helpful_utils"
8
-
9
- p.runtime_dependencies = ['activesupport']
10
- p.development_dependencies = []
11
-
12
- p.need_tar_gz = false
13
- p.retain_gemspec = true
14
- p.gemspec_name = 'heplful_utils.gemspec'
15
- p.test_pattern = ["test/**/*_test.rb"]
16
-
17
- p.clean_pattern.push 'lib/*-*'
18
- p.has_rdoc = true
19
- p.rdoc_pattern = ["README", "CHANGELOG", "lib/**/*.rb"]
20
- p.rdoc_options << "-c utf-8"
21
- p.ignore_pattern = [".gitignore", "doc", "examples", ".idea", "coverage.data", "*.bat"]
1
+ require "echoe"
2
+
3
+ Echoe.new( "strikeroff-helpful_utils" ) do |p|
4
+ p.author = [ "Ilya Vesov","Anatoly Lapshin"]
5
+ p.summary = "collection of helpful utils,hacks , etc"
6
+ p.email = "strikeroff@gmail.com"
7
+ p.url = "http://github.com/strikeroff/helpful_utils"
8
+
9
+ p.runtime_dependencies = ['activesupport']
10
+ p.development_dependencies = []
11
+
12
+ p.need_tar_gz = false
13
+ p.retain_gemspec = true
14
+ p.gemspec_name = 'heplful_utils.gemspec'
15
+ p.test_pattern = ["test/**/*_test.rb"]
16
+
17
+ p.clean_pattern.push 'lib/*-*'
18
+ p.has_rdoc = true
19
+ p.rdoc_pattern = ["README", "CHANGELOG", "lib/**/*.rb"]
20
+ p.rdoc_options << "-c utf-8"
21
+ p.ignore_pattern = [".gitignore", "doc", "examples", ".idea", "coverage.data", "*.bat"]
22
22
  end
@@ -1,34 +1,33 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- Gem::Specification.new do |s|
4
- s.name = %q{helpful_utils}
5
- s.version = "0.0.1"
6
-
7
- s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Ilya Vesov, Anatoly Lapshin"]
9
- s.date = %q{2009-09-14}
10
- s.description = %q{collection of helpful utils,hacks , etc}
11
- s.email = %q{strikeroff@gmail.com}
12
- s.extra_rdoc_files = ["CHANGELOG", "README", "lib/helpful_utils.rb", "lib/helpful_utils/activerecord_ext/humanized_attributes.rb", "lib/helpful_utils/common/configuration.rb", "lib/helpful_utils/core_ext/array.rb", "lib/helpful_utils/core_ext/hash.rb", "lib/helpful_utils/core_ext/kernel.rb", "lib/helpful_utils/core_ext/string.rb", "lib/helpful_utils/patching_utils/event_machine.rb", "lib/helpful_utils/patching_utils/inheritance_tree.rb"]
13
- s.files = ["CHANGELOG", "gem-build.sh", "heplful_utils.gemspec", "Manifest", "Rakefile", "README", "lib/helpful_utils.rb", "lib/helpful_utils/activerecord_ext/humanized_attributes.rb", "lib/helpful_utils/common/configuration.rb", "lib/helpful_utils/core_ext/array.rb", "lib/helpful_utils/core_ext/hash.rb", "lib/helpful_utils/core_ext/kernel.rb", "lib/helpful_utils/core_ext/string.rb", "lib/helpful_utils/patching_utils/event_machine.rb", "lib/helpful_utils/patching_utils/inheritance_tree.rb", "test/core_tests.rb"]
14
- s.has_rdoc = true
15
- s.homepage = %q{http://github.com/strikeroff/helpful_utils}
16
- s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Helpful_utils", "--main", "README", "-c utf-8"]
17
- s.require_paths = ["lib"]
18
- s.rubyforge_project = %q{helpful_utils}
19
- s.rubygems_version = %q{1.3.1}
20
- s.summary = %q{collection of helpful utils,hacks , etc}
21
-
22
- if s.respond_to? :specification_version then
23
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
24
- s.specification_version = 2
25
-
26
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
27
- s.add_runtime_dependency(%q<activesupport>, [">= 0"])
28
- else
29
- s.add_dependency(%q<activesupport>, [">= 0"])
30
- end
31
- else
32
- s.add_dependency(%q<activesupport>, [">= 0"])
33
- end
34
- end
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{strikeroff-helpful_utils}
5
+ s.version = "0.0.3"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Ilya Vesov, Anatoly Lapshin"]
9
+ s.date = %q{2009-10-27}
10
+ s.description = %q{collection of helpful utils,hacks , etc}
11
+ s.email = %q{strikeroff@gmail.com}
12
+ s.extra_rdoc_files = ["CHANGELOG", "lib/helpful_utils/activerecord_ext/humanized_attributes.rb", "lib/helpful_utils/common/configuration.rb", "lib/helpful_utils/core_ext/array.rb", "lib/helpful_utils/core_ext/hash.rb", "lib/helpful_utils/core_ext/kernel.rb", "lib/helpful_utils/core_ext/string.rb", "lib/helpful_utils/patching_utils/event_machine.rb", "lib/helpful_utils/patching_utils/inheritance_tree.rb", "lib/helpful_utils.rb", "README"]
13
+ s.files = ["CHANGELOG", "gem-build.sh", "heplful_utils.gemspec", "lib/helpful_utils/activerecord_ext/humanized_attributes.rb", "lib/helpful_utils/common/configuration.rb", "lib/helpful_utils/core_ext/array.rb", "lib/helpful_utils/core_ext/hash.rb", "lib/helpful_utils/core_ext/kernel.rb", "lib/helpful_utils/core_ext/string.rb", "lib/helpful_utils/patching_utils/event_machine.rb", "lib/helpful_utils/patching_utils/inheritance_tree.rb", "lib/helpful_utils.rb", "Manifest", "Rakefile", "README", "test/core_tests.rb"]
14
+ s.homepage = %q{http://github.com/strikeroff/helpful_utils}
15
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Strikeroff-helpful_utils", "--main", "README", "-c utf-8"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = %q{strikeroff-helpful_utils}
18
+ s.rubygems_version = %q{1.3.5}
19
+ s.summary = %q{collection of helpful utils,hacks , etc}
20
+
21
+ if s.respond_to? :specification_version then
22
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
+ s.specification_version = 3
24
+
25
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
26
+ s.add_runtime_dependency(%q<activesupport>, [">= 0"])
27
+ else
28
+ s.add_dependency(%q<activesupport>, [">= 0"])
29
+ end
30
+ else
31
+ s.add_dependency(%q<activesupport>, [">= 0"])
32
+ end
33
+ end
data/lib/helpful_utils.rb CHANGED
@@ -1,26 +1,29 @@
1
- require File.join(File.dirname(__FILE__), "helpful_utils", "common", "configuration")
2
-
3
-
4
- Dir[File.join(File.dirname(__FILE__), "helpful_utils", "patching_utils")<<"/*.rb"].each do |file|
5
- require file
6
- end
7
-
8
- # Some files need to be required after iitialize
9
- Rails::Initializer.class_eval do
10
- def after_initialize_with_helpful_utils
11
- HelpfulUtils::EventMachine.after_initialize_with_helpful_utils
12
- after_initialize_without_helpful_utils
13
- end
14
- alias_method_chain :after_initialize, :helpful_utils
15
- end
16
-
17
- HelpfulUtils::EventMachine.subscribe :after_initialize_with_helpful_utils do
18
-
19
- Dir[File.join(File.dirname(__FILE__), "helpful_utils", "core_ext")<<"/*.rb"].each do |file|
20
- require file
21
- end
22
-
23
- require File.join(File.dirname(__FILE__), "helpful_utils", "activerecord_ext", "humanized_attributes.rb")
24
-
25
-
1
+ require File.join(File.dirname(__FILE__), "helpful_utils", "common", "configuration")
2
+
3
+
4
+ Dir[File.join(File.dirname(__FILE__), "helpful_utils", "patching_utils")<<"/*.rb"].each do |file|
5
+ require file
6
+ end
7
+
8
+ # Some files need to be required after iitialize
9
+ Rails::Initializer.class_eval do
10
+ def after_initialize_with_helpful_utils
11
+ HelpfulUtils::EventMachine.after_initialize_with_helpful_utils
12
+ after_initialize_without_helpful_utils
13
+ end
14
+ alias_method_chain :after_initialize, :helpful_utils
15
+ end
16
+
17
+ HelpfulUtils::EventMachine.subscribe :after_initialize_with_helpful_utils do
18
+
19
+ Dir[File.join(File.dirname(__FILE__), "helpful_utils", "core_ext")<<"/*.rb"].each do |file|
20
+ require file
21
+ end
22
+ ma, mi, ti = ActiveRecord::VERSION::MAJOR, ActiveRecord::VERSION::MINOR, ActiveRecord::VERSION::TINY
23
+
24
+ unless (ma >= 2 || mi >= 3 )
25
+ require File.join(File.dirname(__FILE__), "helpful_utils", "activerecord_ext", "humanized_attributes.rb")
26
+ end
27
+
28
+
26
29
  end
@@ -1,10 +1,10 @@
1
- class ActiveRecord::Base
2
- def self.human_attribute_name(attribute_key_name)
3
- default = attribute_key_name.humanize
4
- if self.const_defined?('HUMANIZED_ATTRIBUTES')
5
- self.const_get('HUMANIZED_ATTRIBUTES')[attribute_key_name.to_sym] || default
6
- else
7
- default
8
- end
9
- end
1
+ class ActiveRecord::Base
2
+ def self.human_attribute_name(attribute_key_name)
3
+ default = attribute_key_name.humanize
4
+ if self.const_defined?('HUMANIZED_ATTRIBUTES')
5
+ self.const_get('HUMANIZED_ATTRIBUTES')[attribute_key_name.to_sym] || default
6
+ else
7
+ default
8
+ end
9
+ end
10
10
  end
@@ -1,50 +1,50 @@
1
- class Configuration
2
- # Загрузка конфигурационных файлов в окружение Configuration из папки RAILS_ROOT/config/project(по умолчанию).
3
- # Для каждого найденного yaml файла в папке project мы производим загрузку в окружение.
4
- # Все это делается в целях удобства обращения к конфигурации.
5
- # Доступ к конфигам из проекта - Configuration.НАЗВАНИЕ_ФАЙЛА.КЛЮЧ
6
-
7
- cattr_accessor :path_to_config_dir
8
- @@path_to_config_dir = "#{::RAILS_ROOT}/config/project"
9
-
10
- def self.load_configurations
11
- if defined? ::RAILS_ROOT
12
- Dir["#{path_to_config_dir}/*.yaml"].each do |config_file|
13
- load_configuration_from_file(config_file)
14
- end
15
- end
16
-
17
- end
18
-
19
- def self.has?(config_name)
20
- self.method_defined? config_name
21
- end
22
-
23
-
24
- def self.load_configuration_from_file ( config_file )
25
- config = YAML.load_file( config_file )
26
- if config.instance_of? Hash
27
- attrs = []
28
- config.each_key { |key| attrs << key.to_sym } # извлекаем имена полей
29
- config_struct = Struct.new *attrs # создаем структуру с этими полями
30
- new_config = config_struct.new # создаем объект этой структуры
31
- config_struct.members.each do |attr_name| # инициализируем значения полей объекта
32
- new_config.send( "#{attr_name}=", config[attr_name] )
33
- end
34
- config = new_config # отображаем трансформацию в конфиг
35
- end
36
- attr_name = File.basename( config_file, ".yaml" )
37
-
38
- self.class_eval do
39
- cattr_accessor attr_name.to_sym # создаем в модуле аттрибут
40
- end
41
-
42
- self.send("#{attr_name}=", config)
43
- end
44
-
45
-
46
- end
47
-
48
-
49
- Configuration.load_configurations
50
-
1
+ class Configuration
2
+ # Загрузка конфигурационных файлов в окружение Configuration из папки RAILS_ROOT/config/project(по умолчанию).
3
+ # Для каждого найденного yaml файла в папке project мы производим загрузку в окружение.
4
+ # Все это делается в целях удобства обращения к конфигурации.
5
+ # Доступ к конфигам из проекта - Configuration.НАЗВАНИЕ_ФАЙЛА.КЛЮЧ
6
+
7
+ cattr_accessor :path_to_config_dir
8
+ @@path_to_config_dir = "#{::RAILS_ROOT}/config/project"
9
+
10
+ def self.load_configurations
11
+ if defined? ::RAILS_ROOT
12
+ Dir["#{path_to_config_dir}/*.yaml"].each do |config_file|
13
+ load_configuration_from_file(config_file)
14
+ end
15
+ end
16
+
17
+ end
18
+
19
+ def self.has?(config_name)
20
+ self.method_defined? config_name
21
+ end
22
+
23
+
24
+ def self.load_configuration_from_file ( config_file )
25
+ config = YAML.load_file( config_file )
26
+ if config.instance_of? Hash
27
+ attrs = []
28
+ config.each_key { |key| attrs << key.to_sym } # извлекаем имена полей
29
+ config_struct = Struct.new *attrs # создаем структуру с этими полями
30
+ new_config = config_struct.new # создаем объект этой структуры
31
+ config_struct.members.each do |attr_name| # инициализируем значения полей объекта
32
+ new_config.send( "#{attr_name}=", config[attr_name] )
33
+ end
34
+ config = new_config # отображаем трансформацию в конфиг
35
+ end
36
+ attr_name = File.basename( config_file, ".yaml" )
37
+
38
+ self.class_eval do
39
+ cattr_accessor attr_name.to_sym # создаем в модуле аттрибут
40
+ end
41
+
42
+ self.send("#{attr_name}=", config)
43
+ end
44
+
45
+
46
+ end
47
+
48
+
49
+ Configuration.load_configurations
50
+
@@ -1,22 +1,22 @@
1
- module HelpfulUtils
2
- module CoreExt
3
- module Array
4
- def clone_by_someway(value)
5
- return value if value.is_a?(Symbol)
6
- if value.respond_to?(:deep_clone)
7
- value.deep_clone
8
- else
9
- value.clone
10
- end
11
- end
12
-
13
- def deep_clone
14
- self.collect{|v| clone_by_someway(v)}
15
- end
16
- end
17
- end
18
- end
19
-
20
- class Array
21
- include HelpfulUtils::CoreExt::Array
1
+ module HelpfulUtils
2
+ module CoreExt
3
+ module Array
4
+ def clone_by_someway(value)
5
+ return value if value.is_a?(Symbol)
6
+ if value.respond_to?(:deep_clone)
7
+ value.deep_clone
8
+ else
9
+ value.clone
10
+ end
11
+ end
12
+
13
+ def deep_clone
14
+ self.collect{|v| clone_by_someway(v)}
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ class Array
21
+ include HelpfulUtils::CoreExt::Array
22
22
  end
@@ -1,27 +1,27 @@
1
- module HelpfulUtils
2
- module CoreExt
3
- module Hash
4
- def deep_clone
5
- hash = {}
6
- self.each_pair do |key, value|
7
- hash.merge!({clone_by_someway(key)=>clone_by_someway(value)})
8
- end
9
- hash
10
- end
11
-
12
- def clone_by_someway(value)
13
- return value if value.is_a?(Symbol)
14
- if value.respond_to?(:deep_clone)
15
- value.deep_clone
16
- else
17
- value.clone
18
- end
19
- end
20
- end
21
-
22
- end
23
- end
24
-
25
- class Hash
26
- include HelpfulUtils::CoreExt::Hash
1
+ module HelpfulUtils
2
+ module CoreExt
3
+ module Hash
4
+ def deep_clone
5
+ hash = {}
6
+ self.each_pair do |key, value|
7
+ hash.merge!({clone_by_someway(key)=>clone_by_someway(value)})
8
+ end
9
+ hash
10
+ end
11
+
12
+ def clone_by_someway(value)
13
+ return value if value.is_a?(Symbol)
14
+ if value.respond_to?(:deep_clone)
15
+ value.deep_clone
16
+ else
17
+ value.clone
18
+ end
19
+ end
20
+ end
21
+
22
+ end
23
+ end
24
+
25
+ class Hash
26
+ include HelpfulUtils::CoreExt::Hash
27
27
  end
@@ -1,27 +1,27 @@
1
- module Kernel # :nodoc:
2
- # Переключение области видимости на объект.
3
- # Использовать осторожно. Рекоммендуется применять, когда в коде идет несколько операций
4
- # над одним объектом. Таким образом следующий код:
5
- #
6
- # Gionet.contexts.set_context(:region, :volga)
7
- # Gionet.contexts.set_context(:site, "gionet.ru")
8
- # Gionet.contexts.set_context(:special, special_object)
9
- # p Gionet.contexts.slice
10
- # Gionet.contexts.run
11
- #
12
- # можно преобразовать в следующий:
13
- #
14
- # with Gionet.contexts do
15
- # set_context(:region, :volga)
16
- # set_context(:site, "gionet.ru")
17
- # set_context(:special, special_object)
18
- # p slice
19
- # run
20
- # end
21
- #
22
- # Внимание при использовании необходимо по причине того, что внутри блока происходит
23
- # смешивание областей видимости самого объекта и окружения из которого он вызывается.
24
- def with(object, &block)
25
- object.instance_eval &block
26
- end
27
- end
1
+ module Kernel # :nodoc:
2
+ # Переключение области видимости на объект.
3
+ # Использовать осторожно. Рекоммендуется применять, когда в коде идет несколько операций
4
+ # над одним объектом. Таким образом следующий код:
5
+ #
6
+ # Gionet.contexts.set_context(:region, :volga)
7
+ # Gionet.contexts.set_context(:site, "gionet.ru")
8
+ # Gionet.contexts.set_context(:special, special_object)
9
+ # p Gionet.contexts.slice
10
+ # Gionet.contexts.run
11
+ #
12
+ # можно преобразовать в следующий:
13
+ #
14
+ # with Gionet.contexts do
15
+ # set_context(:region, :volga)
16
+ # set_context(:site, "gionet.ru")
17
+ # set_context(:special, special_object)
18
+ # p slice
19
+ # run
20
+ # end
21
+ #
22
+ # Внимание при использовании необходимо по причине того, что внутри блока происходит
23
+ # смешивание областей видимости самого объекта и окружения из которого он вызывается.
24
+ def with(object, &block)
25
+ object.instance_eval &block
26
+ end
27
+ end
@@ -1,57 +1,57 @@
1
- module HelpfulUtils
2
- module CoreExt
3
- module String
4
-
5
- module JSON
6
- # Если вызывать у строки с русским текстом стандартный метод to_json, а потом попробовать отобразить ее
7
- # то получится что то невразумительное.Данный метод исправляет проблему. Пример
8
- # "тут русский текст".to_json(:russian=>true)
9
- # по умолчанию russian == false
10
- def to_json_with_russian_support(options = nil) #:nodoc:
11
- result = nil
12
- unless options.blank?
13
- if options[:russian]== true
14
- json = '"' + gsub(ActiveSupport::JSON::Encoding.escape_regex) { |s|
15
- ActiveSupport::JSON::Encoding::ESCAPED_CHARS[s]
16
- }
17
- json.force_encoding('ascii-8bit') if respond_to?(:force_encoding)
18
- result = json + '"'
19
- end
20
- end
21
- if result.blank?
22
- result = to_json_without_russian_support options
23
- end
24
- result
25
- end
26
-
27
- alias_method_chain :to_json, :russian_support
28
-
29
-
30
- # Проверка,является ли строка JSON'ом
31
- def json?
32
- return true if !self.blank? && ActiveSupport::JSON.decode(self).is_a?(Hash)
33
- rescue ActiveSupport::JSON::ParseError
34
- false
35
- end
36
- end
37
- module UrlHelpers
38
- # can raise URI::InvalidURIError
39
- # приводит строку к полноценному URL
40
- def to_url(prefix="http://")
41
- return nil if self.blank?
42
- if URI.parse(self).class != URI::HTTP
43
- "#{prefix}#{self.strip}"
44
- else
45
- self.dup
46
- end
47
- end
48
- end
49
- end
50
- end
51
- end
52
-
53
-
54
- class String
55
- include HelpfulUtils::CoreExt::String::JSON
56
- include HelpfulUtils::CoreExt::String::UrlHelpers
57
- end
1
+ module HelpfulUtils
2
+ module CoreExt
3
+ module String
4
+
5
+ module JSON
6
+ # Если вызывать у строки с русским текстом стандартный метод to_json, а потом попробовать отобразить ее
7
+ # то получится что то невразумительное.Данный метод исправляет проблему. Пример
8
+ # "тут русский текст".to_json(:russian=>true)
9
+ # по умолчанию russian == false
10
+ def to_json_with_russian_support(options = nil) #:nodoc:
11
+ result = nil
12
+ unless options.blank?
13
+ if options[:russian]== true
14
+ json = '"' + gsub(ActiveSupport::JSON::Encoding.escape_regex) { |s|
15
+ ActiveSupport::JSON::Encoding::ESCAPED_CHARS[s]
16
+ }
17
+ json.force_encoding('ascii-8bit') if respond_to?(:force_encoding)
18
+ result = json + '"'
19
+ end
20
+ end
21
+ if result.blank?
22
+ result = to_json_without_russian_support options
23
+ end
24
+ result
25
+ end
26
+
27
+ alias_method_chain :to_json, :russian_support
28
+
29
+
30
+ # Проверка,является ли строка JSON'ом
31
+ def json?
32
+ return true if !self.blank? && ActiveSupport::JSON.decode(self).is_a?(Hash)
33
+ rescue ActiveSupport::JSON::ParseError
34
+ false
35
+ end
36
+ end
37
+ module UrlHelpers
38
+ # can raise URI::InvalidURIError
39
+ # приводит строку к полноценному URL
40
+ def to_url(prefix="http://")
41
+ return nil if self.blank?
42
+ if URI.parse(self).class != URI::HTTP
43
+ "#{prefix}#{self.strip}"
44
+ else
45
+ self.dup
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+
54
+ class String
55
+ include HelpfulUtils::CoreExt::String::JSON
56
+ include HelpfulUtils::CoreExt::String::UrlHelpers
57
+ end
@@ -1,38 +1,38 @@
1
- module HelpfulUtils
2
- # Класс служит для подписывания на события и выполнения кода по выполнении этих событий.
3
- # Пример с подписыванием на событие after_initialize htkmcjd
4
- # Rails::Initializer.class_eval do
5
- # def after_initialize_with_helpful_utils
6
- # HelpfulUtils::EventMachine.after_initialize_with_helpful_utils
7
- # after_initialize_without_helpful_utils
8
- # end
9
- #
10
- # alias_method_chain :after_initialize, :helpful_utils
11
- # end
12
- #
13
- # HelpfulUtils::EventMachine.subscribe :after_initialize_with_helpful_utils do
14
- # require File.join(File.dirname(__FILE__), "helpful_utils", "activerecord_ext", "humanized_attributes.rb")
15
- # end
16
- # Feel free in use this tool,it's powerfull =)
17
-
18
-
19
-
20
- class EventMachine
21
- @@actions_and_blocks = {}
22
- # cattr_accessor :actions_and_blocks
23
- class << self
24
- def method_missing(method_symbol, *parameters)#:nodoc:
25
- if @@actions_and_blocks.has_key? method_symbol
26
- @@actions_and_blocks[method_symbol].each do |action|
27
- action.call *parameters
28
- end
29
- end
30
- end
31
-
32
- def subscribe(event_symbol, &block)
33
- @@actions_and_blocks[event_symbol] ||= []
34
- @@actions_and_blocks[event_symbol] << block
35
- end
36
- end
37
- end
1
+ module HelpfulUtils
2
+ # Класс служит для подписывания на события и выполнения кода по выполнении этих событий.
3
+ # Пример с подписыванием на событие after_initialize htkmcjd
4
+ # Rails::Initializer.class_eval do
5
+ # def after_initialize_with_helpful_utils
6
+ # HelpfulUtils::EventMachine.after_initialize_with_helpful_utils
7
+ # after_initialize_without_helpful_utils
8
+ # end
9
+ #
10
+ # alias_method_chain :after_initialize, :helpful_utils
11
+ # end
12
+ #
13
+ # HelpfulUtils::EventMachine.subscribe :after_initialize_with_helpful_utils do
14
+ # require File.join(File.dirname(__FILE__), "helpful_utils", "activerecord_ext", "humanized_attributes.rb")
15
+ # end
16
+ # Feel free in use this tool,it's powerfull =)
17
+
18
+
19
+
20
+ class EventMachine
21
+ @@actions_and_blocks = {}
22
+ # cattr_accessor :actions_and_blocks
23
+ class << self
24
+ def method_missing(method_symbol, *parameters)#:nodoc:
25
+ if @@actions_and_blocks.has_key? method_symbol
26
+ @@actions_and_blocks[method_symbol].each do |action|
27
+ action.call *parameters
28
+ end
29
+ end
30
+ end
31
+
32
+ def subscribe(event_symbol, &block)
33
+ @@actions_and_blocks[event_symbol] ||= []
34
+ @@actions_and_blocks[event_symbol] << block
35
+ end
36
+ end
37
+ end
38
38
  end
@@ -1,14 +1,14 @@
1
- module HelpfulUtils
2
- module InheritanceTree
3
- def objects
4
- class_objects = []
5
- ObjectSpace.each_object(self) {|e| class_objects << e }
6
- class_objects
7
- end
8
-
9
- def class_children
10
- (@class_objects ||= Class.objects).select {|e| e.superclass == self }
11
- end
12
- end
13
- end
14
- Module.send :include, HelpfulUtils::InheritanceTree
1
+ module HelpfulUtils
2
+ module InheritanceTree
3
+ def objects
4
+ class_objects = []
5
+ ObjectSpace.each_object(self) {|e| class_objects << e }
6
+ class_objects
7
+ end
8
+
9
+ def class_children
10
+ (@class_objects ||= Class.objects).select {|e| e.superclass == self }
11
+ end
12
+ end
13
+ end
14
+ Module.send :include, HelpfulUtils::InheritanceTree
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strikeroff-helpful_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ilya Vesov, Anatoly Lapshin
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-14 00:00:00 -07:00
12
+ date: 2009-10-27 00:00:00 +04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -30,8 +30,6 @@ extensions: []
30
30
 
31
31
  extra_rdoc_files:
32
32
  - CHANGELOG
33
- - README
34
- - lib/helpful_utils.rb
35
33
  - lib/helpful_utils/activerecord_ext/humanized_attributes.rb
36
34
  - lib/helpful_utils/common/configuration.rb
37
35
  - lib/helpful_utils/core_ext/array.rb
@@ -40,14 +38,12 @@ extra_rdoc_files:
40
38
  - lib/helpful_utils/core_ext/string.rb
41
39
  - lib/helpful_utils/patching_utils/event_machine.rb
42
40
  - lib/helpful_utils/patching_utils/inheritance_tree.rb
41
+ - lib/helpful_utils.rb
42
+ - README
43
43
  files:
44
44
  - CHANGELOG
45
45
  - gem-build.sh
46
46
  - heplful_utils.gemspec
47
- - Manifest
48
- - Rakefile
49
- - README
50
- - lib/helpful_utils.rb
51
47
  - lib/helpful_utils/activerecord_ext/humanized_attributes.rb
52
48
  - lib/helpful_utils/common/configuration.rb
53
49
  - lib/helpful_utils/core_ext/array.rb
@@ -56,15 +52,21 @@ files:
56
52
  - lib/helpful_utils/core_ext/string.rb
57
53
  - lib/helpful_utils/patching_utils/event_machine.rb
58
54
  - lib/helpful_utils/patching_utils/inheritance_tree.rb
55
+ - lib/helpful_utils.rb
56
+ - Manifest
57
+ - Rakefile
58
+ - README
59
59
  - test/core_tests.rb
60
60
  has_rdoc: true
61
61
  homepage: http://github.com/strikeroff/helpful_utils
62
+ licenses: []
63
+
62
64
  post_install_message:
63
65
  rdoc_options:
64
66
  - --line-numbers
65
67
  - --inline-source
66
68
  - --title
67
- - Helpful_utils
69
+ - Strikeroff-helpful_utils
68
70
  - --main
69
71
  - README
70
72
  - -c utf-8
@@ -84,10 +86,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
86
  version:
85
87
  requirements: []
86
88
 
87
- rubyforge_project: helpful_utils
88
- rubygems_version: 1.2.0
89
+ rubyforge_project: strikeroff-helpful_utils
90
+ rubygems_version: 1.3.5
89
91
  signing_key:
90
- specification_version: 2
92
+ specification_version: 3
91
93
  summary: collection of helpful utils,hacks , etc
92
94
  test_files: []
93
95