object-view 0.4.8 → 0.4.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/object-view.rb +2 -0
- data/lib/object_view/element.rb +41 -29
- data/lib/object_view/head.rb +27 -1
- data/lib/object_view/javascript_file.rb +1 -0
- data/lib/object_view/nav.rb +12 -0
- data/lib/object_view/paragraph.rb +14 -0
- data/lib/object_view/stylesheet.rb +15 -0
- data/lib/object_view/table.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5ef04d593b48cf9662d57e22b02fb146231a0a0
|
4
|
+
data.tar.gz: 532a9bd9f58fa1ce23e77ea214a36b4ddf981677
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c0eb12bc3d84dcc42331a854451e41c8e477e3357b54fa1938eec7de83ab0ff664a227beb65317b57f1a1554e400efaa19301d0a103b3f80eb11437a11690f2
|
7
|
+
data.tar.gz: 3c692b9e8e3330ccb7281941e48f23c275f666c737f59c05ccaaafa2e78f7da6417a887534035c4d7c671019c489f525d3ac706e0f3a1183db6eb6d498762a94
|
data/lib/object-view.rb
CHANGED
@@ -12,6 +12,8 @@ require_relative 'object_view/table'
|
|
12
12
|
require_relative "object_view/link"
|
13
13
|
require_relative "object_view/ul"
|
14
14
|
require_relative "object_view/chart_data"
|
15
|
+
require_relative "object_view/paragraph"
|
16
|
+
require_relative "object_view/nav"
|
15
17
|
|
16
18
|
|
17
19
|
module ObjectView
|
data/lib/object_view/element.rb
CHANGED
@@ -2,19 +2,26 @@ require_relative './errors/illegal_child_element_error'
|
|
2
2
|
|
3
3
|
module ObjectView
|
4
4
|
|
5
|
-
class Element
|
6
|
-
attr_accessor :tag, :
|
5
|
+
class Element < Hash
|
6
|
+
attr_accessor :tag, :single_line
|
7
7
|
attr_reader :children, :acceptable_children
|
8
8
|
|
9
9
|
def initialize
|
10
10
|
@tab = " "
|
11
11
|
@single_line = false
|
12
12
|
@tag = nil
|
13
|
-
@attributes = Hash.new
|
14
13
|
@children = []
|
15
14
|
@acceptable_children = [String, Element]
|
16
15
|
end
|
17
16
|
|
17
|
+
def attributes
|
18
|
+
return self
|
19
|
+
end
|
20
|
+
|
21
|
+
def style
|
22
|
+
self[:style] = {} if (!self[:style])
|
23
|
+
return self[:style]
|
24
|
+
end
|
18
25
|
|
19
26
|
def find_element_with_tag(tag)
|
20
27
|
found = []
|
@@ -33,7 +40,7 @@ module ObjectView
|
|
33
40
|
end
|
34
41
|
|
35
42
|
def attr(name, value)
|
36
|
-
|
43
|
+
self[name] = value
|
37
44
|
end
|
38
45
|
|
39
46
|
def acceptable_children=(value)
|
@@ -66,14 +73,16 @@ module ObjectView
|
|
66
73
|
end
|
67
74
|
|
68
75
|
def add(element_or_string)
|
69
|
-
if (
|
70
|
-
|
71
|
-
|
72
|
-
element_or_string.
|
73
|
-
|
76
|
+
if (element_or_string)
|
77
|
+
if (self.is_acceptable_child?(element_or_string))
|
78
|
+
@children << element_or_string
|
79
|
+
elsif (element_or_string.is_a?(Array))
|
80
|
+
element_or_string.each do |child|
|
81
|
+
add child
|
82
|
+
end
|
83
|
+
else
|
84
|
+
raise IllegalChildElementError.new "Parent: #{self.tag} - Attempt to add an element that is not a valid child, and not an ObjectView::Element. Class of element: #{element_or_string.class.name}: #{element_or_string}\nTag of parent: #{self.tag}.\nAcceptable children: #{@acceptable_children.join(',')}"
|
74
85
|
end
|
75
|
-
else
|
76
|
-
raise IllegalChildElementError.new "Parent: #{self.tag} - Attempt to add an element that is not a valid child, and not an ObjectView::Element. Class of element: #{element_or_string.class.name}: #{element_or_string}\nTag of parent: #{self.tag}.\nAcceptable children: #{@acceptable_children.join(',')}"
|
77
86
|
end
|
78
87
|
return element_or_string
|
79
88
|
end
|
@@ -114,8 +123,8 @@ module ObjectView
|
|
114
123
|
|
115
124
|
def render_attributes
|
116
125
|
html = StringIO.new
|
117
|
-
if (
|
118
|
-
|
126
|
+
if (self.keys.length > 0)
|
127
|
+
self.each do |name, value|
|
119
128
|
if (value.class == Hash)
|
120
129
|
attr_value = ''
|
121
130
|
value.keys.each do |key|
|
@@ -139,26 +148,29 @@ module ObjectView
|
|
139
148
|
if (indent != nil)
|
140
149
|
html << (@tab * indent)
|
141
150
|
end
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
if (indent == nil)
|
147
|
-
html << render_children(indent)
|
151
|
+
if (children.length > 0)
|
152
|
+
html << "<#{tag}#{render_attributes}>"
|
153
|
+
if (self.single_line)
|
154
|
+
html << "#{render_children(nil)}"
|
148
155
|
else
|
149
|
-
|
156
|
+
if (indent == nil)
|
157
|
+
html << render_children(indent)
|
158
|
+
else
|
159
|
+
html << render_children(indent + 1)
|
160
|
+
end
|
150
161
|
end
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
html << @tab * indent
|
162
|
+
|
163
|
+
if (!self.single_line)
|
164
|
+
html << "\n"
|
165
|
+
if (indent != nil)
|
166
|
+
html << @tab * indent
|
167
|
+
end
|
158
168
|
end
|
169
|
+
html << "</#{tag}>\n"
|
170
|
+
else
|
171
|
+
html << "<#{tag}#{render_attributes}/>"
|
159
172
|
end
|
160
|
-
|
161
|
-
html << "</#{tag}>\n"
|
173
|
+
|
162
174
|
return html.string
|
163
175
|
end
|
164
176
|
|
data/lib/object_view/head.rb
CHANGED
@@ -2,6 +2,7 @@ require_relative './element'
|
|
2
2
|
require_relative './javascript'
|
3
3
|
require_relative './javascript_file'
|
4
4
|
require_relative './link'
|
5
|
+
require_relative './stylesheet'
|
5
6
|
|
6
7
|
module ObjectView
|
7
8
|
|
@@ -10,7 +11,32 @@ module ObjectView
|
|
10
11
|
def initialize
|
11
12
|
super
|
12
13
|
@tag = "head"
|
13
|
-
self.acceptable_children = [Javascript, JavascriptFile,
|
14
|
+
self.acceptable_children = [Javascript, JavascriptFile, Stylesheet, Title, String]
|
15
|
+
end
|
16
|
+
|
17
|
+
def add_stylesheet(path, id = Time.new.to_i.to_s)
|
18
|
+
link = self.add Stylesheet.new
|
19
|
+
link[:href] = path
|
20
|
+
link[:id] = id
|
21
|
+
link[:type] = 'text/css'
|
22
|
+
link[:media] = 'screen'
|
23
|
+
link[:rel] = 'stylesheet'
|
24
|
+
return link
|
25
|
+
end
|
26
|
+
|
27
|
+
def add_title(title)
|
28
|
+
self.add Title.new(title)
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
class Title < Element
|
34
|
+
|
35
|
+
def initialize(title)
|
36
|
+
super()
|
37
|
+
@tag = "title"
|
38
|
+
self.acceptable_children = [String]
|
39
|
+
self.add title if (title)
|
14
40
|
end
|
15
41
|
end
|
16
42
|
|
data/lib/object_view/table.rb
CHANGED
@@ -112,7 +112,7 @@ module ObjectView
|
|
112
112
|
super()
|
113
113
|
self.single_line = true
|
114
114
|
@tag = "td"
|
115
|
-
self.acceptable_children = [Table, Div, Span, Javascript, Link, String]
|
115
|
+
self.acceptable_children = [Table, Div, Span, Javascript, Link, String, Header, Paragraph]
|
116
116
|
end
|
117
117
|
end
|
118
118
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: object-view
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Moore
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: byebug
|
@@ -86,8 +86,11 @@ files:
|
|
86
86
|
- lib/object_view/javascript.rb
|
87
87
|
- lib/object_view/javascript_file.rb
|
88
88
|
- lib/object_view/link.rb
|
89
|
+
- lib/object_view/nav.rb
|
89
90
|
- lib/object_view/page.rb
|
91
|
+
- lib/object_view/paragraph.rb
|
90
92
|
- lib/object_view/span.rb
|
93
|
+
- lib/object_view/stylesheet.rb
|
91
94
|
- lib/object_view/table.rb
|
92
95
|
- lib/object_view/ul.rb
|
93
96
|
homepage: https://github.com/mikejmoore/object-view
|