Initial dev (look at history of master for older)
1
Rakefile
Normal file
|
@ -0,0 +1 @@
|
|||
require 'nanoc3/tasks'
|
116
Rules
Normal file
|
@ -0,0 +1,116 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
# engendrement des fichiers html
|
||||
|
||||
# page d'Accueil
|
||||
#route '/' do
|
||||
# '/index.html'
|
||||
#end
|
||||
|
||||
# CSS
|
||||
compile '/css/*' do
|
||||
filter :no_custom_css
|
||||
filter :sass
|
||||
filter :rainpress
|
||||
end
|
||||
route '/css/*' do
|
||||
'/Scratch/assets' + item.identifier.chop + '.css'
|
||||
end
|
||||
# compile '/css/*', :rep => :mozilla do
|
||||
# filter :mozilla
|
||||
# filter :sass
|
||||
# filter :rainpress
|
||||
# end
|
||||
# route '/css/*', :rep => :mozilla do
|
||||
# '/Scratch/assets' + item.identifier.chop + '_mozilla.css'
|
||||
# end
|
||||
# compile '/css/*', :rep => :webkit do
|
||||
# filter :webkit
|
||||
# filter :sass
|
||||
# filter :rainpress
|
||||
# end
|
||||
# route '/css/*', :rep => :webkit do
|
||||
# '/Scratch/assets' + item.identifier.chop + '_webkit.css'
|
||||
# end
|
||||
|
||||
compile '/img/*' do
|
||||
end
|
||||
route '/img/*' do
|
||||
'/Scratch/assets' + item.identifier.chop + '.png'
|
||||
end
|
||||
|
||||
compile '/css/raw/*' do
|
||||
end
|
||||
route '/css/raw/*' do
|
||||
'/Scratch' + item.identifier.sub(/raw\//,'').chop + '.css'
|
||||
end
|
||||
|
||||
# JS
|
||||
compile '/js/*' do
|
||||
end
|
||||
route '/js/*' do
|
||||
'/Scratch/assets' + item.identifier.chop + '.js'
|
||||
end
|
||||
|
||||
|
||||
compile '/html/*' do
|
||||
# item[:extension] returns 'html.erb' for multi-dotted filename
|
||||
ext = item[:extension].nil? ? nil : item[:extension].split('.').last
|
||||
|
||||
filter :ultraviolet # must be before kramdown
|
||||
filter :graph
|
||||
filter :description
|
||||
|
||||
if ext == 'erb'
|
||||
filter :erb
|
||||
elsif ext == 'haml' || ext.nil?
|
||||
filter :haml
|
||||
elsif ext == 'md' || ext == 'markdown'
|
||||
filter :erb
|
||||
filter :kramdown
|
||||
filter :math_repair # after kramdown
|
||||
else
|
||||
raise "Filter is not configured for #{item.identifier} in Rules file."
|
||||
end
|
||||
|
||||
filter :multicorps # must be before firsthi
|
||||
filter :firsthi # must be after multicorps
|
||||
filter :frenchspace
|
||||
filter :ytypo
|
||||
# filter :yabbreviations
|
||||
filter :footnotes
|
||||
|
||||
if item[:kind] == 'article'
|
||||
layout 'article'
|
||||
elsif not item[:layout].nil?
|
||||
layout item[:layout]
|
||||
else
|
||||
layout 'default' unless item[:layout] == "none"
|
||||
end
|
||||
end
|
||||
|
||||
route '/html/*' do
|
||||
'/Scratch' + item.identifier.sub('/html','') + 'index.html'
|
||||
end
|
||||
|
||||
# feed
|
||||
compile '/xml/*' do
|
||||
layout 'feed'
|
||||
end
|
||||
|
||||
route '/xml/en/*' do
|
||||
'/Scratch/en/blog/feed/feed.xml'
|
||||
end
|
||||
route '/xml/fr/*' do
|
||||
'/Scratch/fr/blog/feed/feed.xml'
|
||||
end
|
||||
|
||||
compile '/sitemap/*' do
|
||||
layout 'sitemap'
|
||||
end
|
||||
route '/sitemap/*' do
|
||||
'/Scratch/sitemap.xml'
|
||||
end
|
||||
|
||||
layout '*', :erb
|
||||
|
48
config.ru
Normal file
|
@ -0,0 +1,48 @@
|
|||
require 'rubygems'
|
||||
require 'rack'
|
||||
require 'rack/contrib'
|
||||
require 'rack-rewrite'
|
||||
require 'mime/types'
|
||||
|
||||
use Rack::Deflater
|
||||
use Rack::ETag
|
||||
module ::Rack
|
||||
class TryStatic < Static
|
||||
|
||||
def initialize(app, options)
|
||||
super
|
||||
@try = ([''] + Array(options.delete(:try)) + [''])
|
||||
end
|
||||
|
||||
def call(env)
|
||||
@next = 0
|
||||
while @next < @try.size && 404 == (resp = super(try_next(env)))[0]
|
||||
@next += 1
|
||||
end
|
||||
404 == resp[0] ? @app.call : resp
|
||||
end
|
||||
|
||||
private
|
||||
def try_next(env)
|
||||
env.merge('PATH_INFO' => env['PATH_INFO'] + @try[@next])
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
use Rack::Rewrite do
|
||||
r302 %r{/(Softwares.*)}, 'http://web.me.com/yann.esposito/$1'
|
||||
r302 %r{/(Perso.*)}, 'http://web.me.com/yann.esposito/$1'
|
||||
end
|
||||
|
||||
use Rack::TryStatic,
|
||||
:root => "output", # static files root dir
|
||||
:urls => %w[/], # match all requests
|
||||
:try => ['.html', 'index.html', '/index.html'] # try these postfixes sequentially
|
||||
|
||||
errorFile='output/Scratch/en/error/404-not_found/index.html'
|
||||
run lambda { [404, {
|
||||
"Last-Modified" => File.mtime(errorFile).httpdate,
|
||||
"Content-Type" => "text/html",
|
||||
"Content-Length" => File.size(errorFile).to_s
|
||||
}, File.read(errorFile)] }
|
88
config.yaml
Normal file
|
@ -0,0 +1,88 @@
|
|||
---
|
||||
data_sources:
|
||||
- items_root: /
|
||||
layouts_root: /
|
||||
type: filesystem_unified
|
||||
output_dir: output
|
||||
ultraviolet_theme: "twilight"
|
||||
base_url: "http://yannesposito.com"
|
||||
author_uri: "http://yannesposito.com"
|
||||
|
||||
# les langues
|
||||
languages:
|
||||
- fr
|
||||
- en
|
||||
|
||||
# les formats de date en fonction de la langue
|
||||
dateFormat:
|
||||
fr: "%d/%m/%Y"
|
||||
en: "%m/%d/%Y"
|
||||
|
||||
# le dictionnaire pour les mots communs
|
||||
translations:
|
||||
author:
|
||||
fr: "auteur"
|
||||
en: "author"
|
||||
langue:
|
||||
fr: "langue"
|
||||
en: "language"
|
||||
switchTo:
|
||||
fr: "en Français"
|
||||
en: "in English"
|
||||
clickForComment:
|
||||
fr: "Commentaires"
|
||||
en: "Comments"
|
||||
liens:
|
||||
fr: "liens"
|
||||
en: "links"
|
||||
telecharger:
|
||||
fr: "télécharger"
|
||||
en: "download"
|
||||
nojsclickme:
|
||||
fr: "Javascript semble désactivé ;<br/> cliquez ici"
|
||||
en: "Javascript seems disabled <br/> click on me"
|
||||
nextArticles:
|
||||
fr: "articles suivants"
|
||||
en: "next entries"
|
||||
next:
|
||||
fr: "suivant"
|
||||
en: "next"
|
||||
previousArticles:
|
||||
fr: "articles précédents"
|
||||
en: "previous entries"
|
||||
previous:
|
||||
fr: "précédent"
|
||||
en: "previous"
|
||||
comment:
|
||||
fr: "commentaires"
|
||||
en: "comments"
|
||||
onlyin:
|
||||
fr: "Seulement en"
|
||||
en: "Only in"
|
||||
whatsthis:
|
||||
fr: "Qu'est-ce que c'est ?"
|
||||
en: "What's this?"
|
||||
loading:
|
||||
fr: "Chargement en cours..."
|
||||
en: "loading..."
|
||||
entirely_done_with:
|
||||
en: "Entirely done with"
|
||||
fr: "Site entièrement réalisé avec"
|
||||
and:
|
||||
en: "and"
|
||||
fr: "et"
|
||||
created_at:
|
||||
en: "Created"
|
||||
fr: "Écrit le "
|
||||
last_modified:
|
||||
en: "Modified"
|
||||
fr: "modifié le "
|
||||
copyright:
|
||||
en: "<a rel=\"license\" href=\"http://creativecommons.org/licenses/by-sa/3.0/\">Copyright ©, Yann Esposito</a>"
|
||||
fr: "<a rel=\"license\" href=\"http://creativecommons.org/licenses/by-sa/3.0/deed.fr\">Droits de reproduction ©, Yann Esposito</a>"
|
||||
subscribe:
|
||||
en: "Subscribe"
|
||||
fr: "s'abonner"
|
||||
enableJavascriptToComment:
|
||||
en: "You must enable javascript to comment."
|
||||
en: "Vous devez activer javascript pour commenter."
|
219
layouts/article.html
Normal file
|
@ -0,0 +1,219 @@
|
|||
-----
|
||||
-----
|
||||
<%
|
||||
# -- init variables --
|
||||
class LocalConf
|
||||
attr_accessor :blog, :article, :languages, :language, :indent, :containMaths
|
||||
def to_s
|
||||
instance_variables.map{ |x|
|
||||
if instance_variable_get(x).class == Array
|
||||
%{#{x.intern}= [#{instance_variable_get(x).join(', ')}]}
|
||||
else
|
||||
%{#{x.intern}= #{instance_variable_get(x)}}
|
||||
end
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
conf=LocalConf.new
|
||||
|
||||
language=@item_rep.path.sub(/\/Scratch\//,'').sub(/\/.*$/,'')
|
||||
conf.language=language
|
||||
|
||||
containMaths=yield.match(/<p>([^<]|\n)*\$([^<]|\n)*\$/)
|
||||
conf.containMaths=containMaths
|
||||
|
||||
# the current item is an article
|
||||
article=( ( not @item[:kind].nil? ) && @item[:kind] == 'article' )
|
||||
conf.article=article
|
||||
|
||||
# the current item is a blog entry page
|
||||
blog=( ( not @item[:kind].nil? ) && @item[:kind] == 'blog' )
|
||||
conf.blog=blog
|
||||
|
||||
# all supported languages
|
||||
languages=@config[:languages]
|
||||
conf.languages=languages
|
||||
|
||||
self.instance_variable_set(:@conf, conf)
|
||||
|
||||
# puts '--- conf ---'
|
||||
# puts conf.to_s
|
||||
|
||||
%><?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<% t=tags %>
|
||||
<% if t.length > 0 %>
|
||||
<meta name="keywords" content="<%= t %>">
|
||||
<% end %>
|
||||
<link rel="shortcut icon" type="image/x-icon" href="/Scratch/img/favicon.ico" />
|
||||
<link rel="stylesheet" type="text/css" href="/Scratch/assets/css/main.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/Scratch/css/twilight.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/Scratch/css/idc.css" />
|
||||
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocom<%= language %>"/>
|
||||
<%
|
||||
languages.each do |lang|
|
||||
item_for_lang=item_of_language(lang)
|
||||
if not item_for_lang.nil? %>
|
||||
<link rel="alternate" lang="<%= lang %>" xml:lang="<%= lang %>" title="<%= item_for_lang[:title] %>" type="text/html" hreflang="<%= lang %>" href="<%= item_for_lang.reps[0].path %>" /> <%
|
||||
end
|
||||
end %>
|
||||
<script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script>
|
||||
<script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script>
|
||||
<script type="text/javascript" src="/Scratch/js/index.js"></script>
|
||||
<% if containMaths %>
|
||||
<script type="text/javascript" src="/Scratch/js/MathJax/MathJax.js"></script>
|
||||
<% end %>
|
||||
<title><%= @item[:title] %></title>
|
||||
</head>
|
||||
<body lang="<%= language %>">
|
||||
<script type="text/javascript">// <![CDATA[
|
||||
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="<%= tradOf(:loading) %>"/></div>');
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<div id="content">
|
||||
|
||||
<div id="choix">
|
||||
<div class="return"><a href="#entete">↓ Menu ↓</a></div>
|
||||
<div id="choixlang">
|
||||
<%= languages.map do |l|
|
||||
dest=@item_rep.path.sub(/^\/Scratch\/..\//, %{/Scratch/#{l}/})
|
||||
if @item_rep.path != dest
|
||||
%{<a href="#{dest}" onclick="setLanguage('#{l}')">#{ tradOfKeywordIn(:switchTo,l)}</a>}
|
||||
else
|
||||
nil
|
||||
end
|
||||
end.join() %>
|
||||
</div>
|
||||
</div>
|
||||
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
|
||||
<div id="titre">
|
||||
<h1>
|
||||
<%= @item[:title] %>
|
||||
</h1>
|
||||
<% unless @item[:subtitle].nil? %>
|
||||
<h2>
|
||||
<%= @item[:subtitle] %>
|
||||
</h2>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<div class="flush"></div>
|
||||
|
||||
<% if @item[:content_for_summary] %>
|
||||
<div class="corps summary">
|
||||
<% @item[:content_for_summary] %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<%= generateSubMenu %>
|
||||
|
||||
<div class="flush"></div>
|
||||
<div id="afterheader">
|
||||
<div class="corps">
|
||||
<%= yield %>
|
||||
</div>
|
||||
<% depth = depthOf(@item) %>
|
||||
<% if depth > 2 or ( depth == 2 and @item.children.length > 0 ) %>
|
||||
<div class="navigation">
|
||||
<div class="navigationprev"><%= previousFor(@item) %></div>
|
||||
<div class="navigationnext"><%= nextFor(@item) %></div>
|
||||
</div>
|
||||
<div class="flush"></div>
|
||||
<% end %>
|
||||
|
||||
<div id="choixrss">
|
||||
<a id="rss" href="http://feeds.feedburner.com/yannespositocom<%= language %>">
|
||||
<%= tradOf(:subscribe) %>
|
||||
</a>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
$('#comment').hide();
|
||||
$('#clickcomment').click(showComments);
|
||||
});
|
||||
function showComments() {
|
||||
$('#comment').show();
|
||||
$('#clickcomment').fadeOut();
|
||||
}
|
||||
document.write('<div id="clickcomment"><%= tradOf(:clickForComment) %></div>');
|
||||
</script>
|
||||
<div class="flush"></div>
|
||||
<div class="corps" id="comment">
|
||||
<h2 class="first"><%= tradOf(:comment) %></h2>
|
||||
<noscript>
|
||||
<%= tradOf(:enableJavascriptToComment) %>
|
||||
</noscript>
|
||||
<%= generateIntenseDebateThread %>
|
||||
</div>
|
||||
|
||||
<div id="entete" class="corps_spaced">
|
||||
<div id="liens">
|
||||
<%= generateMenu %>
|
||||
</div>
|
||||
<div class="flush"></div>
|
||||
<hr/>
|
||||
<div id="next_before_articles">
|
||||
<div id="previous_articles">
|
||||
<%= tradOf(:previousArticles) %>
|
||||
<%
|
||||
(1..3).each do |n|
|
||||
a=article_brother(-n)
|
||||
if not a.nil?
|
||||
%>
|
||||
<div class="previous_article">
|
||||
<%= link_to( %{<span class="nicer">«</span> }+ a[:title], a) %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
<div id="next_articles">
|
||||
<%= tradOf(:nextArticles) %>
|
||||
<%
|
||||
(1..3).each do |n|
|
||||
a=article_brother(n)
|
||||
if not a.nil?
|
||||
%>
|
||||
<div class="next_article">
|
||||
<%= link_to(a[:title] + %{ <span class="nicer">»</span>}, a) %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="flush"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="bottom">
|
||||
<div>
|
||||
<%=tradOf(:copyright) %>
|
||||
</div>
|
||||
<div id="lastmod">
|
||||
<%=tradOf(:created_at)%>: <%= @item[:created_at].strftime(@config[:dateFormat][language.intern]) %>
|
||||
<%=tradOf(:last_modified)%>: <%= gitmtime.strftime(@config[:dateFormat][language.intern]) %>
|
||||
</div>
|
||||
<div>
|
||||
<%= tradOf(:entirely_done_with) %>
|
||||
<a href="http://www.vim.org">Vim</a>
|
||||
<%= tradOf(:and) %>
|
||||
<a href="http://nanoc.stoneship.org">nanoc</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/Scratch/<%=language%>/validation/">Validation</a>
|
||||
<a href="http://validator.w3.org/check?uri=referer"> [xhtml] </a>
|
||||
.
|
||||
<a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"> [css] </a>
|
||||
.
|
||||
<a href="http://validator.w3.org/feed/check.cgi?url=http%3A//yannesposito.com/Scratch/<%=language%>/blog/feed/feed.xml">[rss]</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
148
layouts/default.html
Normal file
|
@ -0,0 +1,148 @@
|
|||
-----
|
||||
-----
|
||||
<%
|
||||
# -- init variables --
|
||||
class LocalConf
|
||||
attr_accessor :blog, :article, :languages, :language, :indent
|
||||
def to_s
|
||||
instance_variables.map{ |x|
|
||||
if instance_variable_get(x).class == Array
|
||||
%{#{x.intern}= [#{instance_variable_get(x).join(', ')}]}
|
||||
else
|
||||
%{#{x.intern}= #{instance_variable_get(x)}}
|
||||
end
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
conf=LocalConf.new
|
||||
|
||||
language=@item_rep.path.sub(/\/Scratch\//,'').sub(/\/.*$/,'')
|
||||
conf.language=language
|
||||
|
||||
# the current item is an article
|
||||
article=( ( not @item[:kind].nil? ) && @item[:kind] == 'article' )
|
||||
conf.article=article
|
||||
|
||||
# the current item is a blog entry page
|
||||
blog=( ( not @item[:kind].nil? ) && @item[:kind] == 'blog' )
|
||||
conf.blog=blog
|
||||
|
||||
# all supported languages
|
||||
languages=@config[:languages]
|
||||
conf.languages=languages
|
||||
|
||||
self.instance_variable_set(:@conf, conf)
|
||||
|
||||
# puts '--- conf ---'
|
||||
# puts conf.to_s
|
||||
|
||||
%><?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<% t=tags %>
|
||||
<% if t.length > 0 %>
|
||||
<meta name="keywords" content="<%= t %>">
|
||||
<% end %>
|
||||
<link rel="shortcut icon" type="image/x-icon" href="/Scratch/img/favicon.ico" />
|
||||
<link rel="stylesheet" type="text/css" href="/Scratch/assets/css/main.css" />
|
||||
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocom<%= language %>"/>
|
||||
<%
|
||||
languages.each do |lang|
|
||||
item_for_lang=item_of_language(lang)
|
||||
if not item_for_lang.nil? %>
|
||||
<link rel="alternate" lang="<%= lang %>" xml:lang="<%= lang %>" title="<%= item_for_lang[:title] %>" type="text/html" hreflang="<%= lang %>" href="<%= item_for_lang.reps[0].path %>" /> <%
|
||||
end
|
||||
end %>
|
||||
<script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script>
|
||||
<script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script>
|
||||
<script type="text/javascript" src="/Scratch/js/index.js"></script>
|
||||
<title><%= @item[:title] %></title>
|
||||
</head>
|
||||
<body lang="<%= language %>">
|
||||
<script type="text/javascript">// <![CDATA[
|
||||
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="<%= tradOf(:loading) %>"/></div>');
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<div id="content">
|
||||
<div id="entete">
|
||||
<div id="choix">
|
||||
<div id="choixrss">
|
||||
<a id="rss" href="http://feeds.feedburner.com/yannespositocom<%= language %>">
|
||||
<%= tradOf(:subscribe) %>
|
||||
</a>
|
||||
</div>
|
||||
<div id="choixlang">
|
||||
<%= languages.map do |l|
|
||||
dest=@item_rep.path.sub(/^\/Scratch\/..\//, %{/Scratch/#{l}/})
|
||||
if @item_rep.path != dest
|
||||
%{<a href="#{dest}" onclick="setLanguage('#{l}')">#{ tradOfKeywordIn(:switchTo,l)}</a>}
|
||||
else
|
||||
nil
|
||||
end
|
||||
end.join() %>
|
||||
</div>
|
||||
<div id="liens">
|
||||
<%= generateMenu %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
|
||||
<div id="titre">
|
||||
<h1>
|
||||
<%= @item[:title] %>
|
||||
</h1>
|
||||
<% unless @item[:subtitle].nil? %>
|
||||
<h2>
|
||||
<%= @item[:subtitle] %>
|
||||
</h2>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<div class="flush"></div>
|
||||
|
||||
<% if @item[:content_for_summary] %>
|
||||
<div class="corps summary">
|
||||
<% @item[:content_for_summary] %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<%= generateSubMenu %>
|
||||
|
||||
<div class="flush"></div>
|
||||
|
||||
<div id="afterheader">
|
||||
<div class="corps">
|
||||
<%= yield %>
|
||||
<div class="return"><a href="#entete" onclick="fastShowMenu()">↑</a></div>
|
||||
</div>
|
||||
<div id="bottom">
|
||||
<div>
|
||||
<%=tradOf(:copyright) %>
|
||||
</div>
|
||||
<div id="lastmod">
|
||||
<%=tradOf(:last_modified)%>: <%= gitmtime.strftime(@config[:dateFormat][language.intern]) %>
|
||||
</div>
|
||||
<div>
|
||||
<%= tradOf(:entirely_done_with) %>
|
||||
<a href="http://www.vim.org">Vim</a>
|
||||
<%= tradOf(:and) %>
|
||||
<a href="http://nanoc.stoneship.org">nanoc</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/Scratch/<%=language%>/validation/">Validation</a>
|
||||
<a href="http://validator.w3.org/check?uri=referer"> [xhtml] </a>
|
||||
.
|
||||
<a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"> [css] </a>
|
||||
.
|
||||
<a href="http://validator.w3.org/feed/check.cgi?url=http%3A//yannesposito.com/Scratch/<%=language%>/blog/feed/feed.xml">[rss]</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
73
layouts/error.html
Normal file
|
@ -0,0 +1,73 @@
|
|||
-----
|
||||
-----
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<% t=tags %>
|
||||
<% if t.length > 0 %>
|
||||
<meta name="keywords" content="<%= t %>">
|
||||
<% end %>
|
||||
<link rel="shortcut icon" type="image/x-icon" href="/Scratch/img/favicon.ico" />
|
||||
<link rel="stylesheet" type="text/css" href="/Scratch/assets/css/main.css" />
|
||||
<script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script>
|
||||
<script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script>
|
||||
<script type="text/javascript" src="/Scratch/js/index.js"></script>
|
||||
<script type="text/javascript" src="/Scratch/js/menu.js"></script>
|
||||
<title><%= @item[:title] %></title>
|
||||
</head>
|
||||
<body>
|
||||
<script type="text/javascript">// <![CDATA[
|
||||
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="<%= tradOfKeywordIn(:loading,"en") %>"/></div>');
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
<div id="content">
|
||||
<a href="/">
|
||||
<img src="/Scratch/img/presentation.png" alt="Presentation drawing"/>
|
||||
</a>
|
||||
<h1>
|
||||
<%= @item[:title] %>
|
||||
</h1>
|
||||
<% unless @item[:subtitle].nil? %>
|
||||
<div id="titre">
|
||||
<h2>
|
||||
<%= @item[:subtitle] %>
|
||||
</h2>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="flush"></div>
|
||||
|
||||
<div id="afterheader">
|
||||
<div class="corps">
|
||||
<%= yield %>
|
||||
</div>
|
||||
<div id="bottom">
|
||||
<div>
|
||||
<%=tradOfKeywordIn(:copyright,"en") %>
|
||||
</div>
|
||||
<div id="lastmod">
|
||||
<%=tradOfKeywordIn(:last_modified,"en")%>: <%= gitmtime.strftime(@config[:dateFormat][:en]) %>
|
||||
</div>
|
||||
<div>
|
||||
<%= tradOfKeywordIn(:entirely_done_with,"en") %>
|
||||
<a href="http://www.vim.org">Vim</a>
|
||||
<%= tradOfKeywordIn(:and,"en") %>
|
||||
<a href="http://nanoc.stoneship.org">nanoc</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/Scratch/en/validation/">Validation</a>
|
||||
<a href="http://validator.w3.org/check?uri=referer"> [xhtml] </a>
|
||||
.
|
||||
<a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"> [css] </a>
|
||||
.
|
||||
<a href="http://validator.w3.org/feed/check.cgi?url=http%3A//yannesposito.com/Scratch/en/blog/feed/feed.xml">[rss]</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
16
layouts/feed.html
Normal file
|
@ -0,0 +1,16 @@
|
|||
-----
|
||||
-----
|
||||
<%
|
||||
language=@item_rep.path.sub(/\/Scratch\//,'').sub(/\/.*$/,'')
|
||||
number_of_char_for_resume=800
|
||||
|
||||
%><%= atom_feed( {
|
||||
:articles => articles.select { |a| a.reps[0].path =~ /\/#{language}\// },
|
||||
:content_proc =>lambda { |a|
|
||||
repair_html(
|
||||
excerptize(
|
||||
a.compiled_content(:snapshot => :pre),
|
||||
{:length => number_of_char_for_resume} ))
|
||||
},
|
||||
:limit => 40
|
||||
}) %>
|
3
layouts/sitemap.html
Normal file
|
@ -0,0 +1,3 @@
|
|||
-----
|
||||
-----
|
||||
<%= xml_sitemap %>
|
15
lib/analytics.rb
Normal file
|
@ -0,0 +1,15 @@
|
|||
# All files in the 'lib' directory will be loaded
|
||||
# before nanoc starts compiling.
|
||||
|
||||
def genAnalytics
|
||||
%{<script type="text/javascript">
|
||||
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
||||
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
try {
|
||||
var pageTracker = _gat._getTracker("UA-10612400-1");
|
||||
pageTracker._trackPageview();
|
||||
} catch(err) {}</script>}
|
||||
end
|
||||
|
15
lib/calendar.rb
Normal file
|
@ -0,0 +1,15 @@
|
|||
# All files in the 'lib' directory will be loaded
|
||||
# before nanoc starts compiling.
|
||||
|
||||
def calendar_for( d, language="en" )
|
||||
if language == "fr"
|
||||
monthnames=[nil]+%w(Jan Fév Mar Avr Mai Jui Jul Aoû Sep Oct Nov Déc)
|
||||
else
|
||||
monthnames=[nil]+%w(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
|
||||
end
|
||||
%{<span class="date">
|
||||
<span class="day">#{d.day}</span>
|
||||
<span class="month">#{monthnames[ d.mon ]}</span>
|
||||
<span class="year">#{d.year}</span>
|
||||
</span> }
|
||||
end
|
32
lib/css.rb
Normal file
|
@ -0,0 +1,32 @@
|
|||
class NoCustomCSS < Nanoc3::Filter
|
||||
identifier :no_custom_css
|
||||
def run(content, params={})
|
||||
res=""
|
||||
content.each do |line|
|
||||
res <<= line if not res=~/^\s*-(moz|webkit)/
|
||||
end
|
||||
return res
|
||||
end
|
||||
end
|
||||
|
||||
class MozillaCSS < Nanoc3::Filter
|
||||
identifier :mozilla
|
||||
def run(content, params={})
|
||||
res=""
|
||||
content.each do |line|
|
||||
res <<= line if not res=~/-webkit/
|
||||
end
|
||||
return res
|
||||
end
|
||||
end
|
||||
|
||||
class WebkitCSS < Nanoc3::Filter
|
||||
identifier :webkit
|
||||
def run(content, params={})
|
||||
res=""
|
||||
content.each do |line|
|
||||
res <<= line if not res=~/-moz/
|
||||
end
|
||||
return res
|
||||
end
|
||||
end
|
14
lib/gitmtime.rb
Normal file
|
@ -0,0 +1,14 @@
|
|||
def gitmtime
|
||||
filepath=@item.path.sub('/Scratch/','content/html/').sub(/\/$/,'')
|
||||
ext=%{.#{@item[:extension]}}
|
||||
filepath<<=ext
|
||||
if not FileTest.exists?(filepath)
|
||||
filepath.sub!(ext,%{/index#{ext}})
|
||||
end
|
||||
str=`git log -1 --format='%ci' -- #{filepath}`
|
||||
if str.nil? or str.empty?
|
||||
return Time.now
|
||||
else
|
||||
return DateTime.parse( str )
|
||||
end
|
||||
end
|
29
lib/graph.rb
Normal file
|
@ -0,0 +1,29 @@
|
|||
class Graph < Nanoc3::Filter
|
||||
identifier :graph
|
||||
@@tmpfic="/tmp/graphtemp.dot"
|
||||
def run(content, params={})
|
||||
content.gsub(%r{<graph( title="([^"]*)")?>(.+?)</graph>}m) do |full|
|
||||
# FileUtils.rm(@@tmpfic)
|
||||
title=$2
|
||||
str=$3
|
||||
filename=title.gsub(/[^a-zA-Z0-9_]/,"_")
|
||||
File.open(@@tmpfic,'w') do |f|
|
||||
f.write %[ digraph Source {
|
||||
fontsize=10;
|
||||
rankdir="LR";
|
||||
graph [truecolor bgcolor="#ffffff00"];
|
||||
node [width=0, height=0, fontname="Optima Bold", shape="Mrecord", color="#663300", style="filled" fillcolor="#f9f1dd", fontcolor="#280000"] ;
|
||||
edge [arrowsize=.5, color="#280000"] ; ]
|
||||
f.write str
|
||||
f.write %[}]
|
||||
end
|
||||
FileUtils.mkdir_p('output'+@item.path+'graph')
|
||||
webpath=@item.path + 'graph/' + filename + '.png'
|
||||
path='output'+webpath
|
||||
puts "dot -Tpng -o #{path} /tmp/graphtemp.dot"
|
||||
system("dot -Tpng -o #{path} /tmp/graphtemp.dot")
|
||||
puts %{<img alt="#{title}" src="#{webpath}"/>}
|
||||
%{<img alt="#{title}" src="#{webpath}"/>}
|
||||
end
|
||||
end
|
||||
end
|
17
lib/helpers.rb
Normal file
|
@ -0,0 +1,17 @@
|
|||
# All files in the 'lib' directory will be loaded
|
||||
# before nanoc starts compiling.
|
||||
|
||||
# Utilisation des helper
|
||||
#
|
||||
# ecrire
|
||||
# <% content_for :summary do %>
|
||||
# Sommaire que je veux ecrire
|
||||
# <% end %>
|
||||
#
|
||||
# Pour remplir à la fois le texte et le sommaire
|
||||
|
||||
include Nanoc3::Helpers::Capturing
|
||||
include Nanoc3::Helpers::LinkTo
|
||||
include Nanoc3::Helpers::Blogging
|
||||
include Nanoc3::Helpers::Text
|
||||
include Nanoc3::Helpers::XMLSitemap
|
26
lib/intenseDebate.rb
Normal file
|
@ -0,0 +1,26 @@
|
|||
|
||||
def getMainpage
|
||||
if @item.parent.nil? or @item.parent.parent.nil?
|
||||
return
|
||||
end
|
||||
if @item.parent.parent.parent.nil?
|
||||
return @item
|
||||
else
|
||||
return @item.parent
|
||||
end
|
||||
end
|
||||
|
||||
def generateIntenseDebateThread
|
||||
mainpage=getMainpage
|
||||
protectedPath=mainpage.path.gsub(/'/,"%27")
|
||||
protectedTitle=mainpage[:title].gsub(/'/,"%27")
|
||||
%{
|
||||
<script type="text/javascript">
|
||||
var idcomments_acct = 'a307f0044511ff1b5cfca573fc0a52e7';
|
||||
var idcomments_post_id = '#{protectedPath}';
|
||||
var idcomments_post_url = 'http://yannesposito.com#{protectedPath}';
|
||||
</script>
|
||||
<span id="IDCommentsPostTitle" style="display:none"></span>
|
||||
<script type='text/javascript' src='/Scratch/js/genericCommentWrapperV2.js'></script>
|
||||
}
|
||||
end
|
7
lib/macros.rb
Normal file
|
@ -0,0 +1,7 @@
|
|||
def tldr
|
||||
%{<span class="sc"><abbr title="Too long; don't read">tl;dr</abbr>: </span>}
|
||||
end
|
||||
|
||||
def tlal
|
||||
%{<span class="sc"><abbr title="Trop long à lire">tlàl</abbr> : </span>}
|
||||
end
|
3
lib/mail.rb
Normal file
|
@ -0,0 +1,3 @@
|
|||
def mail_perso
|
||||
%{<a href="mailto:yann.esposito@gmail.com">yann.esposito@gmail.com</a>}
|
||||
end
|
32
lib/multi.rb
Normal file
|
@ -0,0 +1,32 @@
|
|||
def tradOf(keyword)
|
||||
language=@item.path
|
||||
language.match('/Scratch/(..)')
|
||||
language=$1
|
||||
tradOfKeywordIn(keyword, language )
|
||||
end
|
||||
|
||||
def tradOfKeywordIn(keyword, language)
|
||||
begin
|
||||
@config[:translations][keyword][language.intern]
|
||||
rescue
|
||||
if @config[:translations].nil?
|
||||
puts %{ERROR (lib/multi.rb) Please make a 'translations' hash table in config.yaml}
|
||||
elsif @config[:translations][keyword].nil?
|
||||
puts %{ERROR (lib/multi.rb) in config.yaml,
|
||||
in the 'translations' hash, I can't find the keyword #{keyword}}
|
||||
elsif @config[:translations][keyword][language.intern].nil?
|
||||
puts %{ERROR (lib/multi.rb) in config.yaml,
|
||||
in the 'translations' hash, I can't find the translation
|
||||
in #{language} for the keyword #{keyword}}
|
||||
else
|
||||
puts %{ERROR (lib/multi.rb) erreur inconnue}
|
||||
end
|
||||
return '[Sorry Translation Error]'
|
||||
end
|
||||
end
|
||||
|
||||
def item_of_language(language)
|
||||
searched_path=@item_rep.path.sub(@conf.language,language)
|
||||
# puts %{source path = #{@item_rep.path}, searched_path = #{searched_path}}
|
||||
@items.find { |i| i.reps[0].path == searched_path }
|
||||
end
|
171
lib/multiMenu.rb
Normal file
|
@ -0,0 +1,171 @@
|
|||
def homepage
|
||||
@items.find do |i|
|
||||
i.reps[0].path == %{/Scratch/#{@conf.language}/}
|
||||
end
|
||||
end
|
||||
|
||||
def sortedChildrenByMenuPriority(item)
|
||||
item.children.reject{|p| p[:isHidden]}.
|
||||
sort!{|x,y| x[:menupriority] <=> y[:menupriority]}
|
||||
end
|
||||
|
||||
def generateMenu
|
||||
home=homepage
|
||||
liste=[]
|
||||
liste<<=link_to_unless_current(home[:title],home.reps[0])
|
||||
sortedChildrenByMenuPriority(home).each do |page|
|
||||
liste <<= link_to_unless_current(page[:title],page.reps[0])
|
||||
end
|
||||
"<ul><li>"+liste.join("</li>\n<li>")+"</li></ul>"
|
||||
end
|
||||
|
||||
def depthOf(item)
|
||||
res=0
|
||||
while item.parent != nil
|
||||
res+=1
|
||||
item=item.parent
|
||||
end
|
||||
return res
|
||||
end
|
||||
|
||||
def getSortedChildren(parent)
|
||||
if parent[:kind] == "blog"
|
||||
return parent.children.reject{|p| p[:isHidden]}.sort!{|x,y| x[:created_at] <=> y[:created_at] }
|
||||
else
|
||||
return parent.children.reject{|p| p[:isHidden]}.sort!{|x,y| x[:menupriority] <=> y[:menupriority] }
|
||||
end
|
||||
end
|
||||
|
||||
def generateBlogSubMenu(language)
|
||||
year=0
|
||||
res=""
|
||||
liste=getSortedChildren(@item).reverse!.collect! do |p|
|
||||
if p[:created_at].strftime("%Y") != year
|
||||
if year != 0
|
||||
res<<=%{</ul><script type="text/javascript">$('#archives_#{year}').hide()</script>}
|
||||
end
|
||||
year=p[:created_at].strftime("%Y")
|
||||
res<<=%{<h4 style="cursor: pointer;" onclick="$('#archives_#{year}').slideToggle()">[#{year}]</h4><ul id="archives_#{year}">}
|
||||
end
|
||||
res<<='<li>'
|
||||
res<<=calendar_for(p[:created_at],language)+link_to_unless_current(p[:title],p)
|
||||
res<<='</li>'
|
||||
end
|
||||
res<<=%{</ul><script type="text/javascript">$('#archives_#{year}').hide()</script>}
|
||||
if ! liste.empty?
|
||||
'<div id="sousliens" class="archive">'+res+'</div>'
|
||||
else
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
def generateSubMenu()
|
||||
if @item[:noSubMenu]
|
||||
return
|
||||
end
|
||||
|
||||
depth=depthOf(@item)
|
||||
|
||||
if depth == 0
|
||||
return
|
||||
end
|
||||
|
||||
if @item.children.length == 0 and not @item.parent[:kind].to_s == "blog"
|
||||
page=@item.parent
|
||||
else
|
||||
page=@item
|
||||
end
|
||||
|
||||
if @item[:kind].to_s == "article"
|
||||
key=:subtitle
|
||||
else
|
||||
key=:title
|
||||
end
|
||||
|
||||
liste=getSortedChildren(page).collect do |p|
|
||||
link_to_unless_current(p[key]+' <span class="nicer">»</span>',p)
|
||||
end
|
||||
if ! liste.empty? then
|
||||
liste = [ link_to_unless_current(page[key]+' <span class="nicer">»</span>',page) ].concat( liste )
|
||||
'<div id="sousliens"><ul><li>'+liste.join('</li><li>')+'</li></ul></div>'
|
||||
else
|
||||
return
|
||||
end
|
||||
end
|
||||
# =======================
|
||||
|
||||
def blogimage(val,title="no name")
|
||||
if depthOf( @item ) == 3
|
||||
imgpath=@item.parent.path
|
||||
else
|
||||
imgpath=@item.path
|
||||
end
|
||||
imgpath=imgpath.sub(%r{/Scratch/../},'/Scratch/img/')+val
|
||||
return %{<img alt="#{title}" src="#{imgpath}"></img>}
|
||||
end
|
||||
|
||||
def leftblogimage(val,title="no name")
|
||||
if depthOf( @item ) == 3
|
||||
imgpath=@item.parent.path
|
||||
else
|
||||
imgpath=@item.path
|
||||
end
|
||||
imgpath=imgpath.sub(%r{/Scratch/../},'/Scratch/img/')+val
|
||||
return %{<img class="left" alt="#{title}" src="#{imgpath}"></img>}
|
||||
end
|
||||
|
||||
def lnkto(title,item)
|
||||
language=@item_rep.path.sub(/\/Scratch\//,'').sub(/\/.*$/,'')
|
||||
link_to(title, "/Scratch/#{language}"+item)
|
||||
end
|
||||
|
||||
def nextFor(page)
|
||||
depth=depthOf(page)
|
||||
|
||||
case depth
|
||||
when 0..1 then return nil
|
||||
when 2 then target=getSortedChildren(page)[0]
|
||||
else
|
||||
sorted_children=getSortedChildren(page.parent)
|
||||
index=sorted_children.index(page)
|
||||
target=sorted_children[ index + 1]
|
||||
if target.nil?
|
||||
return nil
|
||||
end
|
||||
end
|
||||
link_to(tradOf(:next)+%{ <span class="nicer">»</span>}, target)
|
||||
end
|
||||
|
||||
# return the previous page of a post containing many
|
||||
def previousFor(page)
|
||||
if depthOf(page) < 3
|
||||
return nil
|
||||
end
|
||||
|
||||
sorted_children=getSortedChildren(page.parent)
|
||||
index=sorted_children.index(page)
|
||||
if index==0
|
||||
target=page.parent
|
||||
else
|
||||
target=sorted_children[ index - 1 ]
|
||||
end
|
||||
link_to(%{<span class="nicer">«</span> }+tradOf(:previous), target)
|
||||
end
|
||||
|
||||
def brother_for_at(page,n)
|
||||
brothers=getSortedChildren(page.parent)
|
||||
i=brothers.index(page)
|
||||
if i.nil?
|
||||
return nil
|
||||
end
|
||||
brothers[ brothers.index(page) + n ]
|
||||
end
|
||||
|
||||
def article_brother(n)
|
||||
if depthOf(@item) > 2
|
||||
page=@item.parent
|
||||
else
|
||||
page=@item
|
||||
end
|
||||
brother_for_at(page,n)
|
||||
end
|
30
lib/repair_html.rb
Normal file
|
@ -0,0 +1,30 @@
|
|||
# All files in the 'lib' directory will be loaded
|
||||
# before nanoc starts compiling.
|
||||
|
||||
# repair cutted XML code by closing the tags
|
||||
# work even if the XML is cut into a tag.
|
||||
# example:
|
||||
# transform '<div> <code> toto </code> <p> hello <a href="http://tur'
|
||||
# into '<div> <code> toto </code> <p> hello </p></div>'
|
||||
def repair_html( html )
|
||||
parents=[]
|
||||
depth=0
|
||||
html.scan( %r{<(/?)(\w*)[^>]*(/?)>} ).each do |m|
|
||||
if m[2] == "/"
|
||||
next
|
||||
end
|
||||
if m[0] == ""
|
||||
parents[depth]=m[1]
|
||||
depth+=1
|
||||
# puts '<'+m[0]+m[1]+'> ' + depth.to_s
|
||||
# puts 'parents='+parents.join('; ')
|
||||
else
|
||||
depth-=1
|
||||
# puts '<'+m[0]+m[1]+'> ' + depth.to_s
|
||||
end
|
||||
end
|
||||
res=html.sub(/<[^>]*$/m,'')
|
||||
depth-=1
|
||||
depth.downto(0).each { |x| res<<= %{</#{parents[x]}>} }
|
||||
res
|
||||
end
|
68
lib/syntaxColorize.rb
Normal file
|
@ -0,0 +1,68 @@
|
|||
module Nanoc3::Helpers
|
||||
|
||||
module SyntaxColorize
|
||||
|
||||
require 'nanoc3/helpers/capturing'
|
||||
include Nanoc3::Helpers::Capturing
|
||||
|
||||
def syntax_colorize(lang, type=:ultraviolet, &block)
|
||||
# Capture block
|
||||
data = capture(&block)
|
||||
|
||||
# Remove whitespace
|
||||
lines = data.split("\n")
|
||||
min_indent = lines.inject(nil) do |memo, line|
|
||||
next memo if line =~ /^\s*$/
|
||||
next memo if line !~ /^(\s*)/
|
||||
[ memo, $1.size ].compact.min
|
||||
end
|
||||
lines.each do |line|
|
||||
line[0,min_indent] = ''
|
||||
end
|
||||
data = lines.join("\n")
|
||||
|
||||
# Process
|
||||
case type
|
||||
when :ultraviolet
|
||||
begin
|
||||
require 'uv'
|
||||
if lang =~ /^(zsh|bash|sh|csh|shell)$/
|
||||
lang='shell-unix-generic'
|
||||
end
|
||||
filtered_data = Uv.parse(data, 'xhtml', lang, false, 'twilight')
|
||||
rescue LoadError
|
||||
unless $_WARNED_ABOUT_ULTRAVIOLET
|
||||
warn "WARNING: Couldn't load uv; please install the ultraviolet gem. This message will not appear again."
|
||||
end
|
||||
$_WARNED_ABOUT_ULTRAVIOLET = true
|
||||
|
||||
filtered_data = '<pre class="no-uv">' + h(data) + '</pre>'
|
||||
end
|
||||
|
||||
# Convert to HTML
|
||||
filtered_data = filtered_data.strip.sub(%r{/ ?>}, '>') # convert to HTML
|
||||
|
||||
# Add missing <code> in <pre>
|
||||
filtered_data.sub!(/^\s*(<pre class="[^<]+">)\s*/) { |m| "#{m}<code>" }
|
||||
filtered_data.sub!(/\s*(<\/pre>)\s*$/) { |m| "</code>#{m}" }
|
||||
when :coderay
|
||||
# Find filter
|
||||
klass = Nanoc3::Filter.named(:coderay)
|
||||
filter = klass.new(@item_rep.assigns)
|
||||
|
||||
# Filter captured data
|
||||
filtered_data = filter.run(data, :language => lang).strip
|
||||
else
|
||||
raise ArgumentError, "invalid type: #{type}"
|
||||
end
|
||||
|
||||
# Append filtered data to buffer
|
||||
buffer = eval('_erbout', block.binding)
|
||||
buffer << '<pre><code>' if type == :coderay
|
||||
buffer << filtered_data
|
||||
buffer << '</code></pre>' if type == :coderay
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
104
lib/tag.rb
Normal file
|
@ -0,0 +1,104 @@
|
|||
# All files in the 'lib' directory will be loaded
|
||||
# before nanoc starts compiling.
|
||||
|
||||
# module Tags
|
||||
def tags
|
||||
if @item[:tags].nil?
|
||||
return ''
|
||||
end
|
||||
@item[:tags].join(', ')
|
||||
end
|
||||
|
||||
def alltags
|
||||
language=@item.path
|
||||
language =~ %r{/Scratch/([^/]*)/}
|
||||
language = $1
|
||||
@items.select {|p| p.path =~ %r{/Scratch/#{language}/} and p[:kind].to_s == "article" and p.parent[:kind].to_s == 'blog'}
|
||||
end
|
||||
|
||||
def tagNumber
|
||||
tags={}
|
||||
alltags.each do |p|
|
||||
if p[:tags].nil?
|
||||
next
|
||||
end
|
||||
p[:tags].each do |t|
|
||||
if tags[t]
|
||||
tags[t]+=1
|
||||
else
|
||||
tags[t]=1
|
||||
end
|
||||
end
|
||||
end
|
||||
return tags
|
||||
end
|
||||
|
||||
def tagRefs
|
||||
tagLinks={}
|
||||
alltags.each do |p|
|
||||
if p[:tags].nil?
|
||||
next
|
||||
end
|
||||
p[:tags].each do |t|
|
||||
if tagLinks[t].nil?
|
||||
tagLinks[t]=[ p ]
|
||||
else
|
||||
tagLinks[t] <<= p
|
||||
end
|
||||
end
|
||||
end
|
||||
return tagLinks
|
||||
end
|
||||
|
||||
def tagCloud(minval=0)
|
||||
tags=tagNumber.reject { |k,v| v<minval }
|
||||
tagLinks=tagRefs.reject { |k,v| tags[k].nil? }
|
||||
max=tags.values.max
|
||||
min=tags.values.min
|
||||
minSize=1.0
|
||||
maxSize=2.5
|
||||
tagSize={}
|
||||
tags.each do |t,n|
|
||||
# valeur normalisée entre 0 et 1
|
||||
if ( max == min )
|
||||
tagSize[t]=minSize
|
||||
else
|
||||
tagSize[t]=[ ( n - min + 0.0 ) / ( max - min ) , (n - min) / 10.0 ].min
|
||||
# valeur adaptée entre minSize et maxSize
|
||||
tagSize[t]=( tagSize[t] ) * (maxSize - minSize) + minSize
|
||||
end
|
||||
end
|
||||
tagCloud=%{<script type="text/javascript">
|
||||
$(document).ready( function(){$('.list').hide();$('#tagcloud a').removeAttr("href")} );
|
||||
function tagSelected(id) {
|
||||
$('.list').hide();
|
||||
$('#'+id).fadeIn();
|
||||
$('.tag.selected').removeClass('selected');
|
||||
$('#tag_'+id).addClass('selected');
|
||||
}
|
||||
</script><div id="tagcloud">}
|
||||
tagSize.sort{|a,b| a[0].downcase <=> b[0].downcase}.each do |t,s|
|
||||
protected=t.gsub(/\W/,'_')
|
||||
grouped=t.gsub(/&/,'&').gsub(/ /,' ').gsub(/</,'<').gsub(/>/,'>')
|
||||
tagCloud <<= %{<a href="##{protected}" style="font-size: #{s}em;" class="tag" onclick="tagSelected('#{protected}')" id="tag_#{protected}">#{grouped}</a> }
|
||||
end
|
||||
tagCloud <<= %{</div><div id="hiddenDivs" >}
|
||||
language=@item.path
|
||||
language =~ %r{/Scratch/([^/]*)/}
|
||||
language = $1
|
||||
tagLinks.sort{|a,b| a[0].downcase <=> b[0].downcase}.each do |t,l|
|
||||
protected=t.gsub(/\W/,'_')
|
||||
tagCloud <<= %{<div id="#{protected}" class="list"><h4>#{t} <a href="#tagcloud">↑</a></h4><ul style="list-style-type: none; margin: 0;">}
|
||||
l.sort{|x,y| y[:created_at] <=> x[:created_at]}.each do |p|
|
||||
tagCloud <<= %{
|
||||
<li style="line-height: 3em; margin: 0;">
|
||||
#{calendar_for(p[:created_at], language)}
|
||||
<a href="#{p.path}">#{p[:title]}</a>
|
||||
</li>\n}
|
||||
end
|
||||
tagCloud <<= %{</ul></div>}
|
||||
end
|
||||
tagCloud <<= %{</div>}
|
||||
return tagCloud
|
||||
end
|
||||
# end
|
40
lib/ultraviolet.rb
Normal file
|
@ -0,0 +1,40 @@
|
|||
class UltraVioletFilter < Nanoc3::Filter
|
||||
identifier :ultraviolet
|
||||
|
||||
def run(content, params={})
|
||||
require 'rubygems'
|
||||
require 'uv'
|
||||
code_rule = %r{(<code class="([^"]+?)"( file="([^"]+?)")?>(.+?)</code>)}m
|
||||
new_content=content.gsub(code_rule) do |full|
|
||||
@lang, @filename, @code = $2, $4, $5
|
||||
if @lang =~ /^(zsh|bash|sh|csh|shell)$/
|
||||
@lang='shell-unix-generic'
|
||||
end
|
||||
@codeprefix=''
|
||||
@codesuffix=''
|
||||
if not @filename.nil? and @filename != ""
|
||||
create_file_for_code
|
||||
end
|
||||
@codeprefix+
|
||||
Uv.parse(@code, "xhtml", @lang, false, @config[:ultraviolet_theme])+
|
||||
@codesuffix
|
||||
end
|
||||
return new_content
|
||||
end
|
||||
|
||||
private
|
||||
def create_file_for_code
|
||||
# Create a plaintext file version for download.
|
||||
webpath = @item.path
|
||||
|
||||
url = webpath + 'code/' + @filename
|
||||
@codeprefix=%{<div class="code"><div class="file"><a href="#{url}"> ➥ #{@filename} </a></div><div class="withfile">\n}
|
||||
@codesuffix=%{\n</div></div>}
|
||||
|
||||
code_path = "output#{webpath}code"
|
||||
puts %{\t\tEcriture de #{code_path}/#{@filename}}
|
||||
FileUtils.mkdir_p code_path
|
||||
File.open(%{#{code_path}/#{@filename}}, 'w'){|f|f.write(@code)}
|
||||
end
|
||||
|
||||
end
|
166
lib/y.rb
Normal file
|
@ -0,0 +1,166 @@
|
|||
# All files in the 'lib' directory will be loaded
|
||||
# before nanoc starts compiling.
|
||||
|
||||
def allExceptCode( f, content )
|
||||
regexp=/<code[^>]*>.*?<\/code>/m
|
||||
tmp=""
|
||||
mem=[]
|
||||
content.scan(regexp).each do |c|
|
||||
mem <<= c
|
||||
end
|
||||
i=0
|
||||
content.split(regexp).each do |x|
|
||||
tmp <<= send(f,x)
|
||||
if not mem[i].nil?
|
||||
tmp <<= mem[i]
|
||||
i+=1
|
||||
end
|
||||
end
|
||||
tmp
|
||||
end
|
||||
|
||||
module Nanoc3::Filters
|
||||
class MathJaxKramdownRepair < Nanoc3::Filter
|
||||
identifiers :math_repair
|
||||
|
||||
def description(content)
|
||||
content.gsub(/<div class="math">(.+?)<\/div>/m) do
|
||||
return %{$$ #{$1} $$}
|
||||
end
|
||||
end
|
||||
|
||||
def run(content, params={})
|
||||
allExceptCode( :description , content )
|
||||
end
|
||||
end
|
||||
|
||||
class Description < Nanoc3::Filter
|
||||
identifiers :description
|
||||
|
||||
def description(content)
|
||||
content.gsub(/^\s*<desc( [^>]*)?>(.+?)<\/desc>/m) do
|
||||
n=0
|
||||
if $1 then
|
||||
summary=$1
|
||||
summary.slice!(0)
|
||||
else
|
||||
summary="no description"
|
||||
end
|
||||
'<div><table class="description" summary="'+summary+'">'+$2.gsub(/([^:]+):(.+?)::/m) do
|
||||
n+=1
|
||||
if n % 2 == 0
|
||||
sombre=' class="assombris10"'
|
||||
else
|
||||
sombre=' class="assombris20"'
|
||||
end
|
||||
'<tr'+sombre+'><td class="definitionCell">'+$1+'</td><td class="valueCell">'+$2+'</td></tr>'
|
||||
end+'</table></div>'
|
||||
end
|
||||
end
|
||||
|
||||
def run(content, params={})
|
||||
allExceptCode( :description , content )
|
||||
end
|
||||
end
|
||||
|
||||
class FrenchSpace < Nanoc3::Filter
|
||||
identifiers :frenchspace
|
||||
def ameliorate(content)
|
||||
content.gsub(/ ([:;!?]|&eq;|≠)/) { " "+$1 }
|
||||
end
|
||||
def run(content, params={})
|
||||
allExceptCode( :ameliorate, content )
|
||||
end
|
||||
end
|
||||
|
||||
class Footnotes < Nanoc3::Filter
|
||||
identifiers :footnotes
|
||||
def hr_before_footnote(content)
|
||||
content.gsub(/<div class="footnotes">/) { %{<hr/>#{$&}} }
|
||||
end
|
||||
def run(content, params={})
|
||||
allExceptCode( :hr_before_footnote, content )
|
||||
end
|
||||
end
|
||||
|
||||
class FirstHierarchy < Nanoc3::Filter
|
||||
identifiers :firsthi
|
||||
def run(content, params={})
|
||||
content.gsub(/\A(\s|\n)*<h[1-4]/m)do
|
||||
$& + ' class="first"'
|
||||
end.gsub(/<div[^>]*class="corps"[^>]*>(\s)*<h[1-4]/m) do
|
||||
$& + ' class="first"'
|
||||
end.gsub(/class="first" class="first"/) do
|
||||
'class="first"'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class YTypography < Nanoc3::Filter
|
||||
identifiers :ytypo
|
||||
def ytypofunc(content)
|
||||
content.gsub(/<sc>(.*?)<\/sc>/m) do
|
||||
%{<span class="sc">}+$1+%{</span>}
|
||||
end.gsub(/''(.*?)''/m)do
|
||||
%{<code>}+$1+%{</code>}
|
||||
end.gsub(/\(c\)/) do
|
||||
%{<small>©</small>}
|
||||
end.gsub(/\(r\)/) do
|
||||
%{<small>®</small>}
|
||||
end.gsub(/-(>|>)/) do
|
||||
%{→}
|
||||
end.gsub(/(<|<)-/) do
|
||||
%{←}
|
||||
end
|
||||
end
|
||||
def run(content, params={})
|
||||
allExceptCode( :ytypofunc, content )
|
||||
end
|
||||
end
|
||||
|
||||
class YAbbreviations < Nanoc3::Filter
|
||||
identifiers :yabbreviations
|
||||
def makeabbreviations(text)
|
||||
{
|
||||
'WebDav' => 'Web-based Distributed Authoring and Versionning',
|
||||
'cms' => 'Content Management System',
|
||||
'xml' => 'eXtended Markup Language',
|
||||
}.each do |keyword,abbreviation|
|
||||
text=text.gsub(/\b#{keyword}\b/i) do
|
||||
%{<abbr title="#{abbreviation}"><span class="sc">#{keyword}</span></abbr>}
|
||||
end
|
||||
end
|
||||
return text
|
||||
end
|
||||
|
||||
def run(content, params={})
|
||||
allExceptCode(:makeabbreviations, content )
|
||||
end
|
||||
end
|
||||
|
||||
class MultiCorps < Nanoc3::Filter
|
||||
identifiers :multicorps
|
||||
def run(content, params={})
|
||||
content.gsub(/^.*newcorps.*$/) do
|
||||
%{\n</div>\n\n<div class="corps">\n}
|
||||
end.gsub(/^.*begindiv\((.*)\).*$/) do
|
||||
%{\n<div class="#{$1}">\n}
|
||||
end.gsub(/^.*enddiv.*$/) do
|
||||
%{\n</div>\n}
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def block(title, url, text, position="left")
|
||||
return %{<div class="block #{position}">
|
||||
<h3>
|
||||
<a href="#{url}"> #{title}
|
||||
<span class="nicer">»</span>
|
||||
</a>
|
||||
</h3>
|
||||
<p>
|
||||
#{text}
|
||||
</p>
|
||||
</div>}
|
||||
end
|
0
output/Scratch/blank.html
Normal file
216
output/Scratch/css/blue.css
Normal file
|
@ -0,0 +1,216 @@
|
|||
/* pour supprimer les warnings */
|
||||
|
||||
#choixlang, #entete, #sousliens {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/* body */
|
||||
body {
|
||||
margin: 0 10px;
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
font-size: 1em ;
|
||||
}
|
||||
|
||||
/* links */
|
||||
a:link {
|
||||
color: #00f;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #00a;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #f60;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a:active {
|
||||
color: #f60;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* html tags */
|
||||
th, td, ul, ol, li {
|
||||
font-size: 1em ;
|
||||
}
|
||||
|
||||
code, pre {
|
||||
font-size: .8em;
|
||||
}
|
||||
|
||||
/* Work around IE/Win code size bug - courtesy Jesper, waffle.wootest.net */
|
||||
|
||||
* html code {
|
||||
font-size: 101%;
|
||||
}
|
||||
|
||||
* html pre {
|
||||
font-size: 101%;
|
||||
}
|
||||
|
||||
h1 code, h2 code, h3 code, h4 code, th code, ol.faq li code { font-size: 95%; font-weight: normal; }
|
||||
|
||||
h1 {
|
||||
margin: 0 0 15px 0;
|
||||
padding: 0.5em;
|
||||
font-size: 2em ;
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin: 0 0 5px 0;
|
||||
padding: 0;
|
||||
font-size: 1.3em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
#header h2 {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
p + h2 {
|
||||
margin: 20px 0 5px 0;
|
||||
}
|
||||
|
||||
ol + h2 {
|
||||
margin: 20px 0 5px 0;
|
||||
}
|
||||
|
||||
ul + h2 {
|
||||
margin: 20px 0 5px 0;
|
||||
}
|
||||
|
||||
h6 {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-size: 1em ;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0 0 10px 0;
|
||||
padding: 0;
|
||||
font-size: 1em ;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
cite {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
th {
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
form {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
button {
|
||||
margin: 3px 0 10px 0;
|
||||
}
|
||||
|
||||
/* lists */
|
||||
ul {
|
||||
list-style: square outside;
|
||||
margin: 0 0 0 30px;
|
||||
padding: 0 0 1em 0;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
ul ul {
|
||||
margin-left: 40px;
|
||||
}
|
||||
|
||||
ul.compressed {
|
||||
margin-top: -10px;
|
||||
}
|
||||
|
||||
ul.compressed li {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ul.marketing {
|
||||
padding-left: 0;
|
||||
margin: 0 0 16px 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
ul.marketing li {
|
||||
margin-top: 0;
|
||||
margin-left: 0;
|
||||
margin-bottom: 2px;
|
||||
font-size: .8em;
|
||||
}
|
||||
|
||||
ol {
|
||||
margin: 0 0 10px 1.5em;
|
||||
padding-left: 1.5em;
|
||||
}
|
||||
|
||||
ul.inline, ol.inline, p.inline {
|
||||
margin-top: -7px;
|
||||
}
|
||||
|
||||
ul.inline ul, ul.inline ol, ol.inline ul, ol.inline ol {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ol.faq li {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ol.steps li {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ul.nav {
|
||||
margin: 8px 0 0;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
ul.nav li {
|
||||
margin-top: 4px;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
ul.nobullet {
|
||||
list-style-type: none;
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
ul.nobullet li {
|
||||
margin: 3px 0 5px;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
/* images */
|
||||
.leftinline {
|
||||
margin: 0 10px 5px 0;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.rightinline {
|
||||
margin: 0 0 5px 10px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
|
||||
#choixlang, #choix, #liens, #sousliens, #address, #presentation, #Menu, #bottom, #entete, h4 {
|
||||
border-color: #000 ;
|
||||
}
|
||||
#presentation, #Menu, #entete {
|
||||
background-color : #f1F7F9;
|
||||
}
|
229
output/Scratch/css/default.css
Normal file
|
@ -0,0 +1,229 @@
|
|||
/* pour supprimer les warnings */
|
||||
|
||||
#choixlang, #entete, #sousliens {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/* body */
|
||||
body {
|
||||
margin: 0 10px;
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
font-size: 1em ;
|
||||
}
|
||||
|
||||
.highlight {
|
||||
color: #f60;
|
||||
}
|
||||
|
||||
|
||||
/* links */
|
||||
a:link {
|
||||
color: #00f;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #00a;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #f60;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a:active {
|
||||
color: #f60;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* html tags */
|
||||
th, td, ul, ol, li {
|
||||
font-size: 1em ;
|
||||
}
|
||||
|
||||
code, pre {
|
||||
font-size: .8em;
|
||||
}
|
||||
|
||||
/* Work around IE/Win code size bug - courtesy Jesper, waffle.wootest.net */
|
||||
|
||||
* html code {
|
||||
font-size: 101%;
|
||||
}
|
||||
|
||||
* html pre {
|
||||
font-size: 101%;
|
||||
}
|
||||
|
||||
h1 code, h2 code, h3 code, h4 code, th code, ol.faq li code { font-size: 95%; font-weight: normal; }
|
||||
|
||||
h1 {
|
||||
margin: 0 0 15px 0;
|
||||
padding: 0.5em;
|
||||
font-size: 2em ;
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin: 0 0 5px 0;
|
||||
padding: 0;
|
||||
font-size: 1.3em;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
#header h2 {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
p + h2 {
|
||||
margin: 20px 0 5px 0;
|
||||
}
|
||||
|
||||
ol + h2 {
|
||||
margin: 20px 0 5px 0;
|
||||
}
|
||||
|
||||
ul + h2 {
|
||||
margin: 20px 0 5px 0;
|
||||
}
|
||||
|
||||
h6 {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-size: 1em ;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0 0 10px 0;
|
||||
padding: 0;
|
||||
font-size: 1em ;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
cite {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
th {
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
form {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
button {
|
||||
margin: 3px 0 10px 0;
|
||||
}
|
||||
|
||||
/* lists */
|
||||
ul {
|
||||
list-style: square outside;
|
||||
margin: 0 0 0 30px;
|
||||
padding: 0 0 1em 0;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
ul ul {
|
||||
margin-left: 40px;
|
||||
}
|
||||
|
||||
ul.compressed {
|
||||
margin-top: -10px;
|
||||
}
|
||||
|
||||
ul.compressed li {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ul.marketing {
|
||||
padding-left: 0;
|
||||
margin: 0 0 16px 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
ul.marketing li {
|
||||
margin-top: 0;
|
||||
margin-left: 0;
|
||||
margin-bottom: 2px;
|
||||
font-size: .8em;
|
||||
}
|
||||
|
||||
ol {
|
||||
margin: 0 0 10px 1.5em;
|
||||
padding-left: 1.5em;
|
||||
}
|
||||
|
||||
ul.inline, ol.inline, p.inline {
|
||||
margin-top: -7px;
|
||||
}
|
||||
|
||||
ul.inline ul, ul.inline ol, ol.inline ul, ol.inline ol {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ol.faq li {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ol.steps li {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ul.nav {
|
||||
margin: 8px 0 0;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
ul.nav li {
|
||||
margin-top: 4px;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
ul.nobullet {
|
||||
list-style-type: none;
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
ul.nobullet li {
|
||||
margin: 3px 0 5px;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
/* images */
|
||||
.leftinline {
|
||||
margin: 0 10px 5px 0;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.rightinline {
|
||||
margin: 0 0 5px 10px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
|
||||
#choixlang, #choix, #liens, #sousliens, #address, #presentation, #Menu, #bottom, #entete, h4 {
|
||||
border-color: #000 ;
|
||||
}
|
||||
#presentation, #Menu, #entete {
|
||||
background-color : #f1F7F9;
|
||||
}
|
||||
/*
|
||||
h1, h2, #choixlang, #choix, #liens, #sousliens {
|
||||
background-color: #F0F5F9 ;
|
||||
}
|
||||
h3, h4, h5, h6 {
|
||||
background-color: #FFF ;
|
||||
}
|
||||
*/
|
48
output/Scratch/css/disqus.css
Normal file
|
@ -0,0 +1,48 @@
|
|||
#disqus_thread .dsq-by img {
|
||||
display: inline;
|
||||
float: right;
|
||||
text-align: right;
|
||||
border: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
#disqus_thread img {
|
||||
display: inline;
|
||||
border: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
.dsq-post-avatar {
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: 3em;
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
#disqus_thread ul {
|
||||
margin-left: 8em;
|
||||
}
|
||||
#dsq-toolbar-item {
|
||||
clear: both;
|
||||
}
|
||||
#disqus_thread input.dsq-trackback-url {
|
||||
width: 30em;
|
||||
}
|
||||
#disqus_thread #dsq-content #dsq-post-add iframe {
|
||||
width: 100%;
|
||||
height: 18em;
|
||||
}
|
||||
#disqus_thread h3 {
|
||||
clear: none;
|
||||
}
|
||||
.dsq-item-feed a {
|
||||
background-image: url("/Scratch/img/bullet-feed.png");
|
||||
background-repeat: no-repeat;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
}
|
||||
#disqus_thread .dsq-item-feed a img {
|
||||
display: none;
|
||||
}
|
2
output/Scratch/css/iPhone.css
Normal file
|
@ -0,0 +1,2 @@
|
|||
#content { width: 100%; font-size: 20px; }
|
||||
.corps { padding-right: 2px; padding-left: 2px;}
|
8
output/Scratch/css/idc.css
Normal file
|
@ -0,0 +1,8 @@
|
|||
#idc-container-parent h3 {
|
||||
display: inline;
|
||||
left: auto;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
-webkit-box-shadow: none;
|
||||
}
|
77
output/Scratch/css/ie.css
Normal file
|
@ -0,0 +1,77 @@
|
|||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, font, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
outline: 0;
|
||||
font-size: 100%;
|
||||
vertical-align: baseline;
|
||||
background: transparent;
|
||||
}
|
||||
body { line-height: 1; }
|
||||
ol, ul { list-style: none; }
|
||||
blockquote, q { quotes: none; }
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after { content: ''; content: none; }
|
||||
|
||||
/* remember to define focus styles! */
|
||||
:focus { outline: 0; }
|
||||
|
||||
/* remember to highlight inserts somehow! */
|
||||
ins { text-decoration: none; }
|
||||
del { text-decoration: line-through; }
|
||||
|
||||
/* tables still need 'cellspacing="0"' in the markup */
|
||||
table { border-collapse: collapse; border-spacing: 0; }
|
||||
|
||||
/* --- recuperation des couleurs --- */
|
||||
|
||||
body {
|
||||
font-family: "Sabon LT Std","Hoefler Text","Palatino Linotype","Book Antiqua",serif;
|
||||
background-color: #fff;
|
||||
color: #000; }
|
||||
|
||||
a {
|
||||
font-weight: bold;
|
||||
text-decoration: none; }
|
||||
|
||||
a, a:link {
|
||||
color: #a00;
|
||||
outline: none; }
|
||||
|
||||
a:visited {
|
||||
color: #a00;
|
||||
outline: none; }
|
||||
|
||||
a:active, a:hover {
|
||||
color: #f00;
|
||||
outline: none; }
|
||||
|
||||
ul {
|
||||
list-style: square; }
|
||||
|
||||
.corps {
|
||||
text-align: justify;
|
||||
border: solid 1px #ccc;
|
||||
line-height: 1.8em;
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
pre {
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
background-color: #000;
|
||||
}
|
||||
#iemessage {
|
||||
margin-bottom: 1em;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
#liens ul{list-style:none;}
|
||||
#liens ul li{width: 22%; display: inline}
|
BIN
output/Scratch/css/img/background.png
Normal file
After Width: | Height: | Size: 761 B |
BIN
output/Scratch/css/img/codeColor.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
output/Scratch/css/img/mainColor.png
Normal file
After Width: | Height: | Size: 163 KiB |
BIN
output/Scratch/css/img/revealColor.png
Normal file
After Width: | Height: | Size: 214 KiB |
BIN
output/Scratch/css/img/secondColor.png
Normal file
After Width: | Height: | Size: 160 KiB |
BIN
output/Scratch/css/img/separator.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
4
output/Scratch/css/js.css
Normal file
|
@ -0,0 +1,4 @@
|
|||
.en, .fr {
|
||||
display: none;
|
||||
}
|
||||
|
21
output/Scratch/css/nojs.css
Normal file
|
@ -0,0 +1,21 @@
|
|||
.navigationprev, .navigationnext {
|
||||
text-shadow: 0 0 8px #666;
|
||||
}
|
||||
.corps, #bottom, #sousliens {
|
||||
box-shadow: 0px 5px 20px #333;
|
||||
-moz-box-shadow: 0px 5px 20px #333;
|
||||
-webkit-box-shadow: 0px 5px 20px #333;
|
||||
}
|
||||
#titre {
|
||||
box-shadow: 0px 0px 20px #000;
|
||||
-moz-box-shadow: 0px 0px 20px #000;
|
||||
-webkit-box-shadow: 0px 0px 20px #000;
|
||||
}
|
||||
#entete {
|
||||
position: relative;
|
||||
top: -1.5em;
|
||||
}
|
||||
|
||||
#content {
|
||||
margin-top: 2em;
|
||||
}
|
1446
output/Scratch/css/originaldisqus.css
Normal file
8
output/Scratch/css/shadows.css
Normal file
|
@ -0,0 +1,8 @@
|
|||
.navigationprev, .navigationnext {
|
||||
text-shadow: 0 0 3px #aaa; }
|
||||
#titre, h1 {
|
||||
text-shadow: 0px 0px 3px #333; }
|
||||
.corps, #bottom, #sousliens, .date{
|
||||
box-shadow: 0px 2px 5px #333; }
|
||||
#titre, #entete {
|
||||
box-shadow: 0px 0px 5px #000; }
|
141
output/Scratch/css/twilight.css
Normal file
|
@ -0,0 +1,141 @@
|
|||
pre.twilight {
|
||||
padding: .8em;
|
||||
}
|
||||
|
||||
pre.twilight .DiffInserted {
|
||||
/* background-color: #253B22; */
|
||||
color: #F8F8F8;
|
||||
}
|
||||
pre.twilight .DiffHeader {
|
||||
/* background-color: #0E2231; */
|
||||
color: #F8F8F8;
|
||||
font-style: italic;
|
||||
}
|
||||
pre.twilight .CssPropertyValue {
|
||||
color: #F9EE98;
|
||||
}
|
||||
pre.twilight .CCCPreprocessorDirective {
|
||||
color: #AFC4DB;
|
||||
}
|
||||
pre.twilight .Constant {
|
||||
color: #CF6A4C;
|
||||
}
|
||||
pre.twilight .DiffChanged {
|
||||
/* background-color: #4A410D; */
|
||||
color: #F8F8F8;
|
||||
}
|
||||
pre.twilight .EmbeddedSource {
|
||||
/* background-color: #A3A6AD; */
|
||||
}
|
||||
pre.twilight .Support {
|
||||
color: #9B859D;
|
||||
}
|
||||
pre.twilight .MarkupList {
|
||||
color: #F9EE98;
|
||||
}
|
||||
pre.twilight .CssConstructorArgument {
|
||||
color: #8F9D6A;
|
||||
}
|
||||
pre.twilight .Storage {
|
||||
color: #F9EE98;
|
||||
}
|
||||
pre.twilight .line-numbers {
|
||||
/* background-color: #DDF0FF; */
|
||||
color: #000000;
|
||||
}
|
||||
pre.twilight .CssClass {
|
||||
color: #9B703F;
|
||||
}
|
||||
pre.twilight .StringConstant {
|
||||
color: #DDF2A4;
|
||||
}
|
||||
pre.twilight .CssAtRule {
|
||||
color: #8693A5;
|
||||
}
|
||||
pre.twilight .MetaTagInline {
|
||||
color: #E0C589;
|
||||
}
|
||||
pre.twilight .MarkupHeading {
|
||||
color: #CF6A4C;
|
||||
}
|
||||
pre.twilight .CssTagName {
|
||||
color: #CDA869;
|
||||
}
|
||||
pre.twilight .SupportConstant {
|
||||
color: #CF6A4C;
|
||||
}
|
||||
pre.twilight .DiffDeleted {
|
||||
/* background-color: #420E09; */
|
||||
color: #F8F8F8;
|
||||
}
|
||||
pre.twilight .CCCPreprocessorLine {
|
||||
color: #8996A8;
|
||||
}
|
||||
pre.twilight .StringRegexpSpecial {
|
||||
color: #CF7D34;
|
||||
}
|
||||
pre.twilight .EmbeddedSourceBright {
|
||||
/* background-color: #9C9EA4; */
|
||||
}
|
||||
pre.twilight .InvalidIllegal {
|
||||
/* background-color: #241A24; */
|
||||
color: #F8F8F8;
|
||||
}
|
||||
pre.twilight .SupportFunction {
|
||||
color: #DAD085;
|
||||
}
|
||||
pre.twilight .CssAdditionalConstants {
|
||||
color: #CA7840;
|
||||
}
|
||||
pre.twilight .MetaTagAll {
|
||||
color: #AC885B;
|
||||
}
|
||||
pre.twilight .StringRegexp {
|
||||
color: #E9C062;
|
||||
}
|
||||
pre.twilight .StringEmbeddedSource {
|
||||
color: #DAEFA3;
|
||||
}
|
||||
pre.twilight .EntityInheritedClass {
|
||||
color: #9B5C2E;
|
||||
font-style: italic;
|
||||
}
|
||||
pre.twilight .CssId {
|
||||
color: #8B98AB;
|
||||
}
|
||||
pre.twilight .CssPseudoClass {
|
||||
color: #8F9D6A;
|
||||
}
|
||||
pre.twilight .StringVariable {
|
||||
color: #8A9A95;
|
||||
}
|
||||
pre.twilight .String {
|
||||
color: #8F9D6A;
|
||||
}
|
||||
pre.twilight .Keyword {
|
||||
color: #CDA869;
|
||||
}
|
||||
pre.twilight {
|
||||
/* background-color: #141414; */
|
||||
color: #F8F8F8;
|
||||
}
|
||||
pre.twilight .CssPropertyName {
|
||||
color: #C5AF75;
|
||||
}
|
||||
pre.twilight .DoctypeXmlProcessing {
|
||||
color: #494949;
|
||||
}
|
||||
pre.twilight .InvalidDeprecated {
|
||||
color: #D2A8A1;
|
||||
font-style: italic;
|
||||
}
|
||||
pre.twilight .Variable {
|
||||
color: #7587A6;
|
||||
}
|
||||
pre.twilight .Entity {
|
||||
color: #9B703F;
|
||||
}
|
||||
pre.twilight .Comment {
|
||||
color: #5F5A60;
|
||||
font-style: italic;
|
||||
}
|
267
output/Scratch/css/y.css
Normal file
|
@ -0,0 +1,267 @@
|
|||
/* Les couleurs */
|
||||
body {
|
||||
background-color: #444;
|
||||
background-image: url("img/bords.jpg");
|
||||
color: #fff;
|
||||
font-size: 1em ;
|
||||
}
|
||||
a {font-weight: bold; text-decoration: none; }
|
||||
|
||||
.corps h1 { font-variant: small-caps; }
|
||||
|
||||
#lastmod {
|
||||
color: #999;
|
||||
font-size: .8em;
|
||||
}
|
||||
|
||||
#content {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
|
||||
/* Basé sur 3 couleurs, gris foncé, gris clair et rouge foncé */
|
||||
/* noir: #222 */
|
||||
/* rouge: #a00 */
|
||||
/* blanc: #ccc */
|
||||
|
||||
/* fond blancs */
|
||||
#liens,
|
||||
#sousliens,
|
||||
#choix,
|
||||
.corps {
|
||||
background-image: url("img/white.jpg");
|
||||
background-repeat: no-repeat;
|
||||
background-color: #ccc;
|
||||
border-color: #ddd;
|
||||
color: #222;
|
||||
}
|
||||
|
||||
/* centré verticalement et horizontalement */
|
||||
#liens,
|
||||
#sousliens,
|
||||
#choix {
|
||||
background-position: 50% 50%;
|
||||
}
|
||||
/* centré horizontalement en haut */
|
||||
.corps {
|
||||
background-position: 50% 0%;
|
||||
}
|
||||
|
||||
#liens a,
|
||||
#sousliens a,
|
||||
#choix a,
|
||||
.corps a,
|
||||
#liens a:link,
|
||||
#sousliens a:link,
|
||||
#choix a:link,
|
||||
.corps a:link { color: #a00 ; }
|
||||
|
||||
#liens a:visited,
|
||||
#sousliens a:visited,
|
||||
#choix a:visited,
|
||||
.corps a:visited { color: #a00 ; }
|
||||
|
||||
#liens a:active,
|
||||
#liens a:hover,
|
||||
#sousliens a:active,
|
||||
#sousliens a:hover,
|
||||
#choix a:active,
|
||||
#choix a:hover,
|
||||
.corps a:active,
|
||||
.corps a:hover { color: #f00; }
|
||||
|
||||
|
||||
|
||||
/* fond noir */
|
||||
pre.twilight,
|
||||
.corps h2,
|
||||
.corps h3,
|
||||
.corps h4,
|
||||
#bottom {
|
||||
background-image: url("img/black.jpg");
|
||||
background-repeat: no-repeat;
|
||||
background-color: #000;
|
||||
border-color: #000;
|
||||
color: #eee
|
||||
}
|
||||
|
||||
/* image centree verticalement */
|
||||
.corps h2,
|
||||
.corps h3,
|
||||
.corps h4,
|
||||
#bottom {
|
||||
background-position: 50% 50%;
|
||||
}
|
||||
/* image en haut */
|
||||
pre.twilight {
|
||||
background-position: 50% 50%;
|
||||
}
|
||||
|
||||
.withfile pre.twilight {
|
||||
background-position: 50% -10%;
|
||||
}
|
||||
|
||||
#entete {
|
||||
background-image: url("img/black600.jpg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: 50% 50%;
|
||||
background-color: #111111;
|
||||
border-color: #111111;
|
||||
color: #eee
|
||||
}
|
||||
.file a,
|
||||
.corps h2 a,
|
||||
.corps h3 a,
|
||||
.corps h4 a,
|
||||
#entete > a,
|
||||
#bottom a,
|
||||
.file a:link,
|
||||
.corps h2 a:link,
|
||||
.corps h3 a:link,
|
||||
.corps h4 a:link,
|
||||
#entete > a:link,
|
||||
#bottom a:link { color: #ddd ; }
|
||||
|
||||
.file a:visited,
|
||||
.corps h2 a:visited,
|
||||
.corps h3 a:visited,
|
||||
.corps h4 a:visited,
|
||||
#entete > a:visited,
|
||||
#bottom a:visited,
|
||||
{ color: #ccc ;}
|
||||
|
||||
.file a:active, .file a:hover,
|
||||
.corps h2 a:active, .corps h2 a:hover,
|
||||
.corps h3 a:active, .corps h3 a:hover,
|
||||
.corps h4 a:active, .corps h4 a:hover,
|
||||
#bottom a:active, #bottom a:hover { color: #cc0000; }
|
||||
|
||||
/* fond rouge */
|
||||
.corps h1,
|
||||
#titre,
|
||||
#blocMessage {
|
||||
background-image: url("img/red.jpg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: 50% 50%;
|
||||
color: #fff;
|
||||
background-color: #6c0000;
|
||||
border-color: #6c0000
|
||||
}
|
||||
.corps h1 a,
|
||||
#titre a,
|
||||
#blocMessage a {font-weight: bold; text-decoration: none; }
|
||||
.corps h1 a:link,
|
||||
#titre a:link,
|
||||
#blocMessage a:link { color: #ccc ; }
|
||||
.corps h1 a:visited,
|
||||
#titre a:visited,
|
||||
#blocMessage a:visited { color: #aaa ; }
|
||||
.corps h1 a:active,
|
||||
#titre a:active,
|
||||
#blocMessage a:active { color: #000; }
|
||||
.corps h1 a:hover,
|
||||
#titre a:hover,
|
||||
#blocMessage a:hover { color: #000; }
|
||||
|
||||
/* les fontes */
|
||||
#boutonMessage {color: black; font-size: 10px; font-family: sans-serif; }
|
||||
body {
|
||||
font-family: Optima, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
a { text-decoration: none; }
|
||||
#liens, #choix, #sousliens { font-weight: bold; }
|
||||
|
||||
ul {
|
||||
list-style: square;
|
||||
}
|
||||
|
||||
/* le style des blocs de liens */
|
||||
#liens ul,
|
||||
#choix ul,
|
||||
#sousliens ul {
|
||||
list-style: none;
|
||||
padding-left: 10px;
|
||||
margin-top:0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
/* les borders (pas les couleurs) */
|
||||
/* bord arrondi avec reflet taille 10 */
|
||||
pre.twilight, #bottom, #blocMessage, #choix, #liens, #sousliens, #presentation,
|
||||
#presentation, #Menu, .corps h1, .corps h2,
|
||||
.corps h3, .corps h4, .corps, #photos {
|
||||
border-style: solid;
|
||||
border-width: 1px 1px 1px 1px;
|
||||
/* background-image: url("img/reflet10.png") ; */
|
||||
/*background-repeat: repeat-x; */
|
||||
/*
|
||||
-moz-border-radius: 10px;
|
||||
-webkit-border-radius: 10px;
|
||||
border-radius: 10px;
|
||||
*/
|
||||
-moz-border-radius-topleft: 0px;
|
||||
-moz-border-radius-topright: 10px;
|
||||
-moz-border-radius-bottomleft: 10px;
|
||||
-moz-border-radius-bottomright: 10px;
|
||||
-webkit-border-top-left-radius: 0px;
|
||||
-webkit-border-bottom-left-radius: 10px;
|
||||
-webkit-border-top-right-radius: 10px;
|
||||
-webkit-border-bottom-right-radius: 10px;
|
||||
}
|
||||
|
||||
#content {
|
||||
-moz-border-radius-bottomleft: 20px;
|
||||
-moz-border-radius-bottomright: 20px;
|
||||
-webkit-border-bottom-left-radius: 20px;
|
||||
-webkit-border-bottom-right-radius: 20px;
|
||||
border-bottom-left-radius: 20px;
|
||||
border-bottom-right-radius: 20px;
|
||||
border-style: none;
|
||||
}
|
||||
/* bord arrondi avec reflet taille 20 */
|
||||
#titre, .corps {
|
||||
-moz-border-radius-topleft: 0px;
|
||||
-moz-border-radius-topright: 20px;
|
||||
-moz-border-radius-bottomleft: 20px;
|
||||
-moz-border-radius-bottomright: 20px;
|
||||
-webkit-border-top-left-radius: 0px;
|
||||
-webkit-border-bottom-left-radius: 20px;
|
||||
-webkit-border-top-right-radius: 20px;
|
||||
-webkit-border-bottom-right-radius: 20px;
|
||||
border-radius: 20px;
|
||||
border-style: none;
|
||||
border-width: 2px ;
|
||||
/* background-image: url("img/reflet20.png") ; */
|
||||
/* background-repeat: repeat-x; */
|
||||
}
|
||||
|
||||
#blocMessage {
|
||||
border-style: solid;
|
||||
border-width: 1px 1px 1px 1px;
|
||||
|
||||
-moz-border-radius-topleft: 0px;
|
||||
-moz-border-radius-topright: 0px;
|
||||
-moz-border-radius-bottomleft: 20px;
|
||||
-moz-border-radius-bottomright: 20px;
|
||||
-webkit-border-top-left-radius: 0px;
|
||||
-webkit-border-top-right-radius: 0px;
|
||||
-webkit-border-bottom-left-radius: 10px;
|
||||
-webkit-border-bottom-right-radius: 10px;
|
||||
}
|
||||
|
||||
#boutonMessage {
|
||||
-moz-border-radius: .5em;
|
||||
-webkit-border-radius: .5em;
|
||||
border-radius: .5em;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* les ombres */
|
||||
.ombre {
|
||||
background-image: url("img/ombre.jpg");
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
|
BIN
output/Scratch/img/about/avatar.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
output/Scratch/img/about/cv/cv.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
output/Scratch/img/about/yann1.jpg
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
output/Scratch/img/blog/03_losthighway/intro.jpg
Normal file
After Width: | Height: | Size: 88 KiB |
BIN
output/Scratch/img/blog/03_losthighway/mysteryman.jpg
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
output/Scratch/img/blog/03_losthighway/rorschach.gif
Normal file
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 151 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 96 KiB |
BIN
output/Scratch/img/blog/2010-07-09-Indecidabilities/3_corps.png
Normal file
After Width: | Height: | Size: 177 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 153 KiB |
After Width: | Height: | Size: 148 KiB |
After Width: | Height: | Size: 148 KiB |
BIN
output/Scratch/img/blog/2010-07-09-Indecidabilities/genesis.png
Normal file
After Width: | Height: | Size: 281 KiB |
After Width: | Height: | Size: 292 KiB |
After Width: | Height: | Size: 288 KiB |
After Width: | Height: | Size: 393 KiB |
After Width: | Height: | Size: 66 KiB |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 115 KiB |
After Width: | Height: | Size: 115 KiB |
After Width: | Height: | Size: 132 KiB |
BIN
output/Scratch/img/blog/mvc/Screenshot_v0.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
output/Scratch/img/bullet-feed.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
output/Scratch/img/favicon.ico
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
output/Scratch/img/loading.gif
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
output/Scratch/img/menu/rss-128.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
output/Scratch/img/menu/rss-32.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
output/Scratch/img/menu/rss-48.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
output/Scratch/img/menu/rss-64.png
Normal file
After Width: | Height: | Size: 6.7 KiB |
BIN
output/Scratch/img/presentation.drawit/Data
Normal file
8
output/Scratch/img/presentation.drawit/Info.plist
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>fileVersion</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
</plist>
|
BIN
output/Scratch/img/presentation.drawit/QuickLook/Preview.jpg
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
output/Scratch/img/presentation.drawit/QuickLook/Thumbnail.jpg
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
output/Scratch/img/presentation.png
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
output/Scratch/img/softwares/yaquabubbles/screenshot1.png
Normal file
After Width: | Height: | Size: 129 KiB |
BIN
output/Scratch/img/softwares/yclock/screenshot1.png
Normal file
After Width: | Height: | Size: 56 KiB |
202
output/Scratch/js/MathJax/COPYING.txt
vendored
Normal file
|
@ -0,0 +1,202 @@
|
|||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
43
output/Scratch/js/MathJax/MathJax.js
vendored
Normal file
55
output/Scratch/js/MathJax/README.txt
vendored
Normal file
|
@ -0,0 +1,55 @@
|
|||
OVERVIEW:
|
||||
|
||||
MathJax is an open-source JavaScript display engine for LaTeX and
|
||||
MathML that works in all modern browsers. It was designed with the
|
||||
goal of consolidating the recent advances in web technologies into a
|
||||
single, definitive, math-on-the-web platform supporting the major
|
||||
browsers and operating systems. It requires no setup on the part of
|
||||
the user (no plugins to downlaod or software to install), so the page
|
||||
author can write web documents that include mathematics and be
|
||||
confident that users will be able to view it naturally and easily.
|
||||
One simply includes MathJax and some mathematics in a web page, and
|
||||
MathJax does the rest.
|
||||
|
||||
Some of the main features of MathJax include:
|
||||
|
||||
o High-quality display of LaTeX and MathML math notation in HTML pages
|
||||
|
||||
o Supported in most browsers with no plug-ins, extra fonts, or special
|
||||
setup for the reader
|
||||
|
||||
o Easy for authors, flexible for publishers, extensible for developers
|
||||
|
||||
o Supports math accessibility, cut and paste interoperability and other
|
||||
advanced functionality
|
||||
|
||||
o Powerful API for integration with other web applications
|
||||
|
||||
See http://www.mathjax.org/ for additional details.
|
||||
|
||||
|
||||
INSTALLATION AND USAGE:
|
||||
|
||||
The MathJax installation and usage documentation is available on the
|
||||
docs/html directory of the MathJax distribution (see
|
||||
docs/html/index.html for the starting point). The documents are also
|
||||
available on the MathJax web site on line at
|
||||
|
||||
http://www.mathjax.org/docs/
|
||||
|
||||
|
||||
COMMUNITY:
|
||||
|
||||
The main MathJax website is www.mathjax.org, and it includes announcements
|
||||
and other important information. MathJax also has a SourceForge site at
|
||||
http://sourceforge.net/projects/mathjax/ that includes the download site
|
||||
for the MathJax distribution, the bug-tracker for reporting bugs, and
|
||||
several user forums for asking questions and getting assistance:
|
||||
|
||||
Bug tracker: http://sourceforge.net/tracker/?group_id=261188&atid=1240827
|
||||
MathJax Help: http://sourceforge.net/projects/mathjax/forums/forum/948701
|
||||
Open Discussion: http://sourceforge.net/projects/mathjax/forums/forum/948700
|
||||
|
||||
Before reporting a bug, please check that it has not already been reported.
|
||||
Also, please use the bug tracker for reporting bugs rather than the help
|
||||
forum.
|
18
output/Scratch/js/MathJax/config/MMLorHTML.js
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
/*
|
||||
* ../SourceForge/trunk/mathjax/config/MMLorHTML.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Part of the MathJax library.
|
||||
* See http://www.mathjax.org for details.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
|
||||
MathJax.Unpack([
|
||||
['(function(c){var i="1.0";var g=','MathJax.Hub','.Insert({prefer:{MSIE:"MML",Firefox:"MML",Opera:"HTML",other:"HTML"}},(',1,'.config.MMLorHTML||{}));var e={Firefox:3,Opera:9.52,MSIE:6,Chrome:0.3,Safari:2,Konqueror:4};var h=(c','.Browser','.version==="0.0"||','c.Browser.versionAtLeast','(e[c',5,']||0));var b;try{new ActiveXObject("MathPlayer.Factory.1");b=true}catch(d){b=false}var f=(c',5,'.isFirefox&&',7,'("1.5"))||(c',5,'.isMSIE&&b)||(c',5,'.isOpera&&',7,'("9.52"));var a=(g.prefer&&typeof(g.prefer)==="object"?g.prefer[',1,5,']||g.prefer.other||"HTML":g.prefer);if(h||f){if(f&&(a==="MML"||!h)){','c.config.jax.unshift("output/','NativeMML")}else{',24,'HTML-CSS")}}else{c.PreProcess','.disabled=true;','c.prepareScripts',28,'MathJax.Message.Set("Your browser does not support MathJax",null,4000);c.Startup.signal.Post("MathJax not supported")}})(',1,');MathJax.Ajax.loadComplete("[MathJax]/config/MMLorHTML.js");']
|
||||
]);
|
||||
|
590
output/Scratch/js/MathJax/config/MathJax.js
vendored
Normal file
|
@ -0,0 +1,590 @@
|
|||
/*************************************************************
|
||||
*
|
||||
* MathJax/config/MathJax.js
|
||||
*
|
||||
* This configuration file is loaded when there is no explicit
|
||||
* configuration script in the <script> tag that loads MathJax.js
|
||||
*
|
||||
* Use it to customize the MathJax settings. See comments below.
|
||||
*
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* Copyright (c) 2009-10 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
MathJax.Hub.Config({
|
||||
|
||||
//
|
||||
// A comma-separated list of configuration files to load
|
||||
// when MathJax starts up. E.g., to define local macros, etc.
|
||||
// The default directory is the MathJax/config directory.
|
||||
//
|
||||
// Example: config: ["local/local.js"],
|
||||
// Example: config: ["local/local.js","MMLtoHTML.js"],
|
||||
//
|
||||
config: [],
|
||||
|
||||
//
|
||||
// A comma-separated list of CSS stylesheet files to be loaded
|
||||
// when MathJax starts up. The default directory is the
|
||||
// MathJax/config directory.
|
||||
//
|
||||
// Example: styleSheets: ["MathJax.css"],
|
||||
//
|
||||
styleSheets: [],
|
||||
|
||||
//
|
||||
// Styles to be defined dynamically at startup time.
|
||||
//
|
||||
// Example:
|
||||
// styles: {
|
||||
// ".MathJax .merror": {
|
||||
// color: "blue",
|
||||
// "background-color": "green"
|
||||
// }
|
||||
// },
|
||||
//
|
||||
styles: {},
|
||||
|
||||
//
|
||||
// A comma-separated list of input and output jax to initialize at startup.
|
||||
// Their main code is loaded only when they are actually used, so it is not
|
||||
// inefficient to include jax that may not actually be used on the page. These
|
||||
// are found in the MathJax/jax directory.
|
||||
//
|
||||
jax: ["input/TeX","output/HTML-CSS"],
|
||||
|
||||
//
|
||||
// A comma-separated list of extensions to load at startup. The default
|
||||
// directory is MathJax/extensions.
|
||||
//
|
||||
// Example: extensions: ["tex2jax.js","TeX/AMSmath.js","TeX/AMSsymbols.js"],
|
||||
//
|
||||
extensions: ["tex2jax.js"],
|
||||
|
||||
//
|
||||
// Patterns to remove from before and after math script tags. If you are not
|
||||
// using one of the preprocessors (e.g., tex2jax), you need to insert something
|
||||
// extra into your HTML file in order to avoid a bug in Internet Explorer. IE
|
||||
// removes spaces from the DOM that it thinks are redundent, and since a SCRIPT
|
||||
// tag usually doesn't add content to the page, if there is a space before and after
|
||||
// a MathJax SCRIPT tag, IE will remove the first space. When MathJax inserts
|
||||
// the typeset mathematics, this means there will be no space before it and the
|
||||
// preceeding text. In order to avoid this, you should include some "guard characters"
|
||||
// before or after the math SCRIPT tag; define the patterns you want to use below.
|
||||
// Note that these are used as regular expressions, so you will need to quote
|
||||
// special characters. Furthermore, since they are javascript strings, you must
|
||||
// quote javascript special characters as well. So to obtain a backslash, you must
|
||||
// use \\ (doubled for javascript). For example, "\\[" is the pattern \[ in the
|
||||
// regular expression. That means that if you want an actual backslash in your
|
||||
// guard characters, you need to use "\\\\" in order to get \\ in the regular
|
||||
// expression, and \ in the actual text. If both preJax and postJax are defined,
|
||||
// both must be present in order to be removed.
|
||||
//
|
||||
// See also the preRemoveClass comments below.
|
||||
//
|
||||
// Example:
|
||||
// preJax: "\\\\\\\\", // makes a double backslash the preJax text
|
||||
// or
|
||||
// preJax: "\\[\\[", // jax scripts must be enclosed in double brackets
|
||||
// postJax: "\\]\\]",
|
||||
//
|
||||
preJax: null,
|
||||
postJax: null,
|
||||
|
||||
//
|
||||
// The CSS class for a math preview to be removed preceeding a MathJax
|
||||
// SCRIPT tag. If the tag just before the MathJax SCRIPT tag is of this
|
||||
// class, its contents are removed when MathJax processes the SCRIPT
|
||||
// tag. This allows you to include a math preview in a form that will
|
||||
// be displayed prior to MathJax performing its typesetting. It also
|
||||
// avoids the Internet Explorer space-removal bug, and can be used in
|
||||
// place of preJax and postJax if that is more convenient.
|
||||
//
|
||||
// For example
|
||||
//
|
||||
// <span class="MathJax_Preview">[math]</span><script type="math/tex">...</script>
|
||||
//
|
||||
// would display "[math]" in place of the math until MathJax is able to typeset it.
|
||||
//
|
||||
preRemoveClass: "MathJax_Preview",
|
||||
|
||||
//
|
||||
// This value controls whether the "Processing Math: nn%" message are displayed
|
||||
// in the lower left-hand corner. Set to "false" to prevent those messages (though
|
||||
// file loading and other messages will still be shown).
|
||||
//
|
||||
showProcessingMessages: true,
|
||||
|
||||
//
|
||||
// This value controls the verbosity of the messages in the lower left-hand corner.
|
||||
// Set it to "none" to eliminate all messages, or set it to "simple" to show
|
||||
// "Loading..." and "Processing..." rather than showing the full file name and the
|
||||
// percentage of the mathematics processed.
|
||||
//
|
||||
messageStyle: "normal",
|
||||
|
||||
//
|
||||
// These two parameters control the alignment and shifting of displayed equations.
|
||||
// The first can be "left", "center", or "right", and determines the alignment of
|
||||
// displayed equations. When the alignment is not "center", the second determines
|
||||
// an indentation from the left or right side for the displayed equations.
|
||||
//
|
||||
displayAlign: "center",
|
||||
displayIndent: "0em",
|
||||
|
||||
//
|
||||
// Normally MathJax will perform its starup commands (loading of
|
||||
// configuration, styles, jax, and so on) as soon as it can. If you
|
||||
// expect to be doing additional configuration on the page, however, you
|
||||
// may want to have it wait until the page's onload hander is called. If so,
|
||||
// set this to "onload".
|
||||
//
|
||||
delayStartupUntil: "none",
|
||||
|
||||
//
|
||||
// Normally MathJax will typeset the mathematics on the page as soon as
|
||||
// the page is loaded. If you want to delay that process, in which case
|
||||
// you will need to call MathJax.Hub.Typeset() yourself by hand, set
|
||||
// this value to true.
|
||||
//
|
||||
skipStartupTypeset: false,
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// These parameters control the tex2jax preprocessor (when you have included
|
||||
// "tex2jax.js" in the extensions list above).
|
||||
//
|
||||
tex2jax: {
|
||||
|
||||
//
|
||||
// The Id of the element to be processed (defaults to full document)
|
||||
//
|
||||
element: null,
|
||||
|
||||
//
|
||||
// The delimiters that surround in-line math expressions. The first in each
|
||||
// pair is the initial delimiter and the second is the terminal delimiter.
|
||||
// Comment out any that you don't want, but be sure there is no extra
|
||||
// comma at the end of the last item in the list -- some browsers won't
|
||||
// be able to handle that.
|
||||
//
|
||||
inlineMath: [
|
||||
['$','$'], // uncomment this for standard TeX math delimiters
|
||||
['\\(','\\)']
|
||||
],
|
||||
|
||||
//
|
||||
// The delimiters that surround displayed math expressions. The first in each
|
||||
// pair is the initial delimiter and the second is the terminal delimiter.
|
||||
// Comment out any that you don't want, but be sure there is no extra
|
||||
// comma at the end of the last item in the list -- some browsers won't
|
||||
// be able to handle that.
|
||||
//
|
||||
displayMath: [
|
||||
['$$','$$'],
|
||||
['\\[','\\]']
|
||||
],
|
||||
|
||||
//
|
||||
// This array lists the names of the tags whose contents should not be
|
||||
// processed by tex2jax (other than to look for ignore/process classes
|
||||
// as listed below). You can add to (or remove from) this list to prevent
|
||||
// MathJax from processing mathematics in specific contexts.
|
||||
//
|
||||
skipTags: ["script","noscript","style","textarea","pre","code"],
|
||||
|
||||
//
|
||||
// This is the class name used to mark elements whose contents should
|
||||
// not be processed by tex2jax (other than to look for the
|
||||
// processClass pattern below). Note that this is a regular
|
||||
// expression, and so you need to be sure to quote any regexp special
|
||||
// characters. The pattern is automatically preceeded by '(^| )(' and
|
||||
// followed by ')( |$)', so your pattern will have to match full words
|
||||
// in the class name. Assigning an element this class name will
|
||||
// prevent `tex2jax` from processing its contents.
|
||||
//
|
||||
ignoreClass: "tex2jax_ignore",
|
||||
|
||||
//
|
||||
// This is the class name used to mark elements whose contents SHOULD
|
||||
// be processed by tex2jax. This is used to turn on processing within
|
||||
// tags that have been marked as ignored or skipped above. Note that
|
||||
// this is a regular expression, and so you need to be sure to quote
|
||||
// any regexp special characters. The pattern is automatically
|
||||
// preceeded by '(^| )(' and followed by ')( |$)', so your pattern
|
||||
// will have to match full words in the class name. Use this to
|
||||
// restart processing within an element that has been marked as
|
||||
// ignored above.
|
||||
//
|
||||
processClass: "tex2jax_process",
|
||||
|
||||
//
|
||||
// Set to "true" to allow \$ to produce a dollar without starting in-line
|
||||
// math mode. If you uncomment the ['$','$'] line above, you should change
|
||||
// this to true so that you can insert plain dollar signs into your documents
|
||||
//
|
||||
processEscapes: false,
|
||||
|
||||
//
|
||||
// Controls whether tex2jax processes LaTeX environments outside of math
|
||||
// mode. Set to "false" to prevent processing of environments except within
|
||||
// math mode.
|
||||
//
|
||||
processEnvironments: true,
|
||||
|
||||
//
|
||||
// Controls whether tex2jax inserts MathJax_Preview spans to make a
|
||||
// preview available, and what preview to use, when it locates in-line
|
||||
// and display mathetics on the page. The default is "TeX", which
|
||||
// means use the TeX code as the preview (until it is processed by
|
||||
// MathJax). Set to "none" to prevent the previews from being
|
||||
// inserted (the math will simply disappear until it is typeset). Set
|
||||
// to an array containing the description of an HTML snippet in order
|
||||
// to use the same preview for all equations on the page (e.g., you
|
||||
// could have it say "[math]" or load an image).
|
||||
//
|
||||
// E.g., preview: ["[math]"],
|
||||
// or preview: [["img",{src: "http://myserver.com/images/mypic.jpg"}]]
|
||||
//
|
||||
preview: "TeX"
|
||||
|
||||
},
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// These parameters control the mml2jax preprocessor (when you have included
|
||||
// "mml2jax.js" in the extensions list above).
|
||||
//
|
||||
mml2jax: {
|
||||
|
||||
//
|
||||
// The Id of the element to be processed (defaults to full document)
|
||||
//
|
||||
element: null,
|
||||
|
||||
//
|
||||
// Controls whether mml2jax inserts MathJax_Preview spans to make a
|
||||
// preview available, and what preview to use, whrn it locates
|
||||
// mathematics on the page. The default is "alttext", which means use
|
||||
// the <math> tag's alttext attribute as the preview (until it is
|
||||
// processed by MathJax), if the tag has one. Set to "none" to
|
||||
// prevent the previews from being inserted (the math will simply
|
||||
// disappear until it is typeset). Set to an array containing the
|
||||
// description of an HTML snippet in order to use the same preview for
|
||||
// all equations on the page (e.g., you could have it say "[math]" or
|
||||
// load an image).
|
||||
//
|
||||
// E.g., preview: ["[math]"],
|
||||
// or preview: [["img",{src: "http://myserver.com/images/mypic.jpg"}]]
|
||||
//
|
||||
preview: "alttext"
|
||||
|
||||
},
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// These parameters control the jsMath2jax preprocessor (when you have included
|
||||
// "jsMath2jax.js" in the extensions list above).
|
||||
//
|
||||
jsMath2jax: {
|
||||
|
||||
//
|
||||
// The Id of the element to be processed (defaults to full document)
|
||||
//
|
||||
element: null,
|
||||
|
||||
//
|
||||
// Controls whether jsMath2jax inserts MathJax_Preview spans to make a
|
||||
// preview available, and what preview to use, when it locates
|
||||
// mathematics on the page. The default is "TeX", which means use the
|
||||
// TeX code as the preview (until it is processed by MathJax). Set to
|
||||
// "none" to prevent the previews from being inserted (the math will
|
||||
// simply disappear until it is typeset). Set to an array containing
|
||||
// the description of an HTML snippet in order to use the same preview
|
||||
// for all equations on the page (e.g., you could have it say "[math]"
|
||||
// or load an image).
|
||||
//
|
||||
// E.g., preview: ["[math]"],
|
||||
// or preview: [["img",{src: "http://myserver.com/images/mypic.jpg"}]]
|
||||
//
|
||||
preview: "TeX"
|
||||
|
||||
},
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// These parameters control the TeX input jax.
|
||||
//
|
||||
TeX: {
|
||||
|
||||
//
|
||||
// This specifies the side on which \tag{} macros will place the tags.
|
||||
// Set to "left" to place on the left-hand side.
|
||||
//
|
||||
TagSide: "right",
|
||||
|
||||
//
|
||||
// This is the amound of indentation (from right or left) for the tags.
|
||||
//
|
||||
TagIndent: ".8em",
|
||||
|
||||
//
|
||||
// This is the width to use for the multline environment
|
||||
//
|
||||
MultLineWidth: "85%",
|
||||
|
||||
//
|
||||
// List of macros to define. These are of the form
|
||||
// name: value
|
||||
// where 'value' is the replacement text for the macro \name.
|
||||
// The 'value' can also be [value,n] where 'value' is the replacement
|
||||
// text and 'n' is the number of parameters for the macro.
|
||||
// Note that backslashes must be doubled in the replacement string.
|
||||
//
|
||||
// E.g.,
|
||||
//
|
||||
// Macros: {
|
||||
// RR: '{\\bf R}',
|
||||
// bold: ['{\\bf #1}', 1]
|
||||
// }
|
||||
//
|
||||
Macros: {}
|
||||
|
||||
},
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// These parameters control the MathML inupt jax.
|
||||
//
|
||||
MathML: {
|
||||
//
|
||||
// This specifies whether to use TeX spacing or MathML spacing when the
|
||||
// HTML-CSS output jax is used.
|
||||
//
|
||||
useMathMLspacing: false
|
||||
},
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// These parameters control the HTML-CSS output jax.
|
||||
//
|
||||
"HTML-CSS": {
|
||||
|
||||
//
|
||||
// This controls the global scaling of mathematics as compared to the
|
||||
// surrounding text. Values between 100 and 133 are usually good choices.
|
||||
//
|
||||
scale: 100,
|
||||
|
||||
//
|
||||
// This is a list of the fonts to look for on a user's computer in
|
||||
// preference to using MathJax's web-based fonts. These must
|
||||
// correspond to directories available in the jax/output/HTML-CSS/fonts
|
||||
// directory, where MathJax stores data about the characters available
|
||||
// in the fonts. Set this to ["TeX"], for example, to prevent the
|
||||
// use of the STIX fonts, or set it to an empty list, [], if
|
||||
// you want to force MathJax to use web-based or image fonts.
|
||||
//
|
||||
availableFonts: ["STIX","TeX"],
|
||||
|
||||
//
|
||||
// This is the preferred font to use when more than one of those
|
||||
// listed above is available.
|
||||
//
|
||||
preferredFont: "TeX",
|
||||
|
||||
//
|
||||
// This is the web-based font to use when none of the fonts listed
|
||||
// above are available on the user's computer. Note that currently
|
||||
// only the TeX font is available in a web-based form. Set this to
|
||||
//
|
||||
// webFont: null,
|
||||
//
|
||||
// if you want to prevent the use of web-based fonts.
|
||||
//
|
||||
webFont: "TeX",
|
||||
|
||||
//
|
||||
// This is the font to use for image fallback mode (when none of the
|
||||
// fonts listed above are available and the browser doesn't support
|
||||
// web-fonts via the @font-face CSS directive). Note that currently
|
||||
// only the TeX font is available as an image font. Set this to
|
||||
//
|
||||
// imageFont: null,
|
||||
//
|
||||
// if you want to prevent the use of image fonts (e.g., you have not
|
||||
// installed the image fonts on your server). In this case, only
|
||||
// browsers that support web-based fonts will be able to view your pages
|
||||
// without having the fonts installed on the client computer. The browsers
|
||||
// that support web-based fonts include: IE6 and later, Chrome, Safari3.1
|
||||
// and above, Firefox3.5 and later, and Opera10 and later. Note that
|
||||
// Firefox3.0 is NOT on this list, so without image fonts, FF3.0 users
|
||||
// will be required to to download and install either the STIX fonts or the
|
||||
// MathJax TeX fonts.
|
||||
//
|
||||
imageFont: "TeX",
|
||||
|
||||
//
|
||||
// This controls whether the MathJax contextual menu will be available
|
||||
// on the mathematics in the page. If true, then right-clicking (on
|
||||
// the PC) or control-clicking (on the Mac) will produce a MathJax
|
||||
// menu that allows you to get the source of the mathematics in
|
||||
// various formats, change the size of the mathematics relative to the
|
||||
// surrounding text, and get information about MathJax.
|
||||
//
|
||||
// Set this to false to disable the menu. When true, the MathMenu
|
||||
// items below configure the actions of the menu.
|
||||
//
|
||||
showMathMenu: true,
|
||||
|
||||
//
|
||||
// This allows you to define or modify the styles used to display
|
||||
// various math elements created by MathJax.
|
||||
//
|
||||
// Example:
|
||||
// styles: {
|
||||
// ".MathJax_Preview": {
|
||||
// "font-size": "80%", // preview uses a smaller font
|
||||
// color: "red" // and is in red
|
||||
// }
|
||||
// }
|
||||
//
|
||||
styles: {},
|
||||
|
||||
//
|
||||
// Configuration for <maction> tooltips
|
||||
// (see also the #MathJax_Tooltip CSS in MathJax/jax/output/HTML-CSS/config.js,
|
||||
// which can be overriden using the styles values above).
|
||||
//
|
||||
tooltip: {
|
||||
delayPost: 600, // milliseconds delay before tooltip is posted after mouseover
|
||||
delayClear: 600, // milliseconds delay before tooltip is cleared after mouseout
|
||||
offsetX: 10, offsetY: 5 // pixels to offset tooltip from mouse position
|
||||
}
|
||||
},
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// These parameters control the NativeMML output jax.
|
||||
//
|
||||
NativeMML: {
|
||||
|
||||
//
|
||||
// This controls the global scaling of mathematics as compared to the
|
||||
// surrounding text. Values between 100 and 133 are usually good choices.
|
||||
//
|
||||
scale: 100,
|
||||
|
||||
//
|
||||
// This controls whether the MathJax contextual menu will be available
|
||||
// on the mathematics in the page. If true, then right-clicking (on
|
||||
// the PC) or control-clicking (on the Mac) will produce a MathJax
|
||||
// menu that allows you to get the source of the mathematics in
|
||||
// various formats, change the size of the mathematics relative to the
|
||||
// surrounding text, and get information about MathJax.
|
||||
//
|
||||
// Set this to false to disable the menu. When true, the MathMenu
|
||||
// items below configure the actions of the menu.
|
||||
//
|
||||
// There is a separate setting for MSIE, since the code to handle that
|
||||
// is a bit delicate; if it turns out to have unexpected consequences,
|
||||
// you can turn it off without turing off other browser support.
|
||||
//
|
||||
showMathMenu: true,
|
||||
showMathMenuMSIE: true,
|
||||
|
||||
//
|
||||
// This allows you to define or modify the styles used to display
|
||||
// various math elements created by MathJax.
|
||||
//
|
||||
// Example:
|
||||
// styles: {
|
||||
// ".MathJax_MathML": {
|
||||
// color: "red" // MathML is in red
|
||||
// }
|
||||
// }
|
||||
//
|
||||
styles: {}
|
||||
},
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// These parameters control the contextual menus that are available on the
|
||||
// mathematics within the page (provided the showMathMenu value is true above).
|
||||
//
|
||||
MathMenu: {
|
||||
//
|
||||
// This is the hover delay for the display of submenus in the
|
||||
// contextual menu. When the mouse is still over a submenu label for
|
||||
// this long, the menu will appear. (The menu also will appear if you
|
||||
// click on the label.) It is in milliseconds.
|
||||
//
|
||||
delay: 400,
|
||||
|
||||
//
|
||||
// This is the URL for the MathJax Help menu item.
|
||||
//
|
||||
helpURL: "http://www.mathjax.org/help/user/",
|
||||
|
||||
//
|
||||
// These control whether the "Math Renderer", "Font Preferences",
|
||||
// and "Contextual Menu" submenus will be displayed or not.
|
||||
//
|
||||
showRenderer: true,
|
||||
showFontMenu: false,
|
||||
showContext: false,
|
||||
|
||||
//
|
||||
// These are the settings for the Show Source window. The initial
|
||||
// width and height will be reset after the source is shown in an
|
||||
// attempt to make the window fit the output better.
|
||||
//
|
||||
windowSettings: {
|
||||
status: "no", toolbar: "no", locationbar: "no", menubar: "no",
|
||||
directories: "no", personalbar: "no", resizable: "yes", scrollbars: "yes",
|
||||
width: 100, height: 50
|
||||
},
|
||||
|
||||
//
|
||||
// This allows you to change the CSS that controls the menu
|
||||
// appearance. See the extensions/MathMenu.js file for details
|
||||
// of the default settings.
|
||||
//
|
||||
styles: {}
|
||||
|
||||
},
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// These parameters control the MMLorHTML configuration file.
|
||||
// NOTE: if you add MMLorHTML.js to the config array above,
|
||||
// you must REMOVE the output jax from the jax array.
|
||||
//
|
||||
MMLorHTML: {
|
||||
//
|
||||
// The output jax that is to be preferred when both are possible
|
||||
// (set to "MML" for native MathML, "HTML" for MathJax's HTML-CSS output jax).
|
||||
//
|
||||
prefer: {
|
||||
MSIE: "MML",
|
||||
Firefox: "MML",
|
||||
Opera: "HTML",
|
||||
other: "HTML"
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete("[MathJax]/config/MathJax.js");
|