App-Chart

 view release on metacpan or  search on metacpan

lib/App/Chart/Suffix/NoSuffix.pm  view on Meta::CPAN

   name => __('NYSE _Company Information'),
   desc => __('Open web browser at the New York Stock Exchange page for this company'),
   proc => sub {
     my ($symbol) = @_;
     return 'http://www.nyse.com/about/listed/'
       . URI::Escape::uri_escape($symbol) . '.html';
   });
App::Chart::Weblink->new
  (pred => $pred_amex,
   name => __('AMEX _Company Information'),
   desc => __('Open web browser at the American Stock Exchange page for this company'),
   proc => sub {
     my ($symbol) = @_;
     return 'http://www.amex.com/?href=/equities/listCmp/EqLCCmpDesc.jsp?Product_Symbol=' . URI::Escape::uri_escape ($symbol);
   });
App::Chart::Weblink->new
  (pred => $pred_nasdaq,
   name => __('NASDAQ _Company Information'),
   desc => __('Open web browser at the NASDAQ page for this company'),
   proc => sub {
     my ($symbol) = @_;
     return 'http://quotes.nasdaq.com/asp/summaryquote.asp?symbol='
       . URI::Escape::uri_escape ($symbol);
   });

# return exchange name string, or undef if not known
sub symbol_exchange {
  my ($symbol) = @_;
  require App::Chart::DBI;
  return (App::Chart::DBI->read_single
          ('SELECT exchange FROM info WHERE symbol=?', $symbol)
          //
          App::Chart::DBI->read_single
          ('SELECT exchange FROM latest WHERE symbol=?', $symbol));
}


#------------------------------------------------------------------------------

our @to_suffix =
  (
   # ^AEX
   [ '^AEX', '.AS' ],

   # ^ATX vienna
   # and must avoid ^ATLI and similar below
   [ '^ATX', '.VI' ],

   [ '^AX',   '.AX' ], # several, inc ^AXJO, ^AXPJ
   [ '^AORD', '.AX' ], # all ords
   [ '^ATLI', '.AX' ], # asx 20
   [ '^AFLI', '.AX' ], # asx 50
   [ '^ATOI', '.AX' ], # asx 100

   # ^BFX belgium
   [ '^BF', sub {
       my $pred = App::Chart::Sympred::Prefix->new ('^BF');
       my $timezone_brussels = App::Chart::TZ->new
         (name     => __('Brussels'),
          choose   => [ 'Europe/Brussels' ],
          fallback => 'CET-1');
       $timezone_brussels->setup_for_symbol ($pred);

       # only home page for now ...
       App::Chart::Weblink->new
           (pred => $pred,
            name => __('Brussels Stock Exchange Home Page'),
            desc => __('Open web browser at the Brussels Stock Exchange home page'),
            # now part of euronext ...
            url  => 'http://www.stockexchange.be');
     } ],

   # ^BVSP bovespa
   [ '^BV', '.SA' ],

   # ^BSESN bse sensitive
   [ '^BSE', '.BO' ],

   # ^CASE30
   [ '^CASE', '.CA' ],

   # ^CLDOW
   # ^CLDOWD
   [ '^CL', \&santiago ],

   # ^CCSI - cairo CMA
   [ '^CC', '.CA' ],

   # ^CSE composite
   [ '^CSE', sub {
       my $pred = App::Chart::Sympred::Prefix->new ('^CSE');
       my $timezone_colombo = App::Chart::TZ->new
         (name     => __('Colombo'),
          choose   => [ 'Asia/Colombo' ],
          fallback => 'LKT-5:30');
       $timezone_colombo->setup_for_symbol ($pred);

       # only home page for now ...
       App::Chart::Weblink->new
           (pred => $pred,
            name => __('_CSE Home Page'),
            desc => __('Open web browser at the Colombo Stock Exchange home page'),
            url  => 'http://www.cse.lk');
     } ],

   # ^DJEG20
   # ^DJEG20E
   # ^DJEG20D
   # ^DJEG20T
   # ^DJEG20ET
   # ^DJEG20DT
   [ '^DJEG', '.CA' ],

   # ^DWEG -- dow/wiltshire egypt
   [ '^DWEG', '.CA' ],

   [ '^DWCL', \&santiago ],

   # ^DWTH etc
   [ '^DWTH', '.BK' ],

lib/App/Chart/Suffix/NoSuffix.pm  view on Meta::CPAN

            url  => App::Chart::Glib::Ex::MoreUtils::lang_select
            ('ja' => 'http://www.tse.or.jp',
             'en' => 'http://www.tse.or.jp/english/'));
     } ],
   # web link - TSE company info
   #
   # Eg. in english
   #     http://quote.tse.or.jp/tse/quote.cgi?F=listing/EDetail1&MKTN=T&QCODE=2001
   # and japanese
   #     http://quote.tse.or.jp/tse/quote.cgi?F=listing/Jdetail1&MKTN=T&QCODE=2001
   #

   # no tokyo symbols as such yet ...
   #
   # (weblink-handler! tokyo-symbol?
   #   (lambda (symbol)
   #     (list (_ 'TSE _Company Information')
   # 	  (_ 'Open web browser at the Tokyo Stock Exchange page for this company')
   # 	  (string-append 'http://quote.tse.or.jp/tse/quote.cgi?F=listing/'
   # 			 (lang-select '(('ja' 'J')
   # 					('en' 'E')))
   # 			 'Detail1&MKTN=T&QCODE='
   # 			 (chart-symbol-sans-dot symbol)))))


   # ^NZ50 new zealand
   [ '^NZ', '.NZ' ],

   # ^OEX  S&P 100
   [ '^OEX', \&usa ],

   # ^OMXSPI - stockholm
   [ '^OMX', '.ST' ],

   # ^OSEAX oslo
   [ '^OS', '.OL' ],

   # ^PSI - PSE composite phillipines
   [ '^PS', sub {
       my $pred = App::Chart::Sympred::Prefix->new ('^PS');
       my $timezone_manila = App::Chart::TZ->new
         (name     => __('Manila'),
          choose   => [ 'Asia/Manila' ],
          fallback => 'PHT-8');
       $timezone_manila->setup_for_symbol ($pred);

       # only home page for now ...
       App::Chart::Weblink->new
           (pred => $pred,
            name => __p('phillipine','_PSE Home Page'),
            desc => __('Open web browser at the Phillipine Stock Exchange home page'),
            url  => 'http://www.pse.org.ph');
     } ],

   # ^PX50 prague
   [ '^PX', sub {
       my $pred = App::Chart::Sympred::Prefix->new ('^PX');
       my $timezone_prague = App::Chart::TZ->new
         (name     => __('Prague'),
          choose   => [ 'Europe/Prague', 'Europe/Berlin' ],
          fallback => 'CET-1');
       $timezone_prague->setup_for_symbol ($pred);

       # only home page for now ...
       App::Chart::Weblink->new
           (pred => $pred,
            name => __p('prague','_PSE Home Page'),
            desc => __('Open web browser at the Prague Stock Exchange home page'),
            url  => App::Chart::Glib::Ex::MoreUtils::lang_select
            ('cs' => 'http://www.pse.cz',
             'en' => 'http://www.pse.cz/default.asp?language=english'));
     } ],

   # ^SMSI
   # not ^SML - S&P small 600
   [ '^SMS', '.MA' ],

   # ^SSEC shanghai composite
   # and not hitting ^SSMI
   [ '^SSE', '.SS' ],

   # ^SPCDNX - CDNX Index TSX venture
   [ '^SPC', '.V' ],

   # ^SPTSECP - S&P TSX 60 Capped, etc
   [ '^SPT', '.TO' ],

   # http://au.finance.yahoo.com/intlindices
   # ^SSMI - SMI switzerland
   # and not hitting ^SSEC
   [ 'SSM', '.SW' ],

   # ^STI straits times singapore
   [ '^STI', '.SI' ],

   # ^STOXX
   [ '^STO', \&germany ],

   # ^SXIP etc stoxx variations
   [ '^SX', \&germany ],

   # ^THDOW etc
   [ '^TH', '.BK' ],

   # ^TWII weighted
   [ '^TW', '.TW' ],

   # ^VEDOW
   # ^VEDOWD
   [ '^VE', '.CR' ],

  );


sub symbol_setups {
  my ($symbol) = @_;
  foreach my $elem (@to_suffix) {
    my $prefix = $elem->[0];
    if ($symbol =~ /^\Q$prefix\E/) {
      my $action = $elem->[1];
      $elem->[1] = \&noop;  # once only



( run in 0.560 second using v1.01-cache-2.11-cpan-39bf76dae61 )