saper 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -0
- data/Rakefile +6 -6
- data/bin/saper +17 -36
- data/lib/saper.rb +63 -20
- data/lib/saper/actions/append_with.rb +1 -1
- data/lib/saper/actions/convert_to_html.rb +1 -1
- data/lib/saper/actions/convert_to_json.rb +6 -2
- data/lib/saper/actions/convert_to_markdown.rb +1 -1
- data/lib/saper/actions/convert_to_time.rb +38 -1
- data/lib/saper/actions/convert_to_xml.rb +1 -1
- data/lib/saper/actions/create_atom.rb +6 -2
- data/lib/saper/actions/fetch.rb +3 -2
- data/lib/saper/actions/fetch_with_token.rb +18 -0
- data/lib/saper/actions/find.rb +1 -1
- data/lib/saper/actions/find_first.rb +1 -1
- data/lib/saper/actions/get_attribute.rb +7 -2
- data/lib/saper/actions/get_contents.rb +1 -1
- data/lib/saper/actions/get_text.rb +1 -1
- data/lib/saper/actions/nothing.rb +11 -0
- data/lib/saper/actions/prepend_with.rb +2 -2
- data/lib/saper/actions/remove_after.rb +2 -2
- data/lib/saper/actions/remove_before.rb +2 -2
- data/lib/saper/actions/remove_matching.rb +2 -2
- data/lib/saper/actions/remove_tags.rb +1 -1
- data/lib/saper/actions/replace.rb +1 -1
- data/lib/saper/actions/run_recipe.rb +2 -2
- data/lib/saper/actions/run_recipe_and_save.rb +3 -3
- data/lib/saper/actions/save.rb +2 -2
- data/lib/saper/actions/select_matching.rb +2 -2
- data/lib/saper/actions/set_input.rb +1 -1
- data/lib/saper/actions/skip_tags.rb +1 -1
- data/lib/saper/actions/split.rb +1 -1
- data/lib/saper/arguments/attribute.rb +6 -0
- data/lib/saper/arguments/recipe.rb +12 -6
- data/lib/saper/arguments/service.rb +12 -0
- data/lib/saper/arguments/text.rb +1 -0
- data/lib/saper/arguments/timezone.rb +2 -1
- data/lib/saper/arguments/url.rb +12 -0
- data/lib/saper/arguments/variable.rb +2 -1
- data/lib/saper/arguments/xpath.rb +2 -1
- data/lib/saper/core/action.rb +43 -13
- data/lib/saper/core/argument.rb +30 -14
- data/lib/saper/core/browser.rb +29 -28
- data/lib/saper/core/dsl.rb +14 -16
- data/lib/saper/core/error.rb +1 -1
- data/lib/saper/core/item.rb +2 -2
- data/lib/saper/core/keychain.rb +58 -5
- data/lib/saper/core/namespace.rb +15 -18
- data/lib/saper/core/recipe.rb +53 -12
- data/lib/saper/core/result.rb +72 -0
- data/lib/saper/core/runtime.rb +44 -177
- data/lib/saper/core/stack.rb +57 -0
- data/lib/saper/items/atom.rb +18 -1
- data/lib/saper/items/document.rb +39 -19
- data/lib/saper/items/html.rb +52 -7
- data/lib/saper/items/json.rb +19 -1
- data/lib/saper/items/markdown.rb +14 -4
- data/lib/saper/items/nothing.rb +6 -0
- data/lib/saper/items/text.rb +28 -3
- data/lib/saper/items/time.rb +25 -2
- data/lib/saper/items/url.rb +8 -2
- data/lib/saper/items/xml.rb +51 -11
- data/lib/{lib → saper/patches}/mechanize.rb +0 -0
- data/lib/{lib → saper/patches}/nokogiri.rb +0 -0
- data/lib/saper/version.rb +2 -2
- data/spec/actions/append_with_spec.rb +29 -52
- data/spec/actions/convert_to_html_spec.rb +13 -30
- data/spec/actions/convert_to_json_spec.rb +13 -30
- data/spec/actions/convert_to_markdown_spec.rb +17 -19
- data/spec/actions/convert_to_time_spec.rb +25 -43
- data/spec/actions/convert_to_xml_spec.rb +15 -11
- data/spec/actions/create_atom_spec.rb +11 -19
- data/spec/actions/fetch_spec.rb +3 -8
- data/spec/actions/find_first_spec.rb +38 -40
- data/spec/actions/find_spec.rb +23 -39
- data/spec/actions/get_attribute_spec.rb +30 -3
- data/spec/actions/{get_contents.rb → get_contents_spec.rb} +0 -0
- data/spec/actions/{get_text.rb → get_text_spec.rb} +0 -0
- data/spec/actions/nothing_spec.rb +7 -0
- data/spec/actions/prepend_with_spec.rb +31 -18
- data/spec/actions/{remove_after.rb → remove_after_spec.rb} +0 -0
- data/spec/actions/{remove_before.rb → remove_before_spec.rb} +0 -0
- data/spec/actions/remove_matching_spec.rb +7 -0
- data/spec/actions/remove_tags_spec.rb +7 -0
- data/spec/actions/run_recipe_and_save_spec.rb +7 -0
- data/spec/actions/run_recipe_spec.rb +7 -0
- data/spec/arguments/attribute_spec.rb +7 -0
- data/spec/arguments/recipe_spec.rb +7 -0
- data/spec/arguments/text_spec.rb +7 -0
- data/spec/arguments/timezone_spec.rb +7 -0
- data/spec/arguments/variable_spec.rb +7 -0
- data/spec/arguments/xpath_spec.rb +7 -0
- data/spec/core/action_spec.rb +13 -142
- data/spec/core/argument_spec.rb +38 -71
- data/spec/core/browser_spec.rb +18 -3
- data/spec/core/dsl_spec.rb +1 -1
- data/spec/core/item_spec.rb +1 -1
- data/spec/core/namespace_spec.rb +0 -11
- data/spec/core/recipe_spec.rb +54 -77
- data/spec/core/result_spec.rb +7 -0
- data/spec/core/runtime_spec.rb +20 -151
- data/spec/core/stack_spec.rb +7 -0
- data/spec/integration/simple_invalid_spec.rb +39 -0
- data/spec/integration/simple_valid_spec.rb +39 -0
- data/spec/items/atom_spec.rb +6 -1
- data/spec/items/document_spec.rb +93 -15
- data/spec/items/html_spec.rb +45 -28
- data/spec/items/json_spec.rb +10 -10
- data/spec/items/markdown_spec.rb +24 -3
- data/spec/items/nothing_spec.rb +1 -1
- data/spec/items/text_spec.rb +13 -41
- data/spec/items/time_spec.rb +25 -4
- data/spec/items/url_spec.rb +1 -7
- data/spec/items/xml_spec.rb +46 -39
- data/spec/spec_helper.rb +2 -21
- metadata +63 -60
- data/lib/lib/json_search.rb +0 -54
- data/spec/actions/run_recipe_and_save_spec.tmp.rb +0 -52
- data/spec/actions/run_recipe_spec.tmp.rb +0 -53
data/lib/saper/items/html.rb
CHANGED
@@ -2,12 +2,17 @@ module Saper
|
|
2
2
|
module Items
|
3
3
|
class HTML < Item
|
4
4
|
|
5
|
+
# @todo
|
5
6
|
def self.new(item)
|
6
7
|
super case item
|
7
8
|
when Nokogiri::XML::Element
|
8
9
|
item
|
10
|
+
when Nokogiri::XML::Document
|
11
|
+
item
|
9
12
|
when Nokogiri::HTML
|
10
13
|
item
|
14
|
+
when Document
|
15
|
+
parse(item.body, item.uri, item.charset)
|
11
16
|
when Text
|
12
17
|
parse(item.to_s)
|
13
18
|
when String
|
@@ -17,14 +22,23 @@ module Saper
|
|
17
22
|
end
|
18
23
|
end
|
19
24
|
|
25
|
+
# @todo
|
20
26
|
def self.parse(string, uri = nil, charset = nil)
|
27
|
+
if string.empty?
|
28
|
+
raise(InvalidItem, string)
|
29
|
+
end
|
21
30
|
begin
|
31
|
+
# Nokogiri adds an additional body tag for strings that don't
|
32
|
+
# have one. Should probably use Nokogiri::HTML.fragment in that
|
33
|
+
# case, but it breaks the search function:
|
34
|
+
# https://github.com/sparklemotion/nokogiri/issues/572
|
22
35
|
Nokogiri::HTML.parse(string, uri, charset)
|
23
36
|
rescue
|
24
37
|
raise(InvalidItem, string)
|
25
38
|
end
|
26
39
|
end
|
27
40
|
|
41
|
+
# @todo
|
28
42
|
def initialize(noko)
|
29
43
|
@noko = noko
|
30
44
|
# Force UTF-8 encoding
|
@@ -32,48 +46,79 @@ module Saper
|
|
32
46
|
@noko.document.encoding = 'UTF-8'
|
33
47
|
end
|
34
48
|
|
49
|
+
# @todo
|
50
|
+
def dup
|
51
|
+
HTML.new(@noko.dup)
|
52
|
+
end
|
53
|
+
|
54
|
+
# @todo
|
55
|
+
def ==(other)
|
56
|
+
to_s == other.to_s
|
57
|
+
end
|
58
|
+
|
59
|
+
# @todo
|
35
60
|
def name
|
36
61
|
@noko.name
|
37
62
|
end
|
38
63
|
|
64
|
+
# @todo
|
39
65
|
def [](name)
|
40
|
-
@noko[name]
|
66
|
+
@noko.has_attribute?(name) ? Text.new(@noko[name]) : nil
|
41
67
|
end
|
42
68
|
|
69
|
+
# @todo
|
43
70
|
def find(xpath)
|
44
71
|
find_all(xpath).first
|
45
72
|
end
|
46
73
|
|
74
|
+
# @todo
|
47
75
|
def find_all(xpath)
|
48
76
|
@noko.search(xpath).map { |element| HTML.new(element) }
|
49
77
|
end
|
50
78
|
|
51
|
-
|
79
|
+
# @todo
|
80
|
+
def remove_children_with_content!(xpath)
|
52
81
|
@noko.search(xpath).each { |item| item.remove }; self
|
53
82
|
end
|
54
83
|
|
55
|
-
|
84
|
+
# @todo
|
85
|
+
def remove_children_with_content(xpath)
|
86
|
+
dup.remove_children_with_content!(xpath)
|
87
|
+
end
|
88
|
+
|
89
|
+
# @todo
|
90
|
+
def remove_children_preserving_content!(xpath)
|
56
91
|
@noko.search(xpath).each { |item| item.replace(item.children) }; self
|
57
92
|
end
|
93
|
+
|
94
|
+
# @todo
|
95
|
+
def remove_children_preserving_content(xpath)
|
96
|
+
dup.remove_children_preserving_content!(xpath)
|
97
|
+
end
|
58
98
|
|
99
|
+
# @todo
|
59
100
|
def inner_html
|
60
|
-
@noko.inner_html
|
101
|
+
Text.new @noko.inner_html.gsub("\n","")
|
61
102
|
end
|
62
103
|
|
104
|
+
# @todo
|
63
105
|
def inner_text
|
64
|
-
@noko.inner_text
|
106
|
+
Text.new @noko.inner_text
|
65
107
|
end
|
66
108
|
|
109
|
+
# @todo
|
67
110
|
def to_markdown
|
68
111
|
Markdown.new self
|
69
112
|
end
|
70
113
|
|
114
|
+
# @todo
|
71
115
|
def to_native
|
72
|
-
inner_html
|
116
|
+
inner_html.to_native
|
73
117
|
end
|
74
118
|
|
119
|
+
# @todo
|
75
120
|
def to_s
|
76
|
-
|
121
|
+
@noko.is_a?(Nokogiri::HTML::Document) ? to_native : @noko.to_s
|
77
122
|
end
|
78
123
|
|
79
124
|
end
|
data/lib/saper/items/json.rb
CHANGED
@@ -2,6 +2,7 @@ module Saper
|
|
2
2
|
module Items
|
3
3
|
class JSON < Item
|
4
4
|
|
5
|
+
# @todo
|
5
6
|
def self.new(item, bypass = false)
|
6
7
|
super case item
|
7
8
|
when Text
|
@@ -15,6 +16,7 @@ module Saper
|
|
15
16
|
end
|
16
17
|
end
|
17
18
|
|
19
|
+
# @todo
|
18
20
|
def self.parse(string)
|
19
21
|
begin
|
20
22
|
::JSON.parse(string)
|
@@ -23,28 +25,44 @@ module Saper
|
|
23
25
|
end
|
24
26
|
end
|
25
27
|
|
28
|
+
# @todo
|
26
29
|
def initialize(hash)
|
27
30
|
@hash = hash
|
28
31
|
end
|
29
32
|
|
33
|
+
# @todo
|
34
|
+
def ==(other)
|
35
|
+
@hash == other
|
36
|
+
end
|
37
|
+
|
38
|
+
# @todo
|
30
39
|
def find(xpath)
|
31
40
|
find_all(xpath).first
|
32
41
|
end
|
33
42
|
|
43
|
+
# @todo
|
34
44
|
def find_all(xpath)
|
35
|
-
sanitize
|
45
|
+
sanitize JPath.find(@hash, xpath)
|
36
46
|
end
|
37
47
|
|
48
|
+
# @todo
|
38
49
|
def to_s
|
39
50
|
::JSON.dump(@hash)
|
40
51
|
end
|
41
52
|
|
53
|
+
# @todo
|
54
|
+
def to_json(*a)
|
55
|
+
a.empty? ? self : @hash
|
56
|
+
end
|
57
|
+
|
58
|
+
# @todo
|
42
59
|
def to_native
|
43
60
|
to_s
|
44
61
|
end
|
45
62
|
|
46
63
|
private
|
47
64
|
|
65
|
+
# @todo
|
48
66
|
def sanitize(item)
|
49
67
|
case item
|
50
68
|
when Hash
|
data/lib/saper/items/markdown.rb
CHANGED
@@ -2,33 +2,43 @@ module Saper
|
|
2
2
|
module Items
|
3
3
|
class Markdown < Item
|
4
4
|
|
5
|
+
# @todo
|
5
6
|
def self.new(item)
|
6
7
|
super case item
|
7
8
|
when HTML
|
8
|
-
parse(item.
|
9
|
+
parse(item.to_s)
|
9
10
|
else
|
10
11
|
raise(InvalidItem, item)
|
11
12
|
end
|
12
13
|
end
|
13
14
|
|
15
|
+
# @todo
|
14
16
|
def self.parse(string)
|
15
17
|
begin
|
16
|
-
::ReverseMarkdown.convert(string).strip
|
18
|
+
::ReverseMarkdown.convert(string, unknown_tags: :drop).strip
|
17
19
|
rescue
|
18
20
|
raise(InvalidItem, string)
|
19
21
|
end
|
20
22
|
end
|
21
23
|
|
24
|
+
# @todo
|
22
25
|
def initialize(string)
|
23
26
|
@string = string
|
24
27
|
end
|
25
28
|
|
29
|
+
# @todo
|
30
|
+
def ==(other)
|
31
|
+
to_s == other.to_s
|
32
|
+
end
|
33
|
+
|
34
|
+
# @todo
|
26
35
|
def to_s
|
27
|
-
|
36
|
+
to_native
|
28
37
|
end
|
29
38
|
|
39
|
+
# @todo
|
30
40
|
def to_native
|
31
|
-
|
41
|
+
@string
|
32
42
|
end
|
33
43
|
|
34
44
|
end
|
data/lib/saper/items/nothing.rb
CHANGED
data/lib/saper/items/text.rb
CHANGED
@@ -2,6 +2,7 @@ module Saper
|
|
2
2
|
module Items
|
3
3
|
class Text < Item
|
4
4
|
|
5
|
+
# @todo
|
5
6
|
def self.new(item)
|
6
7
|
super case item
|
7
8
|
when String
|
@@ -13,40 +14,64 @@ module Saper
|
|
13
14
|
end
|
14
15
|
end
|
15
16
|
|
17
|
+
# @todo
|
16
18
|
def initialize(string)
|
17
19
|
@string = string
|
18
20
|
end
|
19
21
|
|
20
|
-
|
22
|
+
# @todo
|
23
|
+
def ==(other)
|
24
|
+
hash == other.hash
|
25
|
+
end
|
26
|
+
|
27
|
+
# @todo
|
28
|
+
def hash
|
29
|
+
to_s.hash
|
30
|
+
end
|
31
|
+
|
32
|
+
# @todo
|
33
|
+
def empty?
|
34
|
+
@string.empty?
|
35
|
+
end
|
36
|
+
|
37
|
+
# @todo
|
38
|
+
def split(separator, number = -1)
|
21
39
|
@string.split(separator, number)
|
22
40
|
end
|
23
41
|
|
42
|
+
# @todo
|
24
43
|
def gsub(*args, &block)
|
25
44
|
@string.gsub(*args, &block)
|
26
45
|
end
|
27
46
|
|
47
|
+
# @todo
|
28
48
|
def to_xml
|
29
49
|
XML.new(self)
|
30
50
|
end
|
31
51
|
|
52
|
+
# @todo
|
32
53
|
def to_html
|
33
54
|
HTML.new(self)
|
34
55
|
end
|
35
56
|
|
57
|
+
# @todo
|
36
58
|
def to_json
|
37
59
|
JSON.new(self)
|
38
60
|
end
|
39
61
|
|
62
|
+
# @todo
|
40
63
|
def to_time(format, tz = nil)
|
41
64
|
Time.new(self, format, tz)
|
42
65
|
end
|
43
66
|
|
67
|
+
# @todo
|
44
68
|
def to_s
|
45
|
-
|
69
|
+
to_native
|
46
70
|
end
|
47
71
|
|
72
|
+
# @todo
|
48
73
|
def to_native
|
49
|
-
|
74
|
+
@string
|
50
75
|
end
|
51
76
|
|
52
77
|
end
|
data/lib/saper/items/time.rb
CHANGED
@@ -2,17 +2,21 @@ module Saper
|
|
2
2
|
module Items
|
3
3
|
class Time < Item
|
4
4
|
|
5
|
-
|
5
|
+
# @todo
|
6
|
+
def self.new(item, format = nil, tz = nil)
|
6
7
|
super case item
|
7
8
|
when Text
|
8
9
|
parse(item.to_s, format, tz)
|
9
10
|
when String
|
10
11
|
parse(item, format, tz)
|
12
|
+
when Vremya
|
13
|
+
item
|
11
14
|
else
|
12
15
|
raise(InvalidItem, item)
|
13
16
|
end
|
14
17
|
end
|
15
18
|
|
19
|
+
# @todo
|
16
20
|
def self.parse(string, format, tz = nil)
|
17
21
|
begin
|
18
22
|
::Vremya.parse(string, format, tz)
|
@@ -21,20 +25,39 @@ module Saper
|
|
21
25
|
end
|
22
26
|
end
|
23
27
|
|
28
|
+
# @todo
|
29
|
+
def self.now(tz = nil)
|
30
|
+
new ::Vremya.now(tz)
|
31
|
+
end
|
32
|
+
|
33
|
+
# @todo
|
24
34
|
def initialize(vremya)
|
25
35
|
@vremya = vremya
|
26
36
|
end
|
27
37
|
|
38
|
+
# @todo
|
39
|
+
def ==(other)
|
40
|
+
to_i == other.to_i
|
41
|
+
end
|
42
|
+
|
43
|
+
# @todo
|
28
44
|
def to_s
|
29
45
|
@vremya.iso8601
|
30
46
|
end
|
31
47
|
|
48
|
+
# @todo
|
32
49
|
def to_native
|
33
50
|
@vremya.to_time
|
34
51
|
end
|
35
52
|
|
53
|
+
# @todo
|
54
|
+
def to_i
|
55
|
+
to_native.to_i
|
56
|
+
end
|
57
|
+
|
58
|
+
# @todo
|
36
59
|
def serialize
|
37
|
-
|
60
|
+
@vremya.to_utc.to_time
|
38
61
|
end
|
39
62
|
|
40
63
|
end
|
data/lib/saper/items/url.rb
CHANGED
@@ -2,6 +2,7 @@ module Saper
|
|
2
2
|
module Items
|
3
3
|
class URL < Item
|
4
4
|
|
5
|
+
# @todo
|
5
6
|
def self.new(item)
|
6
7
|
super case item
|
7
8
|
when Text
|
@@ -13,22 +14,27 @@ module Saper
|
|
13
14
|
end
|
14
15
|
end
|
15
16
|
|
17
|
+
# @todo
|
16
18
|
def self.parse(string)
|
17
19
|
unless string =~ /^#{URI::regexp}$/
|
18
20
|
raise(InvalidItem, string)
|
19
21
|
end
|
22
|
+
string
|
20
23
|
end
|
21
24
|
|
25
|
+
# @todo
|
22
26
|
def initialize(url)
|
23
27
|
@url = url
|
24
28
|
end
|
25
29
|
|
30
|
+
# @todo
|
26
31
|
def to_s
|
27
|
-
|
32
|
+
to_native
|
28
33
|
end
|
29
34
|
|
35
|
+
# @todo
|
30
36
|
def to_native
|
31
|
-
|
37
|
+
@url
|
32
38
|
end
|
33
39
|
|
34
40
|
end
|
data/lib/saper/items/xml.rb
CHANGED
@@ -2,10 +2,15 @@ module Saper
|
|
2
2
|
module Items
|
3
3
|
class XML < Item
|
4
4
|
|
5
|
+
# @todo
|
5
6
|
def self.new(item)
|
6
7
|
super case item
|
7
8
|
when Nokogiri::XML
|
8
9
|
item
|
10
|
+
when Nokogiri::XML::Document
|
11
|
+
item
|
12
|
+
when Nokogiri::XML::Element
|
13
|
+
item
|
9
14
|
when Text
|
10
15
|
parse(item.to_s)
|
11
16
|
when String
|
@@ -15,7 +20,11 @@ module Saper
|
|
15
20
|
end
|
16
21
|
end
|
17
22
|
|
23
|
+
# @todo
|
18
24
|
def self.parse(string, uri = nil, charset = nil)
|
25
|
+
if string.empty?
|
26
|
+
raise(InvalidItem, string)
|
27
|
+
end
|
19
28
|
begin
|
20
29
|
Nokogiri::XML.parse(string, uri, charset)
|
21
30
|
rescue
|
@@ -23,6 +32,7 @@ module Saper
|
|
23
32
|
end
|
24
33
|
end
|
25
34
|
|
35
|
+
# @todo
|
26
36
|
def initialize(noko)
|
27
37
|
@noko = noko
|
28
38
|
# Force UTF-8 encoding
|
@@ -30,46 +40,76 @@ module Saper
|
|
30
40
|
@noko.document.encoding = 'UTF-8'
|
31
41
|
end
|
32
42
|
|
43
|
+
# @todo
|
44
|
+
def dup
|
45
|
+
XML.new(@noko.dup)
|
46
|
+
end
|
47
|
+
|
48
|
+
# @todo
|
49
|
+
def ==(other)
|
50
|
+
to_s == other.to_s
|
51
|
+
end
|
52
|
+
|
53
|
+
# @todo
|
33
54
|
def name
|
34
55
|
@noko.name
|
35
56
|
end
|
36
57
|
|
58
|
+
# @todo
|
37
59
|
def [](name)
|
38
|
-
@noko[name]
|
60
|
+
@noko.has_attribute?(name) ? Text.new(@noko[name]) : nil
|
39
61
|
end
|
40
62
|
|
63
|
+
# @todo
|
41
64
|
def find(xpath)
|
42
65
|
find_all(xpath).first
|
43
66
|
end
|
44
67
|
|
68
|
+
# @todo
|
45
69
|
def find_all(xpath)
|
46
70
|
@noko.search(xpath).map { |element| XML.new(element) }
|
47
71
|
end
|
48
72
|
|
49
|
-
|
73
|
+
# @todo
|
74
|
+
def remove_children_with_content!(xpath)
|
50
75
|
@noko.search(xpath).each { |item| item.remove }; self
|
51
76
|
end
|
52
77
|
|
53
|
-
|
54
|
-
|
78
|
+
# @todo
|
79
|
+
def remove_children_with_content(xpath)
|
80
|
+
dup.remove_children_with_content!(xpath)
|
55
81
|
end
|
56
82
|
|
57
|
-
|
58
|
-
|
83
|
+
# @todo
|
84
|
+
def remove_children_preserving_content!(xpath)
|
85
|
+
@noko.search(xpath).each { |item| item.replace(item.children) }; self
|
86
|
+
end
|
87
|
+
|
88
|
+
# @todo
|
89
|
+
def remove_children_preserving_content(xpath)
|
90
|
+
dup.remove_children_preserving_content!(xpath)
|
59
91
|
end
|
60
92
|
|
61
|
-
|
62
|
-
|
93
|
+
# @todo
|
94
|
+
def inner_xml
|
95
|
+
Text.new @noko.inner_html
|
63
96
|
end
|
64
97
|
|
65
|
-
|
66
|
-
|
98
|
+
# @todo
|
99
|
+
def inner_text
|
100
|
+
Text.new @noko.inner_text
|
67
101
|
end
|
68
102
|
|
103
|
+
# @todo
|
69
104
|
def to_native
|
70
|
-
|
105
|
+
inner_xml.to_native
|
71
106
|
end
|
72
107
|
|
108
|
+
# @todo
|
109
|
+
def to_s
|
110
|
+
@noko.is_a?(Nokogiri::XML::Document) ? to_native : @noko.to_s
|
111
|
+
end
|
112
|
+
|
73
113
|
end
|
74
114
|
end
|
75
115
|
end
|