Class: TradingviewScreener::Base
- Inherits:
-
Object
- Object
- TradingviewScreener::Base
show all
- Extended by:
- QueryMethods
- Defined in:
- lib/tradingview_screener/base.rb
Overview
ActiveRecord-style model base.
class Stock < TradingviewScreener::Base
market "america"
default_scope { where(is_primary: true) }
scope :liquid, -> { where(volume: gt(1_000_000)) }
end
Stock.liquid.where(close: 10..300).order(volume: :desc).limit(20).load
Direct Known Subclasses
Stock
Class Method Summary
collapse
gt, gte, has, has_none_of, lt, lte, not_eq
Class Method Details
.[](name) ⇒ Object
125
126
127
|
# File 'lib/tradingview_screener/base.rb', line 125
def [](name)
Field.new(name)
end
|
.all ⇒ Object
92
93
94
95
96
97
98
|
# File 'lib/tradingview_screener/base.rb', line 92
def all
rel = Relation.new(self)
default_scopes.reduce(rel) do |memo, callable|
result = memo.instance_exec(&callable)
result.nil? ? memo : result
end
end
|
.columns(*names) ⇒ Object
Also known as:
default_columns
30
31
32
33
34
35
36
|
# File 'lib/tradingview_screener/base.rb', line 30
def columns(*names)
if names.empty?
@default_columns
else
@default_columns = names.flatten.map(&:to_s)
end
end
|
.count(**kwargs) ⇒ Object
116
|
# File 'lib/tradingview_screener/base.rb', line 116
def count(**kwargs) = all.count(**kwargs)
|
.default_filter2 ⇒ Object
60
61
62
|
# File 'lib/tradingview_screener/base.rb', line 60
def default_filter2
@default_filter2
end
|
.default_limit(value = nil) ⇒ Object
39
40
41
42
43
44
45
|
# File 'lib/tradingview_screener/base.rb', line 39
def default_limit(value = nil)
if value.nil?
@default_limit
else
@default_limit = Integer(value)
end
end
|
.default_order_values ⇒ Object
Also known as:
default_order
47
48
49
|
# File 'lib/tradingview_screener/base.rb', line 47
def default_order_values
@default_order
end
|
.default_scope(body = nil, &block) ⇒ Object
85
86
87
88
89
90
|
# File 'lib/tradingview_screener/base.rb', line 85
def default_scope(body = nil, &block)
callable = body || block
raise ArgumentError, "default_scope needs a callable" unless callable
default_scopes << callable
end
|
.default_where ⇒ Object
56
57
58
|
# File 'lib/tradingview_screener/base.rb', line 56
def default_where
@default_where
end
|
.except ⇒ Object
113
|
# File 'lib/tradingview_screener/base.rb', line 113
def except(...) = all.except(...)
|
.exists?(**kwargs) ⇒ Boolean
122
|
# File 'lib/tradingview_screener/base.rb', line 122
def exists?(**kwargs) = all.exists?(**kwargs)
|
.filter2(value) ⇒ Object
64
65
66
|
# File 'lib/tradingview_screener/base.rb', line 64
def filter2(value)
@default_filter2 = value
end
|
.find_each(**opts, &block) ⇒ Object
123
|
# File 'lib/tradingview_screener/base.rb', line 123
def find_each(**opts, &block) = all.to_a(**opts).each(&block)
|
.first ⇒ Object
117
|
# File 'lib/tradingview_screener/base.rb', line 117
def first(...) = all.first(...)
|
.from_payload(payload) ⇒ Object
133
134
135
|
# File 'lib/tradingview_screener/base.rb', line 133
def from_payload(payload)
Relation.from_payload(self, payload)
end
|
.from_screen_data(screen_data) ⇒ Object
137
138
139
|
# File 'lib/tradingview_screener/base.rb', line 137
def from_screen_data(screen_data)
from_payload(ScreenData.to_payload(screen_data))
end
|
.from_screener_url(url, cookies: nil, proxy: nil, timeout: 20) ⇒ Object
141
142
143
144
|
# File 'lib/tradingview_screener/base.rb', line 141
def from_screener_url(url, cookies: nil, proxy: nil, timeout: 20)
fetched = ScreenData.fetch(url, cookies: cookies, proxy: proxy, timeout: timeout)
from_payload(fetched["payload"])
end
|
.ids(**kwargs) ⇒ Object
121
|
# File 'lib/tradingview_screener/base.rb', line 121
def ids(**kwargs) = all.ids(**kwargs)
|
.inherited(subclass) ⇒ Object
15
16
17
18
19
|
# File 'lib/tradingview_screener/base.rb', line 15
def inherited(subclass)
super
subclass.instance_variable_set(:@scopes, {})
subclass.instance_variable_set(:@default_scopes, [])
end
|
.last ⇒ Object
118
|
# File 'lib/tradingview_screener/base.rb', line 118
def last(...) = all.last(...)
|
.limit ⇒ Object
108
|
# File 'lib/tradingview_screener/base.rb', line 108
def limit(...) = all.limit(...)
|
.load(**kwargs) ⇒ Object
114
|
# File 'lib/tradingview_screener/base.rb', line 114
def load(**kwargs) = all.load(**kwargs)
|
.market(name = nil) ⇒ Object
Also known as:
default_market
21
22
23
24
25
26
27
|
# File 'lib/tradingview_screener/base.rb', line 21
def market(name = nil)
if name.nil?
@default_market
else
@default_market = name.to_s
end
end
|
.market! ⇒ Object
110
|
# File 'lib/tradingview_screener/base.rb', line 110
def market!(...) = all.market(...)
|
.merge ⇒ Object
112
|
# File 'lib/tradingview_screener/base.rb', line 112
def merge(...) = all.merge(...)
|
.none ⇒ Object
100
101
102
|
# File 'lib/tradingview_screener/base.rb', line 100
def none
all.none
end
|
.offset ⇒ Object
109
|
# File 'lib/tradingview_screener/base.rb', line 109
def offset(...) = all.offset(...)
|
.order ⇒ Object
107
|
# File 'lib/tradingview_screener/base.rb', line 107
def order(...) = all.order(...)
|
.order_by(column, direction = :desc) ⇒ Object
52
53
54
|
# File 'lib/tradingview_screener/base.rb', line 52
def order_by(column, direction = :desc)
@default_order = [{ "sortBy" => column.to_s, "sortOrder" => direction.to_s == "asc" ? "asc" : "desc" }]
end
|
.pick ⇒ Object
120
|
# File 'lib/tradingview_screener/base.rb', line 120
def pick(...) = all.pick(...)
|
.pluck ⇒ Object
119
|
# File 'lib/tradingview_screener/base.rb', line 119
def pluck(...) = all.pluck(...)
|
.rewhere ⇒ Object
105
|
# File 'lib/tradingview_screener/base.rb', line 105
def rewhere(...) = all.rewhere(...)
|
.scope(name, body = nil, &block) ⇒ Object
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/tradingview_screener/base.rb', line 68
def scope(name, body = nil, &block)
callable = body || block
raise ArgumentError, "scope needs a callable" unless callable
scopes[name.to_sym] = callable
define_singleton_method(name) do |*args, **kwargs|
rel = all
result =
if callable.arity.nonzero? || kwargs.any?
rel.instance_exec(*args, **kwargs, &callable)
else
rel.instance_exec(&callable)
end
result.nil? ? none : result
end
end
|
.select ⇒ Object
106
|
# File 'lib/tradingview_screener/base.rb', line 106
def select(...) = all.select(...)
|
.tickers ⇒ Object
111
|
# File 'lib/tradingview_screener/base.rb', line 111
def tickers(...) = all.tickers(...)
|
.to_a(**kwargs) ⇒ Object
115
|
# File 'lib/tradingview_screener/base.rb', line 115
def to_a(**kwargs) = all.to_a(**kwargs)
|
.unscoped ⇒ Object
129
130
131
|
# File 'lib/tradingview_screener/base.rb', line 129
def unscoped
Relation.new(self)
end
|
.where ⇒ Object
104
|
# File 'lib/tradingview_screener/base.rb', line 104
def where(...) = all.where(...)
|