Class: Cosensee::Project
- Inherits:
-
Object
- Object
- Cosensee::Project
- Extended by:
- Delegatable
- Defined in:
- lib/cosensee/project.rb
Overview
for Project
Instance Attribute Summary collapse
-
#display_name ⇒ Object
readonly
Returns the value of attribute display_name.
-
#exported ⇒ Object
readonly
Returns the value of attribute exported.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#page_store ⇒ Object
readonly
Returns the value of attribute page_store.
-
#pages ⇒ Object
readonly
Returns the value of attribute pages.
-
#renderer_class ⇒ Object
readonly
Returns the value of attribute renderer_class.
-
#source ⇒ Object
readonly
Returns the value of attribute source.
-
#users ⇒ Object
readonly
Returns the value of attribute users.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(name:, exported:, users:, pages:, source:, renderer_class:, **kwargs) ⇒ Project
constructor
A new instance of Project.
- #sorted_pages_for_top ⇒ Object
- #to_json ⇒ Object
- #to_obj ⇒ Object
Methods included from Delegatable
Constructor Details
#initialize(name:, exported:, users:, pages:, source:, renderer_class:, **kwargs) ⇒ Project
Returns a new instance of Project.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/cosensee/project.rb', line 21 def initialize(name:, exported:, users:, pages:, source:, renderer_class:, **kwargs) @name = name @display_name = if kwargs.keys.size == 1 && kwargs.key?(:display_name) kwargs[:display_name] elsif kwargs.keys.size == 1 && kwargs.key?(:displayName) kwargs[:displayName] else raise Cosensee::Error, 'Cosensee::User.new need an argument :display_name or :displayName' end @users = Cosensee::User.from_array(users) @pages = Cosensee::Page.from_array(pages) @exported = Time.at(exported) @source = source @page_store = PageStore.new(project: self) @renderer_class = renderer_class end |
Instance Attribute Details
#display_name ⇒ Object (readonly)
Returns the value of attribute display_name.
39 40 41 |
# File 'lib/cosensee/project.rb', line 39 def display_name @display_name end |
#exported ⇒ Object (readonly)
Returns the value of attribute exported.
39 40 41 |
# File 'lib/cosensee/project.rb', line 39 def exported @exported end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
39 40 41 |
# File 'lib/cosensee/project.rb', line 39 def name @name end |
#page_store ⇒ Object (readonly)
Returns the value of attribute page_store.
39 40 41 |
# File 'lib/cosensee/project.rb', line 39 def page_store @page_store end |
#pages ⇒ Object (readonly)
Returns the value of attribute pages.
39 40 41 |
# File 'lib/cosensee/project.rb', line 39 def pages @pages end |
#renderer_class ⇒ Object (readonly)
Returns the value of attribute renderer_class.
39 40 41 |
# File 'lib/cosensee/project.rb', line 39 def renderer_class @renderer_class end |
#source ⇒ Object (readonly)
Returns the value of attribute source.
39 40 41 |
# File 'lib/cosensee/project.rb', line 39 def source @source end |
#users ⇒ Object (readonly)
Returns the value of attribute users.
39 40 41 |
# File 'lib/cosensee/project.rb', line 39 def users @users end |
Class Method Details
.parse(source, renderer_class:) ⇒ Object
10 11 12 13 14 |
# File 'lib/cosensee/project.rb', line 10 def self.parse(source, renderer_class:) json = JSON.parse(source, symbolize_names: true) name, display_name, exported, users, pages = json.values_at(:name, :displayName, :exported, :users, :pages) Cosensee::Project.new(name:, display_name:, exported:, users:, pages:, source:, renderer_class:) end |
.parse_file(filename, renderer_class:) ⇒ Object
16 17 18 19 |
# File 'lib/cosensee/project.rb', line 16 def self.parse_file(filename, renderer_class:) src = File.read(filename) parse(src, renderer_class:) end |
Instance Method Details
#sorted_pages_for_top ⇒ Object
43 44 45 46 47 48 49 50 51 |
# File 'lib/cosensee/project.rb', line 43 def sorted_pages_for_top pinned_pages = page_store.pinned_pages if pinned_pages.empty? pages.sort_by(&:updated).reverse else unpinned_pages = pages - pinned_pages pinned_pages + unpinned_pages.sort_by(&:updated).reverse end end |
#to_json ⇒ Object
57 58 59 |
# File 'lib/cosensee/project.rb', line 57 def to_json(*) to_obj.to_json(*) end |
#to_obj ⇒ Object
53 54 55 |
# File 'lib/cosensee/project.rb', line 53 def to_obj { name:, displayName: display_name, exported: exported.to_i, users:, pages: } end |