strip_control_chars 1.1 → 2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -23,14 +23,24 @@ your database.
23
23
 
24
24
  === Installation
25
25
 
26
- Option 1. Load the plugin as a gem
26
+ 1. On rails 2.3
27
27
 
28
- gem install strip_control_chars
29
- add "config.gem 'strip_control_chars'" to your environment.rb
28
+ * gem install strip_control_chars
29
+ * add the following to your environment.rb
30
30
 
31
- Option 2. Use the standard Rails plugin install (assuming Rails >= 2.1).
31
+ config.gem 'strip_control_chars', version => "1.0"
32
32
 
33
- ./script/plugin install git://github.com/yob/strip_control_chars.git
33
+ 2. On rails 3
34
+
35
+ * gem install strip_control_chars
36
+ * add the following to your Gemfile
37
+
38
+ gem 'strip_control_chars', ">=2.0"
39
+
40
+ === Compatibility
41
+
42
+ On rails 2.x you must use version 1.x of this gem. On rails 3.x you must use
43
+ version 2.x of this gem.
34
44
 
35
45
  === Caveats
36
46
 
@@ -1,35 +1,2 @@
1
- module StripControlChars
2
- # Strips ASCII control chars from attributes before they get saved
3
- def strip_control_chars!(options = nil)
4
- before_validation do |record|
5
- attributes = StripControlChars.narrow(record.attributes, options)
6
- attributes.each do |attr, value|
7
- if value.respond_to?(:tr)
8
- value = value.tr("\x00\x01\x02\x03\x04\x05\x06\x07\x08"," ")
9
- value = value.tr("\x0B\x0C\x0E\x0F\x10\x11\x12\x13\x14"," ")
10
- value = value.tr("\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D"," ")
11
- value = value.tr("\x1E\x1F"," ")
12
- record[attr] = value
13
- end
14
- end
15
- end
16
- end
17
-
18
- # Necessary because Rails has removed the narrowing of attributes using :only
19
- # and :except on Base#attributes
20
- def self.narrow(attributes, options)
21
- if options.nil?
22
- attributes
23
- else
24
- if except = options[:except]
25
- except = Array(except).collect { |attribute| attribute.to_s }
26
- attributes.except(*except)
27
- elsif only = options[:only]
28
- only = Array(only).collect { |attribute| attribute.to_s }
29
- attributes.slice(*only)
30
- else
31
- raise ArgumentError, "Options does not specify :except or :only (#{options.keys.inspect})"
32
- end
33
- end
34
- end
35
- end
1
+ require 'strip_control_chars/ar_extend'
2
+ require 'strip_control_chars/railtie'
@@ -0,0 +1,37 @@
1
+ module StripControlChars
2
+ module ArExtend
3
+ # Strips ASCII control chars from attributes before they get saved
4
+ def strip_control_chars!(options = nil)
5
+ before_validation do |record|
6
+ attributes = StripControlChars::ArExtend.narrow(record.attributes, options)
7
+ attributes.each do |attr, value|
8
+ if value.respond_to?(:tr)
9
+ value = value.tr("\x00\x01\x02\x03\x04\x05\x06\x07\x08"," ")
10
+ value = value.tr("\x0B\x0C\x0E\x0F\x10\x11\x12\x13\x14"," ")
11
+ value = value.tr("\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D"," ")
12
+ value = value.tr("\x1E\x1F"," ")
13
+ record[attr] = value
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ # Necessary because Rails has removed the narrowing of attributes using :only
20
+ # and :except on Base#attributes
21
+ def self.narrow(attributes, options)
22
+ if options.nil?
23
+ attributes
24
+ else
25
+ if except = options[:except]
26
+ except = Array(except).collect { |attribute| attribute.to_s }
27
+ attributes.except(*except)
28
+ elsif only = options[:only]
29
+ only = Array(only).collect { |attribute| attribute.to_s }
30
+ attributes.slice(*only)
31
+ else
32
+ raise ArgumentError, "Options does not specify :except or :only (#{options.keys.inspect})"
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,15 @@
1
+ require 'strip_control_chars'
2
+ require 'rails'
3
+
4
+ module StripControlChars
5
+ class Railtie < Rails::Railtie
6
+
7
+ initializer "strip_control_chars.active_record" do |app|
8
+ if defined?(::ActiveRecord)
9
+ ::ActiveRecord::Base.extend(StripControlChars::ArExtend)
10
+
11
+ end
12
+ end
13
+
14
+ end
15
+ end
@@ -5,10 +5,11 @@ require 'active_record'
5
5
  PLUGIN_ROOT = File.expand_path(File.join(File.dirname(__FILE__), ".."))
6
6
 
7
7
  $LOAD_PATH.unshift "#{PLUGIN_ROOT}/lib"
8
- require "#{PLUGIN_ROOT}/init"
8
+ require 'strip_control_chars'
9
9
 
10
10
  class ActiveRecord::Base
11
11
  alias_method :save, :valid?
12
+ extend StripControlChars::ArExtend
12
13
  def self.columns()
13
14
  @columns ||= []
14
15
  end
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strip_control_chars
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 3
5
5
  prerelease: false
6
6
  segments:
7
- - 1
8
- - 1
9
- version: "1.1"
7
+ - 2
8
+ - 0
9
+ version: "2.0"
10
10
  platform: ruby
11
11
  authors:
12
12
  - James Healy
@@ -23,13 +23,15 @@ dependencies:
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
24
  none: false
25
25
  requirements:
26
- - - <=
26
+ - - ">="
27
27
  - !ruby/object:Gem::Version
28
- hash: 197
28
+ hash: 7712042
29
29
  segments:
30
- - 2
31
- - 99
32
- version: "2.99"
30
+ - 3
31
+ - 0
32
+ - 0
33
+ - rc
34
+ version: 3.0.0.rc
33
35
  type: :runtime
34
36
  version_requirements: *id001
35
37
  description: a small ActiveRecord plugin that removes ASCII control chars from attributes
@@ -41,16 +43,16 @@ extensions: []
41
43
  extra_rdoc_files: []
42
44
 
43
45
  files:
44
- - init.rb
45
- - rails/init.rb
46
46
  - lib/strip_control_chars.rb
47
+ - lib/strip_control_chars/ar_extend.rb
48
+ - lib/strip_control_chars/railtie.rb
47
49
  - Rakefile
48
50
  - MIT-LICENSE
49
51
  - README.rdoc
50
52
  - test/strip_control_chars_test.rb
51
53
  - test/test_helper.rb
52
54
  has_rdoc: true
53
- homepage: http://github.com/yob/strip_control_chars/tree/master
55
+ homepage: http://github.com/yob/strip_control_chars
54
56
  licenses: []
55
57
 
56
58
  post_install_message:
data/init.rb DELETED
@@ -1,2 +0,0 @@
1
- require 'strip_control_chars'
2
- ActiveRecord::Base.extend(StripControlChars)
@@ -1,2 +0,0 @@
1
- require 'strip_control_chars'
2
- ActiveRecord::Base.extend(StripControlChars)