xbrlware-ce 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (194) hide show
  1. data/Copying.txt +13 -0
  2. data/License.txt +13 -0
  3. data/Rakefile.rb +124 -0
  4. data/Readme.txt +15 -0
  5. data/doc/classes/Edgar.html +144 -0
  6. data/doc/classes/Edgar/HTMLFeedDownloader.html +199 -0
  7. data/doc/classes/Edgar/RSSFeedDownloader.html +225 -0
  8. data/doc/classes/Xbrlware.html +350 -0
  9. data/doc/classes/Xbrlware/Context.html +429 -0
  10. data/doc/classes/Xbrlware/Entity.html +323 -0
  11. data/doc/classes/Xbrlware/Identifier.html +191 -0
  12. data/doc/classes/Xbrlware/Instance.html +742 -0
  13. data/doc/classes/Xbrlware/Item.html +278 -0
  14. data/doc/classes/Xbrlware/LBConstants.html +144 -0
  15. data/doc/classes/Xbrlware/Linkbase.html +131 -0
  16. data/doc/classes/Xbrlware/Linkbase/CalculationLinkbase.html +212 -0
  17. data/doc/classes/Xbrlware/Linkbase/CalculationLinkbase/Calculation.html +172 -0
  18. data/doc/classes/Xbrlware/Linkbase/CalculationLinkbase/Calculation/CalculationArc.html +166 -0
  19. data/doc/classes/Xbrlware/Linkbase/DefinitionLinkbase.html +210 -0
  20. data/doc/classes/Xbrlware/Linkbase/DefinitionLinkbase/Definition.html +204 -0
  21. data/doc/classes/Xbrlware/Linkbase/DefinitionLinkbase/Definition/DefinitionArc.html +160 -0
  22. data/doc/classes/Xbrlware/Linkbase/LabelLinkbase.html +239 -0
  23. data/doc/classes/Xbrlware/Linkbase/LabelLinkbase/Label.html +189 -0
  24. data/doc/classes/Xbrlware/Linkbase/Linkbase.html +172 -0
  25. data/doc/classes/Xbrlware/Linkbase/Linkbase/Link.html +217 -0
  26. data/doc/classes/Xbrlware/Linkbase/Linkbase/Link/Arc.html +284 -0
  27. data/doc/classes/Xbrlware/Linkbase/PresentationLinkbase.html +224 -0
  28. data/doc/classes/Xbrlware/Linkbase/PresentationLinkbase/Presentation.html +222 -0
  29. data/doc/classes/Xbrlware/Linkbase/PresentationLinkbase/Presentation/PresentationArc.html +160 -0
  30. data/doc/classes/Xbrlware/Taxonomy.html +369 -0
  31. data/doc/classes/Xbrlware/TaxonomyDefintion.html +177 -0
  32. data/doc/classes/Xbrlware/Unit.html +179 -0
  33. data/doc/classes/Xbrlware/Unit/Divide.html +165 -0
  34. data/doc/created.rid +1 -0
  35. data/doc/files/Readme_txt.html +124 -0
  36. data/doc/files/lib/edgar/edgar_data_downloader_rb.html +129 -0
  37. data/doc/files/lib/edgar/util_rb.html +129 -0
  38. data/doc/files/lib/edgar_rb.html +141 -0
  39. data/doc/files/lib/xbrlware/constants_rb.html +129 -0
  40. data/doc/files/lib/xbrlware/context_rb.html +129 -0
  41. data/doc/files/lib/xbrlware/date_util_rb.html +129 -0
  42. data/doc/files/lib/xbrlware/float_patch_rb.html +129 -0
  43. data/doc/files/lib/xbrlware/hash_util_rb.html +129 -0
  44. data/doc/files/lib/xbrlware/instance_rb.html +129 -0
  45. data/doc/files/lib/xbrlware/item_rb.html +129 -0
  46. data/doc/files/lib/xbrlware/linkbase/calculation_linkbase_rb.html +129 -0
  47. data/doc/files/lib/xbrlware/linkbase/definition_linkbase_rb.html +129 -0
  48. data/doc/files/lib/xbrlware/linkbase/label_linkbase_rb.html +129 -0
  49. data/doc/files/lib/xbrlware/linkbase/linkbase_rb.html +129 -0
  50. data/doc/files/lib/xbrlware/linkbase/presentation_linkbase_rb.html +129 -0
  51. data/doc/files/lib/xbrlware/meta_util_rb.html +129 -0
  52. data/doc/files/lib/xbrlware/taxonomy_rb.html +129 -0
  53. data/doc/files/lib/xbrlware/unit_rb.html +129 -0
  54. data/doc/files/lib/xbrlware/util_rb.html +129 -0
  55. data/doc/files/lib/xbrlware/xml_parser_rb.html +129 -0
  56. data/doc/files/lib/xbrlware_rb.html +163 -0
  57. data/doc/fr_class_index.html +55 -0
  58. data/doc/fr_file_index.html +48 -0
  59. data/doc/fr_method_index.html +104 -0
  60. data/doc/index.html +24 -0
  61. data/doc/rdoc-style.css +208 -0
  62. data/example/benchmark/instance_parser_benchmark.rb +25 -0
  63. data/example/case_study/buy_strategy.rb +34 -0
  64. data/example/case_study/c-20091230.xml +29 -0
  65. data/example/case_study/c_sell_strategy.rb +29 -0
  66. data/example/lang_integration/thrift/rating-client.py +21 -0
  67. data/example/lang_integration/thrift/rating-impl.rb +13 -0
  68. data/example/lang_integration/thrift/rating-server.rb +25 -0
  69. data/example/lang_integration/thrift/rating.thrift +52 -0
  70. data/example/quick_start/foo.rb +10 -0
  71. data/example/quick_start/foo.xml +29 -0
  72. data/example/quick_start/print_item.rb +27 -0
  73. data/lib/edgar.rb +30 -0
  74. data/lib/edgar/edgar_data_downloader.rb +126 -0
  75. data/lib/edgar/util.rb +30 -0
  76. data/lib/xbrlware.rb +65 -0
  77. data/lib/xbrlware/constants.rb +29 -0
  78. data/lib/xbrlware/context.rb +148 -0
  79. data/lib/xbrlware/date_util.rb +35 -0
  80. data/lib/xbrlware/float_patch.rb +26 -0
  81. data/lib/xbrlware/hash_util.rb +175 -0
  82. data/lib/xbrlware/instance.rb +406 -0
  83. data/lib/xbrlware/item.rb +115 -0
  84. data/lib/xbrlware/linkbase/calculation_linkbase.rb +137 -0
  85. data/lib/xbrlware/linkbase/definition_linkbase.rb +186 -0
  86. data/lib/xbrlware/linkbase/label_linkbase.rb +128 -0
  87. data/lib/xbrlware/linkbase/linkbase.rb +170 -0
  88. data/lib/xbrlware/linkbase/presentation_linkbase.rb +160 -0
  89. data/lib/xbrlware/meta_util.rb +45 -0
  90. data/lib/xbrlware/taxonomies/us_gaap_taxonomy_20090131.rb +40365 -0
  91. data/lib/xbrlware/taxonomy.rb +133 -0
  92. data/lib/xbrlware/unit.rb +42 -0
  93. data/lib/xbrlware/util.rb +83 -0
  94. data/lib/xbrlware/xml_parser.rb +122 -0
  95. data/setup.rb +1585 -0
  96. data/test/lib/edgar/edgar_data_downloader_test.rb +35 -0
  97. data/test/lib/edgar/resources/0000930413-09-005485-index.htm +331 -0
  98. data/test/lib/edgar/resources/usgaap.rss.xml +2861 -0
  99. data/test/lib/xbrlware/411_footnotes_test.rb +65 -0
  100. data/test/lib/xbrlware/42_schemaref_test.rb +20 -0
  101. data/test/lib/xbrlware/46_item_test.rb +253 -0
  102. data/test/lib/xbrlware/47_context_test.rb +129 -0
  103. data/test/lib/xbrlware/48_unit_test.rb +45 -0
  104. data/test/lib/xbrlware/49_tuple_test.rb +12 -0
  105. data/test/lib/xbrlware/date_util_test.rb +24 -0
  106. data/test/lib/xbrlware/dimension/context_explicit_dimension_test.rb +40 -0
  107. data/test/lib/xbrlware/dimension/resources/context_explicit_dimension.xml +84 -0
  108. data/test/lib/xbrlware/float_patch_test.rb +10 -0
  109. data/test/lib/xbrlware/hash_util_test.rb +29 -0
  110. data/test/lib/xbrlware/instance_test.rb +250 -0
  111. data/test/lib/xbrlware/linkbase/calculation_linkbase_test.rb +39 -0
  112. data/test/lib/xbrlware/linkbase/definition_linkbase_test.rb +35 -0
  113. data/test/lib/xbrlware/linkbase/label_linkbase_test.rb +22 -0
  114. data/test/lib/xbrlware/linkbase/linkbase_test.rb +36 -0
  115. data/test/lib/xbrlware/linkbase/linkbase_test_util.rb +98 -0
  116. data/test/lib/xbrlware/linkbase/presentation_linkbase_test.rb +33 -0
  117. data/test/lib/xbrlware/linkbase/report.html +62 -0
  118. data/test/lib/xbrlware/linkbase/resources/cal.xml +219 -0
  119. data/test/lib/xbrlware/linkbase/resources/def.xml +186 -0
  120. data/test/lib/xbrlware/linkbase/resources/def_with_multiple_dimension.xml +41 -0
  121. data/test/lib/xbrlware/linkbase/resources/instance.xml +5822 -0
  122. data/test/lib/xbrlware/linkbase/resources/lab.xml +782 -0
  123. data/test/lib/xbrlware/linkbase/resources/pre.xml +485 -0
  124. data/test/lib/xbrlware/linkbase/resources/report_10_q.htm +12327 -0
  125. data/test/lib/xbrlware/linkbase/resources/taxonomy.xsd +178 -0
  126. data/test/lib/xbrlware/linkbase/sample_html_report.html +40 -0
  127. data/test/lib/xbrlware/meta_util_test.rb +23 -0
  128. data/test/lib/xbrlware/resources/411/411_footnotes.xml +66 -0
  129. data/test/lib/xbrlware/resources/42/42_schema_ref_with_base.xml +7 -0
  130. data/test/lib/xbrlware/resources/42/42_schema_ref_without_base.xml +7 -0
  131. data/test/lib/xbrlware/resources/46/46_item_value.xml +61 -0
  132. data/test/lib/xbrlware/resources/47/472_period_forever.xml +29 -0
  133. data/test/lib/xbrlware/resources/47/472_period_instant.xml +24 -0
  134. data/test/lib/xbrlware/resources/47/472_period_start_dt_and_end_dt.xml +30 -0
  135. data/test/lib/xbrlware/resources/47/4731_entity_identifier.xml +29 -0
  136. data/test/lib/xbrlware/resources/47/4732_entity_segment_not_present.xml +24 -0
  137. data/test/lib/xbrlware/resources/47/4732_entity_segment_present.xml +30 -0
  138. data/test/lib/xbrlware/resources/47/474_scenario_not_present.xml +26 -0
  139. data/test/lib/xbrlware/resources/47/474_scenario_present.xml +30 -0
  140. data/test/lib/xbrlware/resources/47/47_multiple_contexts.xml +36 -0
  141. data/test/lib/xbrlware/resources/48/482_unit_measure.xml +32 -0
  142. data/test/lib/xbrlware/resources/48/483_unit_divide.xml +39 -0
  143. data/test/lib/xbrlware/resources/48/48_multiple_units.xml +43 -0
  144. data/test/lib/xbrlware/resources/49/49_tuple.xml +61 -0
  145. data/test/lib/xbrlware/resources/49_tuple.xsd +44 -0
  146. data/test/lib/xbrlware/resources/instance.xml +128 -0
  147. data/test/lib/xbrlware/resources/report_test_xbrl_files/cal.xml +219 -0
  148. data/test/lib/xbrlware/resources/report_test_xbrl_files/def.xml +186 -0
  149. data/test/lib/xbrlware/resources/report_test_xbrl_files/instance.xml +5822 -0
  150. data/test/lib/xbrlware/resources/report_test_xbrl_files/lab.xml +782 -0
  151. data/test/lib/xbrlware/resources/report_test_xbrl_files/pre.xml +485 -0
  152. data/test/lib/xbrlware/resources/report_test_xbrl_files/report/report_index.html +62 -0
  153. data/test/lib/xbrlware/resources/report_test_xbrl_files/taxonomy.xsd +178 -0
  154. data/test/lib/xbrlware/resources/taxonomy_test_files/1/cal.xml +223 -0
  155. data/test/lib/xbrlware/resources/taxonomy_test_files/1/def.xml +190 -0
  156. data/test/lib/xbrlware/resources/taxonomy_test_files/1/lab.xml +786 -0
  157. data/test/lib/xbrlware/resources/taxonomy_test_files/1/pre.xml +489 -0
  158. data/test/lib/xbrlware/resources/taxonomy_test_files/1/taxonomy.xsd +177 -0
  159. data/test/lib/xbrlware/resources/taxonomy_test_files/2/linkbases/cal.xml +223 -0
  160. data/test/lib/xbrlware/resources/taxonomy_test_files/2/linkbases/def.xml +190 -0
  161. data/test/lib/xbrlware/resources/taxonomy_test_files/2/linkbases/lab.xml +786 -0
  162. data/test/lib/xbrlware/resources/taxonomy_test_files/2/linkbases/pre.xml +489 -0
  163. data/test/lib/xbrlware/resources/taxonomy_test_files/2/taxonomy.xsd +175 -0
  164. data/test/lib/xbrlware/resources/taxonomy_test_files/3/taxonomy.xsd +175 -0
  165. data/test/lib/xbrlware/resources/us_gaap_schema.xsd +8 -0
  166. data/test/lib/xbrlware/resources/us_gaap_schema_local.xsd +10 -0
  167. data/test/lib/xbrlware/resources/util_test_xbrl_files/cal.xml +219 -0
  168. data/test/lib/xbrlware/resources/util_test_xbrl_files/def.xml +186 -0
  169. data/test/lib/xbrlware/resources/util_test_xbrl_files/instance.xml +5822 -0
  170. data/test/lib/xbrlware/resources/util_test_xbrl_files/lab.xml +782 -0
  171. data/test/lib/xbrlware/resources/util_test_xbrl_files/pre.xml +485 -0
  172. data/test/lib/xbrlware/resources/util_test_xbrl_files/taxonomy.xsd +178 -0
  173. data/test/lib/xbrlware/resources/xbrl_xsd/dei-2009-01-31.xsd +162 -0
  174. data/test/lib/xbrlware/resources/xbrl_xsd/dei-std-2009-01-31.xsd +23 -0
  175. data/test/lib/xbrlware/resources/xbrl_xsd/negated-2008-03-31.xsd +23 -0
  176. data/test/lib/xbrlware/resources/xbrl_xsd/ref-2006-02-27.xsd +121 -0
  177. data/test/lib/xbrlware/resources/xbrl_xsd/us-gaap-2009-01-31.xsd +13474 -0
  178. data/test/lib/xbrlware/resources/xbrl_xsd/us-roles-2009-01-31.xsd +2283 -0
  179. data/test/lib/xbrlware/resources/xbrl_xsd/us-types-2009-01-31.xsd +368 -0
  180. data/test/lib/xbrlware/resources/xbrl_xsd/xbrl-instance-2003-12-31.xsd +772 -0
  181. data/test/lib/xbrlware/resources/xbrl_xsd/xbrl-linkbase-2003-12-31.xsd +477 -0
  182. data/test/lib/xbrlware/resources/xbrl_xsd/xbrldi-2006.xsd +41 -0
  183. data/test/lib/xbrlware/resources/xbrl_xsd/xbrldt-2005.xsd +53 -0
  184. data/test/lib/xbrlware/resources/xbrl_xsd/xl-2003-12-31.xsd +246 -0
  185. data/test/lib/xbrlware/resources/xbrl_xsd/xlink-2003-12-31.xsd +117 -0
  186. data/test/lib/xbrlware/taxonomy_test.rb +124 -0
  187. data/test/lib/xbrlware/util_test.rb +18 -0
  188. data/test/lib/xbrlware/xml_parser_test.rb +142 -0
  189. data/test/schema_validator_jruby.rb +40 -0
  190. data/test/schema_validator_ruby.rb +7 -0
  191. data/test/scratchpad/block.rb +36 -0
  192. data/test/test_helper.rb +21 -0
  193. data/xbrlware.iml +30 -0
  194. metadata +261 -0
@@ -0,0 +1,25 @@
1
+ require 'xbrlware'
2
+
3
+ r=Xbrlware::Report.new
4
+ class << r
5
+ public :xbrl_files
6
+ end
7
+ files=r.xbrl_files("../../../xbrlware-wiki/sample_reports/edgar_data")
8
+
9
+ output = StringIO.new
10
+ output << "|| *Instance + Taxonomy file size (KB)* || *Time (Seconds)* ||"
11
+ output << "\n"
12
+
13
+ files.each do |file_map|
14
+ m=Benchmark.measure do
15
+ instance=Xbrlware.ins(file_map["ins"])
16
+ end
17
+
18
+ size = File.size(file_map["ins"]) / 1024.0
19
+ size += File.size(file_map["tax"]) / 1024.0
20
+ output << "|| " << format("%.4f", size).to_s << " || "
21
+ output << format("%.4f", m.total).to_s << " || "
22
+ output << "\n"
23
+ end
24
+
25
+ puts output.string
@@ -0,0 +1,34 @@
1
+ require 'rubygems' # you need this when xbrlware is installed as gem
2
+ require 'edgar'
3
+ require 'xbrlware'
4
+
5
+ dl=Edgar::HTMLFeedDownloader.new()
6
+
7
+ url="http://www.sec.gov/Archives/edgar/data/843006/000135448809002030/0001354488-09-002030-index.htm"
8
+ download_dir=url.split("/")[-2] # download dir is : 000135448809002030
9
+ dl.download(url, download_dir)
10
+
11
+ instance_file=Xbrlware.file_grep(download_dir)["ins"]
12
+ instance=Xbrlware.ins(instance_file)
13
+
14
+ item_name="Assets"
15
+ assets = instance.item(item_name) # Extracts "Assets"
16
+
17
+ if assets.size < 2
18
+ puts item_name + " Not found.."
19
+ return
20
+ end
21
+
22
+ curr_asset, prev_asset=0, 0
23
+
24
+ if Date.parse(assets[0].context.period) > Date.parse(assets[1].context.period)
25
+ curr_asset=assets[0].value.to_f
26
+ prev_asset=assets[1].value.to_f
27
+ else
28
+ curr_asset=assets[1].value.to_f
29
+ prev_asset=assets[0].value.to_f
30
+ end
31
+
32
+ if curr_asset > prev_asset
33
+ puts "Buy..."
34
+ end
@@ -0,0 +1,29 @@
1
+ <?xml version="1.0" encoding="US-ASCII"?>
2
+ <xbrli:xbrl xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
3
+ xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:us-gaap="http://xbrl.us/us-gaap/2009-01-31"
4
+ xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:xlink="http://www.w3.org/1999/xlink">
5
+ <link:schemaRef xlink:href="" xlink:type="simple"/>
6
+ <xbrli:context id="Y2009">
7
+ <xbrli:entity>
8
+ <xbrli:identifier scheme="http://www.sec.gov/CIK">9999999999</xbrli:identifier>
9
+ </xbrli:entity>
10
+ <xbrli:period>
11
+ <xbrli:startDate>2009-01-02</xbrli:startDate>
12
+ <xbrli:endDate>2009-12-30</xbrli:endDate>
13
+ </xbrli:period>
14
+ </xbrli:context>
15
+ <xbrli:context id="Y2008">
16
+ <xbrli:entity>
17
+ <xbrli:identifier scheme="http://www.sec.gov/CIK">9999999999</xbrli:identifier>
18
+ </xbrli:entity>
19
+ <xbrli:period>
20
+ <xbrli:startDate>2008-01-02</xbrli:startDate>
21
+ <xbrli:endDate>2008-12-30</xbrli:endDate>
22
+ </xbrli:period>
23
+ </xbrli:context>
24
+ <xbrli:unit id="USD">
25
+ <xbrli:measure>iso4217:USD</xbrli:measure>
26
+ </xbrli:unit>
27
+ <us-gaap:NetIncomeLoss contextRef="Y2009" unitRef="USD" decimals="-6">730000000</us-gaap:NetIncomeLoss>
28
+ <us-gaap:NetIncomeLoss contextRef="Y2008" unitRef="USD" decimals="-6">902000000</us-gaap:NetIncomeLoss>
29
+ </xbrli:xbrl>
@@ -0,0 +1,29 @@
1
+ require 'rubygems' # you need this when xbrlware is installed as gem
2
+ require 'xbrlware'
3
+
4
+ instance_file="c-20091230.xml"
5
+ instance = Xbrlware.ins(instance_file) # Create parser instance
6
+
7
+ item_name="NetIncomeLoss" # This is the item we are interested in.
8
+ net_incomes = instance.item(item_name) # Extracts "NetIncomeLoss"
9
+
10
+ if net_incomes.size < 2
11
+ puts item_name + " Not found.."
12
+ return
13
+ end
14
+
15
+ curr_netincome, prev_netincome=0, 0
16
+
17
+ if Date.parse(net_incomes[0].context.period["end_date"]) > Date.parse(net_incomes[1].context.period["end_date"])
18
+ curr_netincome=net_incomes[0].value.to_f
19
+ prev_netincome=net_incomes[1].value.to_f
20
+ else
21
+ curr_netincome=net_incomes[1].value.to_f
22
+ prev_netincome=net_incomes[0].value.to_f
23
+ end
24
+
25
+ expected_netincome=prev_netincome-(prev_netincome * 0.05)
26
+
27
+ if curr_netincome < expected_netincome
28
+ puts "Sell..." # Sell C's stocks
29
+ end
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env python
2
+
3
+ import sys
4
+
5
+ sys.path.append("gen-py")
6
+
7
+ from thrift.transport import TTransport
8
+ from thrift.transport import TSocket
9
+ from thrift.protocol import TBinaryProtocol
10
+
11
+ from risk import Rating
12
+ from risk.ttypes import *
13
+
14
+ transport = TTransport.TBufferedTransport(TSocket.TSocket("localhost", "9090"))
15
+ protocol = TBinaryProtocol.TBinaryProtocol(transport)
16
+
17
+ client = Rating.Client(protocol)
18
+ transport.open()
19
+
20
+ print client.piotroski("JAVA")
21
+ print client.altman_z("GOOG")
@@ -0,0 +1,13 @@
1
+ # provide an implementation of Rating service
2
+ class RatingImpl
3
+
4
+ def piotroski(entity_name)
5
+ # Code that use xbrlware goes here
6
+ return 1 # return some dummy value
7
+ end
8
+
9
+ def altman_z(entity_name)
10
+ # Code that use xbrlware goes here
11
+ return 2.2567 # return some dummy value
12
+ end
13
+ end
@@ -0,0 +1,25 @@
1
+ $:.push('gen-rb')
2
+
3
+ require 'thrift'
4
+
5
+ require 'thrift/transport/server_socket'
6
+ require 'thrift/transport/buffered_transport'
7
+ require 'thrift/server/simple_server'
8
+
9
+ require 'rating'
10
+ require 'rating-impl'
11
+
12
+ # Thrift provides mutiple communication endpoints
13
+ # - Here we will expose our service via a TCP socket
14
+ # - Web-service will run as a single thread, on port 9090
15
+
16
+ handler = RatingImpl.new()
17
+ processor = Risk::Rating::Processor.new(handler)
18
+
19
+ transport = Thrift::ServerSocket.new(9090)
20
+ transportFactory = Thrift::BufferedTransportFactory.new()
21
+ server = Thrift::SimpleServer.new(processor, transport, transportFactory)
22
+
23
+ puts "Starting the Rating service..."
24
+ server.serve()
25
+
@@ -0,0 +1,52 @@
1
+ #!/usr/local/bin/thrift --java --php --py
2
+ # Licensed to the Apache Software Foundation (ASF) under one
3
+ # or more contributor license agreements. See the NOTICE file
4
+ # distributed with this work for additional information
5
+ # regarding copyright ownership. The ASF licenses this file
6
+ # to you under the Apache License, Version 2.0 (the
7
+ # "License"); you may not use this file except in compliance
8
+ # with the License. You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+
18
+ #
19
+ # Interface definition for Ratings Service
20
+ #
21
+
22
+ namespace java org.risk.service
23
+ namespace cpp org.risk
24
+ namespace csharp Risk
25
+ namespace py risk
26
+ namespace php risk
27
+ namespace perl Risk
28
+ namespace rb Risk
29
+
30
+ #
31
+ # constants
32
+ #
33
+
34
+ # for clients checking that server and it have same thrift definitions.
35
+ const string VERSION = "1.2"
36
+
37
+ #
38
+ # Exceptions
39
+ # (note that internal server errors will raise a TApplicationException, courtesy of Thrift)
40
+ #
41
+
42
+ #
43
+ # service api
44
+ #
45
+
46
+ service Rating {
47
+ # compute Piotroski score
48
+ i16 piotroski(1:string entity_name),
49
+
50
+ # compute Altman Z Score
51
+ double altman_z(1:string entity_name)
52
+ }
@@ -0,0 +1,10 @@
1
+ require 'rubygems' # you need this when xbrlware is installed as gem
2
+ require 'xbrlware'
3
+
4
+ instance=Xbrlware.ins("foo.xml")
5
+ items=instance.item("ProfitLoss")
6
+
7
+ puts "Profit-Loss \t Context"
8
+ items.each do |item|
9
+ puts item.value+" \t "+item.context.id
10
+ end
@@ -0,0 +1,29 @@
1
+ <?xml version="1.0" encoding="US-ASCII"?>
2
+ <xbrli:xbrl xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
3
+ xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:us-gaap="http://xbrl.us/us-gaap/2009-01-31"
4
+ xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:xlink="http://www.w3.org/1999/xlink">
5
+ <link:schemaRef xlink:href="" xlink:type="simple"/>
6
+ <xbrli:context id="D2009Q2YTD">
7
+ <xbrli:entity>
8
+ <xbrli:identifier scheme="http://www.sec.gov/CIK">9999999999</xbrli:identifier>
9
+ </xbrli:entity>
10
+ <xbrli:period>
11
+ <xbrli:startDate>2009-02-01</xbrli:startDate>
12
+ <xbrli:endDate>2009-08-15</xbrli:endDate>
13
+ </xbrli:period>
14
+ </xbrli:context>
15
+ <xbrli:context id="D2008Q2YTD">
16
+ <xbrli:entity>
17
+ <xbrli:identifier scheme="http://www.sec.gov/CIK">9999999999</xbrli:identifier>
18
+ </xbrli:entity>
19
+ <xbrli:period>
20
+ <xbrli:startDate>2008-02-03</xbrli:startDate>
21
+ <xbrli:endDate>2008-08-16</xbrli:endDate>
22
+ </xbrli:period>
23
+ </xbrli:context>
24
+ <xbrli:unit id="USD">
25
+ <xbrli:measure>iso4217:USD</xbrli:measure>
26
+ </xbrli:unit>
27
+ <us-gaap:ProfitLoss contextRef="D2008Q2YTD" unitRef="USD" decimals="-6">730000000</us-gaap:ProfitLoss>
28
+ <us-gaap:ProfitLoss contextRef="D2009Q2YTD" unitRef="USD" decimals="-6">902000000</us-gaap:ProfitLoss>
29
+ </xbrli:xbrl>
@@ -0,0 +1,27 @@
1
+ require 'rubygems' # you need this when xbrlware is installed as gem
2
+ require 'edgar'
3
+ require 'xbrlware'
4
+
5
+ dl=Edgar::HTMLFeedDownloader.new()
6
+
7
+ url="http://www.sec.gov/Archives/edgar/data/843006/000135448809002030/0001354488-09-002030-index.htm"
8
+ download_dir=url.split("/")[-2] # download dir is : 000135448809002030
9
+ dl.download(url, download_dir)
10
+
11
+ # Name of xbrl documents downloaded from EDGAR system is in the following convention
12
+ # calculation linkbase document ends with _cal.xml
13
+ # definition linkbase document ends with _def.xml
14
+ # presentation linkbase ends with _pre.xml
15
+ # label linkbase document ends with _lab.xml
16
+ # taxonomy document ends with .xsd
17
+ # instance document ends with .xml
18
+ # Xbrl::file_grep understands above convention.
19
+ instance_file=Xbrlware.file_grep(download_dir)["ins"] # use file_grep to filter xbrl files and get instance file
20
+
21
+ instance=Xbrlware.ins(instance_file)
22
+
23
+ items=instance.item("OtherAssetsCurrent")
24
+ puts "Other-Assets \t Context"
25
+ items.each do |item|
26
+ puts item.value+" \t "+item.context.id
27
+ end
data/lib/edgar.rb ADDED
@@ -0,0 +1,30 @@
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
+ require 'ftools'
21
+
22
+ require 'open-uri'
23
+ require 'rexml/document'
24
+ require 'rexml/streamlistener'
25
+
26
+ require 'edgar/util'
27
+ require 'edgar/edgar_data_downloader'
28
+
29
+
30
+
@@ -0,0 +1,126 @@
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 Edgar
21
+
22
+ # This class defines method to download XBRL files from SEC's XBRL RSS Feed.
23
+ # See {report generation xbrlware wiki}[http://code.google.com/p/xbrlware/wiki/ReportGeneration] for how to use this class.
24
+ class RSSFeedDownloader
25
+ include FileUtil
26
+
27
+ attr_reader :content
28
+
29
+ def initialize(sec_edgar_rss_file=nil)
30
+ sec_edgar_rss_file ||= "http://www.sec.gov/Archives/edgar/usgaap.rss.xml"
31
+ @content = XmlSimple.xml_in(open(sec_edgar_rss_file).read, {'ForceContent' => true})
32
+ end
33
+
34
+ # Takes limit (how many entities to download), download_to (where to download)
35
+ # default value for limit is 100
36
+ # default value for download_to is current_dir + "/edgar_data"
37
+ def download(limit=100, download_to=File.expand_path(".")+File::SEPARATOR+"edgar_data")
38
+ items=@content["channel"][0]["item"]
39
+ items.each_with_index do |item, index|
40
+ break if index==limit
41
+ files=get_xbrl_files(item)
42
+ download_to += File::SEPARATOR unless download_to.end_with?(File::SEPARATOR)
43
+ data_dir=download_to
44
+ data_dir=data_dir+File::SEPARATOR+item["xbrlFiling"][0]["cikNumber"][0]["content"]
45
+ data_dir=data_dir+File::SEPARATOR+item["xbrlFiling"][0]["accessionNumber"][0]["content"]
46
+ mkdir(data_dir)
47
+ files.each do |file|
48
+ file_content=open(file["url"]).read
49
+ dump_to_file(data_dir+File::SEPARATOR+file["file"], file_content)
50
+ end
51
+ end
52
+ end
53
+
54
+ def print_stat # :nodoc:
55
+ i_url=""
56
+ i_size=0
57
+ title=""
58
+ items=@content["channel"][0]["item"]
59
+ items.each do |item|
60
+ files=get_xbrl_files(item)
61
+ files.each do |file|
62
+ if file["type"]=="EX-101.INS" && (i_size==0 || file["size"].to_i < i_size)
63
+ i_size = file["size"].to_i
64
+ i_url = file["url"]
65
+ title = item["title"]
66
+ end
67
+ end
68
+ end
69
+ puts ""
70
+ puts " Smallest Instance File " + i_url
71
+ end
72
+
73
+ private
74
+ # Gets url that end with xml and xsd
75
+ def get_xbrl_files(item)
76
+ xbrl_files=item["xbrlFiling"][0]["xbrlFiles"][0]["xbrlFile"]
77
+ return xbrl_files.select {|e| e["url"].end_with?("xml") || e["url"].end_with?("xsd")}
78
+ end
79
+
80
+ end
81
+
82
+ # This class defines method to download XBRL files from SEC's EDGAR filling url.
83
+ # See {report generation xbrlware wiki}[http://code.google.com/p/xbrlware/wiki/ReportGeneration] for how to use this class.
84
+ class HTMLFeedDownloader
85
+ include REXML::StreamListener
86
+ include FileUtil
87
+
88
+ attr_reader :links
89
+
90
+ # Takes url and download_to (where to download)
91
+ # default value for download_to is current_dir
92
+ def download(url, download_to=File.expand_path(".")+File::SEPARATOR)
93
+ $LOG.info " Starting download of fillings from SEC url ["+url+"]"
94
+ files=[]
95
+ content = open(url).read
96
+ @links = Set.new
97
+ uri=URI(url)
98
+ @base_path=""
99
+ @base_path=(uri.scheme+"://"+uri.host+((uri.port==80 && "") || ":"+uri.port.to_s)) unless uri.host.nil?
100
+ parse(content)
101
+ download_to += File::SEPARATOR unless download_to.end_with?(File::SEPARATOR)
102
+ mkdir(download_to)
103
+ @links.each do |link|
104
+ file=download_to + link.split("/")[-1]
105
+ dump_to_file(file, open(link).read)
106
+ files << file
107
+ end unless uri.host.nil?
108
+ files
109
+ end
110
+
111
+ # Callback method for notifying start of xml elements by REXML stream parser.
112
+ def tag_start(name, attrs) # :nodoc:
113
+ if "a"==name
114
+ href=attrs["href"]
115
+ @links << @base_path + href if href.end_with?("xml") || href.end_with?("xsd")
116
+ end
117
+ end
118
+
119
+ private
120
+ def parse(text)
121
+ REXML::Document.parse_stream(text, self)
122
+ end
123
+
124
+ end
125
+
126
+ end