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.
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