Almirah 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/almirah/doc_fabric.rb +8 -1
- data/lib/almirah/doc_items/heading.rb +40 -29
- data/lib/almirah/doc_types/base_document.rb +3 -1
- data/lib/almirah/dom/doc_section.rb +28 -0
- data/lib/almirah/dom/document.rb +63 -0
- data/lib/almirah/navigation_pane.rb +7 -13
- data/lib/almirah/project.rb +4 -5
- data/lib/almirah/templates/page.html +29 -13
- metadata +4 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: c28aa00ca57d213d56625d51372284eaff2668db942bb08fccd4d2c0bae10a72
         | 
| 4 | 
            +
              data.tar.gz: ce278d1ab81147f9bddae86230da83575921ef26fcd849133e7d138433a6a7fd
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 73fb32081f15b4314046976855e4474edf94cca23e146507210a6e232418e6b844d1d51c6bf1d7cbaad0b32a203abbc24cf38c1608e400a68485f58d7911ae2d
         | 
| 7 | 
            +
              data.tar.gz: 71155f2804459d0ac0d82777f070e8628f3d1d8d3949bab4468bae35f9d04f495d78523b239a8ed5fff2df16ba98cf789c1b97017deb3b92d01a58ef81a5fe49
         | 
    
        data/lib/almirah/doc_fabric.rb
    CHANGED
    
    | @@ -17,6 +17,8 @@ require_relative "doc_items/image" | |
| 17 17 | 
             
            require_relative "doc_items/markdown_list"
         | 
| 18 18 | 
             
            require_relative "doc_items/doc_footer"
         | 
| 19 19 |  | 
| 20 | 
            +
            require_relative "dom/document"
         | 
| 21 | 
            +
             | 
| 20 22 | 
             
            class DocFabric
         | 
| 21 23 |  | 
| 22 24 | 
             
                def self.add_lazy_doc_id(path)
         | 
| @@ -65,6 +67,7 @@ class DocFabric | |
| 65 67 |  | 
| 66 68 | 
             
                                if level == 1 && doc.title == ""
         | 
| 67 69 | 
             
                                    doc.title = value
         | 
| 70 | 
            +
                                    level = 0 # Doc Title is a Root
         | 
| 68 71 | 
             
                                    Heading.reset_global_section_number()
         | 
| 69 72 | 
             
                                end 
         | 
| 70 73 |  | 
| @@ -82,7 +85,7 @@ class DocFabric | |
| 82 85 | 
             
                                    Heading.reset_global_section_number()
         | 
| 83 86 | 
             
                                end 
         | 
| 84 87 |  | 
| 85 | 
            -
                                item = Heading.new(title,  | 
| 88 | 
            +
                                item = Heading.new(title, 0)
         | 
| 86 89 | 
             
                                item.parent_doc = doc
         | 
| 87 90 | 
             
                                doc.items.append(item)
         | 
| 88 91 | 
             
                                doc.headings.append(item)
         | 
| @@ -366,5 +369,9 @@ class DocFabric | |
| 366 369 | 
             
                    item = DocFooter.new
         | 
| 367 370 | 
             
                    item.parent_doc = doc
         | 
| 368 371 | 
             
                    doc.items.append(item)
         | 
| 372 | 
            +
                    # Build dom
         | 
| 373 | 
            +
                    if doc.is_a?(Specification)
         | 
| 374 | 
            +
                        doc.dom = Document.new(doc.headings)
         | 
| 375 | 
            +
                    end
         | 
| 369 376 | 
             
                end
         | 
| 370 377 | 
             
            end
         | 
| @@ -11,57 +11,68 @@ class Heading < Paragraph | |
| 11 11 | 
             
                def initialize(text, level)
         | 
| 12 12 | 
             
                    @text = text
         | 
| 13 13 | 
             
                    @level = level
         | 
| 14 | 
            -
                    @anchor_id = getTextWithoutSpaces()
         | 
| 15 14 |  | 
| 16 | 
            -
                    if  | 
| 17 | 
            -
                        @@global_section_number  | 
| 18 | 
            -
             | 
| 19 | 
            -
                             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
                         | 
| 15 | 
            +
                    if level != 0 # skip Doc Title
         | 
| 16 | 
            +
                        if @@global_section_number == ""
         | 
| 17 | 
            +
                            @@global_section_number = "1"
         | 
| 18 | 
            +
                            for n in 1..(level-1) do
         | 
| 19 | 
            +
                                @@global_section_number += ".1"
         | 
| 20 | 
            +
                            end
         | 
| 21 | 
            +
                        else
         | 
| 22 | 
            +
                            previous_level = @@global_section_number.split(".").length
         | 
| 23 23 |  | 
| 24 | 
            -
             | 
| 24 | 
            +
                            if previous_level == level
         | 
| 25 25 |  | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 26 | 
            +
                                a = @@global_section_number.split(".")
         | 
| 27 | 
            +
                                a[-1] = (a[-1].to_i() +1).to_s
         | 
| 28 | 
            +
                                @@global_section_number = a.join(".")
         | 
| 29 29 |  | 
| 30 | 
            -
             | 
| 30 | 
            +
                            elsif level > previous_level
         | 
| 31 31 |  | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 32 | 
            +
                                a = @@global_section_number.split(".")
         | 
| 33 | 
            +
                                a.push("1")
         | 
| 34 | 
            +
                                @@global_section_number = a.join(".")
         | 
| 35 | 
            +
                            
         | 
| 36 | 
            +
                            else # level < previous_level
         | 
| 37 37 |  | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 38 | 
            +
                                a = @@global_section_number.split(".")
         | 
| 39 | 
            +
                                delta = previous_level - level
         | 
| 40 | 
            +
                                a.pop(delta)
         | 
| 41 | 
            +
                                @@global_section_number = a.join(".")
         | 
| 42 | 
            +
                                # increment
         | 
| 43 | 
            +
                                a = @@global_section_number.split(".")
         | 
| 44 | 
            +
                                a[-1] = (a[-1].to_i() +1).to_s
         | 
| 45 | 
            +
                                @@global_section_number = a.join(".")
         | 
| 46 | 
            +
                            end
         | 
| 46 47 | 
             
                        end
         | 
| 47 48 | 
             
                    end
         | 
| 48 49 | 
             
                    @section_number = @@global_section_number
         | 
| 50 | 
            +
                    @anchor_id = get_anchor_text()
         | 
| 49 51 | 
             
                end
         | 
| 50 52 |  | 
| 51 53 | 
             
                def get_section_info
         | 
| 52 54 | 
             
                    s = @section_number + " " + @text
         | 
| 53 55 | 
             
                end
         | 
| 54 56 |  | 
| 57 | 
            +
                def get_anchor_text()
         | 
| 58 | 
            +
                    s = @section_number + "-" + getTextWithoutSpaces()
         | 
| 59 | 
            +
                end
         | 
| 60 | 
            +
             | 
| 55 61 | 
             
                def to_html
         | 
| 56 62 | 
             
                    s = ''
         | 
| 57 63 | 
             
                    if @@htmlTableRenderInProgress
         | 
| 58 64 | 
             
                        s += "</table>\n"
         | 
| 59 65 | 
             
                        @@htmlTableRenderInProgress = false
         | 
| 60 66 | 
             
                    end
         | 
| 61 | 
            -
                     | 
| 67 | 
            +
                    heading_level = level.to_s
         | 
| 68 | 
            +
                    heading_text = get_section_info()
         | 
| 69 | 
            +
                    if level == 0
         | 
| 70 | 
            +
                        heading_level = 1.to_s  # Render Doc Title as a regular h1
         | 
| 71 | 
            +
                        heading_text = @text    # Doc Title does not have a section number
         | 
| 72 | 
            +
                    end 
         | 
| 62 73 | 
             
                    s += "<a name=\"#{@anchor_id}\"></a>\n"
         | 
| 63 | 
            -
                    s += "<h#{ | 
| 64 | 
            -
                    s += "¶</a></h#{ | 
| 74 | 
            +
                    s += "<h#{heading_level}> #{heading_text} <a href=\"\##{@anchor_id}\" class=\"heading_anchor\">"
         | 
| 75 | 
            +
                    s += "¶</a></h#{heading_level}>"
         | 
| 65 76 | 
             
                    return s
         | 
| 66 77 | 
             
                end
         | 
| 67 78 |  | 
| @@ -6,6 +6,7 @@ class BaseDocument | |
| 6 6 | 
             
                attr_accessor :headings
         | 
| 7 7 | 
             
                attr_accessor :title
         | 
| 8 8 | 
             
                attr_accessor :id
         | 
| 9 | 
            +
                attr_accessor :dom
         | 
| 9 10 |  | 
| 10 11 | 
             
                def initialize(fele_path)
         | 
| 11 12 |  | 
| @@ -14,6 +15,7 @@ class BaseDocument | |
| 14 15 | 
             
                    @headings = Array.new
         | 
| 15 16 | 
             
                    @title = ""
         | 
| 16 17 | 
             
                    @id = ""
         | 
| 18 | 
            +
                    @dom = nil
         | 
| 17 19 | 
             
                end
         | 
| 18 20 |  | 
| 19 21 | 
             
                def save_html_to_file html_rows, nav_pane, output_file_path
         | 
| @@ -37,7 +39,7 @@ class BaseDocument | |
| 37 39 | 
             
                                file.puts r
         | 
| 38 40 | 
             
                            end
         | 
| 39 41 | 
             
                        elsif s.include?('{{NAV_PANE}}')
         | 
| 40 | 
            -
                            if nav_pane
         | 
| 42 | 
            +
                            if nav_pane 
         | 
| 41 43 | 
             
                                file.puts nav_pane.to_html
         | 
| 42 44 | 
             
                            end
         | 
| 43 45 | 
             
                        elsif s.include?('{{DOCUMENT_TITLE}}')
         | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            class DocSection
         | 
| 2 | 
            +
             | 
| 3 | 
            +
                attr_accessor :sections
         | 
| 4 | 
            +
                attr_accessor :heading
         | 
| 5 | 
            +
                attr_accessor :parent_section
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def initialize(heading)
         | 
| 8 | 
            +
                    @sections = Array.new
         | 
| 9 | 
            +
                    @heading = heading
         | 
| 10 | 
            +
                    @parent_section = nil
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def to_html
         | 
| 14 | 
            +
                    s = ''
         | 
| 15 | 
            +
                    s += "\t<li><span class=\"fa-li\"><i class=\"fa fa-plus-square-o\"> </i></span>"
         | 
| 16 | 
            +
                    s += "<a href=\"\#" + @heading.anchor_id.to_s + "\">" + @heading.get_section_info + "</a>\n"
         | 
| 17 | 
            +
                    if @sections.length >0
         | 
| 18 | 
            +
                        s += "\t\t<ul class=\"fa-ul\">\n"
         | 
| 19 | 
            +
                            @sections.each do |sub_section|
         | 
| 20 | 
            +
                                s += sub_section.to_html()
         | 
| 21 | 
            +
                            end
         | 
| 22 | 
            +
                        s += "\t\t</ul>\n"
         | 
| 23 | 
            +
                    end
         | 
| 24 | 
            +
                    s += "</li>\n"
         | 
| 25 | 
            +
                    return s
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            end
         | 
| @@ -0,0 +1,63 @@ | |
| 1 | 
            +
            require_relative "doc_section"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class Document
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                attr_accessor :root_section
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                @@sections_stack = Array.new
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def initialize(headings_list)
         | 
| 10 | 
            +
                    @root_section = nil
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                    build_sections_tree(headings_list)
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def build_sections_tree(headings_list)
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                    headings_list.each do |h|
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                        if @root_section == nil
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                            s = DocSection.new(h)
         | 
| 22 | 
            +
                            s.parent_section = nil
         | 
| 23 | 
            +
                            @root_section = s
         | 
| 24 | 
            +
                            @@sections_stack.push s
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                        elsif @@sections_stack[-1].heading.level == h.level
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                            s = DocSection.new(h)
         | 
| 29 | 
            +
                            @@sections_stack[-2].sections.append(s)
         | 
| 30 | 
            +
                            @@sections_stack[-1] = s
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                        elsif h.level > @@sections_stack[-1].heading.level
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                            s = DocSection.new(h)
         | 
| 35 | 
            +
                            @@sections_stack[-1].sections.append(s)
         | 
| 36 | 
            +
                            @@sections_stack.push s
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                        else
         | 
| 39 | 
            +
                            while h.level < @@sections_stack[-1].heading.level
         | 
| 40 | 
            +
                                @@sections_stack.pop
         | 
| 41 | 
            +
                            end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                            s = DocSection.new(h)
         | 
| 44 | 
            +
                            @@sections_stack[-2].sections.append(s)
         | 
| 45 | 
            +
                            @@sections_stack[-1] = s
         | 
| 46 | 
            +
                        end
         | 
| 47 | 
            +
                    end
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                def section_tree_to_html
         | 
| 51 | 
            +
                    s = ''
         | 
| 52 | 
            +
                    s += "<a href=\"\#" + @root_section.heading.anchor_id.to_s + "\">" + @root_section.heading.text + "</a>\n"
         | 
| 53 | 
            +
                    if @root_section.sections.length >0
         | 
| 54 | 
            +
                        s += "\t<ul class=\"fa-ul\" style=\"margin-top: 2px;\">\n"
         | 
| 55 | 
            +
                        @root_section.sections.each do |sub_section|
         | 
| 56 | 
            +
                            s += sub_section.to_html()
         | 
| 57 | 
            +
                        end
         | 
| 58 | 
            +
                        s += "\t</ul>\n"
         | 
| 59 | 
            +
                    end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                    return s
         | 
| 62 | 
            +
                end
         | 
| 63 | 
            +
            end
         | 
| @@ -3,21 +3,15 @@ class NavigationPane | |
| 3 3 |  | 
| 4 4 | 
             
                attr_accessor :specifications
         | 
| 5 5 |  | 
| 6 | 
            -
                def initialize( | 
| 7 | 
            -
                    @ | 
| 6 | 
            +
                def initialize(specification)
         | 
| 7 | 
            +
                    @doc = specification
         | 
| 8 8 | 
             
                end
         | 
| 9 9 |  | 
| 10 | 
            -
                def to_html | 
| 11 | 
            -
                     | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
                            s += "\t\t\t<li><span class=\"fa-li\"><i class=\"fa fa-plus-square-o\"> </i></span>\n"
         | 
| 16 | 
            -
                            s += "\t\t\t\t<a href=\".\\..\\#{spec.id }\\#{spec.id }.html\">#{spec.title}</a>\n"
         | 
| 17 | 
            -
                            s += "\t\t\t</li>\n"
         | 
| 18 | 
            -
                            s += "\t\t</ul>\n"
         | 
| 19 | 
            -
                        s += "\t</li>\n"
         | 
| 10 | 
            +
                def to_html
         | 
| 11 | 
            +
                    if  @doc.dom
         | 
| 12 | 
            +
                        return @doc.dom.section_tree_to_html()
         | 
| 13 | 
            +
                    else
         | 
| 14 | 
            +
                        return ''
         | 
| 20 15 | 
             
                    end
         | 
| 21 | 
            -
                    s += "</ul>\n"
         | 
| 22 16 | 
             
                end
         | 
| 23 17 | 
             
            end
         | 
    
        data/lib/almirah/project.rb
    CHANGED
    
    | @@ -227,10 +227,7 @@ class Project | |
| 227 227 | 
             
                    @index = Index.new( @project )
         | 
| 228 228 | 
             
                end
         | 
| 229 229 |  | 
| 230 | 
            -
                def render_all_specifications(spec_list)
         | 
| 231 | 
            -
                    
         | 
| 232 | 
            -
                    # create a sidebar first
         | 
| 233 | 
            -
                    # nav_pane = NavigationPane.new(@specifications)        
         | 
| 230 | 
            +
                def render_all_specifications(spec_list)     
         | 
| 234 231 |  | 
| 235 232 | 
             
                    pass = @project_root_directory
         | 
| 236 233 |  | 
| @@ -249,7 +246,9 @@ class Project | |
| 249 246 | 
             
                            FileUtils.copy_entry( img_src_dir, img_dst_dir )
         | 
| 250 247 | 
             
                        end
         | 
| 251 248 |  | 
| 252 | 
            -
                         | 
| 249 | 
            +
                        # create a sidebar first
         | 
| 250 | 
            +
                        nav_pane = NavigationPane.new(doc) 
         | 
| 251 | 
            +
                        doc.to_html( nav_pane, "#{pass}/build/specifications/" )
         | 
| 253 252 | 
             
                    end
         | 
| 254 253 | 
             
                end
         | 
| 255 254 |  | 
| @@ -173,14 +173,30 @@ | |
| 173 173 | 
             
                #modal_image_id{
         | 
| 174 174 | 
             
                    cursor: default;
         | 
| 175 175 | 
             
                } 
         | 
| 176 | 
            +
                #closed_nav_pane{
         | 
| 177 | 
            +
                    padding: 0px;
         | 
| 178 | 
            +
                    background: #169;
         | 
| 179 | 
            +
                    border: 0px;
         | 
| 180 | 
            +
                    position: fixed;
         | 
| 181 | 
            +
                    width: 5px;
         | 
| 182 | 
            +
                    height: 100%;       /* 100% Full-height */
         | 
| 183 | 
            +
                    visibility: visible;
         | 
| 184 | 
            +
                    cursor: pointer;
         | 
| 185 | 
            +
                }
         | 
| 186 | 
            +
                #closed_nav_pane:hover{
         | 
| 187 | 
            +
                    width: 10px;
         | 
| 188 | 
            +
                }
         | 
| 176 189 | 
             
                #nav_pane{
         | 
| 177 190 | 
             
                    flex-shrink: 0;
         | 
| 178 | 
            -
                    padding:  | 
| 191 | 
            +
                    padding: 32px 8px 8px 8px;
         | 
| 179 192 | 
             
                    background: #EEEEEE;
         | 
| 180 | 
            -
                    border | 
| 193 | 
            +
                    border: 1px solid #ddd;
         | 
| 181 194 | 
             
                    position: fixed;
         | 
| 182 195 | 
             
                    height: 100%;       /* 100% Full-height */
         | 
| 183 196 | 
             
                    visibility: hidden;
         | 
| 197 | 
            +
                    z-index: 1;
         | 
| 198 | 
            +
                    overflow-y: auto;
         | 
| 199 | 
            +
                    cursor: pointer;
         | 
| 184 200 | 
             
                }
         | 
| 185 201 | 
             
                @media screen and (min-width: 0px) and (max-width: 1089px) {#nav_pane{width: 22%;}}
         | 
| 186 202 | 
             
                @media screen and (min-width: 1090px) and (max-width: 1279px) {#nav_pane{width: 240px;}}
         | 
| @@ -188,12 +204,13 @@ | |
| 188 204 | 
             
                @media screen and (min-width: 1600px) and (max-width: 1919px) {#nav_pane{width: 320px;}}
         | 
| 189 205 | 
             
                @media screen and (min-width: 1920px) and (max-width: 2559px) {#nav_pane{width: 360px;}}
         | 
| 190 206 | 
             
                @media screen and (min-width: 2560px) {#nav_pane{width: 380px;}}
         | 
| 207 | 
            +
             | 
| 191 208 | 
             
                #top_nav{
         | 
| 192 209 | 
             
                    background-color: #169;
         | 
| 193 210 | 
             
                    overflow: hidden;
         | 
| 194 211 | 
             
                    position: fixed;
         | 
| 195 212 | 
             
                    width: 100%;    
         | 
| 196 | 
            -
                    z-index:  | 
| 213 | 
            +
                    z-index: 2;
         | 
| 197 214 | 
             
                }
         | 
| 198 215 | 
             
                #top_nav a {
         | 
| 199 216 | 
             
                    float: left;
         | 
| @@ -286,12 +303,10 @@ | |
| 286 303 | 
             
            <script>
         | 
| 287 304 | 
             
            function openNav() {
         | 
| 288 305 | 
             
              document.getElementById("nav_pane").style.visibility = "visible";
         | 
| 289 | 
            -
              console.log("Mouse In")
         | 
| 290 306 | 
             
            }
         | 
| 291 307 |  | 
| 292 308 | 
             
            function closeNav() {
         | 
| 293 309 | 
             
              document.getElementById("nav_pane").style.visibility = "hidden";
         | 
| 294 | 
            -
              console.log("Mouse Out");
         | 
| 295 310 | 
             
            }
         | 
| 296 311 |  | 
| 297 312 | 
             
            window.onload = (event) => {
         | 
| @@ -304,12 +319,12 @@ window.onload = (event) => { | |
| 304 319 | 
             
                }
         | 
| 305 320 | 
             
              }
         | 
| 306 321 | 
             
              // Scroll a bit to make navigated anchor visible
         | 
| 307 | 
            -
              setTimeout(function() {
         | 
| 308 | 
            -
             | 
| 309 | 
            -
             | 
| 310 | 
            -
             | 
| 311 | 
            -
             | 
| 312 | 
            -
             | 
| 322 | 
            +
              //setTimeout(function() {
         | 
| 323 | 
            +
              //      window.scrollBy({ 
         | 
| 324 | 
            +
              //      top: -40,
         | 
| 325 | 
            +
              //      behavior: "smooth"
         | 
| 326 | 
            +
              //      });
         | 
| 327 | 
            +
              //  }, 200);
         | 
| 313 328 | 
             
            };
         | 
| 314 329 |  | 
| 315 330 | 
             
            function downlink_OnClick(clicked){
         | 
| @@ -350,11 +365,12 @@ function modal_close_OnClick(clicked){ | |
| 350 365 | 
             
            <body>
         | 
| 351 366 | 
             
                <div id="top_nav">
         | 
| 352 367 | 
             
                    <a href="javascript:void(0)" onclick="navigate_to_home()"><span><i class="fa fa-home" aria-hidden="true"></i></span> Home</a>
         | 
| 353 | 
            -
                    <!--a href="javascript:void(0)"> About</a-->
         | 
| 354 368 | 
             
                    <a class="split">{{DOCUMENT_TITLE}}</a>
         | 
| 355 369 | 
             
                </div>
         | 
| 356 370 | 
             
                <div id="main">
         | 
| 357 | 
            -
                    <div id=" | 
| 371 | 
            +
                    <div id="closed_nav_pane" href="javascript:void(0)" onclick="openNav()">
         | 
| 372 | 
            +
                    </div>
         | 
| 373 | 
            +
                    <div id="nav_pane" onclick="closeNav()">
         | 
| 358 374 | 
             
                        {{NAV_PANE}}
         | 
| 359 375 | 
             
                    </div>
         | 
| 360 376 | 
             
                    <div id="content" href="javascript:void(0)" onclick="closeNav()">
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: Almirah
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.6
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Oleksandr Ivanov
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2024- | 
| 11 | 
            +
            date: 2024-05-07 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies: []
         | 
| 13 13 | 
             
            description: The software part of the Almirah framework
         | 
| 14 14 | 
             
            email: oleksandr.ivanov.development@gmail.com
         | 
| @@ -40,6 +40,8 @@ files: | |
| 40 40 | 
             
            - lib/almirah/doc_types/protocol.rb
         | 
| 41 41 | 
             
            - lib/almirah/doc_types/specification.rb
         | 
| 42 42 | 
             
            - lib/almirah/doc_types/traceability.rb
         | 
| 43 | 
            +
            - lib/almirah/dom/doc_section.rb
         | 
| 44 | 
            +
            - lib/almirah/dom/document.rb
         | 
| 43 45 | 
             
            - lib/almirah/navigation_pane.rb
         | 
| 44 46 | 
             
            - lib/almirah/project.rb
         | 
| 45 47 | 
             
            - lib/almirah/templates/page.html
         |