3.6 KiB
begindiv(intro)
en: <%= tldr %> I made a simple macro system for my blog. Now I juste have to write %latex and it show as %latex.
fr: <%= tlal %> J'ai fait un système simple de macros pour mon blog. Par exemple, il me suffit d'écrire %latex et ça affiche %latex.
enddiv
fr: J'ai ajouter un système de macro pour mon système de blog. fr: Lorsqu'on est habitué à %latex et que l'on commence à écrire des articles fr: un peu conséquent avec des notations mathématiques, fr: les macros deviennent vite quelque chose d'indispensable. fr: fr: Dans l'entête de mes fichiers j'écris simplement: en: I added a macro system for my blog system. en: When we are used to %latex this lack can be hard to handle. en: Particularly when using mathematical notations. en: In the header of my files I simply write:
macros:
test: "This is a macro test"
latex: 'LaTeX'
fr: Puis dans le corps ça va remplacer :
fr:
fr: - %test par %test ;
fr: - et %latex par %latex
fr:
fr: Le code est assez simple.
fr: Pour les utilisateurs de nanoc
il suffit de copier le fichier suivant dans le répertoire lib
.
en: In the body it will replace every occurrence of:
en:
en: - %test by %test,
en: - and %latex by %latex.
en:
en: The source code is really simple.
en: For nanoc
user, simply put this file in your lib
directory.
# usage:
# ---
# ...
# macros:
# test: "passed test"
# ---
# ...
# Here is a %test.
#
class Macros < Nanoc3::Filter
identifier :falacy
attr_accessor :macro
def initialize(arg)
super
@macro={}
@macro[:tlal] = %{tlàl : }
@macro[:tldr] = %{tl;dr: }
if @item.nil?
if not arg.nil?
@macro.merge!( arg )
end
else
if not @item[:macros].nil?
@macro.merge!( @item[:macros] )
end
end
end
def macro_value_for(macro_name)
if macro_name.nil? or macro_name=="" or @macro[macro_name.intern].nil?
return %{%#{macro_name}}
end
return @macro[macro_name.intern]
end
def run(content, params={})
content.gsub(/%(\w*)/) do |m|
if m != '%'
macro_value_for($1)
else
m
end
end
end
end
fr: Les macros peuvent être vraiment utiles. Lisez cet article par exemple. en: Macros could be very useful, read this article for example.