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.
Files changed (56) hide show
  1. data/Rakefile.rb +4 -4
  2. data/Readme.txt +6 -1
  3. data/ReleaseNotes.txt +22 -5
  4. data/doc/classes/Edgar/HTMLFeedDownloader.html +8 -8
  5. data/doc/classes/Edgar/RSSFeedDownloader.html +15 -15
  6. data/doc/classes/Xbrlware.html +22 -0
  7. data/doc/classes/Xbrlware/Context.html +104 -74
  8. data/doc/classes/Xbrlware/Context/Period.html +305 -0
  9. data/doc/classes/Xbrlware/Entity.html +75 -51
  10. data/doc/classes/Xbrlware/Identifier.html +17 -17
  11. data/doc/classes/Xbrlware/Instance.html +165 -137
  12. data/doc/classes/Xbrlware/Item.html +19 -19
  13. data/doc/classes/Xbrlware/Linkbase/CalculationLinkbase/Calculation.html +1 -1
  14. data/doc/classes/Xbrlware/Linkbase/DefinitionLinkbase/Definition.html +2 -2
  15. data/doc/classes/Xbrlware/Linkbase/Linkbase/Link.html +9 -3
  16. data/doc/classes/Xbrlware/Linkbase/Linkbase/Link/Arc.html +4 -4
  17. data/doc/classes/Xbrlware/Linkbase/PresentationLinkbase/Presentation.html +1 -1
  18. data/doc/classes/Xbrlware/Report.html +352 -0
  19. data/doc/classes/Xbrlware/Taxonomy.html +48 -48
  20. data/doc/classes/Xbrlware/TaxonomyDefintion.html +15 -15
  21. data/doc/classes/Xbrlware/Unit.html +6 -6
  22. data/doc/classes/Xbrlware/Unit/Divide.html +6 -6
  23. data/doc/created.rid +1 -1
  24. data/doc/files/Readme_txt.html +9 -1
  25. data/doc/files/lib/xbrlware/context_rb.html +1 -1
  26. data/doc/files/lib/xbrlware/date_util_rb.html +1 -1
  27. data/doc/files/lib/xbrlware/instance_rb.html +1 -1
  28. data/doc/files/lib/xbrlware/linkbase/calculation_linkbase_rb.html +1 -1
  29. data/doc/files/lib/xbrlware/linkbase/definition_linkbase_rb.html +1 -1
  30. data/doc/files/lib/xbrlware/linkbase/linkbase_rb.html +1 -1
  31. data/doc/files/lib/xbrlware/linkbase/presentation_linkbase_rb.html +1 -1
  32. data/doc/files/lib/xbrlware/meta_util_rb.html +1 -1
  33. data/doc/files/lib/xbrlware/report_rb.html +101 -0
  34. data/doc/files/lib/xbrlware/taxonomy_rb.html +1 -1
  35. data/doc/files/lib/xbrlware/version_rb.html +129 -0
  36. data/doc/fr_class_index.html +2 -0
  37. data/doc/fr_file_index.html +2 -0
  38. data/doc/fr_method_index.html +75 -62
  39. data/example/case_study/buy_strategy.rb +1 -1
  40. data/example/case_study/c_sell_strategy.rb +1 -1
  41. data/lib/xbrlware/context.rb +77 -34
  42. data/lib/xbrlware/date_util.rb +16 -6
  43. data/lib/xbrlware/instance.rb +35 -28
  44. data/lib/xbrlware/linkbase/calculation_linkbase.rb +1 -1
  45. data/lib/xbrlware/linkbase/definition_linkbase.rb +2 -2
  46. data/lib/xbrlware/linkbase/linkbase.rb +3 -2
  47. data/lib/xbrlware/linkbase/presentation_linkbase.rb +1 -1
  48. data/lib/xbrlware/meta_util.rb +5 -0
  49. data/lib/xbrlware/report.rb +277 -0
  50. data/lib/xbrlware/taxonomy.rb +13 -10
  51. data/lib/xbrlware/version.rb +22 -0
  52. data/test/lib/xbrlware/47_context_test.rb +13 -4
  53. data/test/lib/xbrlware/date_util_test.rb +10 -2
  54. data/test/lib/xbrlware/instance_test.rb +19 -0
  55. data/test/lib/xbrlware/meta_util_test.rb +21 -1
  56. metadata +10 -4
@@ -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 @deflb.nil?
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
- linkbase_refs=@taxonomy_content["annotation"][0]["appinfo"][0]["linkbaseRef"]
107
- linkbase_refs.each do |ref|
108
- if ref["xlink:role"]==linkbase
109
- return @taxonomy_file_basedir + ref["xlink:href"] if ref["xml:base"].nil?
110
- return @taxonomy_file_basedir + ref["xml:base"] + ref["xlink:href"]
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-09-15")
16
- end_dt=Date.parse("2009-12-15")
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
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-01-28 00:00:00 +05:30
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