orthor 0.1.3 → 0.1.4
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.
- data/README.md +30 -6
- data/lib/orthor.rb +6 -9
- data/lib/orthor/templates.rb +3 -1
- data/lib/orthor_helper.rb +26 -0
- data/spec/orthor/templates_spec.rb +1 -1
- data/spec/orthor_spec.rb +12 -12
- metadata +20 -7
data/README.md
CHANGED
@@ -11,7 +11,7 @@ The Orthor gem is used to fetch and display your content from orthor.com
|
|
11
11
|
Add the below to a file and require it:
|
12
12
|
|
13
13
|
Orthor.setup do
|
14
|
-
site "orthor" # your orthor site
|
14
|
+
site "orthor" # your orthor site id
|
15
15
|
caching :basic_file, 300, :path => "tmp/" # cache content in tmp/ for 5 mins
|
16
16
|
end
|
17
17
|
|
@@ -19,29 +19,53 @@ You can specify any Moneta cache store you like, e.g. basic_file, memory, memcac
|
|
19
19
|
|
20
20
|
## Usage
|
21
21
|
|
22
|
+
The following with_orthor_* helper methods are defined in the OrthorHelper module. This is automatically included in ActionView::Base if you're in a Rails app.
|
23
|
+
|
22
24
|
#### Content
|
23
25
|
|
26
|
+
with_orthor_content("id") do
|
27
|
+
<h2>{{title}}</h2>
|
28
|
+
<span>{{published_on}}</span>
|
29
|
+
<div class="content">{{article_content}}</div>
|
30
|
+
end
|
31
|
+
|
32
|
+
OR
|
33
|
+
|
24
34
|
Orthor.content("id", :template_name)
|
25
35
|
|
26
36
|
#### Queries
|
27
37
|
|
38
|
+
with_orthor_query("id") do
|
39
|
+
<h2>{{title}}</h2>
|
40
|
+
<span>{{published_on}}</span>
|
41
|
+
<div class="content">{{article_content}}</div>
|
42
|
+
end
|
43
|
+
|
44
|
+
OR
|
45
|
+
|
28
46
|
Orthor.query("id", :template_name)
|
29
47
|
|
30
48
|
#### Categories
|
31
49
|
|
50
|
+
with_orthor_category("id") do
|
51
|
+
<h2>{{title}}</h2>
|
52
|
+
<span>{{published_on}}</span>
|
53
|
+
<div class="content">{{article_content}}</div>
|
54
|
+
end
|
55
|
+
|
56
|
+
OR
|
57
|
+
|
32
58
|
Orthor.category("id", :template_name)
|
33
59
|
|
34
60
|
#### Feeds
|
35
61
|
|
36
62
|
Orthor.feed("id")
|
37
63
|
|
38
|
-
The
|
39
|
-
|
40
|
-
If you do not provide a template_name to render your content with, you will get the parsed JSON back.
|
64
|
+
The second argument in the Orthor class methods is a symbol to indicate the name of a template (see below) to use to render the returned content. If you do not provide a template_name to render your content with, you will get the parsed JSON back.
|
41
65
|
|
42
66
|
## Templates
|
43
67
|
|
44
|
-
|
68
|
+
If you don't want to use the with_orthor_* helpers you can use named templates:
|
45
69
|
|
46
70
|
Orthor::Templates.define do
|
47
71
|
template :basic_content, %(<div>{{content}}</div>)
|
@@ -71,7 +95,7 @@ Orthor returns all of your content in JSON so to make the job of translating JSO
|
|
71
95
|
}
|
72
96
|
end
|
73
97
|
|
74
|
-
Now any call you make to Orthor.content/category/query can be given a 2nd argument of a template name and rather than receiving parsed JSON, you will be returned a HTML string.
|
98
|
+
Now any call you make to Orthor.content/category/query can be given a 2nd argument of a template name (or template mapping) as a symbol and rather than receiving parsed JSON, you will be returned a HTML string.
|
75
99
|
|
76
100
|
### Named template mappings
|
77
101
|
|
data/lib/orthor.rb
CHANGED
@@ -6,10 +6,11 @@ require 'json'
|
|
6
6
|
require 'net/http'
|
7
7
|
|
8
8
|
require 'orthor/templates'
|
9
|
+
require 'orthor_helper'
|
9
10
|
|
10
11
|
class Orthor
|
11
12
|
class << self
|
12
|
-
attr_accessor :cache, :cache_expiry, :
|
13
|
+
attr_accessor :cache, :cache_expiry, :site_id
|
13
14
|
end
|
14
15
|
|
15
16
|
def self.load_content
|
@@ -21,7 +22,7 @@ class Orthor
|
|
21
22
|
cat["content"].each { |item| content(item["id"]) } if cat["content"]
|
22
23
|
end
|
23
24
|
|
24
|
-
JSON.parse(get_response("/#{
|
25
|
+
JSON.parse(get_response("/#{site_id}.json")).each do |item|
|
25
26
|
if item["type"] == "category"
|
26
27
|
load_category[item["id"]]
|
27
28
|
else
|
@@ -59,12 +60,8 @@ class Orthor
|
|
59
60
|
self.cache_expiry = expiry
|
60
61
|
end
|
61
62
|
|
62
|
-
def self.account(id)
|
63
|
-
self.account_id = id
|
64
|
-
end
|
65
|
-
|
66
63
|
def self.site(id)
|
67
|
-
self.
|
64
|
+
self.site_id = id
|
68
65
|
end
|
69
66
|
|
70
67
|
def self.setup(&block)
|
@@ -76,12 +73,12 @@ class Orthor
|
|
76
73
|
|
77
74
|
private
|
78
75
|
def self.get(type, id)
|
79
|
-
raise "No orthor
|
76
|
+
raise "No orthor site given... Please add one to your Orthor setup block" unless site_id
|
80
77
|
|
81
78
|
begin
|
82
79
|
suffix = type == :feeds ? "rss" : "json"
|
83
80
|
key = "#{id}-#{type}"
|
84
|
-
path = "/#{
|
81
|
+
path = "/#{site_id}/#{type}/#{id}.#{suffix}"
|
85
82
|
|
86
83
|
resp = cache ? get_cached_content(key, path) : get_response(path)
|
87
84
|
|
data/lib/orthor/templates.rb
CHANGED
@@ -70,7 +70,9 @@ class Orthor
|
|
70
70
|
end
|
71
71
|
|
72
72
|
def self.template_for(item, template_name_or_mapping)
|
73
|
-
if
|
73
|
+
if template_name_or_mapping.is_a?(String)
|
74
|
+
return template_name_or_mapping
|
75
|
+
elsif template_name_or_mapping.is_a?(Symbol)
|
74
76
|
markup = self[template_name_or_mapping]
|
75
77
|
|
76
78
|
if !markup && self.mappings[template_name_or_mapping]
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module OrthorHelper
|
2
|
+
def with_orthor_content(id, &blk)
|
3
|
+
return unless block_given?
|
4
|
+
render_orthor_result(:content, id, &blk)
|
5
|
+
end
|
6
|
+
|
7
|
+
def with_orthor_category(id, &blk)
|
8
|
+
return unless block_given?
|
9
|
+
render_orthor_result(:category, id, &blk)
|
10
|
+
end
|
11
|
+
|
12
|
+
def with_orthor_query(id, &blk)
|
13
|
+
return unless block_given?
|
14
|
+
render_orthor_result(:query, id, &blk)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
def render_orthor_result(method, id, &blk)
|
19
|
+
html = defined?(capture) ? capture(&blk) : yield
|
20
|
+
parsed_html = Orthor.send(method, id, html)
|
21
|
+
defined?(concat) ? concat(parsed_html) : parsed_html
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
ActionView::Base.send(:include, OrthorHelper) if defined?(ActionView::Base)
|
26
|
+
|
data/spec/orthor_spec.rb
CHANGED
@@ -29,11 +29,11 @@ describe Orthor do
|
|
29
29
|
describe "setup" do
|
30
30
|
before(:all) do
|
31
31
|
Orthor.setup do
|
32
|
-
|
32
|
+
site nil
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
it "should raise an error if no
|
36
|
+
it "should raise an error if no site id is present" do
|
37
37
|
lambda { Orthor.content("content") }.should raise_error
|
38
38
|
end
|
39
39
|
end
|
@@ -45,15 +45,15 @@ describe Orthor do
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
-
it "should
|
49
|
-
Orthor.
|
48
|
+
it "should set the site id" do
|
49
|
+
Orthor.site_id.should == "bob"
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
53
|
describe "getting" do
|
54
54
|
before(:all) do
|
55
55
|
Orthor.setup do
|
56
|
-
|
56
|
+
site "orthor"
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
@@ -89,7 +89,7 @@ describe Orthor do
|
|
89
89
|
describe "loading cache" do
|
90
90
|
describe "without cache setting" do
|
91
91
|
before do
|
92
|
-
Orthor.setup {
|
92
|
+
Orthor.setup { site "orthor" }
|
93
93
|
end
|
94
94
|
|
95
95
|
it "should raise an error" do
|
@@ -100,7 +100,7 @@ describe Orthor do
|
|
100
100
|
describe "with cache setting" do
|
101
101
|
before do
|
102
102
|
Orthor.setup do
|
103
|
-
|
103
|
+
site "orthor"
|
104
104
|
caching :memory, 20
|
105
105
|
end
|
106
106
|
end
|
@@ -117,7 +117,7 @@ describe Orthor do
|
|
117
117
|
describe "no config" do
|
118
118
|
before(:all) do
|
119
119
|
Orthor.setup do
|
120
|
-
|
120
|
+
site "orthor"
|
121
121
|
end
|
122
122
|
end
|
123
123
|
|
@@ -130,7 +130,7 @@ describe Orthor do
|
|
130
130
|
describe "memory" do
|
131
131
|
before(:all) do
|
132
132
|
Orthor.setup do
|
133
|
-
|
133
|
+
site "orthor"
|
134
134
|
caching :memory, 600
|
135
135
|
end
|
136
136
|
end
|
@@ -156,7 +156,7 @@ describe Orthor do
|
|
156
156
|
describe "basic file store" do
|
157
157
|
before(:all) do
|
158
158
|
Orthor.setup do
|
159
|
-
|
159
|
+
site "orthor"
|
160
160
|
caching :basic_file, 300, :path => "tmp/"
|
161
161
|
end
|
162
162
|
end
|
@@ -169,7 +169,7 @@ describe Orthor do
|
|
169
169
|
describe "optinal expiry time argument" do
|
170
170
|
before(:all) do
|
171
171
|
Orthor.setup do
|
172
|
-
|
172
|
+
site "orthor"
|
173
173
|
caching :basic_file, :path => "tmp/"
|
174
174
|
end
|
175
175
|
end
|
@@ -184,7 +184,7 @@ describe Orthor do
|
|
184
184
|
describe "failover" do
|
185
185
|
before(:all) do
|
186
186
|
Orthor.setup do
|
187
|
-
|
187
|
+
site "orthor"
|
188
188
|
end
|
189
189
|
end
|
190
190
|
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: orthor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 19
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
9
|
+
- 4
|
10
|
+
version: 0.1.4
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Anthony Langhorne
|
@@ -18,28 +19,32 @@ date: 2010-06-10 00:00:00 +10:00
|
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
22
|
+
prerelease: false
|
21
23
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
22
25
|
requirements:
|
23
26
|
- - ">="
|
24
27
|
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
25
29
|
segments:
|
26
30
|
- 0
|
27
31
|
version: "0"
|
28
|
-
name: moneta
|
29
|
-
prerelease: false
|
30
32
|
requirement: *id001
|
33
|
+
name: moneta
|
31
34
|
type: :runtime
|
32
35
|
- !ruby/object:Gem::Dependency
|
36
|
+
prerelease: false
|
33
37
|
version_requirements: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
34
39
|
requirements:
|
35
40
|
- - ">="
|
36
41
|
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
37
43
|
segments:
|
38
44
|
- 0
|
39
45
|
version: "0"
|
40
|
-
name: json
|
41
|
-
prerelease: false
|
42
46
|
requirement: *id002
|
47
|
+
name: json
|
43
48
|
type: :runtime
|
44
49
|
description:
|
45
50
|
email: anthony@orthor.com
|
@@ -52,9 +57,13 @@ extra_rdoc_files:
|
|
52
57
|
- README.md
|
53
58
|
files:
|
54
59
|
- lib/orthor.rb
|
60
|
+
- lib/orthor_helper.rb
|
55
61
|
- lib/orthor/templates.rb
|
56
62
|
- LICENSE
|
57
63
|
- README.md
|
64
|
+
- spec/orthor/templates_spec.rb
|
65
|
+
- spec/orthor_spec.rb
|
66
|
+
- spec/spec_helper.rb
|
58
67
|
has_rdoc: true
|
59
68
|
homepage: http://github.com/anthony/orthor-client
|
60
69
|
licenses: []
|
@@ -65,23 +74,27 @@ rdoc_options:
|
|
65
74
|
require_paths:
|
66
75
|
- lib
|
67
76
|
required_ruby_version: !ruby/object:Gem::Requirement
|
77
|
+
none: false
|
68
78
|
requirements:
|
69
79
|
- - ">="
|
70
80
|
- !ruby/object:Gem::Version
|
81
|
+
hash: 3
|
71
82
|
segments:
|
72
83
|
- 0
|
73
84
|
version: "0"
|
74
85
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
|
+
none: false
|
75
87
|
requirements:
|
76
88
|
- - ">="
|
77
89
|
- !ruby/object:Gem::Version
|
90
|
+
hash: 3
|
78
91
|
segments:
|
79
92
|
- 0
|
80
93
|
version: "0"
|
81
94
|
requirements: []
|
82
95
|
|
83
96
|
rubyforge_project:
|
84
|
-
rubygems_version: 1.3.
|
97
|
+
rubygems_version: 1.3.7
|
85
98
|
signing_key:
|
86
99
|
specification_version: 3
|
87
100
|
summary: A gem for displaying content from orthor.com
|