navfund 0.0.5 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis.yml +2 -0
- data/LICENSE +2 -2
- data/README.md +17 -8
- data/lib/navfund.rb +9 -1
- data/lib/navfund/provider.rb +53 -8
- data/lib/navfund/providers/bdo_unibank.rb +41 -0
- data/lib/navfund/providers/bpi.rb +52 -0
- data/lib/navfund/providers/metrobank.rb +21 -42
- data/lib/navfund/providers/philamlife.rb +29 -67
- data/lib/navfund/providers/philippine_national_bank.rb +40 -0
- data/lib/navfund/providers/security_bank.rb +34 -0
- data/lib/navfund/providers/sunlife.rb +16 -57
- data/lib/navfund/providers/ucpb.rb +32 -0
- data/lib/navfund/providers/union_bank.rb +38 -0
- data/lib/navfund/version.rb +1 -1
- data/navfund.gemspec +6 -3
- data/test/lib/navfund/provider_test.rb +15 -13
- metadata +26 -25
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f151b4c54ed06165673a1e4ae046f97e4b4d31f4
|
4
|
+
data.tar.gz: b8ec4a7016ca040ff104a7d4d6eb2526d9ab3068
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ba372171a218b9fad5a3a6f8ba31637afe566eaf0a2a0eadce6200327b445827a495afa6891b0c6579381a1fce7d4c2aef6d5ac26c3d98c3954c77c52732388d
|
7
|
+
data.tar.gz: 93035f56bf3ca1aa74cdc07b1dab82f8c3f75d9d14ee64c380c36f72f3b3edcf4ffc48ac414988ae0b6acb025f764e973477b7c42e00aad928c6e3142fef15a3
|
data/.travis.yml
CHANGED
data/LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c)
|
1
|
+
Copyright (c) 2015 Marvin Baltazar
|
2
2
|
|
3
3
|
MIT License
|
4
4
|
|
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
19
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
20
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
21
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
# Navfund
|
2
2
|
|
3
|
-
Navfund is a ruby gem that fetches the values of the current NAVPU/NAVPS of several
|
3
|
+
Navfund is a ruby gem that fetches the values of the current NAVPU/NAVPS of several UITFs/Mutual Funds. Currently it only supports Philippine providers.
|
4
4
|
|
5
|
+
[![Gem Version](https://badge.fury.io/rb/navfund.svg)](http://badge.fury.io/rb/navfund)
|
5
6
|
[![Build Status](https://travis-ci.org/marvs/navfund.png)](https://travis-ci.org/marvs/navfund)
|
6
7
|
|
8
|
+
|
7
9
|
## Installation
|
8
10
|
|
9
11
|
Add this line to your application's Gemfile:
|
@@ -26,22 +28,29 @@ Get a list of supported Providers:
|
|
26
28
|
|
27
29
|
Initialize a Provider's data:
|
28
30
|
|
29
|
-
@
|
31
|
+
@metrobank = Navfund::Metrobank.new
|
30
32
|
|
31
33
|
To get a list of supported funds for a specific Provider:
|
32
34
|
|
33
|
-
Navfund::
|
34
|
-
@
|
35
|
+
Navfund::Metrobank::Funds
|
36
|
+
@metrobank.funds # if a provider is initialized
|
35
37
|
|
36
38
|
Get the current NAVPU/NAVPS of a fund, by name:
|
37
39
|
|
38
|
-
@
|
40
|
+
@metrobank.value("Equity Fund")
|
39
41
|
|
40
|
-
|
42
|
+
A Navfund::Provider::InvalidFund will be raised if the specified fund is not supported or is invalid.
|
43
|
+
|
44
|
+
Get the date in which the value is valid. This returns a Date object:
|
45
|
+
|
46
|
+
@metrobank.value_at
|
41
47
|
|
42
|
-
|
48
|
+
To list all fund names with their current values:
|
49
|
+
|
50
|
+
@metrobank.fund_values
|
43
51
|
|
44
|
-
|
52
|
+
This returns an array of hashes with all the fund names and their current values.
|
53
|
+
|
45
54
|
|
46
55
|
## Testing
|
47
56
|
|
data/lib/navfund.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require 'nokogiri'
|
2
2
|
require 'open-uri'
|
3
|
+
require 'openssl'
|
4
|
+
require 'date'
|
3
5
|
|
4
6
|
# Add current directory to load paths
|
5
7
|
main_dir = File.dirname(__FILE__)
|
@@ -18,7 +20,13 @@ require "navfund/provider"
|
|
18
20
|
require "navfund/providers/metrobank"
|
19
21
|
require "navfund/providers/sunlife"
|
20
22
|
require "navfund/providers/philamlife"
|
23
|
+
require "navfund/providers/bdo_unibank"
|
24
|
+
require "navfund/providers/bpi"
|
25
|
+
require "navfund/providers/philippine_national_bank"
|
26
|
+
require "navfund/providers/security_bank"
|
27
|
+
require "navfund/providers/union_bank"
|
28
|
+
require "navfund/providers/ucpb"
|
21
29
|
|
22
30
|
module Navfund
|
23
|
-
Providers = [Metrobank, Sunlife, Philamlife]
|
31
|
+
Providers = [Metrobank, Sunlife, Philamlife, BDO, BPI, PNB, SecurityBank, UnionBank, UCPB]
|
24
32
|
end
|
data/lib/navfund/provider.rb
CHANGED
@@ -2,22 +2,67 @@
|
|
2
2
|
|
3
3
|
module Navfund
|
4
4
|
class Provider
|
5
|
+
attr_reader :funds
|
5
6
|
|
6
|
-
def scrape
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
@
|
11
|
-
@wrapped_vul_document = Nokogiri::HTML(@vul_document)
|
7
|
+
def scrape(opts={})
|
8
|
+
if opts[:check_ssl] == false
|
9
|
+
@document = open(@url, :ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE).read
|
10
|
+
else
|
11
|
+
@document = open(@url).read
|
12
12
|
end
|
13
|
+
@wrapped_document = Nokogiri::HTML(@document)
|
13
14
|
end
|
14
15
|
|
15
16
|
def self.strip_value(val)
|
16
|
-
val.strip.gsub('PHP', '').gsub('USD', '').strip
|
17
|
+
val.strip.gsub('PHP', '').gsub('USD', '').gsub(',', '').strip
|
18
|
+
end
|
19
|
+
|
20
|
+
# List supported funds by name
|
21
|
+
def fund_names
|
22
|
+
funds.map{ |x| x[:name] }
|
17
23
|
end
|
18
24
|
|
25
|
+
# Check if the fund name is supported
|
19
26
|
def valid_fund?(fund)
|
20
|
-
|
27
|
+
fund_names.include?(fund)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Returns the fund value
|
31
|
+
def value
|
32
|
+
nil
|
33
|
+
end
|
34
|
+
|
35
|
+
# Returns the date of the fund values
|
36
|
+
def value_at
|
37
|
+
nil
|
38
|
+
end
|
39
|
+
|
40
|
+
# Display all fund values
|
41
|
+
def fund_values
|
42
|
+
fvals = []
|
43
|
+
fund_names.each{ |f| fvals << { :name => f, :value => self.value(f) } }
|
44
|
+
fvals
|
45
|
+
end
|
46
|
+
|
47
|
+
# Generic parser for uitf.com.ph website
|
48
|
+
def uitf_com_ph_parser(fund)
|
49
|
+
val = nil
|
50
|
+
if valid_fund?(fund)
|
51
|
+
fname = @wrapped_document.search("[text()*='#{fund}']").first
|
52
|
+
if fname
|
53
|
+
fval = fname.ancestors('tr').first.search("td[data-title='NAVpu'] div").first rescue nil
|
54
|
+
end
|
55
|
+
val = Provider.strip_value(fval.text) if fval
|
56
|
+
else
|
57
|
+
raise InvalidFund
|
58
|
+
end
|
59
|
+
val
|
60
|
+
end
|
61
|
+
|
62
|
+
def uitf_com_ph_date_parser
|
63
|
+
dtext = @wrapped_document.search("h5").first.text
|
64
|
+
dstr = dtext.split("as of").last.strip
|
65
|
+
Date.parse(dstr)
|
21
66
|
end
|
22
67
|
|
23
68
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# BDO Unibank
|
2
|
+
|
3
|
+
module Navfund
|
4
|
+
class BDO < Provider
|
5
|
+
# List of funds
|
6
|
+
MAIN_URL = "http://www.uitf.com.ph/daily_navpu.php?bank_id=6"
|
7
|
+
Funds = [
|
8
|
+
{:name => "INSTITUTIONAL CASH RESERVE FUND", :currency => "PHP", :ticker => "BDOICRF:PM"},
|
9
|
+
{:name => "PESO MONEY MARKET FUND", :currency => "PHP", :ticker => "BDOPMMF:PM"},
|
10
|
+
{:name => "MERIT FUND SHORT TERM PORTFOLIO", :currency => "PHP", :ticker => "EPCIBME:PM"},
|
11
|
+
{:name => "GS FUND", :currency => "PHP", :ticker => "EPCIBGS:PM"},
|
12
|
+
{:name => "MERIT FUND MEDIUM TERM PORTFOLIO", :currency => "PHP", :ticker => "BDOMERB:PM"},
|
13
|
+
{:name => "PESO BOND FUND", :currency => "PHP", :ticker => "BDOPBF:PM"},
|
14
|
+
{:name => "PESO FIXED INCOME FUND", :currency => "PHP", :ticker => "BDOPFIF:PM"},
|
15
|
+
{:name => "PESO BALANCED FUND", :currency => "PHP", :ticker => "BDOPBAL:PM"},
|
16
|
+
{:name => "EQUITY FUND", :currency => "PHP", :ticker => "EPCIBEQ:PM"},
|
17
|
+
{:name => "FOCUSED EQUITY FUND", :currency => "PHP", :ticker => "BDOTFEF:PM"},
|
18
|
+
{:name => "INSTITUTIONAL EQUITY FUND", :currency => "PHP", :ticker => "BDOEQTY:PM"},
|
19
|
+
{:name => "SUSTAINABLE DIVIDEND FUND", :currency => "PHP", :ticker => "BDOTSDF:PM"},
|
20
|
+
{:name => "DOLLAR MONEY MARKET FUND", :currency => "USD", :ticker => "BDODMMF:PM"},
|
21
|
+
{:name => "DOLLAR BOND FUND", :currency => "USD", :ticker => "BDODBF:PM"},
|
22
|
+
{:name => "MEDIUM TERM DOLLAR BOND FUND", :currency => "USD", :ticker => "EPCIBUS:PM"}
|
23
|
+
]
|
24
|
+
|
25
|
+
def initialize(main_url=nil)
|
26
|
+
@url = main_url ||= MAIN_URL
|
27
|
+
@funds = Funds
|
28
|
+
scrape
|
29
|
+
end
|
30
|
+
|
31
|
+
# Fetch the current value
|
32
|
+
def value(fund, fund_type=nil)
|
33
|
+
uitf_com_ph_parser(fund)
|
34
|
+
end
|
35
|
+
|
36
|
+
def value_at
|
37
|
+
uitf_com_ph_date_parser
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# Bank of the Philippine Islands
|
2
|
+
|
3
|
+
module Navfund
|
4
|
+
class BPI < Provider
|
5
|
+
# List of funds
|
6
|
+
MAIN_URL = "http://www.uitf.com.ph/daily_navpu.php?bank_id=3"
|
7
|
+
Funds = [
|
8
|
+
{:name => "BPI Money Market Fund", :currency => "PHP", :ticker => "BPINSTI:PM"},
|
9
|
+
{:name => "BPI Short Term Fund", :currency => "PHP", :ticker => "BPSTUIT:PM"},
|
10
|
+
{:name => "Odyssey Peso Cash Management Fund", :currency => "PHP", :ticker => "INGPCSH:PM"},
|
11
|
+
{:name => "BPI Premium Bond Fund", :currency => "PHP", :ticker => "BPIPRUI:PM"},
|
12
|
+
{:name => "Odyssey Peso Income Fund", :currency => "PHP", :ticker => "INGPINC:PM"},
|
13
|
+
{:name => "ABF Philippines Bond Index Fund", :currency => "PHP", :ticker => "ABFPH:PM"},
|
14
|
+
{:name => "Odyssey Peso Bond Fund", :currency => "PHP", :ticker => "INGPFIN:PM"},
|
15
|
+
{:name => "Odyssey Tax-Exempt Peso Fixed Income Fund", :currency => "PHP", :ticker => "INGTEFI:PM"},
|
16
|
+
{:name => "BPI Balanced Fund", :currency => "PHP", :ticker => "BPIEQBL:PM"},
|
17
|
+
{:name => "Odyssey Diversified Balanced Fund", :currency => "PHP", :ticker => "INGDVBA:PM"},
|
18
|
+
{:name => "Odyssey Diversified Capital Fund", :currency => "PHP", :ticker => "INGDVCP:PM"},
|
19
|
+
{:name => "BPI Equity Value Fund", :currency => "PHP", :ticker => "BPIEQUI:PM"},
|
20
|
+
{:name => "BPI Philippine Equity Index Fund", :currency => "PHP", :ticker => "BPIPEIF:PM"},
|
21
|
+
{:name => "BPI Philippine High Dividend Equity Fund", :currency => "PHP", :ticker => "BPPHDEF:PM"},
|
22
|
+
{:name => "Odyssey High Conviction Equity Fund", :currency => "PHP", :ticker => "INGPHCE:PM"},
|
23
|
+
{:name => "Odyssey Philippine Equity Fund", :currency => "PHP", :ticker => "INGPHEQ:PM"},
|
24
|
+
{:name => "Odyssey Tax-Exempt Philippine Equity Fund", :currency => "PHP", :ticker => "INGTEPE:PM"},
|
25
|
+
{:name => "BPI Global Bond Fund-of-Funds", :currency => "USD", :ticker => "BPIINFP:PM"},
|
26
|
+
{:name => "BPI Global Philippine Fund", :currency => "USD", :ticker => "BPIGLPH:PM"},
|
27
|
+
{:name => "Odyssey Emerging Market Bond Fund", :currency => "USD", :ticker => "INGUSIN:PM"},
|
28
|
+
{:name => "Odyssey Philippine Dollar Bond Fund", :currency => "USD", :ticker => "INGPDFI:PM"},
|
29
|
+
{:name => "Philippine Dollar Bond Index Fund", :currency => "USD", :ticker => "BPIDBIX:PM"},
|
30
|
+
{:name => "BPI European Equity Index Feeder Fund", :currency => "USD", :ticker => "BPIEUFF:PM"},
|
31
|
+
{:name => "BPI Global Equity Fund-of-Funds", :currency => "USD", :ticker => "BPIGLBL:PM"},
|
32
|
+
{:name => "BPI US Equity Index Feeder Fund", :currency => "USD", :ticker => "BPIUSFF:PM"},
|
33
|
+
{:name => "Odyssey Asia Pacific High Dividend Equity Fund", :currency => "USD", :ticker => "INGAPHD:PM"}
|
34
|
+
]
|
35
|
+
|
36
|
+
def initialize(main_url=nil)
|
37
|
+
@url = main_url ||= MAIN_URL
|
38
|
+
@funds = Funds
|
39
|
+
scrape
|
40
|
+
end
|
41
|
+
|
42
|
+
# Fetch the current value
|
43
|
+
def value(fund, fund_type=nil)
|
44
|
+
uitf_com_ph_parser(fund)
|
45
|
+
end
|
46
|
+
|
47
|
+
def value_at
|
48
|
+
uitf_com_ph_date_parser
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
@@ -3,56 +3,35 @@
|
|
3
3
|
module Navfund
|
4
4
|
class Metrobank < Provider
|
5
5
|
# List of funds
|
6
|
-
MAIN_URL = "http://www.
|
6
|
+
MAIN_URL = "http://www.uitf.com.ph/daily_navpu.php?bank_id=1"
|
7
7
|
Funds = [
|
8
|
-
{:name => "Money Market Fund", :currency => "PHP", :
|
9
|
-
{:name => "Max-3 Bond Fund", :currency => "PHP", :
|
10
|
-
{:name => "Wealth Builder Fund", :currency => "PHP", :
|
11
|
-
{:name => "Max-5 Bond Fund", :currency => "PHP", :
|
12
|
-
{:name => "Balanced Fund", :currency => "PHP", :
|
13
|
-
{:name => "Equity Fund", :currency => "PHP", :
|
14
|
-
{:name => "
|
15
|
-
{:name => "
|
16
|
-
{:name => "$
|
8
|
+
{:name => "Money Market Fund", :currency => "PHP", :ticker => "MBSTART:PM"},
|
9
|
+
{:name => "Max-3 Bond Fund", :currency => "PHP", :ticker => "MBELITE:PM"},
|
10
|
+
{:name => "Wealth Builder Fund", :currency => "PHP", :ticker => "MBIPLUS:PM"},
|
11
|
+
{:name => "Max-5 Bond Fund", :currency => "PHP", :ticker => "MBPKEAR:PM"},
|
12
|
+
{:name => "Balanced Fund", :currency => "PHP", :ticker => "MBCAPGR:PM"},
|
13
|
+
{:name => "Equity Fund", :currency => "PHP", :ticker => "MBEQITY:PM"},
|
14
|
+
{:name => "High Dividend Yield Fund", :currency => "PHP", :ticker => ""},
|
15
|
+
{:name => "PSEi Tracker Fund", :currency => "PHP", :ticker => ""},
|
16
|
+
{:name => "$ Money Market Fund", :currency => "USD", :ticker => "MBDMMKF:PM"},
|
17
|
+
{:name => "$ Max-3 Bond Fund", :currency => "USD", :ticker => "MBPHLIQ:PM"},
|
18
|
+
{:name => "$ Max-5 Bond Fund", :currency => "USD", :ticker => "MBPHLBD:PM"}
|
17
19
|
]
|
18
|
-
|
19
|
-
def initialize
|
20
|
-
@url = MAIN_URL
|
21
|
-
self.scrape
|
22
|
-
end
|
23
20
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
# Set fund_type to nil if VUL page is not present
|
29
|
-
fund_type = nil if fund_type == :vul && @wrapped_vul_document.nil?
|
30
|
-
if valid_fund?(fund)
|
31
|
-
source_document = (fund_type == :vul) ? @wrapped_vul_document : @wrapped_document
|
32
|
-
fname = source_document.search("[text()*='#{fund}']").first
|
33
|
-
if fname
|
34
|
-
fval = fname.parent.next_element rescue nil
|
35
|
-
end
|
36
|
-
val = Provider.strip_value(fval.text) if fval
|
37
|
-
else
|
38
|
-
raise InvalidFund
|
39
|
-
end
|
40
|
-
val
|
21
|
+
def initialize(main_url=nil)
|
22
|
+
@url = main_url ||= MAIN_URL
|
23
|
+
@funds = Funds
|
24
|
+
scrape
|
41
25
|
end
|
42
26
|
|
43
|
-
#
|
44
|
-
def
|
45
|
-
|
27
|
+
# Fetch the current value
|
28
|
+
def value(fund, fund_type=nil)
|
29
|
+
uitf_com_ph_parser(fund)
|
46
30
|
end
|
47
31
|
|
48
|
-
|
49
|
-
|
50
|
-
self.funds.map{ |x| x[:name] }
|
32
|
+
def value_at
|
33
|
+
uitf_com_ph_date_parser
|
51
34
|
end
|
52
35
|
|
53
|
-
# Check if the fund name is supported
|
54
|
-
def valid_fund?(fund)
|
55
|
-
self.fund_names.include?(fund)
|
56
|
-
end
|
57
36
|
end
|
58
37
|
end
|
@@ -1,70 +1,40 @@
|
|
1
1
|
# Philam Life
|
2
|
-
# old main - http://www.philamlife.com/en/individuals/resources-and-guides/fund-prices/philam-life-variable-funds/philam_life_variable_funds.html
|
3
2
|
|
4
3
|
module Navfund
|
5
4
|
class Philamlife < Provider
|
6
5
|
MAIN_URL = "https://portal.philamlife.com/NAVPU/philamlife"
|
7
|
-
VUL_URL = "http://www.philamlife.com/en/individuals/resources-and-guides/fund-prices/pelac-variable-funds/pelac_variable_funds.html"
|
8
6
|
Funds = [
|
9
|
-
{:name => "PAMI PHILAM BOND FUND", :currency => "PHP", :
|
10
|
-
{:name => "PAMI PHILAM FUND", :currency => "PHP", :
|
11
|
-
{:name => "PAMI PHILAM STRATEGIC GROWTH FUND", :currency => "PHP", :
|
12
|
-
{:name => "PESO FIXED INCOME FUND", :currency => "PHP", :
|
13
|
-
{:name => "PESO EQUITY FUND", :currency => "PHP", :
|
14
|
-
{:name => "PESO BALANCED FUND", :currency => "PHP", :
|
15
|
-
{:name => "DOLLAR BOND FUND", :currency => "USD", :
|
16
|
-
{:name => "DOLLAR GLOBAL BOND FUND", :currency => "USD", :
|
17
|
-
{:name => "DOLLAR HIGH-WATER MARK FUND 2019", :currency => "USD", :
|
18
|
-
{:name => "PRINCIPAL PROTECT FUND 1", :currency => "PHP", :
|
19
|
-
{:name => "PRINCIPAL PROTECT FUND 2", :currency => "PHP", :
|
20
|
-
{:name => "PRINCIPAL PROTECT EMERGING MARKETS FUND", :currency => "PHP", :
|
21
|
-
{:name => "ASIA'S BEST FUND 1", :currency => "PHP", :
|
22
|
-
{:name => "ASIA'S BEST FUND 2", :currency => "PHP", :
|
23
|
-
{:name => "GROWTH INVEST FUND 1", :currency => "PHP", :
|
24
|
-
{:name => "GROWTH INVEST FUND 2", :currency => "PHP", :
|
25
|
-
{:name => "GROWTH INVEST FUND 3", :currency => "PHP", :
|
26
|
-
{:name => "PELAC PESO EQUITY FUND", :currency => "PHP", :type => "vul"},
|
27
|
-
{:name => "PELAC PESO BALANCED FUND", :currency => "PHP", :type => "vul"},
|
28
|
-
{:name => "PELAC PESO FIXED INCOME FUND", :currency => "PHP", :type => "vul"},
|
29
|
-
{:name => "PELAC DOLLAR BOND FUND", :currency => "USD", :type => "vul"},
|
30
|
-
{:name => "PELAC GLOBAL BOND FUND", :currency => "PHP", :type => "vul"},
|
31
|
-
{:name => "PELAC DOLLAR HIGH-WATER MARK FUND 2019", :currency => "USD", :type => "vul"},
|
32
|
-
{:name => "PELAC PRINCIPAL PROTECT FUND 1", :currency => "PHP", :type => "vul"},
|
33
|
-
{:name => "PELAC PRINCIPAL PROTECT FUND 2", :currency => "PHP", :type => "vul"},
|
34
|
-
{:name => "PELAC PRINCIPAL PROTECT EMERGING MARKETS FUND", :currency => "PHP", :type => "vul"}
|
7
|
+
{:name => "PAMI PHILAM BOND FUND", :currency => "PHP", :ticker => "PHILABF:PM"},
|
8
|
+
{:name => "PAMI PHILAM FUND", :currency => "PHP", :ticker => "PHILAMF:PM"},
|
9
|
+
{:name => "PAMI PHILAM STRATEGIC GROWTH FUND", :currency => "PHP", :ticker => "PHILSTG:PM"},
|
10
|
+
{:name => "PESO FIXED INCOME FUND", :currency => "PHP", :ticker => ""},
|
11
|
+
{:name => "PESO EQUITY FUND", :currency => "PHP", :ticker => ""},
|
12
|
+
{:name => "PESO BALANCED FUND", :currency => "PHP", :ticker => ""},
|
13
|
+
{:name => "DOLLAR BOND FUND", :currency => "USD", :ticker => ""},
|
14
|
+
{:name => "DOLLAR GLOBAL BOND FUND", :currency => "USD", :ticker => ""},
|
15
|
+
{:name => "DOLLAR HIGH-WATER MARK FUND 2019", :currency => "USD", :ticker => ""},
|
16
|
+
{:name => "PRINCIPAL PROTECT FUND 1", :currency => "PHP", :ticker => ""},
|
17
|
+
{:name => "PRINCIPAL PROTECT FUND 2", :currency => "PHP", :ticker => ""},
|
18
|
+
{:name => "PRINCIPAL PROTECT EMERGING MARKETS FUND", :currency => "PHP", :ticker => ""},
|
19
|
+
{:name => "ASIA'S BEST FUND 1", :currency => "PHP", :ticker => ""},
|
20
|
+
{:name => "ASIA'S BEST FUND 2", :currency => "PHP", :ticker => ""},
|
21
|
+
{:name => "GROWTH INVEST FUND 1", :currency => "PHP", :ticker => ""},
|
22
|
+
{:name => "GROWTH INVEST FUND 2", :currency => "PHP", :ticker => ""},
|
23
|
+
{:name => "GROWTH INVEST FUND 3", :currency => "PHP", :ticker => ""}
|
35
24
|
]
|
36
25
|
|
37
|
-
|
38
|
-
@url = MAIN_URL
|
39
|
-
@
|
40
|
-
self.scrape
|
26
|
+
def initialize(main_url=nil)
|
27
|
+
@url = main_url ||= MAIN_URL
|
28
|
+
@funds = Funds
|
29
|
+
self.scrape(:check_ssl => false)
|
41
30
|
end
|
42
31
|
|
43
32
|
# Fetch the current value
|
44
|
-
# Some providers have a separate page for VUL funds, to force checking the VUL page,
|
45
|
-
# set the type to :vul, for example @sunlife.value("Bond Fund", :vul)
|
46
|
-
# It is possible that the same fund name is used for VUL and non-VUL funds so this is necessary
|
47
33
|
def value(fund, fund_type=nil)
|
48
34
|
val = nil
|
49
|
-
fund_type = fund_type.to_sym if fund_type.is_a?(String)
|
50
|
-
# Set fund_type to nil if VUL page is not present
|
51
|
-
fund_type = nil if fund_type == :vul && @wrapped_vul_document.nil?
|
52
35
|
if valid_fund?(fund)
|
53
|
-
|
54
|
-
|
55
|
-
if fund_type == :vul
|
56
|
-
fval = fname.next_element.next_element rescue nil
|
57
|
-
else
|
58
|
-
fval = fname.parent.next_element rescue nil
|
59
|
-
end
|
60
|
-
#fname = find_fund_node(source_document, fund)
|
61
|
-
#if fname
|
62
|
-
# fval = fname.next_element.next_element rescue nil
|
63
|
-
#elsif @wrapped_vul_document && fund_type != :vul
|
64
|
-
# # Search VUL page (if its not done before)
|
65
|
-
# fname = find_fund_node(@wrapped_vul_document, fund)
|
66
|
-
# fval = fname.next_element.next_element rescue nil
|
67
|
-
#end
|
36
|
+
fname = find_fund_node(@wrapped_document, fund)
|
37
|
+
fval = fname.parent.next_element rescue nil
|
68
38
|
val = Provider.strip_value(fval.text) if fval
|
69
39
|
else
|
70
40
|
raise InvalidFund
|
@@ -72,6 +42,12 @@ module Navfund
|
|
72
42
|
val
|
73
43
|
end
|
74
44
|
|
45
|
+
def value_at
|
46
|
+
dcontainer = @wrapped_document.search('div#detailcol3').first
|
47
|
+
dtext = dcontainer.text.strip
|
48
|
+
Date.strptime(dtext, "%m/%d/%Y")
|
49
|
+
end
|
50
|
+
|
75
51
|
def find_fund_node(doc, fund)
|
76
52
|
fname = nil
|
77
53
|
if fund.match(/'/)
|
@@ -86,19 +62,5 @@ module Navfund
|
|
86
62
|
fname
|
87
63
|
end
|
88
64
|
|
89
|
-
# List supported funds
|
90
|
-
def funds
|
91
|
-
Funds
|
92
|
-
end
|
93
|
-
|
94
|
-
# List supported funds by name
|
95
|
-
def fund_names
|
96
|
-
self.funds.map{ |x| x[:name] }
|
97
|
-
end
|
98
|
-
|
99
|
-
# Check if the fund name is supported
|
100
|
-
def valid_fund?(fund)
|
101
|
-
self.fund_names.include?(fund)
|
102
|
-
end
|
103
65
|
end
|
104
66
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# Philippine National Bank
|
2
|
+
|
3
|
+
module Navfund
|
4
|
+
class PNB < Provider
|
5
|
+
# List of funds
|
6
|
+
MAIN_URL = "http://www.uitf.com.ph/daily_navpu.php?bank_id=2"
|
7
|
+
Funds = [
|
8
|
+
{:name => "DREAM BUILDER MONEY MARKET FUND", :currency => "PHP", :ticker => ""},
|
9
|
+
{:name => "GLOBAL FILIPINO PESO MONEY MARKET FUND", :currency => "PHP", :ticker => "PNBPSPL:PM"},
|
10
|
+
{:name => "INSTITUTIONAL MONEY MARKET FUND", :currency => "PHP", :ticker => ""},
|
11
|
+
{:name => "PRIME PESO MONEY MARKET FUND", :currency => "PHP", :ticker => "PNBMHPR:PM"},
|
12
|
+
{:name => "AUP GS FUND", :currency => "PHP", :ticker => "ALDUPGS:PM"},
|
13
|
+
{:name => "PLUS INTERMEDIATE TERM BOND FUND", :currency => "PHP", :ticker => "PNBDRMB:PM"},
|
14
|
+
{:name => "PRESTIGE BALANCED FUND", :currency => "PHP", :ticker => "PNBMHPT:PM"},
|
15
|
+
{:name => "AUP EQUITY FUND", :currency => "PHP", :ticker => "ALDUPEQ:PM"},
|
16
|
+
{:name => "ENHANCED PHIL-INDEX REFERENCE FUND", :currency => "PHP", :ticker => "PNBPHSX:PM"},
|
17
|
+
{:name => "HIGH DIVIDEND FUND", :currency => "PHP", :ticker => "PNBHIDF:PM"},
|
18
|
+
{:name => "GLOBAL FILIPINO DOLLAR MONEY MARKET FUND", :currency => "USD", :ticker => "PNBDLPL:PM"},
|
19
|
+
{:name => "PRIME DOLLAR MONEY MARKET FUND", :currency => "USD", :ticker => "PNBDPRF:PM"},
|
20
|
+
{:name => "PROFIT DOLLAR INTERMEDIATE TERM BOND FUND", :currency => "USD", :ticker => "PNBDLPR:PM"},
|
21
|
+
{:name => "AUP DOLLAR FUND", :currency => "USD", :ticker => "ALDUPDL:PM"}
|
22
|
+
]
|
23
|
+
|
24
|
+
def initialize(main_url=nil)
|
25
|
+
@url = main_url ||= MAIN_URL
|
26
|
+
@funds = Funds
|
27
|
+
scrape
|
28
|
+
end
|
29
|
+
|
30
|
+
# Fetch the current value
|
31
|
+
def value(fund, fund_type=nil)
|
32
|
+
uitf_com_ph_parser(fund)
|
33
|
+
end
|
34
|
+
|
35
|
+
def value_at
|
36
|
+
uitf_com_ph_date_parser
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# Security Bank
|
2
|
+
|
3
|
+
module Navfund
|
4
|
+
class SecurityBank < Provider
|
5
|
+
# List of funds
|
6
|
+
MAIN_URL = "http://www.uitf.com.ph/daily_navpu.php?bank_id=12"
|
7
|
+
Funds = [
|
8
|
+
{:name => "SB PESO MONEY MARKET FUND", :currency => "PHP", :ticker => "SBPSOEA:PM"},
|
9
|
+
{:name => "SB Intermediate Term Peso Bond Fund", :currency => "PHP", :ticker => "SBITPBD:PM"},
|
10
|
+
{:name => "SB PESO BOND FUND", :currency => "PHP", :ticker => "SBPSUIT:PM"},
|
11
|
+
{:name => "SB TAX-EXEMPT BOND FUND", :currency => "PHP", :ticker => "SBTEXBD:PM"},
|
12
|
+
{:name => "SB PESO ASSET VARIETY FUND", :currency => "PHP", :ticker => "SBPSASV:PM"},
|
13
|
+
{:name => "SB HIGH DIVIDEND PESO EQUITY FUND", :currency => "PHP", :ticker => "SBPSHDF:PM"},
|
14
|
+
{:name => "SB PESO EQUITY FUND", :currency => "PHP", :ticker => "SBPSEQF:PM"},
|
15
|
+
{:name => "SB DOLLAR BOND FUND", :currency => "USD", :ticker => "SBDLUIT:PM"}
|
16
|
+
]
|
17
|
+
|
18
|
+
def initialize(main_url=nil)
|
19
|
+
@url = main_url ||= MAIN_URL
|
20
|
+
@funds = Funds
|
21
|
+
scrape
|
22
|
+
end
|
23
|
+
|
24
|
+
# Fetch the current value
|
25
|
+
def value(fund, fund_type=nil)
|
26
|
+
uitf_com_ph_parser(fund)
|
27
|
+
end
|
28
|
+
|
29
|
+
def value_at
|
30
|
+
uitf_com_ph_date_parser
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
@@ -3,62 +3,28 @@
|
|
3
3
|
module Navfund
|
4
4
|
class Sunlife < Provider
|
5
5
|
MAIN_URL = "http://www.sunlife.com.ph/philippines/Products+and+Services/Sun+Life+Prosperity+Funds?vgnLocale=en_CA"
|
6
|
-
VUL_URL = "http://www.sunlife.com.ph/philippines/Products+and+Services/VUL?vgnLocale=en_CA"
|
7
6
|
Funds = [
|
8
|
-
{:name => "Bond Fund", :currency => "PHP", :
|
9
|
-
{:name => "Balanced Fund", :currency => "PHP", :
|
10
|
-
{:name => "Equity Fund", :currency => "PHP", :
|
11
|
-
{:name => "Money Market Fund", :currency => "PHP", :
|
12
|
-
{:name => "GS Fund", :currency => "PHP", :
|
13
|
-
{:name => "Dollar Advantage Fund", :currency => "USD", :
|
14
|
-
{:name => "Dollar Abundance Fund", :currency => "USD", :
|
15
|
-
{:name => "Money Market Fund", :currency => "PHP", :type => "vul"},
|
16
|
-
{:name => "Bond Fund", :currency => "PHP", :type => "vul"},
|
17
|
-
{:name => "Balanced Fund", :currency => "PHP", :type => "vul"},
|
18
|
-
{:name => "Equity Fund", :currency => "PHP", :type => "vul"},
|
19
|
-
{:name => "MyFuture 2020 Fund", :currency => "PHP", :type => "vul"},
|
20
|
-
{:name => "MyFuture 2025 Fund", :currency => "PHP", :type => "vul"},
|
21
|
-
{:name => "MyFuture 2030 Fund", :currency => "PHP", :type => "vul"},
|
22
|
-
{:name => "MyFuture 2035 Fund", :currency => "PHP", :type => "vul"},
|
23
|
-
{:name => "MyFuture 2040 Fund", :currency => "PHP", :type => "vul"},
|
24
|
-
{:name => "Income Fund", :currency => "PHP", :type => "vul"},
|
25
|
-
{:name => "Opportunity Fund", :currency => "PHP", :type => "vul"},
|
26
|
-
{:name => "Growth Fund", :currency => "PHP", :type => "vul"},
|
27
|
-
{:name => "Dollar Bond Fund", :currency => "USD", :type => "vul"},
|
28
|
-
{:name => "Global Income Fund", :currency => "USD", :type => "vul"},
|
29
|
-
{:name => "Sun Prestige Capital++ Fund", :currency => "USD", :type => "vul"},
|
30
|
-
{:name => "Sun Dollar Maximizer Fund", :currency => "USD", :type => "vul"},
|
31
|
-
{:name => "Sun Dollar Maximizer - UCG Fund", :currency => "USD", :type => "vul"},
|
32
|
-
{:name => "Sun Dollar Maximizer - UCG 2 Fund", :currency => "USD", :type => "vul"},
|
33
|
-
{:name => "Sun Dollar Maximizer - EA Fund", :currency => "USD", :type => "vul"},
|
34
|
-
{:name => "Sun Dollar Maximizer - EA 2 Fund", :currency => "USD", :type => "vul"}
|
7
|
+
{:name => "Bond Fund", :currency => "PHP", :ticker => "SNCPRBF:PM"},
|
8
|
+
{:name => "Balanced Fund", :currency => "PHP", :ticker => "SNCPRBA:PM"},
|
9
|
+
{:name => "Equity Fund", :currency => "PHP", :ticker => "SNCPPEA:PM"},
|
10
|
+
{:name => "Money Market Fund", :currency => "PHP", :ticker => "SNLFMNY:PM"},
|
11
|
+
{:name => "GS Fund", :currency => "PHP", :ticker => "SNLPRGS:PM"},
|
12
|
+
{:name => "Dollar Advantage Fund", :currency => "USD", :ticker => "SUNPDAA:PM"},
|
13
|
+
{:name => "Dollar Abundance Fund", :currency => "USD", :ticker => "SNLPRDA:PM"}
|
35
14
|
]
|
36
15
|
|
37
|
-
def initialize
|
16
|
+
def initialize(main_url=nil)
|
17
|
+
@url = main_url ||= MAIN_URL
|
38
18
|
@url = MAIN_URL
|
39
|
-
@vul_url = VUL_URL
|
40
19
|
self.scrape
|
41
20
|
end
|
42
21
|
|
43
22
|
# Fetch the current value
|
44
|
-
# Some providers have a separate page for VUL funds, to force checking the VUL page,
|
45
|
-
# set the type to :vul, for example @sunlife.value("Bond Fund", :vul)
|
46
|
-
# It is possible that the same fund name is used for VUL and non-VUL funds so this is necessary
|
47
23
|
def value(fund, fund_type=nil)
|
48
24
|
val = nil
|
49
|
-
fund_type = fund_type.to_sym if fund_type.is_a?(String)
|
50
|
-
# Set fund_type to nil if VUL page is not present
|
51
|
-
fund_type = nil if fund_type == :vul && @wrapped_vul_document.nil?
|
52
25
|
if valid_fund?(fund)
|
53
|
-
|
54
|
-
|
55
|
-
if fname
|
56
|
-
fval = fname.parent.next_element rescue nil
|
57
|
-
elsif @wrapped_vul_document && fund_type != :vul
|
58
|
-
# Search VUL page (if its not done before)
|
59
|
-
fname = @wrapped_vul_document.search("[text()*='#{fund}']").first
|
60
|
-
fval = fname.parent.next_element rescue nil
|
61
|
-
end
|
26
|
+
fname = @wrapped_document.search("[text()*='#{fund}']").first
|
27
|
+
fval = fname.parent.next_element rescue nil
|
62
28
|
val = Provider.strip_value(fval.text) if fval
|
63
29
|
else
|
64
30
|
raise InvalidFund
|
@@ -66,19 +32,12 @@ module Navfund
|
|
66
32
|
val
|
67
33
|
end
|
68
34
|
|
69
|
-
|
70
|
-
|
71
|
-
|
35
|
+
def value_at
|
36
|
+
dcontainer = @wrapped_document.search("div.newsHeadlineTitle[align='left']").first
|
37
|
+
dtext = dcontainer.text
|
38
|
+
dstr = dtext.split("As of").last.strip
|
39
|
+
Date.strptime(dstr, "%m/%d/%Y")
|
72
40
|
end
|
73
41
|
|
74
|
-
# List supported funds by name
|
75
|
-
def fund_names
|
76
|
-
self.funds.map{ |x| x[:name] }
|
77
|
-
end
|
78
|
-
|
79
|
-
# Check if the fund name is supported
|
80
|
-
def valid_fund?(fund)
|
81
|
-
self.fund_names.include?(fund)
|
82
|
-
end
|
83
42
|
end
|
84
43
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# United Coconut Planter's Bank
|
2
|
+
|
3
|
+
module Navfund
|
4
|
+
class UCPB < Provider
|
5
|
+
# List of funds
|
6
|
+
MAIN_URL = "http://www.uitf.com.ph/daily_navpu.php?bank_id=14"
|
7
|
+
Funds = [
|
8
|
+
{:name => "UCPB Cash Management Fund", :currency => "PHP", :ticker => "UCPBCSH:PM"},
|
9
|
+
{:name => "UCPB Peso Bond Fund", :currency => "PHP", :ticker => "UCPBCSV:PM"},
|
10
|
+
{:name => "UCPB Balanced Fund", :currency => "PHP", :ticker => "UCPBBAL:PM"},
|
11
|
+
{:name => "UCPB Equity Fund", :currency => "PHP", :ticker => "UCPBEQT:PM"},
|
12
|
+
{:name => "UCPB High Dividend Fund", :currency => "PHP", :ticker => "UCPBHDF:PM"},
|
13
|
+
{:name => "UCPB US$ Money Market Fund", :currency => "USD", :ticker => "UCPBDMM:PM"}
|
14
|
+
]
|
15
|
+
|
16
|
+
def initialize(main_url=nil)
|
17
|
+
@url = main_url ||= MAIN_URL
|
18
|
+
@funds = Funds
|
19
|
+
scrape
|
20
|
+
end
|
21
|
+
|
22
|
+
# Fetch the current value
|
23
|
+
def value(fund, fund_type=nil)
|
24
|
+
uitf_com_ph_parser(fund)
|
25
|
+
end
|
26
|
+
|
27
|
+
def value_at
|
28
|
+
uitf_com_ph_date_parser
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Union Bank
|
2
|
+
|
3
|
+
module Navfund
|
4
|
+
class UnionBank < Provider
|
5
|
+
# List of funds
|
6
|
+
MAIN_URL = "http://www.uitf.com.ph/daily_navpu.php?bank_id=13"
|
7
|
+
Funds = [
|
8
|
+
{:name => "UnionBank Peso Short Term Fixed Income Portfolio", :currency => "PHP", :ticker => "IFDPMMP:PM"},
|
9
|
+
{:name => "UnionBank Infinity Prime Fund", :currency => "PHP", :ticker => "IFDPRIM:PM"},
|
10
|
+
{:name => "UnionBank Medium Term Fixed Income Portfolio", :currency => "PHP", :ticker => ""},
|
11
|
+
{:name => "UnionBank Philippine Peso Fixed Income Portfolio", :currency => "PHP", :ticker => "IFDPPBP:PM"},
|
12
|
+
{:name => "UnionBank Long Term Fixed Income Portfolio", :currency => "PHP", :ticker => "IFDLTCI:PM"},
|
13
|
+
{:name => "UnionBank Tax Exempt Portfolio", :currency => "PHP", :ticker => ""},
|
14
|
+
{:name => "UnionBank Peso Balanced Portfolio", :currency => "PHP", :ticker => "UNPESBA:PM"},
|
15
|
+
{:name => "UnionBank Dividend Play Equity Fund", :currency => "PHP", :ticker => ""},
|
16
|
+
{:name => "UnionBank Dividend Play Equity Portfolio", :currency => "PHP", :ticker => "UBPDIVP:PM"},
|
17
|
+
{:name => "UnionBank Large Capitalization Philippine Equity Portfolio", :currency => "PHP", :ticker => "IFDLCPE:PM"},
|
18
|
+
{:name => "UnionBank Philippine Equity Index Tracker Fund Portfolio", :currency => "PHP", :ticker => "UBPHEIT:PM"},
|
19
|
+
{:name => "UnionBank Dollar Bond Portfolio", :currency => "USD", :ticker => "IFPHDLB:PM"}
|
20
|
+
]
|
21
|
+
|
22
|
+
def initialize(main_url=nil)
|
23
|
+
@url = main_url ||= MAIN_URL
|
24
|
+
@funds = Funds
|
25
|
+
scrape
|
26
|
+
end
|
27
|
+
|
28
|
+
# Fetch the current value
|
29
|
+
def value(fund, fund_type=nil)
|
30
|
+
uitf_com_ph_parser(fund)
|
31
|
+
end
|
32
|
+
|
33
|
+
def value_at
|
34
|
+
uitf_com_ph_date_parser
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
data/lib/navfund/version.rb
CHANGED
data/navfund.gemspec
CHANGED
@@ -8,11 +8,14 @@ Gem::Specification.new do |gem|
|
|
8
8
|
gem.authors = ["Marvin Baltazar"]
|
9
9
|
gem.email = ["marvin.baltazar@gmail.com"]
|
10
10
|
gem.description = %q{Data scraper for Investment Fund Net Asset Values (NAVs)}
|
11
|
-
gem.summary = %q{Navfund is a ruby gem that fetches the
|
11
|
+
gem.summary = %q{Navfund is a ruby gem that fetches the current NAVPU/NAVPS of UITFs/Mutual Funds}
|
12
12
|
gem.homepage = "https://github.com/marvs/navfund"
|
13
|
+
gem.license = "MIT"
|
13
14
|
|
14
|
-
gem.
|
15
|
-
|
15
|
+
gem.required_ruby_version = ">= 1.9.2"
|
16
|
+
|
17
|
+
gem.add_runtime_dependency "nokogiri", "~> 1.4"
|
18
|
+
gem.add_development_dependency "rake", "~> 0.8"
|
16
19
|
|
17
20
|
gem.files = `git ls-files`.split($\)
|
18
21
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
@@ -1,21 +1,23 @@
|
|
1
1
|
require File.expand_path('../../../test_helper.rb', __FILE__)
|
2
2
|
|
3
3
|
describe Navfund do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
it "should get the provider object" do
|
10
|
-
@sunlife.wont_be_nil
|
11
|
-
@metrobank.wont_be_nil
|
4
|
+
Navfund::Providers.each do |provider_klass|
|
5
|
+
before do
|
6
|
+
google_cache_url = "http://webcache.googleusercontent.com/search?q=cache:"
|
7
|
+
test_url = "#{google_cache_url}#{provider_klass::MAIN_URL}"
|
8
|
+
@provider = provider_klass.new(test_url)
|
12
9
|
end
|
13
|
-
|
14
|
-
|
15
|
-
@
|
10
|
+
describe "for the #{provider_klass.to_s} provider" do
|
11
|
+
it "should get the #{provider_klass.to_s} object" do
|
12
|
+
@provider.wont_be_nil
|
16
13
|
end
|
17
|
-
|
18
|
-
@
|
14
|
+
it "should get the current values of #{provider_klass.to_s}" do
|
15
|
+
@provider.funds.each do |fund|
|
16
|
+
@provider.value(fund[:name]).wont_be_empty
|
17
|
+
end
|
18
|
+
end
|
19
|
+
it "should get the value date of #{provider_klass.to_s}" do
|
20
|
+
assert @provider.value_at.is_a?(Date)
|
19
21
|
end
|
20
22
|
end
|
21
23
|
end
|
metadata
CHANGED
@@ -1,48 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: navfund
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Marvin Baltazar
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2015-04-22 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: nokogiri
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
19
|
+
version: '1.4'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
26
|
+
version: '1.4'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
33
|
+
version: '0.8'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
40
|
+
version: '0.8'
|
46
41
|
description: Data scraper for Investment Fund Net Asset Values (NAVs)
|
47
42
|
email:
|
48
43
|
- marvin.baltazar@gmail.com
|
@@ -60,9 +55,15 @@ files:
|
|
60
55
|
- lib/navfund/exceptions.rb
|
61
56
|
- lib/navfund/navfund.rb
|
62
57
|
- lib/navfund/provider.rb
|
58
|
+
- lib/navfund/providers/bdo_unibank.rb
|
59
|
+
- lib/navfund/providers/bpi.rb
|
63
60
|
- lib/navfund/providers/metrobank.rb
|
64
61
|
- lib/navfund/providers/philamlife.rb
|
62
|
+
- lib/navfund/providers/philippine_national_bank.rb
|
63
|
+
- lib/navfund/providers/security_bank.rb
|
65
64
|
- lib/navfund/providers/sunlife.rb
|
65
|
+
- lib/navfund/providers/ucpb.rb
|
66
|
+
- lib/navfund/providers/union_bank.rb
|
66
67
|
- lib/navfund/utils/require_relative.rb
|
67
68
|
- lib/navfund/version.rb
|
68
69
|
- navfund.gemspec
|
@@ -71,30 +72,30 @@ files:
|
|
71
72
|
- test/lib/navfund/version_test.rb
|
72
73
|
- test/test_helper.rb
|
73
74
|
homepage: https://github.com/marvs/navfund
|
74
|
-
licenses:
|
75
|
+
licenses:
|
76
|
+
- MIT
|
77
|
+
metadata: {}
|
75
78
|
post_install_message:
|
76
79
|
rdoc_options: []
|
77
80
|
require_paths:
|
78
81
|
- lib
|
79
82
|
required_ruby_version: !ruby/object:Gem::Requirement
|
80
|
-
none: false
|
81
83
|
requirements:
|
82
|
-
- -
|
84
|
+
- - '>='
|
83
85
|
- !ruby/object:Gem::Version
|
84
|
-
version:
|
86
|
+
version: 1.9.2
|
85
87
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
|
-
none: false
|
87
88
|
requirements:
|
88
|
-
- -
|
89
|
+
- - '>='
|
89
90
|
- !ruby/object:Gem::Version
|
90
91
|
version: '0'
|
91
92
|
requirements: []
|
92
93
|
rubyforge_project:
|
93
|
-
rubygems_version:
|
94
|
+
rubygems_version: 2.2.2
|
94
95
|
signing_key:
|
95
|
-
specification_version:
|
96
|
-
summary: Navfund is a ruby gem that fetches the
|
97
|
-
|
96
|
+
specification_version: 4
|
97
|
+
summary: Navfund is a ruby gem that fetches the current NAVPU/NAVPS of UITFs/Mutual
|
98
|
+
Funds
|
98
99
|
test_files:
|
99
100
|
- test/lib/navfund/function_test.rb
|
100
101
|
- test/lib/navfund/provider_test.rb
|