rixml 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +70 -0
- data/lib/rixml.rb +18 -9
- data/rixml.gemspec +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d6a3aa2d504041ca967ac507d4e3adef0e6d7b11
|
4
|
+
data.tar.gz: c85bce14f429ae939edc3a1b1376f85afb7a4d70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1c74e082bbfd329c53149e06081876e191e4b0eebbd02ec773f9482e9cb41862b4358f1839b396b2d060ac4a0984a8598069669e306a7fd73303289a57081a3
|
7
|
+
data.tar.gz: 047685a3e4dad4cac25debdd6c92b4a6bd8f65007a63e01fabaa644e5ab7f75ee9c5c29a0573c481f85b33b25f68d5aa696893f9239d42bc7d05615dc475ec81
|
data/README.md
CHANGED
@@ -0,0 +1,70 @@
|
|
1
|
+
# RIXML - simple DSL for parse rixml.
|
2
|
+
|
3
|
+
[![Build Status](https://travis-ci.org/AlphaExchange/rixml.svg?branch=master)](https://travis-ci.org/AlphaExchange/rixml)
|
4
|
+
|
5
|
+
A simple RIXML parser for Ruby.
|
6
|
+
|
7
|
+
* Main page: https://github.com/AlphaExchange/rixml
|
8
|
+
|
9
|
+
## Usage
|
10
|
+
|
11
|
+
Basic usage:
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
require 'rixml'
|
15
|
+
|
16
|
+
#parse from file
|
17
|
+
rixml = RIXML.parse_from_file('./test/fixtures/simple.xml')
|
18
|
+
|
19
|
+
#parse from string
|
20
|
+
rixml = RIXML.parse('<xml></xml>')
|
21
|
+
|
22
|
+
#parse from File
|
23
|
+
rixml = RIXML.new(File)
|
24
|
+
```
|
25
|
+
|
26
|
+
Now you should be able to get info about RIXML.
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
# rixml.product_id
|
30
|
+
095ad669-9f01-421e-91a0-c6c9e78a3c9d
|
31
|
+
|
32
|
+
# rixml.status
|
33
|
+
revised
|
34
|
+
|
35
|
+
# rixml.publication_date
|
36
|
+
instance of Time
|
37
|
+
|
38
|
+
# rixml.authors
|
39
|
+
|
40
|
+
{
|
41
|
+
name: 'Leonardo Siqueira',
|
42
|
+
first_name: 'Leonardo',
|
43
|
+
middle_name: 'Goularte',
|
44
|
+
last_name: 'Siqueira',
|
45
|
+
job_title: 'Awesome Job',
|
46
|
+
email: 'leonardo@alpha-exchange.com'
|
47
|
+
}
|
48
|
+
|
49
|
+
|
50
|
+
# rixml.report_info
|
51
|
+
|
52
|
+
{
|
53
|
+
title: 'Title',
|
54
|
+
abstract: 'We initiate coverage with a Buy rating. We believe the stock is deeply undervalued...',
|
55
|
+
file_name: 'sample.pdf',
|
56
|
+
pages: 2
|
57
|
+
}
|
58
|
+
|
59
|
+
# rixml.context
|
60
|
+
{
|
61
|
+
companies: companies: [{ isin: 'GOOG11234' }],
|
62
|
+
sectors: [{ code: 45101010, focus: true }]
|
63
|
+
}
|
64
|
+
|
65
|
+
```
|
66
|
+
|
67
|
+
|
68
|
+
## Legal
|
69
|
+
|
70
|
+
Released under the MIT License: http://www.opensource.org/licenses/mit-license.php
|
data/lib/rixml.rb
CHANGED
@@ -9,23 +9,24 @@ class RIXML
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def product_id
|
12
|
-
|
12
|
+
deep_value('Research', 'Product', 'productID')
|
13
13
|
end
|
14
14
|
|
15
15
|
def status
|
16
|
-
|
16
|
+
deep_value('Research', 'Product', 'StatusInfo', 'statusType').try(:downcase).try(:to_sym) || :published
|
17
17
|
end
|
18
18
|
|
19
19
|
def publication_date
|
20
|
-
|
20
|
+
time_str = deep_value('Research', 'Product', 'StatusInfo', 'statusDateTime') || DateTime.now.to_s
|
21
|
+
DateTime.strptime(time_str)
|
21
22
|
end
|
22
23
|
|
23
24
|
def authors
|
24
|
-
org =
|
25
|
+
org = deep_value('Research', 'Product', 'Source', 'Organization') || {}
|
25
26
|
if org.is_a? Array
|
26
27
|
org = org.find { |v| v['primaryIndicator'] == 'Yes' } || org.first
|
27
28
|
end
|
28
|
-
authors = org
|
29
|
+
authors = RIXML.deep_value(org, 'PersonGroup', 'PersonGroupMember') || []
|
29
30
|
authors = [authors] unless authors.is_a? Array
|
30
31
|
|
31
32
|
authors.map do |author|
|
@@ -42,17 +43,17 @@ class RIXML
|
|
42
43
|
end
|
43
44
|
|
44
45
|
def report_info
|
45
|
-
content =
|
46
|
+
content = deep_value('Research', 'Product', 'Content')
|
46
47
|
{
|
47
48
|
title: content['Title'],
|
48
49
|
abstract: content['Abstract'],
|
49
|
-
file_name: content['Resource']['Name'
|
50
|
-
pages: content['Resource']['Length'
|
50
|
+
file_name: content['Resource'].try(:[], 'Name'),
|
51
|
+
pages: content['Resource'].try(:[], 'Length').to_i
|
51
52
|
}
|
52
53
|
end
|
53
54
|
|
54
55
|
def context
|
55
|
-
context =
|
56
|
+
context = deep_value('Research', 'Product', 'Context')
|
56
57
|
context_info = {
|
57
58
|
companies: RIXML.extract_companies_from_context(context),
|
58
59
|
sectors: RIXML.extract_sectors_from_context(context)
|
@@ -69,6 +70,14 @@ class RIXML
|
|
69
70
|
|
70
71
|
private
|
71
72
|
|
73
|
+
def self.deep_value(attrs, *keys)
|
74
|
+
keys.reduce(attrs) { |v, key| v.try(:[], key) }
|
75
|
+
end
|
76
|
+
|
77
|
+
def deep_value(*keys)
|
78
|
+
RIXML.deep_value(@attrs, *keys)
|
79
|
+
end
|
80
|
+
|
72
81
|
def self.read_file filename
|
73
82
|
body = ''
|
74
83
|
File.open(filename, 'r') do |infile|
|
data/rixml.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rixml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Correia Santos
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-11-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|