xbrlware-ce 1.0.4 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile.rb +4 -4
- data/Readme.txt +6 -1
- data/ReleaseNotes.txt +22 -5
- data/doc/classes/Edgar/HTMLFeedDownloader.html +8 -8
- data/doc/classes/Edgar/RSSFeedDownloader.html +15 -15
- data/doc/classes/Xbrlware.html +22 -0
- data/doc/classes/Xbrlware/Context.html +104 -74
- data/doc/classes/Xbrlware/Context/Period.html +305 -0
- data/doc/classes/Xbrlware/Entity.html +75 -51
- data/doc/classes/Xbrlware/Identifier.html +17 -17
- data/doc/classes/Xbrlware/Instance.html +165 -137
- data/doc/classes/Xbrlware/Item.html +19 -19
- data/doc/classes/Xbrlware/Linkbase/CalculationLinkbase/Calculation.html +1 -1
- data/doc/classes/Xbrlware/Linkbase/DefinitionLinkbase/Definition.html +2 -2
- data/doc/classes/Xbrlware/Linkbase/Linkbase/Link.html +9 -3
- data/doc/classes/Xbrlware/Linkbase/Linkbase/Link/Arc.html +4 -4
- data/doc/classes/Xbrlware/Linkbase/PresentationLinkbase/Presentation.html +1 -1
- data/doc/classes/Xbrlware/Report.html +352 -0
- data/doc/classes/Xbrlware/Taxonomy.html +48 -48
- data/doc/classes/Xbrlware/TaxonomyDefintion.html +15 -15
- data/doc/classes/Xbrlware/Unit.html +6 -6
- data/doc/classes/Xbrlware/Unit/Divide.html +6 -6
- data/doc/created.rid +1 -1
- data/doc/files/Readme_txt.html +9 -1
- data/doc/files/lib/xbrlware/context_rb.html +1 -1
- data/doc/files/lib/xbrlware/date_util_rb.html +1 -1
- data/doc/files/lib/xbrlware/instance_rb.html +1 -1
- data/doc/files/lib/xbrlware/linkbase/calculation_linkbase_rb.html +1 -1
- data/doc/files/lib/xbrlware/linkbase/definition_linkbase_rb.html +1 -1
- data/doc/files/lib/xbrlware/linkbase/linkbase_rb.html +1 -1
- data/doc/files/lib/xbrlware/linkbase/presentation_linkbase_rb.html +1 -1
- data/doc/files/lib/xbrlware/meta_util_rb.html +1 -1
- data/doc/files/lib/xbrlware/report_rb.html +101 -0
- data/doc/files/lib/xbrlware/taxonomy_rb.html +1 -1
- data/doc/files/lib/xbrlware/version_rb.html +129 -0
- data/doc/fr_class_index.html +2 -0
- data/doc/fr_file_index.html +2 -0
- data/doc/fr_method_index.html +75 -62
- data/example/case_study/buy_strategy.rb +1 -1
- data/example/case_study/c_sell_strategy.rb +1 -1
- data/lib/xbrlware/context.rb +77 -34
- data/lib/xbrlware/date_util.rb +16 -6
- data/lib/xbrlware/instance.rb +35 -28
- data/lib/xbrlware/linkbase/calculation_linkbase.rb +1 -1
- data/lib/xbrlware/linkbase/definition_linkbase.rb +2 -2
- data/lib/xbrlware/linkbase/linkbase.rb +3 -2
- data/lib/xbrlware/linkbase/presentation_linkbase.rb +1 -1
- data/lib/xbrlware/meta_util.rb +5 -0
- data/lib/xbrlware/report.rb +277 -0
- data/lib/xbrlware/taxonomy.rb +13 -10
- data/lib/xbrlware/version.rb +22 -0
- data/test/lib/xbrlware/47_context_test.rb +13 -4
- data/test/lib/xbrlware/date_util_test.rb +10 -2
- data/test/lib/xbrlware/instance_test.rb +19 -0
- data/test/lib/xbrlware/meta_util_test.rb +21 -1
- metadata +10 -4
data/lib/xbrlware/taxonomy.rb
CHANGED
@@ -61,7 +61,7 @@ module Xbrlware
|
|
61
61
|
file_path=linkbase_href(Xbrlware::LBConstants::LABEL) if file_path.nil? && @lablb.nil?
|
62
62
|
return @lablb if file_path.nil?
|
63
63
|
$LOG.warn(" Label linkbase already initialized. Ignoring " + file_path) unless file_path.nil? || @lablb.nil?
|
64
|
-
@lablb = Xbrlware::Linkbase::LabelLinkbase.new(file_path) if @lablb.nil?
|
64
|
+
@lablb = Xbrlware::Linkbase::LabelLinkbase.new(file_path) if @lablb.nil? && File.exist?(file_path)
|
65
65
|
@lablb
|
66
66
|
end
|
67
67
|
|
@@ -70,7 +70,7 @@ module Xbrlware
|
|
70
70
|
file_path=linkbase_href(Xbrlware::LBConstants::DEFINITION) if file_path.nil? && @deflb.nil?
|
71
71
|
return @deflb if file_path.nil?
|
72
72
|
$LOG.warn(" Definition linkbase already initialized. Ignoring " + file_path) unless file_path.nil? || @deflb.nil?
|
73
|
-
@deflb = Xbrlware::Linkbase::DefinitionLinkbase.new(file_path, lablb()) if
|
73
|
+
@deflb = Xbrlware::Linkbase::DefinitionLinkbase.new(file_path, lablb()) if @deflb.nil? && File.exist?(file_path)
|
74
74
|
@deflb
|
75
75
|
end
|
76
76
|
|
@@ -79,7 +79,7 @@ module Xbrlware
|
|
79
79
|
file_path=linkbase_href(Xbrlware::LBConstants::PRESENTATION) if file_path.nil? && @prelb.nil?
|
80
80
|
return @prelb if file_path.nil?
|
81
81
|
$LOG.warn(" Presentation linkbase already initialized. Ignoring " + file_path) unless file_path.nil? || @prelb.nil?
|
82
|
-
@prelb = Xbrlware::Linkbase::PresentationLinkbase.new(file_path, @instance, deflb, lablb) if @prelb.nil?
|
82
|
+
@prelb = Xbrlware::Linkbase::PresentationLinkbase.new(file_path, @instance, deflb, lablb) if @prelb.nil? && File.exist?(file_path)
|
83
83
|
@prelb
|
84
84
|
end
|
85
85
|
|
@@ -88,7 +88,7 @@ module Xbrlware
|
|
88
88
|
file_path=linkbase_href(Xbrlware::LBConstants::CALCULATION) if file_path.nil? && @callb.nil?
|
89
89
|
return @callb if file_path.nil?
|
90
90
|
$LOG.warn(" Calculation linkbase already initialized. Ignoring " + file_path) unless file_path.nil? || @callb.nil?
|
91
|
-
@callb = Xbrlware::Linkbase::CalculationLinkbase.new(file_path, @instance, lablb) if @callb.nil?
|
91
|
+
@callb = Xbrlware::Linkbase::CalculationLinkbase.new(file_path, @instance, lablb) if @callb.nil? && File.exist?(file_path)
|
92
92
|
@callb
|
93
93
|
end
|
94
94
|
|
@@ -103,12 +103,15 @@ module Xbrlware
|
|
103
103
|
|
104
104
|
private
|
105
105
|
def linkbase_href(linkbase)
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
106
|
+
begin
|
107
|
+
linkbase_refs=@taxonomy_content["annotation"][0]["appinfo"][0]["linkbaseRef"]
|
108
|
+
linkbase_refs.each do |ref|
|
109
|
+
if ref["xlink:role"]==linkbase
|
110
|
+
return @taxonomy_file_basedir + ref["xlink:href"] if ref["xml:base"].nil?
|
111
|
+
return @taxonomy_file_basedir + ref["xml:base"] + ref["xlink:href"]
|
112
|
+
end
|
111
113
|
end
|
114
|
+
rescue Exception => e
|
112
115
|
end
|
113
116
|
nil
|
114
117
|
end
|
@@ -123,7 +126,7 @@ module Xbrlware
|
|
123
126
|
eval("self.extend Taxonomies::#{taxonomy_module}")
|
124
127
|
else
|
125
128
|
$LOG.warn("No taxonomy found for name ["+ENV["TAXO_NAME"].to_s+"] and version ["+ENV["TAXO_VER"].to_s+"]")
|
126
|
-
end
|
129
|
+
end
|
127
130
|
end
|
128
131
|
|
129
132
|
def method_missing(m, *args)
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
#
|
3
|
+
# Author:: xbrlware@bitstat.com
|
4
|
+
#
|
5
|
+
# Copyright:: 2009, 2010 bitstat (http://www.bitstat.com). All Rights Reserved.
|
6
|
+
#
|
7
|
+
# License:: Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
16
|
+
# implied.
|
17
|
+
# See the License for the specific language governing permissions and
|
18
|
+
# limitations under the License.
|
19
|
+
#
|
20
|
+
module Xbrlware
|
21
|
+
VERSION = "1.1.0"
|
22
|
+
end
|
@@ -9,8 +9,11 @@ class TestContext < Test::Unit::TestCase
|
|
9
9
|
XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
|
10
10
|
xbrl = Xbrlware::Instance.new(xml_file)
|
11
11
|
p=xbrl.context("I2007_CommonStockMember").period
|
12
|
-
assert_equal("2008-02-02", p["start_date"])
|
13
|
-
assert_equal("2008-03-02", p["end_date"])
|
12
|
+
assert_equal("2008-02-02", p.value["start_date"].to_s)
|
13
|
+
assert_equal("2008-03-02", p.value["end_date"].to_s)
|
14
|
+
assert(p.is_duration?)
|
15
|
+
assert_equal(false, p.is_instant?)
|
16
|
+
assert_equal(false, p.is_forever?)
|
14
17
|
end
|
15
18
|
|
16
19
|
def test_472_period_instant
|
@@ -19,7 +22,10 @@ class TestContext < Test::Unit::TestCase
|
|
19
22
|
xbrl = Xbrlware::Instance.new(xml_file)
|
20
23
|
ctx=xbrl.context("I2007_CommonStockMember")
|
21
24
|
p=ctx.period
|
22
|
-
assert_equal("2008-02-02", p)
|
25
|
+
assert_equal("2008-02-02", p.to_s)
|
26
|
+
assert p.is_instant?
|
27
|
+
assert_equal(false, p.is_duration?)
|
28
|
+
assert_equal(false, p.is_forever?)
|
23
29
|
end
|
24
30
|
|
25
31
|
def test_472_period_forever
|
@@ -27,7 +33,10 @@ class TestContext < Test::Unit::TestCase
|
|
27
33
|
XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
|
28
34
|
xbrl = Xbrlware::Instance.new(xml_file)
|
29
35
|
p=xbrl.context("I2007_CommonStockMember").period
|
30
|
-
assert_equal(Xbrlware::Context::PERIOD_FOREVER, p)
|
36
|
+
assert_equal(Xbrlware::Context::PERIOD_FOREVER, p.value)
|
37
|
+
assert p.is_forever?
|
38
|
+
assert_equal(false, p.is_instant?)
|
39
|
+
assert_equal(false, p.is_duration?)
|
31
40
|
end
|
32
41
|
|
33
42
|
def test_4731_entity_identifier
|
@@ -12,8 +12,8 @@ class TestDateUtil < Test::Unit::TestCase
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_months_between
|
15
|
-
start_dt=Date.parse("2009-
|
16
|
-
end_dt=Date.parse("2009-12-
|
15
|
+
start_dt=Date.parse("2009-10-01")
|
16
|
+
end_dt=Date.parse("2009-12-31")
|
17
17
|
|
18
18
|
months=Xbrlware::DateUtil.months_between(start_dt, end_dt)
|
19
19
|
assert_equal(3, months)
|
@@ -21,4 +21,12 @@ class TestDateUtil < Test::Unit::TestCase
|
|
21
21
|
months=Xbrlware::DateUtil.months_between(end_dt, start_dt)
|
22
22
|
assert_equal(3, months)
|
23
23
|
end
|
24
|
+
|
25
|
+
def test_months_between_years
|
26
|
+
start_dt=Date.parse("2008-01-01")
|
27
|
+
end_dt=Date.parse("2009-12-31")
|
28
|
+
|
29
|
+
months=Xbrlware::DateUtil.months_between(start_dt, end_dt)
|
30
|
+
assert_equal(24, months)
|
31
|
+
end
|
24
32
|
end
|
@@ -247,4 +247,23 @@ class TestXbrlInstance < Test::Unit::TestCase
|
|
247
247
|
assert_equal(1, items.size)
|
248
248
|
end
|
249
249
|
|
250
|
+
def test_item_all
|
251
|
+
items=@xbrl.item_all_map
|
252
|
+
assert_equal(6, items["PROFITLOSS"].size)
|
253
|
+
assert_equal(2, items["RECEIVABLESNETCURRENT"].size)
|
254
|
+
assert_equal(1, items["INCOMEBEFOREINCOMETAXES"].size)
|
255
|
+
assert_equal(1, items["INCOME-BEFORE-INCOMETAXES"].size)
|
256
|
+
assert_nil(items["NOT-EXIST"])
|
257
|
+
end
|
258
|
+
|
259
|
+
def test_entity_details
|
260
|
+
entity_details=@xbrl.entity_details
|
261
|
+
assert_equal("UNKNOWN", entity_details["name"])
|
262
|
+
|
263
|
+
@xbrl.entity_details={"name" => "EntityName"}
|
264
|
+
assert_equal("EntityName", entity_details["name"])
|
265
|
+
assert_equal("UNKNOWN", entity_details["ci_keys"])
|
266
|
+
|
267
|
+
end
|
268
|
+
|
250
269
|
end
|
@@ -11,7 +11,7 @@ class TestMetaUtil < Test::Unit::TestCase
|
|
11
11
|
Xbrlware::MetaUtil::introduce_instance_var(o, "name", "xyz")
|
12
12
|
Xbrlware::MetaUtil::introduce_instance_writer(o, "set_name", "name")
|
13
13
|
o.set_name="abc"
|
14
|
-
assert_equal("abc", o.name)
|
14
|
+
assert_equal("abc", o.name)
|
15
15
|
end
|
16
16
|
|
17
17
|
def test_introduce_instance_alias
|
@@ -20,4 +20,24 @@ class TestMetaUtil < Test::Unit::TestCase
|
|
20
20
|
Xbrlware::MetaUtil::introduce_instance_alias(o, "get_name", "name")
|
21
21
|
assert_equal("xyz", o.get_name)
|
22
22
|
end
|
23
|
+
|
24
|
+
def test_introduct_instance_method
|
25
|
+
o="a"
|
26
|
+
Xbrlware::MetaUtil::eval_on_instance o, %{
|
27
|
+
def is_instant?
|
28
|
+
self.is_a?(String)
|
29
|
+
end
|
30
|
+
|
31
|
+
def is_duration?
|
32
|
+
self.is_a?(Hash)
|
33
|
+
end
|
34
|
+
|
35
|
+
def is_forever?
|
36
|
+
self.is_a?(Fixnum)
|
37
|
+
end
|
38
|
+
}
|
39
|
+
assert o.is_instant?
|
40
|
+
assert_equal(false, o.is_duration?)
|
41
|
+
assert_equal(false, o.is_forever?)
|
42
|
+
end
|
23
43
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xbrlware-ce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- bitstat technologies
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-02-23 00:00:00 +05:30
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -23,7 +23,7 @@ dependencies:
|
|
23
23
|
version: 1.0.12
|
24
24
|
version:
|
25
25
|
description: |-
|
26
|
-
A fast, lightweight framework to parse, extract information from XBRL documents.
|
26
|
+
A fast, lightweight framework to parse, extract information from XBRL Instance, Taxonomy and Linkbase documents.
|
27
27
|
xbrlware understands structure and relationship among elements of XBRL documents and
|
28
28
|
defines a set of APIs for accessing financial & business facts, meta & other related information
|
29
29
|
defined in XBRL documents.
|
@@ -45,6 +45,7 @@ files:
|
|
45
45
|
- lib/xbrlware.rb
|
46
46
|
- lib/edgar/util.rb
|
47
47
|
- lib/edgar/edgar_data_downloader.rb
|
48
|
+
- lib/xbrlware/version.rb
|
48
49
|
- lib/xbrlware/float_patch.rb
|
49
50
|
- lib/xbrlware/linkbase/definition_linkbase.rb
|
50
51
|
- lib/xbrlware/linkbase/presentation_linkbase.rb
|
@@ -53,6 +54,7 @@ files:
|
|
53
54
|
- lib/xbrlware/linkbase/label_linkbase.rb
|
54
55
|
- lib/xbrlware/hash_util.rb
|
55
56
|
- lib/xbrlware/constants.rb
|
57
|
+
- lib/xbrlware/report.rb
|
56
58
|
- lib/xbrlware/instance.rb
|
57
59
|
- lib/xbrlware/date_util.rb
|
58
60
|
- lib/xbrlware/xml_parser.rb
|
@@ -75,7 +77,9 @@ files:
|
|
75
77
|
- doc/classes/Edgar/RSSFeedDownloader.html
|
76
78
|
- doc/classes/Xbrlware.html
|
77
79
|
- doc/classes/CGI.html
|
80
|
+
- doc/classes/Xbrlware/Context/Period.html
|
78
81
|
- doc/classes/Xbrlware/LBConstants.html
|
82
|
+
- doc/classes/Xbrlware/Report.html
|
79
83
|
- doc/classes/Xbrlware/Entity.html
|
80
84
|
- doc/classes/Xbrlware/Taxonomy.html
|
81
85
|
- doc/classes/Xbrlware/Linkbase/DefinitionLinkbase/Definition/DefinitionArc.html
|
@@ -110,6 +114,7 @@ files:
|
|
110
114
|
- doc/files/lib/xbrlware/linkbase/linkbase_rb.html
|
111
115
|
- doc/files/lib/xbrlware/linkbase/calculation_linkbase_rb.html
|
112
116
|
- doc/files/lib/xbrlware/util_rb.html
|
117
|
+
- doc/files/lib/xbrlware/version_rb.html
|
113
118
|
- doc/files/lib/xbrlware/meta_util_rb.html
|
114
119
|
- doc/files/lib/xbrlware/hash_util_rb.html
|
115
120
|
- doc/files/lib/xbrlware/float_patch_rb.html
|
@@ -117,6 +122,7 @@ files:
|
|
117
122
|
- doc/files/lib/xbrlware/xml_parser_rb.html
|
118
123
|
- doc/files/lib/xbrlware/constants_rb.html
|
119
124
|
- doc/files/lib/xbrlware/instance_rb.html
|
125
|
+
- doc/files/lib/xbrlware/report_rb.html
|
120
126
|
- doc/files/lib/xbrlware/date_util_rb.html
|
121
127
|
- doc/files/lib/xbrlware/context_rb.html
|
122
128
|
- doc/files/lib/xbrlware/cgi_patch_rb.html
|
@@ -260,6 +266,6 @@ rubyforge_project: xbrlware
|
|
260
266
|
rubygems_version: 1.3.5
|
261
267
|
signing_key:
|
262
268
|
specification_version: 3
|
263
|
-
summary: A fast, lightweight framework to parse, extract information from XBRL documents.
|
269
|
+
summary: A fast, lightweight framework to parse, extract information from XBRL Instance, Taxonomy and Linkbase documents.
|
264
270
|
test_files: []
|
265
271
|
|