genit 0.5 → 0.9
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 +20 -0
- data/TODO +40 -4
- data/VERSION +1 -1
- data/bin/genit +10 -2
- data/data/pages/index.html +10 -11
- data/data/pages/index2.html +1 -0
- data/data/styles/screen.css +12 -3
- data/data/templates/html_5 +5 -0
- data/data/templates/main.html +0 -6
- data/data/templates/xhtml_1.0_strict +5 -0
- data/data/templates/xhtml_1.0_transitional +5 -0
- data/lib/genit.rb +5 -18
- data/lib/genit/builders.rb +8 -0
- data/lib/genit/{body_link_builder.rb → builders/body_link_builder.rb} +7 -3
- data/lib/genit/{builder.rb → builders/builder.rb} +0 -0
- data/lib/genit/{builder_base.rb → builders/builder_base.rb} +0 -0
- data/lib/genit/{head_link_builder.rb → builders/head_link_builder.rb} +5 -0
- data/lib/genit/builders/img_builder.rb +39 -0
- data/lib/genit/{menu_builder.rb → builders/menu_builder.rb} +0 -0
- data/lib/genit/builders/script_builder.rb +37 -0
- data/lib/genit/documents.rb +5 -0
- data/lib/genit/{document_writer.rb → documents/document_writer.rb} +0 -0
- data/lib/genit/{fragment.rb → documents/fragment.rb} +0 -0
- data/lib/genit/{html_document.rb → documents/html_document.rb} +0 -0
- data/lib/genit/{xml_document.rb → documents/xml_document.rb} +0 -0
- data/lib/genit/extensions.rb +2 -44
- data/lib/genit/extensions/nokogiri_extension.rb +37 -0
- data/lib/genit/extensions/string_extension.rb +17 -0
- data/lib/genit/project.rb +4 -0
- data/lib/genit/{compiler.rb → project/compiler.rb} +12 -0
- data/lib/genit/{page_compiler.rb → project/page_compiler.rb} +21 -2
- data/lib/genit/project/project_creator.rb +119 -0
- data/lib/genit/tags.rb +9 -0
- data/lib/genit/tags/class_fragment_tag.rb +30 -0
- data/lib/genit/tags/class_menu_tag.rb +36 -0
- data/lib/genit/tags/class_news_tag.rb +52 -0
- data/lib/genit/tags/class_pages_tag.rb +34 -0
- data/lib/genit/tags/class_tag.rb +38 -0
- data/lib/genit/{var_tag.rb → tags/here_tag.rb} +10 -5
- data/lib/genit/{tag.rb → tags/tag.rb} +0 -0
- data/lib/genit/{tag_processor.rb → tags/tag_processor.rb} +4 -3
- data/lib/genit/utils.rb +2 -0
- data/lib/genit/{file_writer.rb → utils/file_writer.rb} +0 -0
- data/spec/class_news_tag_spec.rb +36 -0
- data/spec/class_tag_spec.rb +13 -0
- data/spec/compiler_spec.rb +1 -1
- data/spec/menu_builder_spec.rb +0 -14
- data/spec/page_compiler_spec.rb +3 -4
- data/spec/project_creator_spec.rb +6 -2
- data/spec/tag_processor_spec.rb +8 -0
- metadata +46 -27
- data/lib/genit/class_tag.rb +0 -66
- data/lib/genit/project_creator.rb +0 -72
data/NEWS
CHANGED
@@ -1,3 +1,23 @@
|
|
1
|
+
v0.9 2011-09-04
|
2
|
+
|
3
|
+
* You can add news to your site with ease
|
4
|
+
|
5
|
+
* The tag 'var' does not exist anymore. It is replaced by the two-part tag
|
6
|
+
'here' & 'what'
|
7
|
+
|
8
|
+
* Put your public files (photo, text, pdf, etc.) in the 'public' folder
|
9
|
+
|
10
|
+
* Put your javascript in the 'scripts' folder
|
11
|
+
|
12
|
+
* Relative links should be written relative to the root (the index.hmtl file)
|
13
|
+
|
14
|
+
* New '--empty' switch for the 'create' command
|
15
|
+
|
16
|
+
* New '--doctype' option for the 'create' command
|
17
|
+
|
18
|
+
* Fix bug #38: named anchor crashes the compiler
|
19
|
+
|
20
|
+
|
1
21
|
v0.5 2011-08-06
|
2
22
|
|
3
23
|
* You can pass string variables from page to template
|
data/TODO
CHANGED
@@ -1,9 +1,45 @@
|
|
1
|
-
dans la doc : tous les liens internes doivent être relatifs au dossier de base (fichier index.html)
|
2
1
|
|
3
2
|
|
4
3
|
|
5
|
-
-------------
|
6
|
-
news
|
7
4
|
|
5
|
+
BUG
|
6
|
+
==================
|
8
7
|
|
9
|
-
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
LES NEWS
|
12
|
+
====================
|
13
|
+
|
14
|
+
D'abord simple, en html et en markdown:
|
15
|
+
|
16
|
+
<genit class="news" number="4" />
|
17
|
+
<genit class="news" />
|
18
|
+
|
19
|
+
|
20
|
+
Puis avec un wrapper:
|
21
|
+
|
22
|
+
<genit class="news" number="4" wrapper="a_news" />
|
23
|
+
<genit class="news" wrapper="a_news" />
|
24
|
+
|
25
|
+
|
26
|
+
TAG HERE & WHAT remplacent var
|
27
|
+
===============================
|
28
|
+
|
29
|
+
DOSSIER PUBLIC
|
30
|
+
================================
|
31
|
+
|
32
|
+
SCRIPTS
|
33
|
+
=============================
|
34
|
+
|
35
|
+
Les liens <img src> doivent être relativisés (comme les <a>)
|
36
|
+
============================================================
|
37
|
+
|
38
|
+
les scripts doivent être relativisés
|
39
|
+
==========================================================
|
40
|
+
|
41
|
+
switch --empty pour commande create
|
42
|
+
======================================
|
43
|
+
|
44
|
+
supprimer le contenu de www/ avant compilation
|
45
|
+
==================================================
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.9
|
data/bin/genit
CHANGED
@@ -37,15 +37,23 @@ module Genit
|
|
37
37
|
puts "genit #{File.read(File.join($GENIT_PATH, 'VERSION')).strip}"
|
38
38
|
exit 0
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
end
|
42
42
|
|
43
43
|
class CreateCommand < AbstractCommand
|
44
44
|
|
45
45
|
parameter "NAME", "the name of the project", :attribute_name => :project_name
|
46
|
+
option ["-d", "--doctype"], "DOCTYPE", "The Document Type Definition", :default => "html_5"
|
47
|
+
option ["-e", "--empty"], :flag, "Do not produce smoke test", :default => false
|
48
|
+
|
46
49
|
|
47
50
|
def execute
|
48
|
-
|
51
|
+
valid_doctypes = ['xhtml_1.0_strict', 'xhtml_1.0_transitional', 'html_5']
|
52
|
+
unless valid_doctypes.include? doctype
|
53
|
+
puts 'Valid doctypes are ' + valid_doctypes.inspect
|
54
|
+
exit 1
|
55
|
+
end
|
56
|
+
project = ProjectCreator.new project_name, doctype, empty?
|
49
57
|
project.create
|
50
58
|
end
|
51
59
|
|
data/data/pages/index.html
CHANGED
@@ -4,25 +4,24 @@
|
|
4
4
|
Genit is a framework to build a <strong>static web site</strong>, that is a web site without server
|
5
5
|
side programing language and database. A genit site consists only of xhtml code (+ css, medias and
|
6
6
|
eventually javascript).
|
7
|
-
|
8
|
-
|
9
|
-
<p>
|
7
|
+
<br/>
|
8
|
+
<br/>
|
10
9
|
<em>Genit is written in Ruby but there is no needs to know the Ruby language.</em>
|
11
|
-
|
12
|
-
|
13
|
-
<p>
|
10
|
+
<br/>
|
11
|
+
<br/>
|
14
12
|
The Genit project is hosted on
|
15
13
|
<a href="https://github.com/lkdjiin/genit" title="Source code of Genit">GitHub</a> under the terms
|
16
14
|
of the MIT license. Feel free to fork it. Each new release will be announced on the
|
17
15
|
<a href="http://freshmeat.net/projects/genit" title="Genit project on freshmeat">freshmeat</a> site.
|
18
|
-
The development progress will be announced on
|
19
|
-
<a href="http://twitter.com/lkdjiin"
|
20
|
-
|
16
|
+
The development progress will be announced on
|
17
|
+
<a href="http://twitter.com/lkdjiin">Twitter</a>.
|
18
|
+
|
21
19
|
</p>
|
22
20
|
|
23
21
|
<h1>Get started</h1>
|
24
22
|
|
25
23
|
<p>
|
26
|
-
Read the <a href="
|
27
|
-
"A short get started tutorial for Genit">tutorial</a>
|
24
|
+
Read the <a href="http://lkdjiin.github.com/genit/documentation/tutorial.html"
|
25
|
+
"A short get started tutorial for Genit">tutorial</a> first, then have a look at the
|
26
|
+
<a href="http://lkdjiin.github.com/genit/documentation/index.html">documentation</a>.
|
28
27
|
</p>
|
@@ -0,0 +1 @@
|
|
1
|
+
<h1>home page</h1>
|
data/data/styles/screen.css
CHANGED
@@ -1,9 +1,14 @@
|
|
1
1
|
/* Delete this content and write your own rules */
|
2
2
|
|
3
3
|
body {
|
4
|
-
width:
|
4
|
+
width:300px;
|
5
5
|
margin:0 auto;
|
6
6
|
font-family: Arial, Helvetica, FreeSans, sans-serif;
|
7
|
+
-webkit-border-radius:10px;
|
8
|
+
-moz-border-radius:10px;
|
9
|
+
-o-border-radius:10px;
|
10
|
+
border-radius:10px;
|
11
|
+
margin-top:50px;
|
7
12
|
}
|
8
13
|
|
9
14
|
#menu { display:none;}
|
@@ -13,10 +18,10 @@ font-size:1.2em;
|
|
13
18
|
color:#555;
|
14
19
|
}
|
15
20
|
|
16
|
-
p:hover {color:#
|
21
|
+
p:hover {color:#003;}
|
17
22
|
|
18
23
|
p:hover a {
|
19
|
-
background-color:#
|
24
|
+
background-color:#003 !important;
|
20
25
|
color:white !important;
|
21
26
|
text-decoration:none !important;
|
22
27
|
}
|
@@ -24,3 +29,7 @@ text-decoration:none !important;
|
|
24
29
|
a {
|
25
30
|
color:#334 !important;
|
26
31
|
}
|
32
|
+
|
33
|
+
h1{color:#003;}
|
34
|
+
|
35
|
+
html{background-color:#336;}
|
data/data/templates/main.html
CHANGED
@@ -1,10 +1,4 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
3
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
4
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
-
<head>
|
6
1
|
<title>Genit - Static web site framework</title>
|
7
|
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
8
2
|
<link rel="stylesheet" type="text/css" media="all" href="styles/alsa/all.css" />
|
9
3
|
<link rel="stylesheet" type="text/css" media="screen" href="styles/screen.css" />
|
10
4
|
<link rel="stylesheet" type="text/css" media="print" href="styles/print.css" />
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
+
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
data/lib/genit.rb
CHANGED
@@ -1,23 +1,10 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
2
|
require 'genit/extensions'
|
4
|
-
require 'genit/
|
5
|
-
require 'genit/
|
6
|
-
require 'genit/
|
7
|
-
require 'genit/
|
8
|
-
require 'genit/
|
9
|
-
require 'genit/compiler'
|
10
|
-
require 'genit/page_compiler'
|
11
|
-
require 'genit/builder'
|
12
|
-
require 'genit/builder_base'
|
13
|
-
require 'genit/menu_builder'
|
14
|
-
require 'genit/head_link_builder'
|
15
|
-
require 'genit/body_link_builder'
|
16
|
-
require 'genit/fragment'
|
17
|
-
require 'genit/tag_processor'
|
18
|
-
require 'genit/tag'
|
19
|
-
require 'genit/var_tag'
|
20
|
-
require 'genit/class_tag'
|
3
|
+
require 'genit/project'
|
4
|
+
require 'genit/documents'
|
5
|
+
require 'genit/utils'
|
6
|
+
require 'genit/builders'
|
7
|
+
require 'genit/tags'
|
21
8
|
|
22
9
|
module Genit
|
23
10
|
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'genit/builders/builder'
|
3
|
+
require 'genit/builders/builder_base'
|
4
|
+
require 'genit/builders/menu_builder'
|
5
|
+
require 'genit/builders/head_link_builder'
|
6
|
+
require 'genit/builders/body_link_builder'
|
7
|
+
require 'genit/builders/img_builder'
|
8
|
+
require 'genit/builders/script_builder'
|
@@ -7,9 +7,9 @@ module Genit
|
|
7
7
|
# Modify links.
|
8
8
|
class BodyLinkBuilder < BuilderBase
|
9
9
|
|
10
|
-
# Public:
|
10
|
+
# Public: Relativize links.
|
11
11
|
#
|
12
|
-
# page_name - The string filename of the page
|
12
|
+
# page_name - The string filename of the page.
|
13
13
|
#
|
14
14
|
# Returns the modified Nokogiri::XML::Document
|
15
15
|
def build_for_page page_name
|
@@ -24,11 +24,15 @@ module Genit
|
|
24
24
|
|
25
25
|
def update link
|
26
26
|
@path = link['href']
|
27
|
-
return if
|
27
|
+
return if not_an_internal_link?
|
28
28
|
nb = BuilderBase::get_number_of_base_dirs @page_name
|
29
29
|
make_relative nb
|
30
30
|
link['href'] = @path
|
31
31
|
end
|
32
|
+
|
33
|
+
def not_an_internal_link?
|
34
|
+
@path.nil? or @path =~ URI::regexp
|
35
|
+
end
|
32
36
|
|
33
37
|
end
|
34
38
|
|
File without changes
|
File without changes
|
@@ -22,11 +22,16 @@ module Genit
|
|
22
22
|
|
23
23
|
def update link
|
24
24
|
@path = link['href']
|
25
|
+
return if not_an_internal_link?
|
25
26
|
nb = BuilderBase::get_number_of_base_dirs @page_name
|
26
27
|
make_relative nb
|
27
28
|
link['href'] = @path
|
28
29
|
end
|
29
30
|
|
31
|
+
def not_an_internal_link?
|
32
|
+
@path.nil? or @path =~ URI::regexp
|
33
|
+
end
|
34
|
+
|
30
35
|
end
|
31
36
|
|
32
37
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'uri'
|
4
|
+
|
5
|
+
module Genit
|
6
|
+
|
7
|
+
# Modify img src.
|
8
|
+
class ImgBuilder < BuilderBase
|
9
|
+
|
10
|
+
# Public: Relativize image source.
|
11
|
+
#
|
12
|
+
# page_name - The string filename of the page.
|
13
|
+
#
|
14
|
+
# Returns the modified Nokogiri::XML::Document
|
15
|
+
def build_for_page page_name
|
16
|
+
build page_name, get_links
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def get_links
|
22
|
+
@document.css("body img")
|
23
|
+
end
|
24
|
+
|
25
|
+
def update link
|
26
|
+
@path = link['src']
|
27
|
+
return if not_an_internal_link?
|
28
|
+
nb = BuilderBase::get_number_of_base_dirs @page_name
|
29
|
+
make_relative nb
|
30
|
+
link['src'] = @path
|
31
|
+
end
|
32
|
+
|
33
|
+
def not_an_internal_link?
|
34
|
+
@path.nil? or @path =~ URI::regexp
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
File without changes
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
module Genit
|
4
|
+
|
5
|
+
# Modify script tags.
|
6
|
+
class ScriptBuilder < BuilderBase
|
7
|
+
|
8
|
+
# Public: Relativize the <script src=""> tags of a particular page.
|
9
|
+
#
|
10
|
+
# page_name - The string filename of the page.
|
11
|
+
#
|
12
|
+
# Returns the modified Nokogiri::XML::Document
|
13
|
+
def build_for_page page_name
|
14
|
+
build page_name, head_links
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def head_links
|
20
|
+
@document.css("script")
|
21
|
+
end
|
22
|
+
|
23
|
+
def update link
|
24
|
+
@path = link['src']
|
25
|
+
return if not_an_internal_link?
|
26
|
+
nb = BuilderBase::get_number_of_base_dirs @page_name
|
27
|
+
make_relative nb
|
28
|
+
link['src'] = @path
|
29
|
+
end
|
30
|
+
|
31
|
+
def not_an_internal_link?
|
32
|
+
@path.nil? or @path =~ URI::regexp
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/genit/extensions.rb
CHANGED
@@ -1,45 +1,3 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
|
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
|
18
|
-
|
19
|
-
module Nokogiri
|
20
|
-
module XML
|
21
|
-
|
22
|
-
# I think it's a bad idea to extend the Nokogiri library cause it makes a
|
23
|
-
# too big dependency on Genit.
|
24
|
-
# It will be much better to do a little wrapper over Nokogiri::XML::Node.
|
25
|
-
class Node
|
26
|
-
|
27
|
-
def genit_class?
|
28
|
-
if self['class']
|
29
|
-
true
|
30
|
-
else
|
31
|
-
false
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def genit_var?
|
36
|
-
if self['var']
|
37
|
-
true
|
38
|
-
else
|
39
|
-
false
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
2
|
+
require 'genit/extensions/string_extension'
|
3
|
+
require 'genit/extensions/nokogiri_extension'
|