coder 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -18,5 +18,6 @@ Gem::Specification.new do |gem|
18
18
  gem.require_paths = ["lib"]
19
19
 
20
20
  gem.add_development_dependency("rspec", "~> 2.11")
21
+ gem.add_development_dependency("activesupport", "~> 3.2")
21
22
  gem.add_development_dependency("rake")
22
23
  end
@@ -2,6 +2,8 @@ require 'coder/version'
2
2
  require 'coder/cleaner'
3
3
  require 'coder/error'
4
4
 
5
+ require 'coder/ext/active_support' if defined? ActiveSupport
6
+
5
7
  module Coder
6
8
  extend self
7
9
  DEFAULT_ENCODING = 'UTF-8'
@@ -0,0 +1,12 @@
1
+ require 'active_support/json/encoding'
2
+
3
+ module ActiveSupport::JSON::Encoding
4
+ def self.escape(string)
5
+ json = Coder.force_encoding!(Coder.clean(string), 'binary')
6
+ json.gsub!(escape_regex) { |s| ESCAPED_CHARS[s] }
7
+ json.gsub! /([\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3})+/nx do |s|
8
+ s.unpack("U*").pack("n*").unpack("H*")[0].gsub(/.{4}/n, '\\\\u\&')
9
+ end
10
+ Coder.force_encoding!(%("#{json}"))
11
+ end
12
+ end
@@ -1,3 +1,3 @@
1
1
  module Coder
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -0,0 +1,18 @@
1
+ # encoding: UTF-8
2
+ require 'spec_helper'
3
+ require 'coder/ext/active_support'
4
+
5
+ describe ActiveSupport::JSON do
6
+ it 'still escapes unicode properly' do
7
+ ActiveSupport::JSON.encode('€2.99').should be == '"\\u20ac2.99"'
8
+ end
9
+
10
+ it 'still encodes unicode properly' do
11
+ ActiveSupport::JSON.encode('€2.99').encoding.should be == Encoding::UTF_8
12
+ end if defined? Encoding::UTF_8
13
+
14
+ it 'actually uses Coder internally' do
15
+ Coder.should_receive(:clean).with('€2.99').and_return('€2.99')
16
+ ActiveSupport::JSON.encode('€2.99')
17
+ end
18
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-25 00:00:00.000000000 Z
12
+ date: 2012-09-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -27,6 +27,22 @@ dependencies:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
29
  version: '2.11'
30
+ - !ruby/object:Gem::Dependency
31
+ name: activesupport
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '3.2'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '3.2'
30
46
  - !ruby/object:Gem::Dependency
31
47
  name: rake
32
48
  requirement: !ruby/object:Gem::Requirement
@@ -67,9 +83,11 @@ files:
67
83
  - lib/coder/cleaner/simple/byte_buffer.rb
68
84
  - lib/coder/cleaner/simple/encodings.rb
69
85
  - lib/coder/error.rb
86
+ - lib/coder/ext/active_support.rb
70
87
  - lib/coder/version.rb
71
88
  - spec/coder/cleaner_spec.rb
72
89
  - spec/coder_spec.rb
90
+ - spec/ext/active_support_spec.rb
73
91
  - spec/spec_helper.rb
74
92
  - spec/support/binary_matcher.rb
75
93
  - spec/support/clean_helpers.rb
@@ -100,6 +118,7 @@ summary: library to handle encodings
100
118
  test_files:
101
119
  - spec/coder/cleaner_spec.rb
102
120
  - spec/coder_spec.rb
121
+ - spec/ext/active_support_spec.rb
103
122
  - spec/spec_helper.rb
104
123
  - spec/support/binary_matcher.rb
105
124
  - spec/support/clean_helpers.rb