pragmatic_context 0.1.7 → 0.2.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 198aee0dbd9458b89f2b3f0a18e0473bd058ac3f
|
4
|
+
data.tar.gz: 62e51d0200e8ac82ada1e4c3a93bd2449a7aca15
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3819155b979530ae7858722b3ab46e27715358a316654356c99a2f6fc22ee4b6605645fef44c4d637b2397eafd76d5480467176d6cd23d338939fbd39f19215
|
7
|
+
data.tar.gz: 17da90b44683b519f69594cf975941a53e6f555b8abd34754496ed480a2d29af79eafbf417f104b58f0d789326574dca34d954fb24c77516a9ebe0da89bc2976
|
@@ -9,6 +9,7 @@ module PragmaticContext
|
|
9
9
|
module ClassMethods
|
10
10
|
attr_accessor :contextualizer
|
11
11
|
attr_accessor :contextualized_type
|
12
|
+
attr_accessor :context_id_factory
|
12
13
|
|
13
14
|
def contextualize_with(klass)
|
14
15
|
self.contextualizer = klass.new
|
@@ -24,6 +25,11 @@ module PragmaticContext
|
|
24
25
|
self.contextualized_type = type.nil? ? type : type.to_s
|
25
26
|
end
|
26
27
|
|
28
|
+
def contextualize_with_id(&block)
|
29
|
+
raise "contextualize_with_id must be called with a block" unless block_given?
|
30
|
+
self.context_id_factory = block
|
31
|
+
end
|
32
|
+
|
27
33
|
private
|
28
34
|
|
29
35
|
def setup_default_contextualizer
|
@@ -42,6 +48,7 @@ module PragmaticContext
|
|
42
48
|
terms_with_context = context.keys
|
43
49
|
json_results = as_json(opts).slice(*terms_with_context)
|
44
50
|
results = {}
|
51
|
+
results['@id'] = self.class.context_id_factory.call(self) if self.class.context_id_factory
|
45
52
|
results['@type'] = self.class.contextualized_type if self.class.contextualized_type
|
46
53
|
terms_with_context.each do |term|
|
47
54
|
# Don't use idiomatic case here since Mongoid relations return proxies
|
@@ -62,6 +62,18 @@ describe PragmaticContext::Contextualizable do
|
|
62
62
|
subject.contextualized_type.should eq "http://schema.org/Person"
|
63
63
|
end
|
64
64
|
end
|
65
|
+
|
66
|
+
describe 'contextualize_with_id' do
|
67
|
+
it 'should set the id_factory on the class' do
|
68
|
+
block =->(obj) {}
|
69
|
+
subject.contextualize_with_id &block
|
70
|
+
subject.context_id_factory.should eq block
|
71
|
+
end
|
72
|
+
|
73
|
+
after :each do
|
74
|
+
subject.context_id_factory = nil
|
75
|
+
end
|
76
|
+
end
|
65
77
|
end
|
66
78
|
|
67
79
|
describe 'included instance methods' do
|
@@ -76,6 +88,25 @@ describe PragmaticContext::Contextualizable do
|
|
76
88
|
end
|
77
89
|
|
78
90
|
describe 'as_jsonld' do
|
91
|
+
describe 'contextualize_with_id' do
|
92
|
+
it 'should call the block with the object instance as its only argument' do
|
93
|
+
@contextualizer.stub(:definitions_for_terms) { {} }
|
94
|
+
called = false
|
95
|
+
subject.class.contextualize_with_id do |obj|
|
96
|
+
obj.should eq subject
|
97
|
+
called = true
|
98
|
+
end
|
99
|
+
subject.as_jsonld
|
100
|
+
called.should eq true
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'should respond with @id if a factory block has been set' do
|
104
|
+
@contextualizer.stub(:definitions_for_terms) { {} }
|
105
|
+
subject.class.contextualize_with_id { |obj| 'http://bacon' }
|
106
|
+
subject.as_jsonld.should == { "@id" => "http://bacon", "@context" => {} }
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
79
110
|
it 'should respond with @type if it has been set' do
|
80
111
|
@contextualizer.stub(:definitions_for_terms) { {} }
|
81
112
|
subject.class.contextualize_as_type 'Food'
|