# 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}/}} 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 tags=tagNumber tagLinks=tagRefs 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=%{
} tagSize.sort{|a,b| a[0].downcase <=> b[0].downcase}.each do |t,s| protected=t.gsub(/\W/,'_') grouped=t.gsub(/&/,'&').gsub(/ /,' ').gsub(//,'>') tagCloud <<= %{#{grouped} } end tagCloud <<= %{
} tagLinks.sort{|a,b| a[0].downcase <=> b[0].downcase}.each do |t,l| protected=t.gsub(/\W/,'_') tagCloud <<= %{

#{t}

} end tagCloud <<= %{
} return tagCloud end # end