Sha256: 1bbce2251eee03c1238ee92bc89c2aae98d63920dfdecbc767c2d2450b98b759

Contents?: true

Size: 719 Bytes

Versions: 12

Compression:

Stored size: 719 Bytes

Contents

require 'json'

module RocketNavigation
  module Renderer
    # Renders the navigation items as a object tree serialized as a json string,
    # can also output raw ruby Hashes
    class Json < RocketNavigation::Renderer::Base
      def render(item_container)
        results = hash_render(item_container)
        options[:as_hash] ? results : results.to_json
      end

      private

      def hash_render(item_container)
        return nil unless item_container

        item_container.items.map do |item|
          {
            items: hash_render(item.sub_navigation),
            name: item.name,
            selected: item.selected?,
            url: item.url
          }
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
rocket_navigation-0.3.3 lib/rocket_navigation/renderer/json.rb
rocket_navigation-0.3.2 lib/rocket_navigation/renderer/json.rb
rocket_navigation-0.3.1 lib/rocket_navigation/renderer/json.rb
rocket_navigation-0.3.0 lib/rocket_navigation/renderer/json.rb
rocket_navigation-0.2.3 lib/rocket_navigation/renderer/json.rb
rocket_navigation-0.2.2 lib/rocket_navigation/renderer/json.rb
rocket_navigation-0.2.1 lib/rocket_navigation/renderer/json.rb
rocket_navigation-0.2.0 lib/rocket_navigation/renderer/json.rb
rocket_navigation-0.1.3 lib/rocket_navigation/renderer/json.rb
rocket_navigation-0.1.2 lib/rocket_navigation/renderer/json.rb
rocket_navigation-0.1.1 lib/rocket_navigation/renderer/json.rb
rocket_navigation-0.1.0 lib/rocket_navigation/renderer/json.rb