booh-gui and distributable
[booh] / lib / booh / booh-lib.rb
1 #!/usr/bin/ruby
2 #
3 #                         *  BOOH  *
4 #
5 # A.k.a `Best web-album Of the world, Or your money back, Humerus'.
6 #
7 # The acronyn sucks, however this is a tribute to Dragon Ball by
8 # Akira Toriyama, where the last enemy beaten by heroes of Dragon
9 # Ball is named "Boo". But there was already a free software project
10 # called Boo, so this one will be it "Booh". Or whatever.
11 #
12 #
13 # Copyright (c) 2004 Guillaume Cottenceau <gc3 at bluewin.ch>
14 #
15 # This software may be freely redistributed under the terms of the GNU
16 # public license version 2.
17 #
18 # You should have received a copy of the GNU General Public License
19 # along with this program; if not, write to the Free Software
20 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21
22 require 'iconv'
23
24 require 'gettext'
25 include GetText
26 bindtextdomain("booh")
27
28 require 'booh/config.rb'
29 require 'booh/version.rb'
30
31 module Booh
32     $verbose_level = 2
33     $CURRENT_CHARSET = `locale charmap`.chomp
34
35     def utf8(string)
36         return Iconv::iconv("UTF-8", $CURRENT_CHARSET, string).to_s
37     end
38     
39     def from_utf8(string)
40         return Iconv::iconv($CURRENT_CHARSET, "UTF-8", string).to_s
41     end
42
43     def make_dest_filename(orig_filename)
44         #- we remove non alphanumeric characters but need to do that
45         #- cleverly to not end up with two similar dest filenames. we won't
46         #- urlencode because urldecode might happen in the browser.
47         return orig_filename.unpack("C*").collect { |v| v.chr =~ /[a-zA-Z\-_0-9\.\/]/ ? v.chr : sprintf("%2X", v) }.to_s
48     end
49
50     def __(string, *args)
51         if args.size == 0
52             _(string)
53         elsif args.size == 1
54             sprintf(_(string), args[0])
55         elsif args.size == 2
56             sprintf(_(string), args[0], args[1])
57         end
58     end
59
60     def msg(verbose_level, msg)
61         if verbose_level <= $verbose_level
62             if verbose_level == 0
63                 warn __("\t***ERROR***: %s\n", msg)
64             elsif verbose_level == 1
65                 warn __("\tWarning: %s\n", msg)
66             else
67                 puts msg
68             end
69         end
70     end
71
72     def msg_(verbose_level, msg)
73         if verbose_level <= $verbose_level
74             if verbose_level == 0
75                 warn __("\t***ERROR***: %s", msg)
76             elsif verbose_level == 1
77                 warn __("\tWarning: %s", msg)
78             else
79                 print msg
80             end
81         end
82     end
83
84     def die(msg)
85         puts msg
86         exit 1
87     end
88
89     def select_theme(name)
90         $theme = name
91         msg 3, __("Selecting theme `%s'", $theme)
92         themedir = "#{$FPATH}/themes/#{$theme}"
93         if !File.directory?(themedir)
94             die __("Theme was not found (tried %s directory).", themedir)
95         end
96         require "#{themedir}/parameters.rb"
97     end
98
99 end