Sha256: f4031843896b6c8d9d20b11358aae6c653bf14d22a8d58b97b6250d934f86155

Contents?: true

Size: 1.12 KB

Versions: 9

Compression:

Stored size: 1.12 KB

Contents

module Rapa
  class BrowseNode
    # @return [Hash]
    attr_reader :source

    # @param source [Hash]
    def initialize(source)
      @source = source
    end

    # @return [Array<Rapa::BrowseNode>]
    def ancestors
      array = []
      current = self
      while parent = current.parent do
        array << parent
        current = parent
      end
      array
    end

    # @return [Array<Rapa::BrowseNode>, nil]
    def children
      if child_sources = source.dig("Children", "BrowseNode")
        child_sources.map do |child_source|
          ::Rapa::BrowseNode.new(child_source)
        end
      else
        []
      end
    end

    # @return [Integer]
    def id
      source["BrowseNodeId"].to_i
    end

    # @return [String]
    def name
      source["Name"]
    end

    # @return [Rapa::BrowseNode, nil]
    def parent
      if parent_source = source.dig("Ancestors", "BrowseNode")
        ::Rapa::BrowseNode.new(parent_source)
      end
    end

    # @return [Array<Rapa::BrowseNode>]
    def self_or_ancestors
      [self] + ancestors
    end

    # @return [String]
    def title
      source["Title"]
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
rapa-0.6.0 lib/rapa/browse_node.rb
rapa-0.5.7 lib/rapa/browse_node.rb
rapa-0.5.6 lib/rapa/browse_node.rb
rapa-0.5.5 lib/rapa/browse_node.rb
rapa-0.5.4 lib/rapa/browse_node.rb
rapa-0.5.3 lib/rapa/browse_node.rb
rapa-0.5.2 lib/rapa/browse_node.rb
rapa-0.5.1 lib/rapa/browse_node.rb
rapa-0.5.0 lib/rapa/browse_node.rb