salesforce_id 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 [](https://travis-ci.org/Fire-Dragon-DoL/salesforce_id.svg?branch=master) [](https://codeclimate.com/github/Fire-Dragon-DoL/salesforce_id) [](https://codeclimate.com/github/Fire-Dragon-DoL/salesforce_id/coverage)
|
1
|
+
# SalesforceId [](https://travis-ci.org/Fire-Dragon-DoL/salesforce_id.svg?branch=master) [](https://codeclimate.com/github/Fire-Dragon-DoL/salesforce_id) [](https://codeclimate.com/github/Fire-Dragon-DoL/salesforce_id/coverage) [](https://badge.fury.io/rb/salesforce_id)
|
2
|
+
|
3
|
+
[](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
|