remote_partial 0.3.2 → 0.4.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.
- data/README.rdoc +19 -0
- data/app/models/remote_partial/builder.rb +1 -0
- data/app/models/remote_partial/partial.rb +6 -2
- data/app/models/remote_partial/resource_manager.rb +16 -10
- data/app/models/remote_partial/yaml_store.rb +4 -0
- data/lib/remote_partial/version.rb +7 -2
- data/test/dummy/app/views/remote_partials/_partial_with_mod.html.erb +1 -0
- data/test/dummy/log/test.log +3656 -0
- data/test/unit/remote_partial/builder_test.rb +14 -0
- data/test/unit/remote_partial/partial_test.rb +7 -0
- data/test/unit/remote_partial/resource_manager_test.rb +6 -0
- data/test/unit/remote_partial/yaml_store_test.rb +10 -0
- metadata +5 -3
data/README.rdoc
CHANGED
@@ -35,6 +35,25 @@ passed to Nokogiri's search method, and can be either xpath or css format. See:
|
|
35
35
|
|
36
36
|
http://nokogiri.org/tutorials/searching_a_xml_html_document.html
|
37
37
|
|
38
|
+
If no criteria are specified, the whole page will be retrieved.
|
39
|
+
|
40
|
+
== Output modifier
|
41
|
+
|
42
|
+
A lambda can be passed into RemotePartial.define, and this will be called
|
43
|
+
on the retrieved content before the partial file is generated.
|
44
|
+
|
45
|
+
Note that the lambda must be passed in as a string so it can be stored in a
|
46
|
+
serialized format. RemotePartial will convert the string into a lambda when it
|
47
|
+
is needed.
|
48
|
+
|
49
|
+
For example, to change all instances of 'foo' to 'bar' in the partial:
|
50
|
+
|
51
|
+
RemotePartial.define(
|
52
|
+
url: 'http://somewhere.com',
|
53
|
+
name: 'foo_bar',
|
54
|
+
output_modifier: '{|content| content.gsub(/foo/, "bar")}'
|
55
|
+
)
|
56
|
+
|
38
57
|
== Adding remote partial content to a page
|
39
58
|
|
40
59
|
To output the content of the remote partial 'ruby' to a rails view add this:
|
@@ -22,6 +22,7 @@ module RemotePartial
|
|
22
22
|
def create_or_update_partial
|
23
23
|
@partial = Partial.find(args['name']) || Partial.new(name: args['name'])
|
24
24
|
track_change(args, 'url')
|
25
|
+
track_change(args, 'output_modifier')
|
25
26
|
track_change(args, 'criteria')
|
26
27
|
track_change(args, 'repeat_period', @partial.default_repeat_period)
|
27
28
|
|
@@ -9,7 +9,7 @@ module RemotePartial
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def update_file
|
12
|
-
resource_manager.output_to
|
12
|
+
resource_manager.output_to(output_file_name)
|
13
13
|
update_stale_at
|
14
14
|
end
|
15
15
|
|
@@ -22,7 +22,7 @@ module RemotePartial
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def resource_manager
|
25
|
-
ResourceManager.new(url, criteria)
|
25
|
+
ResourceManager.new(url, criteria, &output_modifier_to_lambda)
|
26
26
|
end
|
27
27
|
|
28
28
|
def repeat_period
|
@@ -63,5 +63,9 @@ module RemotePartial
|
|
63
63
|
"_#{name}.html.erb"
|
64
64
|
end
|
65
65
|
|
66
|
+
def output_modifier_to_lambda
|
67
|
+
output_modifier? ? instance_eval("lambda #{output_modifier}") : nil
|
68
|
+
end
|
69
|
+
|
66
70
|
end
|
67
71
|
end
|
@@ -3,7 +3,7 @@ require 'net/http'
|
|
3
3
|
|
4
4
|
module RemotePartial
|
5
5
|
class ResourceManager
|
6
|
-
attr_reader :url, :criteria
|
6
|
+
attr_reader :url, :criteria, :output_modifier
|
7
7
|
|
8
8
|
def self.get_page(url)
|
9
9
|
Nokogiri::HTML(get_raw(url))
|
@@ -24,17 +24,10 @@ module RemotePartial
|
|
24
24
|
raise RemotePartialRetrivalError.new(url, exception)
|
25
25
|
end
|
26
26
|
|
27
|
-
def initialize(url, criteria = nil)
|
27
|
+
def initialize(url, criteria = nil, &output_modifier)
|
28
28
|
@url = url
|
29
29
|
@criteria = criteria
|
30
|
-
|
31
|
-
|
32
|
-
def html
|
33
|
-
if criteria
|
34
|
-
self.class.get_page(@url).search(criteria).to_s
|
35
|
-
else
|
36
|
-
self.class.get_raw(@url).force_encoding('UTF-8')
|
37
|
-
end
|
30
|
+
@output_modifier = output_modifier
|
38
31
|
end
|
39
32
|
|
40
33
|
def output_to(path)
|
@@ -43,7 +36,20 @@ module RemotePartial
|
|
43
36
|
File.write(path, html)
|
44
37
|
end
|
45
38
|
|
39
|
+
def html
|
40
|
+
text = criteria ? get_part_of_page : get_whole_page
|
41
|
+
output_modifier ? output_modifier.call(text) : text
|
42
|
+
end
|
43
|
+
|
46
44
|
private
|
45
|
+
def get_whole_page
|
46
|
+
self.class.get_raw(@url).force_encoding('UTF-8')
|
47
|
+
end
|
48
|
+
|
49
|
+
def get_part_of_page
|
50
|
+
self.class.get_page(@url).search(criteria).to_s
|
51
|
+
end
|
52
|
+
|
47
53
|
def output_folder
|
48
54
|
File.dirname(@path)
|
49
55
|
end
|
@@ -1,11 +1,16 @@
|
|
1
1
|
module RemotePartial
|
2
|
-
VERSION = "0.
|
2
|
+
VERSION = "0.4.0"
|
3
3
|
end
|
4
4
|
|
5
5
|
# History
|
6
6
|
# =======
|
7
7
|
#
|
8
|
-
# 0.
|
8
|
+
# 0.4.0 Add facility to modify the partial file before it is saved
|
9
|
+
# ----------------------------------------------------------------
|
10
|
+
# A modification can now be made to the content retrieved from the
|
11
|
+
# remote page, before it is saved as a partial.
|
12
|
+
#
|
13
|
+
# 0.3.2 Move location where db is stored in test environment
|
9
14
|
# ----------------------------------------------------------
|
10
15
|
# The yaml file created by the Partial model during tests, had been put into
|
11
16
|
# test/fixtures, but this is the wrong place because this is not a fixture. In
|
@@ -0,0 +1 @@
|
|
1
|
+
Hello
|