MozRepl::Plugin::Location - Dump window.location object as possible.


MozRepl-Plugin-LinkTools documentation Contained in the MozRepl-Plugin-LinkTools distribution.

Index


Code Index:

NAME

Top

MozRepl::Plugin::Location - Dump window.location object as possible.

VERSION

Top

version 0.01

SYNOPSIS

Top

    use MozRepl;

    my $repl = MozRepl->new;
    $repl->setup({ plugins => { plugins => [qw/OpenNewTab Location/] } });

    $repl->open_new_tab({ url => "http://d.hatena.ne.jp/ZIGOROu/", selected => 1 });

    sleep(5);

    my $location = $repl->location();
    print $location->{href};

METHODS

Top

execute($ctx, $args)

$ctx

Context object. See MozRepl.

$args

Hash reference. See below detail.

all

Defalt 0, return location object dump of current tab. If this value is 1, dump location object from all tabs.

AUTHOR

Top

Toru Yamaguchi, <zigorou@cpan.org>

BUGS

Top

Please report any bugs or feature requests to bug-mozrepl-plugin-location@rt.cpan.org, or through the web interface at http://rt.cpan.org. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

COPYRIGHT & LICENSE

Top


MozRepl-Plugin-LinkTools documentation Contained in the MozRepl-Plugin-LinkTools distribution.
package MozRepl::Plugin::Location;

use strict;
use warnings;

use base qw(MozRepl::Plugin::Base);
use JSON::Any qw(XS DWIW Syck JSON);

our $VERSION = '0.01';

sub execute {
    my ($self, $ctx, $args) = @_;

    my $params = {};

    $params->{repl} = $ctx->repl;
    $params->{all} = ($args->{all}) ? 'true' : 'false';

    my $command = $self->process('execute', $params);
    my $result = $ctx->execute($command);

    return JSON::Any->new->jsonToObj($result);
}

1; # End of MozRepl::Plugin::Location

__DATA__
__execute__
(function(all) {

  function getLocationAsJSON(tWindow) {
    var json = {};

    for (var p in tWindow.location) {
      var type;

      try {
        type = typeof tWindow.location[p];
      }
      catch (e) {
        continue;
      }

      if (type == "object" || type == "function" || type == "undefined") {
        continue;
      }

      json[p] = tWindow.location[p];
    }

    return json;
  }

  if (all) {
      return JSONstring.make(Array.prototype.map.call(
          window.getBrowser().tabContainer.childNodes, 
          function(tab) {
              return JSONString.make(getLocationAsJSON(tab.linkedBrowser.contentWindow));
          }
      ));
  }
  else {
      return JSONstring.make(getLocationAsJSON(window.getBrowser().contentWindow));
  }
})([% all %]);
__END__