xbrlware-ce 1.0.4 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
|