Invoke base class nested method

Hi,

I have an ObjectMap class that contains other classes. I inherit from
the base class.Could someone tell me how I can run a nested class
method from the inherited class?

Here is the code:

<snip>
class ObjectMap
   @@ie = Watir::IE.new
   #each page has a class where objects of that class are mapped
   class Login
     def username;@@ie.text_field(:name, 'user_name');end
     def password;@@ie.text_field(:name, 'password');end
     def remember_me;@@ie.checkbox(:name, 'remember_me');end
     def sign_in;@@ie.button(:value, 'Sign in');end
   end
   class DashBoard
       #more methods
   end
end

class A_Test < ObjectMap

    @@ie.goto('www.updatelog.com')
    @@ie.maximize
    #how do I run the username method?

end
<snip>

Need to, for example, run the username method?

Thanks

aidy

many ways. make it easy on yourself though

class ObjectMap
   def self.login() Login end
end

class A_Test < ObjectMap

    @@ie.goto('www.updatelog.com')
    @@ie.maximize
    #how do I run the username method?

    login.username

end

-a

···

On Wed, 4 Apr 2007, aidy wrote:

Hi,

I have an ObjectMap class that contains other classes. I inherit from
the base class.Could someone tell me how I can run a nested class
method from the inherited class?

Here is the code:

<snip>
class ObjectMap
  @@ie = Watir::IE.new
  #each page has a class where objects of that class are mapped
  class Login
    def username;@@ie.text_field(:name, 'user_name');end
    def password;@@ie.text_field(:name, 'password');end
    def remember_me;@@ie.checkbox(:name, 'remember_me');end
    def sign_in;@@ie.button(:value, 'Sign in');end
  end
  class DashBoard
      #more methods
  end
end

class A_Test < ObjectMap

   @@ie.goto('www.updatelog.com')
   @@ie.maximize
   #how do I run the username method?

end
<snip>

Need to, for example, run the username method?

Thanks

aidy

--
be kind whenever possible... it is always possible.
- the dalai lama

Same way you'd do it from the superclass:

class A_Test < ObjectMap
     Login.new.username
end

Note that username is not a method of ObjectMap but of the nested
class ObjectMap::Login

You could also do this from outside ObjectMap and it's subclasses like so:

ObjectMap::Login.new.username

If you made login and it's brethren class methods:

class Login
       def self.username;@@ie.text_field(:name, 'user_name');end
       def self password;@@ie.text_field(:name, 'password');end
       def self.remember_me;@@ie.checkbox(:name, 'remember_me');end
       def sign_in;@@ie.button(:value, 'Sign in');end
end

Then the above would be

class A_Test < ObjectMap
     Login..username
end

or from outside:

   ObjectMap::Login.username

Lacking more information about what you are really trying to
accomplish, your code looks a little odd to my eye.

ObjectMap seems like it really should be a module rather than a class
since from what you've shown it's really acting as what looks like a
name space.

You're using class variables which always raises a yellow flag in my mind.

Of course some of this could be Watir practice and I've never used Watir.

···

On 4/3/07, aidy <aidy.rutter@gmail.com> wrote:

Hi,

I have an ObjectMap class that contains other classes. I inherit from
the base class.Could someone tell me how I can run a nested class
method from the inherited class?

Here is the code:

<snip>
class ObjectMap
   @@ie = Watir::IE.new
   #each page has a class where objects of that class are mapped
   class Login
     def username;@@ie.text_field(:name, 'user_name');end
     def password;@@ie.text_field(:name, 'password');end
     def remember_me;@@ie.checkbox(:name, 'remember_me');end
     def sign_in;@@ie.button(:value, 'Sign in');end
   end
   class DashBoard
       #more methods
   end
end

class A_Test < ObjectMap

    @@ie.goto('www.updatelog.com')
    @@ie.maximize
    #how do I run the username method?

end
<snip>

Need to, for example, run the username method?

--
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

Hi,

Could I do something like this?

$ie = Watir::IE.new
$ie.goto('www.updatelog.com')
class ObjectMap
   def self.login()
    username = $ie.text_field(:name, 'user_name')
  end
end

class A_Test < ObjectMap

    login.username.set('aidy')
end

I am not so sure why you have used a self prefix before the login
method.

Thanks

Aidy

Hi,

Could I do something like this?

$ie = Watir::IE.new
$ie.goto('www.updatelog.com')
class ObjectMap
  def self.login()
   username = $ie.text_field(:name, 'user_name')
end
end

if you're a fan of debugging code with lots of global variables - sure.

class A_Test < ObjectMap

   login.username.set('aidy')
end

I am not so sure why you have used a self prefix before the login
method.

it's a class method.

-a

···

On Wed, 4 Apr 2007, aidy wrote:
--
be kind whenever possible... it is always possible.
- the dalai lama

Thanks for your advice.

What I mean to ask is that once I have entered the class method
(self.login()) can I
then assign

username=ie.text_field(:name, 'user_name')

and invoke this assignment in the sub class

class A_Test < ObjectMap

    login.username

end

?

Or something like that

cheers

aidy