Class: Trekyll::NavigationManager

Inherits:
Object
  • Object
show all
Defined in:
lib/trekyll/navigation_manager.rb

Overview

Prefix definition:

[#]     - Container
#       - Sub page
#[#]    - Sub page conainer
##      - Sub sub page
##[#]   - Sub sub container page
###     - Sub sub sub page
[/#]    - Container with ommited page url (links to homepage when clicked)
[!]     - Ommited page from navigation

Constant Summary collapse

CONFIGURABLE_PROPERTIES =
[
    :page_name,
    :page_type,
    :nav_dir_name,
    :page_file_name
]

Instance Method Summary collapse

Constructor Details

#initialize(dir = "_data") ⇒ NavigationManager

constructor *( defoult navigation location _data dir)



39
40
41
# File 'lib/trekyll/navigation_manager.rb', line 39

def initialize(dir="_data")
    @nav_dir_name = dir
end

Instance Method Details

#add_page(page) ⇒ Object

Add page to nav.yml



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/trekyll/navigation_manager.rb', line 44

def add_page(page)
    # get page name
    @page_name = page

    # create a file name (remove special chars and convert spaces to "_")
    @page_file_name = @page_name.sanitize_as_page_name

    File.open( @nav_dir_name + '/nav.yml', 'a') do |f|
        # Get substring prefix  ##[#] | MyPage_name
        i = @page_name.index(/[a-zA-Z]/)
        prefix = @page_name[0,i]
        c = prefix.count("#")

        # Define different spacing for first # and odd numbr of # (hashes)
        if c == 1
            c = 0
        elsif c % 2 != 0
            c = c+1
        end

        if prefix.include?("[#]")
            f.puts "- title: \"#{@page_name.sub!(prefix,'')}\" ".indent(c)
            f.puts "  href: /#{@page_file_name}/".indent(c)
            f.puts "  subcategories:".indent(c)
            @page_type = "page"

        elsif prefix.include?("[/#]")
            f.puts "- title: \"#{@page_name.sub!(prefix,'')}\" ".indent(c)
            f.puts "  subcategories:".indent(c)
            @page_type = "page"

        elsif prefix.include?("#")
            f.puts "- title: \"#{@page_name.sub!(prefix,'')}\" ".indent(c+2)
            f.puts "  href: /#{@page_file_name}/".indent(c+2)
            @page_type = "subpage"

        elsif @page_name.start_with?("[!]")
            @page_name.sub!(prefix,"")
        else
            f.puts "- title: \"#{page_name}\" "
            f.puts "  href: /#{page_file_name}/"
            @page_type = "page"
        end
    end
end