genit 0.2 → 0.3
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.
- data/NEWS +5 -0
 - data/README.markdown +4 -1
 - data/TODO +17 -11
 - data/VERSION +1 -1
 - data/lib/genit.rb +3 -1
 - data/lib/genit/compiler.rb +2 -2
 - data/lib/genit/document_writer.rb +7 -4
 - data/lib/genit/extensions.rb +17 -0
 - data/lib/genit/file_writer.rb +16 -0
 - data/lib/genit/fragment.rb +49 -0
 - data/lib/genit/html_document.rb +35 -5
 - data/lib/genit/page_compiler.rb +6 -2
 - data/lib/genit/project_creator.rb +1 -1
 - data/spec/extensions_spec.rb +35 -0
 - data/spec/fragment_spec.rb +35 -0
 - data/spec/html_document_spec.rb +10 -0
 - data/spec/project_creator_spec.rb +4 -0
 - data/spec/test-files/fragment.html +1 -0
 - data/spec/test-files/fragment2.html +7 -0
 - data/spec/test-files/fragment3.html +1 -0
 - data/spec/test-files/fragment4.html +5 -0
 - data/spec/test-files/fragments/b.html +1 -0
 - data/spec/test-files/fragments/d.html +1 -0
 - data/spec/test-files/fragments/footer.html +1 -0
 - data/spec/test-files/fragments/title.html +1 -0
 - data/spec/test-files/fragments/title.markdown +2 -0
 - data/spec/test-files/nothing.html +1 -0
 - metadata +23 -8
 
    
        data/NEWS
    CHANGED
    
    
    
        data/README.markdown
    CHANGED
    
    | 
         @@ -2,7 +2,9 @@ Genit 
     | 
|
| 
       2 
2 
     | 
    
         
             
            ================
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            Genit builds a **static web site**, that is a web site without server side programing language
         
     | 
| 
       5 
     | 
    
         
            -
            and database. A site consists only of xhtml code (+ css  
     | 
| 
      
 5 
     | 
    
         
            +
            and database. A genit site consists only of xhtml code (+ css, medias and eventually javascript).
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            There is no needs to know the Ruby language.
         
     | 
| 
       6 
8 
     | 
    
         | 
| 
       7 
9 
     | 
    
         
             
            The project is in early development stage, see
         
     | 
| 
       8 
10 
     | 
    
         
             
            [project guidelines](https://github.com/lkdjiin/genit/blob/master/project_guidelines.markdown).
         
     | 
| 
         @@ -37,6 +39,7 @@ First install ruby and rubygem (if there are not installed on your system) then: 
     | 
|
| 
       37 
39 
     | 
    
         | 
| 
       38 
40 
     | 
    
         
             
                gem install genit
         
     | 
| 
       39 
41 
     | 
    
         | 
| 
      
 42 
     | 
    
         
            +
            All other dependencies will be downloaded and installed automatically.
         
     | 
| 
       40 
43 
     | 
    
         | 
| 
       41 
44 
     | 
    
         
             
            Usage
         
     | 
| 
       42 
45 
     | 
    
         
             
            --------------------------
         
     | 
    
        data/TODO
    CHANGED
    
    | 
         @@ -1,20 +1,26 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            v0. 
     | 
| 
       2 
     | 
    
         
            -
            ====
         
     | 
| 
      
 1 
     | 
    
         
            +
            release v0.3
         
     | 
| 
       3 
2 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            release
         
     | 
| 
       5 
3 
     | 
    
         | 
| 
       6 
4 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
            smoke test
         
     | 
| 
       8 
6 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
            mettre un fichier caché pour savoir qu'on a affaire à un projet Genit.
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            option --version et --help (utiliser un framework cli)
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            commencer documentation
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            release v0.4
         
     | 
| 
       10 
14 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
            news
         
     | 
| 
       12 
15 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
            release
         
     | 
| 
       14 
16 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
            ------------------
         
     | 
| 
       16 
     | 
    
         
            -
            i18n
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
      
 18 
     | 
    
         
            +
            web site for genit
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            announce site (freshmeat et blog)
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            news
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            release v0.5
         
     | 
| 
       19 
25 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
      
 26 
     | 
    
         
            +
            Trouver / penser à / un framework de test xhtml/css
         
     | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.3
         
     | 
    
        data/lib/genit.rb
    CHANGED
    
    | 
         @@ -1,13 +1,15 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # -*- encoding: utf-8 -*-
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            require 'genit/extensions'
         
     | 
| 
       3 
4 
     | 
    
         
             
            require 'genit/project_creator'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
5 
     | 
    
         
             
            require 'genit/html_document'
         
     | 
| 
       6 
6 
     | 
    
         
             
            require 'genit/xml_document'
         
     | 
| 
      
 7 
     | 
    
         
            +
            require 'genit/file_writer'
         
     | 
| 
       7 
8 
     | 
    
         
             
            require 'genit/document_writer'
         
     | 
| 
       8 
9 
     | 
    
         
             
            require 'genit/compiler'
         
     | 
| 
       9 
10 
     | 
    
         
             
            require 'genit/page_compiler'
         
     | 
| 
       10 
11 
     | 
    
         
             
            require 'genit/builder'
         
     | 
| 
      
 12 
     | 
    
         
            +
            require 'genit/fragment'
         
     | 
| 
       11 
13 
     | 
    
         | 
| 
       12 
14 
     | 
    
         
             
            module Genit
         
     | 
| 
       13 
15 
     | 
    
         
             
            end
         
     | 
    
        data/lib/genit/compiler.rb
    CHANGED
    
    | 
         @@ -32,13 +32,13 @@ module Genit 
     | 
|
| 
       32 
32 
     | 
    
         | 
| 
       33 
33 
     | 
    
         
             
                def compile_page
         
     | 
| 
       34 
34 
     | 
    
         
             
                  pc = PageCompiler.new @working_dir, @filename
         
     | 
| 
       35 
     | 
    
         
            -
                  @ 
     | 
| 
      
 35 
     | 
    
         
            +
                  @page = pc.compile
         
     | 
| 
       36 
36 
     | 
    
         
             
                  save_file_as_html
         
     | 
| 
       37 
37 
     | 
    
         
             
                end
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
39 
     | 
    
         
             
                def save_file_as_html
         
     | 
| 
       40 
40 
     | 
    
         
             
                  doc_writer = DocumentWriter.new @working_dir
         
     | 
| 
       41 
     | 
    
         
            -
                  doc_writer.save_as_html @ 
     | 
| 
      
 41 
     | 
    
         
            +
                  doc_writer.save_as_html @page, @filename
         
     | 
| 
       42 
42 
     | 
    
         
             
                end
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
44 
     | 
    
         
             
              end
         
     | 
| 
         @@ -19,10 +19,13 @@ module Genit 
     | 
|
| 
       19 
19 
     | 
    
         
             
                # document - A Nokogiri::HTML or Nokogiri::XML document
         
     | 
| 
       20 
20 
     | 
    
         
             
                # filename - The String name of the future saved document
         
     | 
| 
       21 
21 
     | 
    
         
             
                def save_as_html document, filename
         
     | 
| 
       22 
     | 
    
         
            -
                   
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
      
 22 
     | 
    
         
            +
                  FileWriter.write document.to_html, get_full_path(filename.force_html_extension)
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
                
         
     | 
| 
      
 25 
     | 
    
         
            +
                private
         
     | 
| 
      
 26 
     | 
    
         
            +
                
         
     | 
| 
      
 27 
     | 
    
         
            +
                def get_full_path filename
         
     | 
| 
      
 28 
     | 
    
         
            +
                  File.join(@working_dir, 'www', filename)
         
     | 
| 
       26 
29 
     | 
    
         
             
                end
         
     | 
| 
       27 
30 
     | 
    
         | 
| 
       28 
31 
     | 
    
         
             
              end
         
     | 
| 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- encoding: utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            class String
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              def force_html_extension
         
     | 
| 
      
 6 
     | 
    
         
            +
                self.gsub /markdown$/, 'html'
         
     | 
| 
      
 7 
     | 
    
         
            +
              end
         
     | 
| 
      
 8 
     | 
    
         
            +
              
         
     | 
| 
      
 9 
     | 
    
         
            +
              def force_html_extension!
         
     | 
| 
      
 10 
     | 
    
         
            +
                self.gsub! /markdown$/, 'html'
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
              
         
     | 
| 
      
 13 
     | 
    
         
            +
              def markdown_ext?
         
     | 
| 
      
 14 
     | 
    
         
            +
                self.end_with?('.markdown')
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
              
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,49 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- encoding: utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Genit
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              # Replace each fragment in a page.
         
     | 
| 
      
 6 
     | 
    
         
            +
              class Fragment
         
     | 
| 
      
 7 
     | 
    
         
            +
              
         
     | 
| 
      
 8 
     | 
    
         
            +
                # Public: Constructor.
         
     | 
| 
      
 9 
     | 
    
         
            +
                #
         
     | 
| 
      
 10 
     | 
    
         
            +
                # file        - Full String filename of the page.
         
     | 
| 
      
 11 
     | 
    
         
            +
                # working_dir - The String working directory, where live the project.
         
     | 
| 
      
 12 
     | 
    
         
            +
                def initialize file, working_dir
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @page = HtmlDocument.open_fragment file
         
     | 
| 
      
 14 
     | 
    
         
            +
                  @working_dir = working_dir
         
     | 
| 
      
 15 
     | 
    
         
            +
                  HtmlDocument.genit_tags_from(@page).each do |tag|
         
     | 
| 
      
 16 
     | 
    
         
            +
                    case tag['class']
         
     | 
| 
      
 17 
     | 
    
         
            +
                      when 'fragment'
         
     | 
| 
      
 18 
     | 
    
         
            +
                        @file = tag['file']
         
     | 
| 
      
 19 
     | 
    
         
            +
                        replace_fragment 
         
     | 
| 
      
 20 
     | 
    
         
            +
                    end
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
                
         
     | 
| 
      
 24 
     | 
    
         
            +
                # Public: Get the page in html format.
         
     | 
| 
      
 25 
     | 
    
         
            +
                #
         
     | 
| 
      
 26 
     | 
    
         
            +
                # Returns the html code of the page as a String.
         
     | 
| 
      
 27 
     | 
    
         
            +
                def to_html
         
     | 
| 
      
 28 
     | 
    
         
            +
                  @page.to_html
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
                
         
     | 
| 
      
 31 
     | 
    
         
            +
                private
         
     | 
| 
      
 32 
     | 
    
         
            +
                
         
     | 
| 
      
 33 
     | 
    
         
            +
                def replace_fragment
         
     | 
| 
      
 34 
     | 
    
         
            +
                  builder = Builder.new(@page)
         
     | 
| 
      
 35 
     | 
    
         
            +
                  @page = builder.replace(css_rule, content)
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
                
         
     | 
| 
      
 38 
     | 
    
         
            +
                def css_rule
         
     | 
| 
      
 39 
     | 
    
         
            +
                  "genit.fragment[file='#{@file}']"
         
     | 
| 
      
 40 
     | 
    
         
            +
                end
         
     | 
| 
      
 41 
     | 
    
         
            +
                
         
     | 
| 
      
 42 
     | 
    
         
            +
                def content
         
     | 
| 
      
 43 
     | 
    
         
            +
                  full_path = File.join(@working_dir, 'fragments', @file)
         
     | 
| 
      
 44 
     | 
    
         
            +
                  HtmlDocument.open_as_string(full_path)
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
                
         
     | 
| 
      
 47 
     | 
    
         
            +
              end
         
     | 
| 
      
 48 
     | 
    
         
            +
              
         
     | 
| 
      
 49 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/genit/html_document.rb
    CHANGED
    
    | 
         @@ -8,7 +8,9 @@ module Genit 
     | 
|
| 
       8 
8 
     | 
    
         
             
              # Open an html file in various format.
         
     | 
| 
       9 
9 
     | 
    
         
             
              class HtmlDocument
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
                # Public: Open  
     | 
| 
      
 11 
     | 
    
         
            +
                # Public: Open an entire html document.
         
     | 
| 
      
 12 
     | 
    
         
            +
                # If the file does not contain a <bogy> tag, a doctype, etc, they will be
         
     | 
| 
      
 13 
     | 
    
         
            +
                # automatically added.
         
     | 
| 
       12 
14 
     | 
    
         
             
                #
         
     | 
| 
       13 
15 
     | 
    
         
             
                # file - Full path String filename.
         
     | 
| 
       14 
16 
     | 
    
         
             
                #
         
     | 
| 
         @@ -17,20 +19,48 @@ module Genit 
     | 
|
| 
       17 
19 
     | 
    
         
             
                  Nokogiri::HTML(File.open(file))
         
     | 
| 
       18 
20 
     | 
    
         
             
                end
         
     | 
| 
       19 
21 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
                # Public: Open a  
     | 
| 
      
 22 
     | 
    
         
            +
                # Public: Open a fragment of html document.
         
     | 
| 
      
 23 
     | 
    
         
            +
                #
         
     | 
| 
      
 24 
     | 
    
         
            +
                # file - Full path String filename.
         
     | 
| 
      
 25 
     | 
    
         
            +
                #
         
     | 
| 
      
 26 
     | 
    
         
            +
                # Returns a Nokogiri::HTML document.
         
     | 
| 
      
 27 
     | 
    
         
            +
                def self.open_fragment file
         
     | 
| 
      
 28 
     | 
    
         
            +
                  string = IO.read file
         
     | 
| 
      
 29 
     | 
    
         
            +
                  Nokogiri::HTML.fragment string
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
                
         
     | 
| 
      
 32 
     | 
    
         
            +
                # Public: Open a file as a string.
         
     | 
| 
       21 
33 
     | 
    
         
             
                #
         
     | 
| 
       22 
34 
     | 
    
         
             
                # file - Full path String name of a html or markdown file.
         
     | 
| 
       23 
35 
     | 
    
         
             
                #
         
     | 
| 
       24 
36 
     | 
    
         
             
                # Returns a String.
         
     | 
| 
       25 
37 
     | 
    
         
             
                def self.open_as_string file
         
     | 
| 
       26 
38 
     | 
    
         
             
                  string = IO.read file
         
     | 
| 
       27 
     | 
    
         
            -
                   
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
      
 39 
     | 
    
         
            +
                  if file.markdown_ext?
         
     | 
| 
      
 40 
     | 
    
         
            +
                    BlueCloth.new(string).to_html 
         
     | 
| 
      
 41 
     | 
    
         
            +
                  else
         
     | 
| 
      
 42 
     | 
    
         
            +
                    string
         
     | 
| 
      
 43 
     | 
    
         
            +
                  end
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
      
 45 
     | 
    
         
            +
                
         
     | 
| 
      
 46 
     | 
    
         
            +
                # Public: Open a file as a string, taking care of fragment tags.
         
     | 
| 
      
 47 
     | 
    
         
            +
                # All fragment tags are replaced by a new content.
         
     | 
| 
      
 48 
     | 
    
         
            +
                #
         
     | 
| 
      
 49 
     | 
    
         
            +
                # file - Full path String name of a html or markdown file.
         
     | 
| 
      
 50 
     | 
    
         
            +
                #
         
     | 
| 
      
 51 
     | 
    
         
            +
                # Returns a String.
         
     | 
| 
      
 52 
     | 
    
         
            +
                def self.build_page_content(file, working_dir)
         
     | 
| 
      
 53 
     | 
    
         
            +
                  # TODO éviter le working_dir
         
     | 
| 
      
 54 
     | 
    
         
            +
                  if file.markdown_ext?
         
     | 
| 
      
 55 
     | 
    
         
            +
                    BlueCloth.new(IO.read(file)).to_html
         
     | 
| 
      
 56 
     | 
    
         
            +
                  else
         
     | 
| 
      
 57 
     | 
    
         
            +
                    Fragment.new(file, working_dir).to_html
         
     | 
| 
      
 58 
     | 
    
         
            +
                  end
         
     | 
| 
       29 
59 
     | 
    
         
             
                end
         
     | 
| 
       30 
60 
     | 
    
         | 
| 
       31 
61 
     | 
    
         
             
                # Public: Get the list of <genit> tag in a document.
         
     | 
| 
       32 
62 
     | 
    
         
             
                #
         
     | 
| 
       33 
     | 
    
         
            -
                # file - Nokogiri::HTML document.
         
     | 
| 
      
 63 
     | 
    
         
            +
                # file - Nokogiri::HTML or Nokogiri::XML document.
         
     | 
| 
       34 
64 
     | 
    
         
             
                #
         
     | 
| 
       35 
65 
     | 
    
         
             
                # Returns a list of Nokogiri::XML::NodeSet.
         
     | 
| 
       36 
66 
     | 
    
         
             
                def self.genit_tags_from file
         
     | 
    
        data/lib/genit/page_compiler.rb
    CHANGED
    
    | 
         @@ -37,9 +37,13 @@ module Genit 
     | 
|
| 
       37 
37 
     | 
    
         | 
| 
       38 
38 
     | 
    
         
             
                # Remplace la page au sein du template
         
     | 
| 
       39 
39 
     | 
    
         
             
                def tag_pages
         
     | 
| 
       40 
     | 
    
         
            -
                  @page_content = HtmlDocument.open_as_string(File.join(@working_dir, 'pages', @filename))
         
     | 
| 
       41 
40 
     | 
    
         
             
                  builder = Builder.new(@template)
         
     | 
| 
       42 
     | 
    
         
            -
                  @template = builder.replace('genit.pages',  
     | 
| 
      
 41 
     | 
    
         
            +
                  @template = builder.replace('genit.pages', page_content)
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
                
         
     | 
| 
      
 44 
     | 
    
         
            +
                def page_content
         
     | 
| 
      
 45 
     | 
    
         
            +
                  filename = File.join(@working_dir, 'pages', @filename)
         
     | 
| 
      
 46 
     | 
    
         
            +
                  HtmlDocument.build_page_content filename, @working_dir
         
     | 
| 
       43 
47 
     | 
    
         
             
                end
         
     | 
| 
       44 
48 
     | 
    
         | 
| 
       45 
49 
     | 
    
         
             
                def tag_menu
         
     | 
| 
         @@ -21,7 +21,7 @@ module Genit 
     | 
|
| 
       21 
21 
     | 
    
         
             
                def create
         
     | 
| 
       22 
22 
     | 
    
         
             
                  begin
         
     | 
| 
       23 
23 
     | 
    
         
             
            				FileUtils.makedirs @name
         
     | 
| 
       24 
     | 
    
         
            -
                    create_dirs ['news', 'pages', 'scripts', 'styles', 'templates', 'www']
         
     | 
| 
      
 24 
     | 
    
         
            +
                    create_dirs ['fragments', 'news', 'pages', 'scripts', 'styles', 'templates', 'www']
         
     | 
| 
       25 
25 
     | 
    
         
             
                    create_dirs ['styles/alsa', 'styles/yui', 'styles/images']
         
     | 
| 
       26 
26 
     | 
    
         
             
                    copy_files ['templates/main.html', 'templates/menu.html',
         
     | 
| 
       27 
27 
     | 
    
         
             
                                'pages/index.html', 'styles/handheld.css', 'styles/print.css',
         
     | 
| 
         @@ -0,0 +1,35 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- encoding: utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require './spec/helper'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            describe "Standard class String extensions" do
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              it "should replace a markdown file ext" do
         
     | 
| 
      
 8 
     | 
    
         
            +
                string = "file.markdown"
         
     | 
| 
      
 9 
     | 
    
         
            +
                result = string.force_html_extension
         
     | 
| 
      
 10 
     | 
    
         
            +
                result.should == "file.html"
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
              
         
     | 
| 
      
 13 
     | 
    
         
            +
              it "should replace a markdown file ext !" do
         
     | 
| 
      
 14 
     | 
    
         
            +
                string = "file.markdown"
         
     | 
| 
      
 15 
     | 
    
         
            +
                string.force_html_extension!
         
     | 
| 
      
 16 
     | 
    
         
            +
                string.should == "file.html"
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
              
         
     | 
| 
      
 19 
     | 
    
         
            +
              it "should not replace an other file ext" do
         
     | 
| 
      
 20 
     | 
    
         
            +
                string = "file.txt"
         
     | 
| 
      
 21 
     | 
    
         
            +
                string.force_html_extension!
         
     | 
| 
      
 22 
     | 
    
         
            +
                string.should == "file.txt"
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
              
         
     | 
| 
      
 25 
     | 
    
         
            +
              it "should say if it has a markdown file extension" do
         
     | 
| 
      
 26 
     | 
    
         
            +
                string = "file.markdown"
         
     | 
| 
      
 27 
     | 
    
         
            +
                string.markdown_ext?.should be_true
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
              
         
     | 
| 
      
 30 
     | 
    
         
            +
              it "should say if it has not a markdown file extension" do
         
     | 
| 
      
 31 
     | 
    
         
            +
                string = "file.other"
         
     | 
| 
      
 32 
     | 
    
         
            +
                string.markdown_ext?.should be_false
         
     | 
| 
      
 33 
     | 
    
         
            +
              end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,35 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- encoding: utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require './spec/helper'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            describe Fragment do
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              it "should replace one fragment tag" do
         
     | 
| 
      
 8 
     | 
    
         
            +
                fragment = Fragment.new("spec/test-files/fragment.html", 'spec/test-files')
         
     | 
| 
      
 9 
     | 
    
         
            +
                fragment.to_html.start_with?('<h1>title</h1>').should be_true
         
     | 
| 
      
 10 
     | 
    
         
            +
              end
         
     | 
| 
      
 11 
     | 
    
         
            +
              
         
     | 
| 
      
 12 
     | 
    
         
            +
              it "should replace one fragment tag among other tags" do
         
     | 
| 
      
 13 
     | 
    
         
            +
                fragment = Fragment.new("spec/test-files/fragment4.html", 'spec/test-files')
         
     | 
| 
      
 14 
     | 
    
         
            +
                result = fragment.to_html
         
     | 
| 
      
 15 
     | 
    
         
            +
                result.gsub!("\n", '')
         
     | 
| 
      
 16 
     | 
    
         
            +
                result.should == '<h1>title</h1><p>para</p><p>footer</p>'
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
              
         
     | 
| 
      
 19 
     | 
    
         
            +
              it "should replace one fragment tag in markdown" do
         
     | 
| 
      
 20 
     | 
    
         
            +
                fragment = Fragment.new("spec/test-files/fragment3.html", 'spec/test-files')
         
     | 
| 
      
 21 
     | 
    
         
            +
                fragment.to_html.start_with?('<h1>title</h1>').should be_true
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
              
         
     | 
| 
      
 24 
     | 
    
         
            +
              it "should replace some fragment tags" do
         
     | 
| 
      
 25 
     | 
    
         
            +
                fragment = Fragment.new("spec/test-files/fragment2.html", 'spec/test-files')
         
     | 
| 
      
 26 
     | 
    
         
            +
                result = fragment.to_html.gsub("\n", '')
         
     | 
| 
      
 27 
     | 
    
         
            +
                result.should == ("<p>abcde</p>")
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              it "should not change a file without fragment tag" do
         
     | 
| 
      
 31 
     | 
    
         
            +
                fragment = Fragment.new("spec/test-files/nothing.html", 'spec/test-files')
         
     | 
| 
      
 32 
     | 
    
         
            +
                fragment.to_html.start_with?("<h1>title</h1>").should be_true
         
     | 
| 
      
 33 
     | 
    
         
            +
              end
         
     | 
| 
      
 34 
     | 
    
         
            +
              
         
     | 
| 
      
 35 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/html_document_spec.rb
    CHANGED
    
    | 
         @@ -26,4 +26,14 @@ describe HtmlDocument do 
     | 
|
| 
       26 
26 
     | 
    
         
             
                tags.size.should == 2
         
     | 
| 
       27 
27 
     | 
    
         
             
              end
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
      
 29 
     | 
    
         
            +
              it "should build a page content from markdown" do
         
     | 
| 
      
 30 
     | 
    
         
            +
                content = HtmlDocument.build_page_content("spec/test-files/test.markdown", 'spec/test-files')
         
     | 
| 
      
 31 
     | 
    
         
            +
                content.should == '<h1>title</h1>'
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
              
         
     | 
| 
      
 34 
     | 
    
         
            +
              it "should build page content from html" do
         
     | 
| 
      
 35 
     | 
    
         
            +
                content = HtmlDocument.build_page_content("spec/test-files/fragment.html", 'spec/test-files')
         
     | 
| 
      
 36 
     | 
    
         
            +
                content.start_with?('<h1>title</h1>').should be_true
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
              
         
     | 
| 
       29 
39 
     | 
    
         
             
            end
         
     | 
| 
         @@ -29,6 +29,10 @@ describe ProjectCreator do 
     | 
|
| 
       29 
29 
     | 
    
         
             
                  File.exist?('spec/project-name/news').should == true
         
     | 
| 
       30 
30 
     | 
    
         
             
                end
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
      
 32 
     | 
    
         
            +
                it "should create a fragments folder" do
         
     | 
| 
      
 33 
     | 
    
         
            +
                  File.exist?('spec/project-name/fragments').should == true
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
                
         
     | 
| 
       32 
36 
     | 
    
         
             
                it "should create a pages folder" do
         
     | 
| 
       33 
37 
     | 
    
         
             
                  File.exist?('spec/project-name/pages').should == true
         
     | 
| 
       34 
38 
     | 
    
         
             
                end
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <genit class="fragment" file="title.html" />
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <genit class="fragment" file="title.markdown" />
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            b
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            d
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <p>footer</p>
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <h1>title</h1>
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <h1>title</h1>
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: genit
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: '0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: '0.3'
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,12 +9,12 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2011-07- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2011-07-23 00:00:00.000000000 +02:00
         
     | 
| 
       13 
13 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies:
         
     | 
| 
       15 
15 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       16 
16 
     | 
    
         
             
              name: coco
         
     | 
| 
       17 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 17 
     | 
    
         
            +
              requirement: &75668220 !ruby/object:Gem::Requirement
         
     | 
| 
       18 
18 
     | 
    
         
             
                none: false
         
     | 
| 
       19 
19 
     | 
    
         
             
                requirements:
         
     | 
| 
       20 
20 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -22,10 +22,10 @@ dependencies: 
     | 
|
| 
       22 
22 
     | 
    
         
             
                    version: 0.4.2
         
     | 
| 
       23 
23 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       24 
24 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       25 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 25 
     | 
    
         
            +
              version_requirements: *75668220
         
     | 
| 
       26 
26 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       27 
27 
     | 
    
         
             
              name: nokogiri
         
     | 
| 
       28 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 28 
     | 
    
         
            +
              requirement: &75643120 !ruby/object:Gem::Requirement
         
     | 
| 
       29 
29 
     | 
    
         
             
                none: false
         
     | 
| 
       30 
30 
     | 
    
         
             
                requirements:
         
     | 
| 
       31 
31 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -33,10 +33,10 @@ dependencies: 
     | 
|
| 
       33 
33 
     | 
    
         
             
                    version: 1.4.6
         
     | 
| 
       34 
34 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       35 
35 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       36 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: *75643120
         
     | 
| 
       37 
37 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       38 
38 
     | 
    
         
             
              name: bluecloth
         
     | 
| 
       39 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 39 
     | 
    
         
            +
              requirement: &75642670 !ruby/object:Gem::Requirement
         
     | 
| 
       40 
40 
     | 
    
         
             
                none: false
         
     | 
| 
       41 
41 
     | 
    
         
             
                requirements:
         
     | 
| 
       42 
42 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -44,7 +44,7 @@ dependencies: 
     | 
|
| 
       44 
44 
     | 
    
         
             
                    version: 2.1.0
         
     | 
| 
       45 
45 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       46 
46 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       47 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 47 
     | 
    
         
            +
              version_requirements: *75642670
         
     | 
| 
       48 
48 
     | 
    
         
             
            description: ! "Genit builds a **static web site**, that is a web site without server
         
     | 
| 
       49 
49 
     | 
    
         
             
              side \nprograming language and database. The site consists only of xhtml code (+
         
     | 
| 
       50 
50 
     | 
    
         
             
              css and medias) and \neventually of javascript. It is a command line framework,
         
     | 
| 
         @@ -60,9 +60,12 @@ files: 
     | 
|
| 
       60 
60 
     | 
    
         
             
            - lib/genit/project_creator.rb
         
     | 
| 
       61 
61 
     | 
    
         
             
            - lib/genit/html_document.rb
         
     | 
| 
       62 
62 
     | 
    
         
             
            - lib/genit/builder.rb
         
     | 
| 
      
 63 
     | 
    
         
            +
            - lib/genit/file_writer.rb
         
     | 
| 
       63 
64 
     | 
    
         
             
            - lib/genit/xml_document.rb
         
     | 
| 
       64 
65 
     | 
    
         
             
            - lib/genit/page_compiler.rb
         
     | 
| 
      
 66 
     | 
    
         
            +
            - lib/genit/fragment.rb
         
     | 
| 
       65 
67 
     | 
    
         
             
            - lib/genit/compiler.rb
         
     | 
| 
      
 68 
     | 
    
         
            +
            - lib/genit/extensions.rb
         
     | 
| 
       66 
69 
     | 
    
         
             
            - lib/genit/document_writer.rb
         
     | 
| 
       67 
70 
     | 
    
         
             
            - lib/genit.rb
         
     | 
| 
       68 
71 
     | 
    
         
             
            - bin/genit
         
     | 
| 
         @@ -79,12 +82,24 @@ files: 
     | 
|
| 
       79 
82 
     | 
    
         
             
            - data/pages/index.html
         
     | 
| 
       80 
83 
     | 
    
         
             
            - spec/compiler_spec.rb
         
     | 
| 
       81 
84 
     | 
    
         
             
            - spec/builder_spec.rb
         
     | 
| 
      
 85 
     | 
    
         
            +
            - spec/fragment_spec.rb
         
     | 
| 
       82 
86 
     | 
    
         
             
            - spec/helper.rb
         
     | 
| 
       83 
87 
     | 
    
         
             
            - spec/html_document_spec.rb
         
     | 
| 
       84 
88 
     | 
    
         
             
            - spec/nokogiri_spec.rb
         
     | 
| 
       85 
89 
     | 
    
         
             
            - spec/project_creator_spec.rb
         
     | 
| 
      
 90 
     | 
    
         
            +
            - spec/extensions_spec.rb
         
     | 
| 
       86 
91 
     | 
    
         
             
            - spec/bluecloth_spec.rb
         
     | 
| 
      
 92 
     | 
    
         
            +
            - spec/test-files/fragment4.html
         
     | 
| 
      
 93 
     | 
    
         
            +
            - spec/test-files/fragment3.html
         
     | 
| 
       87 
94 
     | 
    
         
             
            - spec/test-files/test.markdown
         
     | 
| 
      
 95 
     | 
    
         
            +
            - spec/test-files/fragment2.html
         
     | 
| 
      
 96 
     | 
    
         
            +
            - spec/test-files/fragment.html
         
     | 
| 
      
 97 
     | 
    
         
            +
            - spec/test-files/fragments/footer.html
         
     | 
| 
      
 98 
     | 
    
         
            +
            - spec/test-files/fragments/b.html
         
     | 
| 
      
 99 
     | 
    
         
            +
            - spec/test-files/fragments/title.html
         
     | 
| 
      
 100 
     | 
    
         
            +
            - spec/test-files/fragments/title.markdown
         
     | 
| 
      
 101 
     | 
    
         
            +
            - spec/test-files/fragments/d.html
         
     | 
| 
      
 102 
     | 
    
         
            +
            - spec/test-files/nothing.html
         
     | 
| 
       88 
103 
     | 
    
         
             
            - spec/xml_document_spec.rb
         
     | 
| 
       89 
104 
     | 
    
         
             
            - VERSION
         
     | 
| 
       90 
105 
     | 
    
         
             
            - NEWS
         
     |