object-view 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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: