Class: Apress::Documentation::Storage::BaseStorage
- Inherits:
-
Object
- Object
- Apress::Documentation::Storage::BaseStorage
- Defined in:
- lib/apress/documentation/storage/base_storage.rb
Overview
Private: AbstractClass, Базовый класс хранилища
описывает методы аттрибутов для сериализации в json формата: {
{
"attr_0": send(:attr_0),
"attr_1": send(:attr_1),
....
}
}
Direct Known Subclasses
Instance Attribute Summary collapse
-
#slug ⇒ Object
readonly
Public: Составной слаг, используется как URL.
Class Method Summary collapse
-
.json_attr(*method_names) ⇒ Object
Public: Задает аттрибуты для сериализации в json.
- .json_attr_names ⇒ Object
Instance Method Summary collapse
-
#as_json(options = {}) ⇒ Object
Public: Сериализует объект в JSON.
-
#assign(options = {}) ⇒ Object
Public: задает аттрибуты на основе хеша.
-
#dependencies(reverse: false) ⇒ Object
Public: находит зависимости для текущего документа.
- #eql?(other) ⇒ Boolean (also: #==)
- #hash ⇒ Object
- #inspect ⇒ Object
- #to_s ⇒ Object
Instance Attribute Details
#slug ⇒ Object (readonly)
Public: Составной слаг, используется как URL
16 17 18 |
# File 'lib/apress/documentation/storage/base_storage.rb', line 16 def slug @slug end |
Class Method Details
.json_attr(*method_names) ⇒ Object
Public: Задает аттрибуты для сериализации в json
23 24 25 26 27 |
# File 'lib/apress/documentation/storage/base_storage.rb', line 23 def self.json_attr(*method_names) json_attr_names.concat(method_names.map(&:to_s)) attr_accessor(*method_names) end |
.json_attr_names ⇒ Object
18 19 20 |
# File 'lib/apress/documentation/storage/base_storage.rb', line 18 def self.json_attr_names @json_attr_names ||= [] end |
Instance Method Details
#as_json(options = {}) ⇒ Object
Public: Сериализует объект в JSON
30 31 32 33 34 35 36 |
# File 'lib/apress/documentation/storage/base_storage.rb', line 30 def as_json( = {}) self.class.json_attr_names.each_with_object({}) do |attr_name, json| value = send(attr_name) json[attr_name] = value if value end end |
#assign(options = {}) ⇒ Object
Public: задает аттрибуты на основе хеша
39 40 41 42 43 44 45 46 47 |
# File 'lib/apress/documentation/storage/base_storage.rb', line 39 def assign( = {}) .each do |key, value| unless self.class.json_attr_names.include?(key.to_s) raise "Undefined attribute #{key}, allowed attributes are #{self.class.json_attr_names}" end send("#{key}=", value) end end |
#dependencies(reverse: false) ⇒ Object
Public: находит зависимости для текущего документа
Arguments:
reverse - флаг для отпеределения какой тип зависимостей нужно вернуть
возможные значения
- false (default) - документы, от которых зависит текущий документ (AKA зависимости self)
- true - документы, которые зависят от текущего (AKA потребители self)
Returns Array of Pairs - [[doc1, doc2], [doc1, doc2]]
75 76 77 78 79 80 81 82 83 84 |
# File 'lib/apress/documentation/storage/base_storage.rb', line 75 def dependencies(reverse: false) @dependencies ||= Hash.new do |hash, key| hash[key] = Storage::DependencyGraph.instance.dependencies( self, reverse: key ) end @dependencies[reverse] end |
#eql?(other) ⇒ Boolean Also known as: ==
49 50 51 |
# File 'lib/apress/documentation/storage/base_storage.rb', line 49 def eql?(other) slug == other.to_s end |
#hash ⇒ Object
58 59 60 |
# File 'lib/apress/documentation/storage/base_storage.rb', line 58 def hash slug.hash end |
#inspect ⇒ Object
62 63 64 |
# File 'lib/apress/documentation/storage/base_storage.rb', line 62 def inspect "<#{self.class} slug = #{slug}>" end |
#to_s ⇒ Object
54 55 56 |
# File 'lib/apress/documentation/storage/base_storage.rb', line 54 def to_s slug.to_s end |