ie_handler 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/ie_handler.rb +144 -1
  2. metadata +7 -8
  3. data/lib/ie_handler/ie_page.rb +0 -147
data/lib/ie_handler.rb CHANGED
@@ -2,5 +2,148 @@ $:.unshift(File.dirname(__FILE__)) unless
2
2
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
3
 
4
4
  module IeHandler
5
- VERSION = '0.0.5'
5
+ VERSION = '0.0.6'
6
+
7
+ class IePage
8
+ IE_APP = "InternetExplorer.Application"
9
+
10
+ attr_accessor :doc, :ie
11
+
12
+ #instance methods
13
+ def initialize url
14
+ @ie = WIN32OLE.new(IE_APP)
15
+ go url
16
+ @doc = @ie.document
17
+ end
18
+
19
+ #wait during loading
20
+ def wait
21
+ while @ie.Busy == true
22
+ sleep 1
23
+ end
24
+ end
25
+
26
+ #move to the specified url
27
+ def go url, visible = true
28
+ @ie.Navigate(url)
29
+ @ie.Visible=visible
30
+ wait
31
+ end
32
+
33
+ def back
34
+ @ie.GoBack
35
+ wait
36
+ end
37
+
38
+ def close
39
+ @ie.Quit
40
+ end
41
+
42
+ #initalization. this is configulation which you should ie.find
43
+ #when you access DOM.
44
+ def find
45
+ @doc = @ie.document
46
+ @start = nil
47
+ self
48
+ end
49
+
50
+ #Saved Access
51
+ #Save ie object
52
+ #ex) save tr and use td using saved tr object.
53
+ def sa
54
+ unless @start
55
+ @start = @doc
56
+ else
57
+ @doc = @start
58
+ end
59
+ self
60
+ end
61
+
62
+ def each
63
+ yield self unless @doc.respond_to?(:each)
64
+ @doc.each do |d|
65
+ obj = self.clone
66
+ obj.ie = @ie
67
+ obj.doc = d
68
+ yield obj
69
+ end
70
+ end
71
+
72
+ #accessor methods map
73
+ @accessor = {
74
+ :id => :getElementById,
75
+ :tag => :getElementsByTagName,
76
+ :name => :getElementsByName,
77
+ :clazz => :getElementsByClassName
78
+ }
79
+ #id,tag,name,clazz method dinamic definition
80
+ @accessor.each do |name, method|
81
+ define_method name do |elem, item_num=nil|
82
+ return nil if @doc.nil?
83
+ items = @doc.send(method, elem)
84
+ @doc = (!! item_num) ? items.item(item_num) : items
85
+ self
86
+ end
87
+ end
88
+
89
+ def click
90
+ @doc.click nil
91
+ wait
92
+ end
93
+
94
+ def html content=nil
95
+ if content
96
+ @doc.appendChild(@ie.document.createTextNode(content))
97
+ else
98
+ @doc.innerHTML
99
+ end
100
+ end
101
+
102
+ #DOM new element addition
103
+ def add obj
104
+ @doc.appendChild(obj.doc)
105
+ end
106
+
107
+ def attr name, value=nil
108
+ unless value
109
+ @doc.getAttribute(name)
110
+ else
111
+ @doc.setAttribute(name, value)
112
+ end
113
+ end
114
+
115
+ #for inspect methods
116
+ def methods search_word=nil
117
+ mtds = @doc.ole_methods.map{|mtd| mtd.to_s}.sort
118
+ mtds = mtds.grep search_word if search_word
119
+ mtds
120
+ end
121
+
122
+ def method name
123
+ @ie.ole_method_help(name).params.each do |param|
124
+ str = ""
125
+ str.concat "[in] " if param.input?
126
+ str.concat "[out] " if param.output?
127
+ str.concat "[optional] " if param.optional?
128
+ str.concat "[retval] " if param.retval?
129
+ str.concat param.name
130
+ str.concat " = #{param.default}" if param.default
131
+ str.concat " As #{param.ole_type}"
132
+ puts str
133
+ end
134
+ end
135
+
136
+ def method_missing(method_name, *args)
137
+ @doc.send(method_name, *args)
138
+ end
139
+
140
+ #class methods
141
+ class << self
142
+ def make_elem ie_obj, elem_name
143
+ obj = ie_obj.clone
144
+ obj.doc = ie_obj.ie.document.createElement(elem_name)
145
+ obj
146
+ end
147
+ end
148
+ end
6
149
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ie_handler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-06-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdoc
16
- requirement: &83809270 !ruby/object:Gem::Requirement
16
+ requirement: &73980100 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.10'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *83809270
24
+ version_requirements: *73980100
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: newgem
27
- requirement: &83809030 !ruby/object:Gem::Requirement
27
+ requirement: &73979860 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.5.3
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *83809030
35
+ version_requirements: *73979860
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: hoe
38
- requirement: &83808790 !ruby/object:Gem::Requirement
38
+ requirement: &73979620 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '3.0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *83808790
46
+ version_requirements: *73979620
47
47
  description: ! 'IE Handler enable you to handle IE using Ruby.
48
48
 
49
49
  It has simple syntax and strong methods.
@@ -67,7 +67,6 @@ files:
67
67
  - README.rdoc
68
68
  - Rakefile
69
69
  - lib/ie_handler.rb
70
- - lib/ie_handler/ie_page.rb
71
70
  - script/console
72
71
  - script/destroy
73
72
  - script/generate
@@ -1,147 +0,0 @@
1
- # -*- encoding: UTF-8 -*-
2
- require 'win32OLE'
3
-
4
- module IeHandler
5
- class IePage
6
- IE_APP = "InternetExplorer.Application"
7
-
8
- attr_accessor :doc, :ie
9
-
10
- #instance methods
11
- def initialize url
12
- @ie = WIN32OLE.new(IE_APP)
13
- go url
14
- @doc = @ie.document
15
- end
16
-
17
- #wait during loading
18
- def wait
19
- while @ie.Busy == true
20
- sleep 1
21
- end
22
- end
23
-
24
- #move to the specified url
25
- def go url, visible = true
26
- @ie.Navigate(url)
27
- @ie.Visible=visible
28
- wait
29
- end
30
-
31
- def back
32
- @ie.GoBack
33
- wait
34
- end
35
-
36
- def close
37
- @ie.Quit
38
- end
39
-
40
- #initalization. this is configulation which you should ie.find
41
- #when you access DOM.
42
- def find
43
- @doc = @ie.document
44
- @start = nil
45
- self
46
- end
47
-
48
- #Saved Access
49
- #Save ie object
50
- #ex) save tr and use td using saved tr object.
51
- def sa
52
- unless @start
53
- @start = @doc
54
- else
55
- @doc = @start
56
- end
57
- self
58
- end
59
-
60
- def each
61
- yield self unless @doc.respond_to?(:each)
62
- @doc.each do |d|
63
- obj = self.clone
64
- obj.ie = @ie
65
- obj.doc = d
66
- yield obj
67
- end
68
- end
69
-
70
- #accessor methods map
71
- @accessor = {
72
- :id => :getElementById,
73
- :tag => :getElementsByTagName,
74
- :name => :getElementsByName,
75
- :clazz => :getElementsByClassName
76
- }
77
- #id,tag,name,clazz method dinamic definition
78
- @accessor.each do |name, method|
79
- define_method name do |elem, item_num=nil|
80
- return nil if @doc.nil?
81
- items = @doc.send(method, elem)
82
- @doc = (!! item_num) ? items.item(item_num) : items
83
- self
84
- end
85
- end
86
-
87
- def click
88
- @doc.click nil
89
- wait
90
- end
91
-
92
- def html content=nil
93
- if content
94
- @doc.appendChild(@ie.document.createTextNode(content))
95
- else
96
- @doc.innerHTML
97
- end
98
- end
99
-
100
- #DOM new element addition
101
- def add obj
102
- @doc.appendChild(obj.doc)
103
- end
104
-
105
- def attr name, value=nil
106
- unless value
107
- @doc.getAttribute(name)
108
- else
109
- @doc.setAttribute(name, value)
110
- end
111
- end
112
-
113
- #for inspect methods
114
- def methods search_word=nil
115
- mtds = @doc.ole_methods.map{|mtd| mtd.to_s}.sort
116
- mtds = mtds.grep search_word if search_word
117
- mtds
118
- end
119
-
120
- def method name
121
- @ie.ole_method_help(name).params.each do |param|
122
- str = ""
123
- str.concat "[in] " if param.input?
124
- str.concat "[out] " if param.output?
125
- str.concat "[optional] " if param.optional?
126
- str.concat "[retval] " if param.retval?
127
- str.concat param.name
128
- str.concat " = #{param.default}" if param.default
129
- str.concat " As #{param.ole_type}"
130
- puts str
131
- end
132
- end
133
-
134
- def method_missing(method_name, *args)
135
- @doc.send(method_name, *args)
136
- end
137
-
138
- #class methods
139
- class << self
140
- def make_elem ie_obj, elem_name
141
- obj = ie_obj.clone
142
- obj.doc = ie_obj.ie.document.createElement(elem_name)
143
- obj
144
- end
145
- end
146
- end
147
- end