object-view 0.4.0 → 0.4.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8bcb640a20873dfc971e661a2a8be808f9f75bb2
4
+ data.tar.gz: f189faf326b1b7208ee77e11e8152f4d36180691
5
+ SHA512:
6
+ metadata.gz: 6cf882620ca6d5e0dfb84b639215d84dafb57e8e6f7145ae61f27714e45fe4ec7c2be96965c9aac014f828f4eb39462638ae1d6529710097d85961f3be228ce9
7
+ data.tar.gz: 108239d74990cc90a67612e68ff3bea6ec749c1570510870889fc1ea82c158b1838ce309004cd4a34f2ed225e9837e8cf412670ba4d1e7ca13a2d687823f16d5
data/lib/object_view.rb CHANGED
@@ -1,15 +1,16 @@
1
- require 'object_view/page.rb'
2
- require 'object_view/element.rb'
3
- require 'object_view/body'
4
- require 'object_view/head'
5
- require 'object_view/header'
6
- require 'object_view/javascript_file'
7
- require 'object_view/div'
8
- require 'object_view/span'
9
- require 'object_view/javascript'
10
- require 'object_view/table'
11
- require "object_view/link"
12
- require "object_view/chart_data"
1
+ require_relative 'object_view/page.rb'
2
+ require_relative 'object_view/element.rb'
3
+ require_relative 'object_view/body'
4
+ require_relative 'object_view/head'
5
+ require_relative 'object_view/header'
6
+ require_relative 'object_view/javascript_file'
7
+ require_relative 'object_view/div'
8
+ require_relative 'object_view/span'
9
+ require_relative 'object_view/javascript'
10
+ require_relative 'object_view/table'
11
+ require_relative "object_view/link"
12
+ require_relative "object_view/ul"
13
+ require_relative "object_view/chart_data"
13
14
 
14
15
 
15
16
  module ObjectView
@@ -3,7 +3,6 @@ module ObjectView
3
3
 
4
4
  class Body < Element
5
5
  def initialize
6
- puts "Creating body"
7
6
  super
8
7
  @tag = "body"
9
8
  end
@@ -1,10 +1,10 @@
1
- require_relative './object_view_error'
1
+ require_relative './errors/illegal_child_element_error'
2
2
 
3
3
  module ObjectView
4
4
 
5
5
  class Element
6
- attr_accessor :tag, :attributes, :single_line, :acceptable_children
7
- attr_reader :children
6
+ attr_accessor :tag, :attributes, :single_line
7
+ attr_reader :children, :acceptable_children
8
8
 
9
9
  def initialize
10
10
  @tab = " "
@@ -30,13 +30,16 @@ module ObjectView
30
30
  else
31
31
  return found
32
32
  end
33
-
34
33
  end
35
34
 
36
35
  def attr(name, value)
37
36
  @attributes[name] = value
38
37
  end
39
38
 
39
+ def acceptable_children=(value)
40
+ @acceptable_children = value
41
+ end
42
+
40
43
  def on_click=(value)
41
44
  self.attr("onclick", value)
42
45
  end
@@ -70,9 +73,8 @@ module ObjectView
70
73
  add child
71
74
  end
72
75
  else
73
- raise "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(',')}"
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(',')}"
74
77
  end
75
-
76
78
  return element_or_string
77
79
  end
78
80
 
@@ -88,7 +90,7 @@ module ObjectView
88
90
  end
89
91
 
90
92
  def <<(item)
91
- self.children << item
93
+ self.add item
92
94
  end
93
95
 
94
96
  def render_children(indent = 0)
@@ -114,14 +116,25 @@ module ObjectView
114
116
  html = StringIO.new
115
117
  if (@attributes.length > 0)
116
118
  @attributes.each do |name, value|
117
- html << " #{name}=\"#{value}\""
119
+ if (value.class == Hash)
120
+ attr_value = ''
121
+ value.keys.each do |key|
122
+ attr_value += "#{key.to_s.gsub('_', '-')}: #{value[key]}"
123
+ if (key != value.keys.last)
124
+ attr_value += "; "
125
+ end
126
+ end
127
+ html << " #{name}=\"#{attr_value}\""
128
+ else
129
+ html << " #{name}=\"#{value}\""
130
+ end
118
131
  end
119
132
  end
120
133
  return html.string
121
134
  end
122
135
 
123
136
  def render(indent = 0)
124
- #Rails.logger.debug "Rendering: #{self} Tag: #{self.tag}"
137
+ raise "tag not defined for class: #{self.class}" if (tag == nil) || (tag.strip.length == 0)
125
138
  html = StringIO.new
126
139
  if (indent != nil)
127
140
  html << (@tab * indent)
@@ -0,0 +1,11 @@
1
+ require_relative './object_view_error'
2
+
3
+ module ObjectView
4
+ class IllegalChildElementError < ObjectViewError
5
+
6
+ def initialize(message = "Illegal child element")
7
+ super(message)
8
+ end
9
+
10
+ end
11
+ end
@@ -1,11 +1,17 @@
1
1
  require_relative './element'
2
+ require_relative './javascript'
3
+ require_relative './javascript_file'
4
+ require_relative './link'
5
+
2
6
  module ObjectView
3
7
 
4
8
  class Head < Element
9
+
5
10
  def initialize
6
11
  super
7
12
  @tag = "head"
13
+ self.acceptable_children = [Javascript, JavascriptFile, Link]
8
14
  end
9
-
10
15
  end
16
+
11
17
  end
@@ -20,24 +20,25 @@ module ObjectView
20
20
 
21
21
  def initialize
22
22
  super
23
- puts "Element tag: #{@tag}"
24
23
  self.tag = "html"
25
24
  @head = Head.new
26
- @title = "No Title"
27
25
  self.add @head
28
26
  @body = Body.new
29
27
  self.add @body
30
- @top_div = self.body.add Div.new
31
- @title_div = self.body.add Div.new
32
- @title = "No Title"
28
+ @top_div = nil
29
+ @title_div = nil
30
+ @title = nil
33
31
  @acceptable_children = [Head, Body]
34
32
  end
35
33
 
36
34
  def displayed_title=(title)
35
+ @top_div = self.body.add Div.new
36
+ @title_div = self.body.add Div.new
37
37
  self.title_div.add(Header.new(1, title))
38
38
  end
39
39
 
40
40
  def title=(title)
41
+ @title = title
41
42
  title_element = @head.find_element_with_tag("title")
42
43
  if (title_element == nil)
43
44
  title_element = @head.add_with_tag("title", title)
@@ -45,15 +46,5 @@ module ObjectView
45
46
  title_element.add(title)
46
47
  end
47
48
 
48
- def use_google_charts(chart_load_js_content)
49
- self.head.add JavascriptFile.new("https://www.google.com/jsapi")
50
- self.body.add ChartLoadJavascript.new(chart_load_js_content)
51
- end
52
-
53
- def use_google_charts_ajax(chart_load_js_content, refresh_seconds = nil, prepend_js_script = "")
54
- self.head.add JavascriptFile.new("https://www.google.com/jsapi")
55
- self.body.add ChartLoadJavascriptAjax.new(chart_load_js_content, refresh_seconds, prepend_js_script)
56
- end
57
-
58
49
  end
59
50
  end
@@ -6,6 +6,7 @@ module ObjectView
6
6
  def initialize
7
7
  super()
8
8
  @tag = "table"
9
+ self.acceptable_children = [TBody, THead]
9
10
  end
10
11
 
11
12
  def header_row(labels = nil)
@@ -44,6 +45,7 @@ module ObjectView
44
45
  super()
45
46
  self.single_line = true
46
47
  @tag = "thead"
48
+ self.acceptable_children = [TRow]
47
49
  end
48
50
 
49
51
  def row
@@ -58,6 +60,7 @@ module ObjectView
58
60
  def initialize
59
61
  super()
60
62
  @tag = "tbody"
63
+ self.acceptable_children = [TRow]
61
64
  end
62
65
 
63
66
  def row
@@ -73,6 +76,7 @@ module ObjectView
73
76
  def initialize
74
77
  super()
75
78
  @tag = "tr"
79
+ self.acceptable_children = [TCell, THeadCell]
76
80
  end
77
81
 
78
82
  def cell(content = nil)
@@ -89,6 +93,7 @@ module ObjectView
89
93
  def initialize
90
94
  super()
91
95
  @tag = "tr"
96
+ self.acceptable_children = [THeadCell]
92
97
  end
93
98
 
94
99
  def cell(content = nil)
@@ -107,6 +112,7 @@ module ObjectView
107
112
  super()
108
113
  self.single_line = true
109
114
  @tag = "td"
115
+ self.acceptable_children = [Table, Div, Span, Javascript, Link, String]
110
116
  end
111
117
  end
112
118
 
@@ -0,0 +1,29 @@
1
+ require_relative './span'
2
+
3
+
4
+ module ObjectView
5
+
6
+ class Ul < Element
7
+
8
+ def initialize
9
+ super()
10
+ @tag = "ul"
11
+ self.acceptable_children = [Li]
12
+ end
13
+
14
+ def item(content = nil)
15
+ return self.add Li.new(content)
16
+ end
17
+ end
18
+
19
+
20
+ class Li < Element
21
+ def initialize(content = nil)
22
+ super()
23
+ @tag = "li"
24
+ if (content != nil)
25
+ self.add content
26
+ end
27
+ end
28
+ end
29
+ end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: object-view
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
5
- prerelease:
4
+ version: 0.4.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Mike Moore
@@ -10,54 +9,110 @@ autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
11
  date: 2014-03-10 00:00:00.000000000 Z
13
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: byebug
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '6.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '6.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: nokogiri
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.6.8
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.6.8
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec-its
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: '1.2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: '1.2'
14
69
  description: Object oriented approach to generating HTML content
15
70
  email: m.moore.denver@gmail.com
16
71
  executables: []
17
72
  extensions: []
18
73
  extra_rdoc_files: []
19
74
  files:
75
+ - lib/object_view.rb
20
76
  - lib/object_view/body.rb
21
77
  - lib/object_view/chart_data.rb
22
78
  - lib/object_view/chart_load_javascript.rb
23
79
  - lib/object_view/chart_load_javascript_ajax.rb
24
80
  - lib/object_view/div.rb
25
81
  - lib/object_view/element.rb
82
+ - lib/object_view/errors/illegal_child_element_error.rb
83
+ - lib/object_view/errors/object_view_error.rb
26
84
  - lib/object_view/head.rb
27
85
  - lib/object_view/header.rb
28
86
  - lib/object_view/javascript.rb
29
87
  - lib/object_view/javascript_file.rb
30
88
  - lib/object_view/link.rb
31
- - lib/object_view/object_view_error.rb
32
89
  - lib/object_view/page.rb
33
90
  - lib/object_view/span.rb
34
91
  - lib/object_view/table.rb
35
- - lib/object_view.rb
92
+ - lib/object_view/ul.rb
36
93
  homepage: https://github.com/mikejmoore/object-view
37
94
  licenses:
38
95
  - MIT
96
+ metadata: {}
39
97
  post_install_message:
40
98
  rdoc_options: []
41
99
  require_paths:
42
100
  - lib
43
101
  - lib/object_view
44
102
  required_ruby_version: !ruby/object:Gem::Requirement
45
- none: false
46
103
  requirements:
47
- - - ! '>='
104
+ - - ">="
48
105
  - !ruby/object:Gem::Version
49
106
  version: '0'
50
107
  required_rubygems_version: !ruby/object:Gem::Requirement
51
- none: false
52
108
  requirements:
53
- - - ! '>='
109
+ - - ">="
54
110
  - !ruby/object:Gem::Version
55
111
  version: '0'
56
112
  requirements: []
57
113
  rubyforge_project:
58
- rubygems_version: 1.8.23
114
+ rubygems_version: 2.4.5.1
59
115
  signing_key:
60
- specification_version: 3
116
+ specification_version: 4
61
117
  summary: Object oriented views
62
118
  test_files: []
63
- has_rdoc: