salesforce_id 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +33 -1
- data/lib/salesforce_id.rb +8 -0
- data/lib/salesforce_id/safe.rb +67 -0
- data/lib/salesforce_id/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc150f154ee214c5bd79aabbffc61d075dce6b14
|
4
|
+
data.tar.gz: f381ee50f307f0002b6e115986c518a929b7238e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f8af02768f5bb532fa7b23d8f7dbe0dc97747cea93b88e507503422c03f41e168732e7fb2a62d4a5fc552c78a71bc65ea571dd04e52db000509ed038c687b80
|
7
|
+
data.tar.gz: 1deb2b58d231d7efe7cbf5915cb5a1da3fae4371dd57eb87e66ac1cb1f63d09ddc51ad7e007813df9f1d23e566f6f3a059d92bad211ee6ba7fc5a53674ba39b0
|
data/README.md
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
# SalesforceId [![Build Status](https://api.travis-ci.org/plataformatec/devise.svg?branch=master)](https://travis-ci.org/Fire-Dragon-DoL/salesforce_id.svg?branch=master) [![Code Climate](https://codeclimate.com/github/Fire-Dragon-DoL/salesforce_id/badges/gpa.svg)](https://codeclimate.com/github/Fire-Dragon-DoL/salesforce_id) [![Test Coverage](https://codeclimate.com/github/Fire-Dragon-DoL/salesforce_id/badges/coverage.svg)](https://codeclimate.com/github/Fire-Dragon-DoL/salesforce_id/coverage)
|
1
|
+
# SalesforceId [![Build Status](https://api.travis-ci.org/plataformatec/devise.svg?branch=master)](https://travis-ci.org/Fire-Dragon-DoL/salesforce_id.svg?branch=master) [![Code Climate](https://codeclimate.com/github/Fire-Dragon-DoL/salesforce_id/badges/gpa.svg)](https://codeclimate.com/github/Fire-Dragon-DoL/salesforce_id) [![Test Coverage](https://codeclimate.com/github/Fire-Dragon-DoL/salesforce_id/badges/coverage.svg)](https://codeclimate.com/github/Fire-Dragon-DoL/salesforce_id/coverage) [![Gem Version](https://badge.fury.io/rb/salesforce_id.svg)](https://badge.fury.io/rb/salesforce_id)
|
2
|
+
|
3
|
+
[![Join the chat at https://gitter.im/Fire-Dragon-DoL/salesforce_id](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Fire-Dragon-DoL/salesforce_id?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
2
4
|
|
3
5
|
Gem to properly convert from and to 15 characters case sensitive format and
|
4
6
|
18 characters case insensitive format for salesforce record ID.
|
@@ -55,6 +57,36 @@ SalesforceId.insensitive?(id15) # => false
|
|
55
57
|
SalesforceId.insensitive?(nil) # => false
|
56
58
|
```
|
57
59
|
|
60
|
+
There is also a simple class that is a [value object](http://www.sitepoint.com/value-objects-explained-with-ruby/) which can be used in the following way:
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
id = SalesforceId::Safe.new("003G000001SUbc4")
|
64
|
+
# Or shorter version
|
65
|
+
id = SalesforceId.id("003G000001SUbc4")
|
66
|
+
# It doesn't instanciate a new object if a `SalesforceId::Safe` is passed
|
67
|
+
id2 = SalesforceId.id(id)
|
68
|
+
id.equal?(id2) # => true
|
69
|
+
|
70
|
+
# It provides a few nice methods
|
71
|
+
id3 = SalesforceId.id("004A000002SUbc4IAD")
|
72
|
+
|
73
|
+
# It always handles everything in case-insensitive repaired casing format
|
74
|
+
id.to_s == "003G000001SUbc4IAD" # => true
|
75
|
+
|
76
|
+
# It can be compared with other ids
|
77
|
+
id == id3 # => false
|
78
|
+
id == id # => true
|
79
|
+
|
80
|
+
# It can be converted to JSON
|
81
|
+
id.to_json # => "003G000001SUbc4IAD"
|
82
|
+
|
83
|
+
# It can be converted to case-sensitive format
|
84
|
+
id.to_sensitive # => "003G000001SUbc4"
|
85
|
+
|
86
|
+
# It can be converted to case-insensitive format
|
87
|
+
id.to_insensitive # => "003G000001SUbc4IAD"
|
88
|
+
```
|
89
|
+
|
58
90
|
## Documentation
|
59
91
|
|
60
92
|
Methods are documented in [salesforce_id_ext.h](https://github.com/Fire-Dragon-DoL/salesforce_id/blob/master/ext/salesforce_id/salesforce_id_ext.h), this file is
|
data/lib/salesforce_id.rb
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
require 'salesforce_id/version'
|
2
2
|
require 'salesforce_id/salesforce_id'
|
3
|
+
require 'salesforce_id/safe'
|
3
4
|
|
4
5
|
module SalesforceId
|
5
6
|
extend self
|
7
|
+
|
8
|
+
def id(salesforce_id)
|
9
|
+
return salesforce_id if salesforce_id.kind_of?(::SalesforceId::Safe)
|
10
|
+
|
11
|
+
::SalesforceId::Safe.new(salesforce_id)
|
12
|
+
end
|
13
|
+
|
6
14
|
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'salesforce_id'
|
2
|
+
require 'salesforce_id/safe'
|
3
|
+
|
4
|
+
module SalesforceId
|
5
|
+
|
6
|
+
# Rapresents a salesforce id as an object allowing for comparison and usage
|
7
|
+
# in a safe fashion thanks to using fixed format. Internally will store and
|
8
|
+
# keep any salesforce id using the case-insensitive format but with repaired
|
9
|
+
# casing, which should offer maximum safety
|
10
|
+
class Safe
|
11
|
+
include Comparable
|
12
|
+
|
13
|
+
# @param id [String] valid salesforce id
|
14
|
+
def initialize(id)
|
15
|
+
id = id.to_s
|
16
|
+
|
17
|
+
unless ::SalesforceId.valid?(id)
|
18
|
+
raise ArgumentError, "Salesforce ID not valid"
|
19
|
+
end
|
20
|
+
|
21
|
+
@value = SalesforceId.to_insensitive(id.dup).freeze
|
22
|
+
end
|
23
|
+
|
24
|
+
# @return [String] text composing salesforce id, string is **frozen**
|
25
|
+
def to_s
|
26
|
+
value
|
27
|
+
end
|
28
|
+
|
29
|
+
def as_json(*args)
|
30
|
+
to_s
|
31
|
+
end
|
32
|
+
|
33
|
+
# In JSON format, it's a plain string
|
34
|
+
def to_json(*args)
|
35
|
+
as_json
|
36
|
+
end
|
37
|
+
|
38
|
+
# Comparison with string is avoided because otherwise either it needed to
|
39
|
+
# allocate a salesforce id or it would fail if not in case insensitive
|
40
|
+
# format
|
41
|
+
# @param other [SalesforceId::Safe]
|
42
|
+
def <=>(other)
|
43
|
+
return nil unless other.kind_of?(self.class)
|
44
|
+
|
45
|
+
to_s <=> other.to_s
|
46
|
+
end
|
47
|
+
|
48
|
+
# @return [String] salesforce id in case-sensitive format, string is **not**
|
49
|
+
# frozen
|
50
|
+
def to_sensitive
|
51
|
+
SalesforceId.to_sensitive(value)
|
52
|
+
end
|
53
|
+
|
54
|
+
# @return [String] salesforce id in case-insensitive format, string is
|
55
|
+
# **not** frozen
|
56
|
+
def to_insensitive
|
57
|
+
to_s.dup
|
58
|
+
end
|
59
|
+
|
60
|
+
protected
|
61
|
+
|
62
|
+
# Internal value of salesforce safe id
|
63
|
+
attr_reader :value
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: salesforce_id
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fire-Dragon-DoL
|
@@ -150,6 +150,7 @@ files:
|
|
150
150
|
- ext/salesforce_id/validate_id.c
|
151
151
|
- ext/salesforce_id/validate_id.h
|
152
152
|
- lib/salesforce_id.rb
|
153
|
+
- lib/salesforce_id/safe.rb
|
153
154
|
- lib/salesforce_id/version.rb
|
154
155
|
- salesforce_id.gemspec
|
155
156
|
homepage: https://github.com/Fire-Dragon-DoL/salesforce_id
|