kdegettext 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,11 @@
1
+ # Changelog
2
+
3
+ ## 2009-08-05: v0.9.3
4
+ * repair gem
5
+ ## 2009-08-05: v0.9.2
6
+ * repair gem
7
+ ## 2009-08-05: v0.9.1
8
+ * repair gem
9
+ * update README.markdown
10
+ ## 2009-08-02: v0.9.0
11
+ * initial release (intern)
data/LICENSE ADDED
@@ -0,0 +1,4 @@
1
+ Copyright (C) 2009 Robert Riemann
2
+
3
+ You may redistribute it and/or modify it under the same
4
+ license terms as Ruby.
data/README.markdown ADDED
@@ -0,0 +1,24 @@
1
+ # Install
2
+ * maybe you need first: *gem sources -a http://gems.github.com`
3
+ * `gem install kdegettext` for your standard ruby version
4
+ * `gem1.9 install kdegettext` for other ruby versions (command may be slightly differ on your ruby installation)
5
+
6
+ # Acknowledgments
7
+ * Masao Mutoh ( author of gettext package for ruby)
8
+ * How-To write a parser: http://www.yotabanana.com/hiki/ruby-gettext-howto-poparser.html
9
+ * Richard Dale ( some helpful links, author of korundum/qtruby package )
10
+ * the author of that piece of code found on http://www.koders.com/ruby/fidA7A93BC839C40D00497E6BB33479BAC9430FE50C.aspx?s="Chris+Wanstrath"#L20
11
+
12
+ # Bugs
13
+ * in ruby1.8 the hash (TargetList) is not sorted -> output in po is not sorted for line numbers
14
+ * **IMPORTANT!**: This program might work only in a login console (`su - user`) and/or with ruby v1.9
15
+
16
+ # Dependencies
17
+ * should me installed automatically via gem
18
+ * otherwise manual installation via
19
+ * ruby 1.8: `gem install locale gettext ruby_parser sexp_processor`
20
+ * ruby 1.9: `gem1.9 install locale gettext ruby_parser sexp_processor`
21
+
22
+ # Usage
23
+ * `kdegettext.rb file_1.rb [file2_rb, ...]`
24
+ * with other ruby version: `ruby1.9 /usr/bin/kgettext.rb file_1.rb [file2_rb, ...]`
data/Rakefile ADDED
@@ -0,0 +1,68 @@
1
+ require 'rake'
2
+ require 'git'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |s|
7
+ s.name = %q{kdegettext}
8
+ s.date = %q{2009-08-05}
9
+ s.authors = ["Robert Riemann"]
10
+ s.email = %q{robert.riemann@physik.hu-berlin.de}
11
+ s.summary = %q{KDEgettext.rb is a tool to localize KDE programs implemented in ruby.}
12
+ s.homepage = %q{http://github.com/saLOUt/KDEgettext.rb/}
13
+ s.description = %q{KDEgettext.rb is a parser that extends ruby gettext to work with the Qt/KDE framework provided by korundum. It allows creating catalog files (po-file) with the GNU GetText format.}
14
+ s.add_dependency('gettext', '>= 2.0.4')
15
+ s.add_dependency('locale', '>= 2.0.4')
16
+ s.add_dependency('ruby_parser', '>= 2.0.3')
17
+ s.add_dependency('sexp_processor', '>= 3.0.2')
18
+ s.has_rdoc = false
19
+ s.rubyforge_project = "korundum"
20
+ end
21
+
22
+ Jeweler::RubyforgeTasks.new do |rubyforge|
23
+ rubyforge.doc_task = "rdoc"
24
+ end
25
+
26
+ rescue LoadError
27
+ puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install jeweler"
28
+ end
29
+
30
+ require 'rake/testtask'
31
+ Rake::TestTask.new(:test) do |test|
32
+ test.libs << 'lib' << 'test'
33
+ test.pattern = 'test/**/*_test.rb'
34
+ test.verbose = true
35
+ end
36
+
37
+ begin
38
+ require 'rcov/rcovtask'
39
+ Rcov::RcovTask.new do |test|
40
+ test.libs << 'test'
41
+ test.pattern = 'test/**/*_test.rb'
42
+ test.verbose = true
43
+ end
44
+ rescue LoadError
45
+ task :rcov do
46
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
47
+ end
48
+ end
49
+
50
+ task :test => :check_dependencies
51
+
52
+ task :default => :test
53
+
54
+ require 'rake/rdoctask'
55
+ Rake::RDocTask.new do |rdoc|
56
+ if File.exist?('VERSION')
57
+ version = File.read('VERSION')
58
+ else
59
+ version = ""
60
+ end
61
+
62
+ rdoc.rdoc_dir = 'rdoc'
63
+ rdoc.title = "KDEgettext.rb #{version}"
64
+ rdoc.rdoc_files.include('README*')
65
+ rdoc.rdoc_files.include('lib/**/*.rb')
66
+ end
67
+
68
+ # kate: syntax ruby
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.9.3
data/bin/kdegettext.rb ADDED
@@ -0,0 +1,202 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ KDEgettext.rb - parser for ruby scripts using the korundum (KDE) or qtruby (Qt) package
4
+
5
+ Copyright (C) 2009 Robert Riemann
6
+
7
+ You may redistribute it and/or modify it under the same
8
+ license terms as Ruby.
9
+ =end
10
+
11
+ require 'rubygems'
12
+ require 'ruby_parser'
13
+ require 'sexp_processor'
14
+
15
+ class KDERubyProcessor < SexpProcessor
16
+
17
+ private_class_method :new
18
+ @@singleton = nil
19
+
20
+ def self.create(*args)
21
+ @@singleton = new(*args) unless @@singleton
22
+ @@singleton
23
+ end
24
+
25
+ def initialize(api,separator)
26
+ super()
27
+ self.strict = false
28
+ @category = Hash.new {|aHash,aKey| aHash[aKey] = []}
29
+ api.each do |call|
30
+ name = call.shift
31
+ @category[:all] << name
32
+ call.each do |category|
33
+ @category[category] << name
34
+ end
35
+ end
36
+ @separator = separator
37
+ end
38
+
39
+ def targets=(targets)
40
+ @aTargetList = TargetList.import_array targets
41
+ end
42
+
43
+ def targets
44
+ @aTargetList.export_array if @aTargetList
45
+ end
46
+
47
+ def parse_files(files,targets = [])
48
+ self.targets = targets
49
+ files.each do |file|
50
+ self.process(RubyParser.new.parse(File.read(file), file))
51
+ end
52
+ end
53
+
54
+ def check_call(call)
55
+ if @category[:all].include? call[:name]
56
+ msgid = ""
57
+ if @category[:context].include? call[:name]
58
+ msgid << call[:arguments].shift.to_s << @separator[:context]
59
+ end
60
+ msgid << call[:arguments].shift.to_s
61
+ if @category[:plural].include? call[:name]
62
+ msgid << @separator[:plural] << call[:arguments].shift.to_s
63
+ call[:arguments].shift # removes argument after plural string
64
+ end
65
+ @aTargetList.add_target(msgid,call[:file].to_s + ":" + call[:line].to_s)
66
+ end
67
+ end
68
+
69
+ def process_call(exp)
70
+ # receiver is sexp: e.g. s(const, :KDE) or s(:lvar, :myinstance)
71
+ # name is a symbol, receiver is Sexp, arguments is array
72
+ call = { :line => exp.line, :file => exp.file, :receiver => exp[1], :name => exp[2], :arguments => [] }
73
+
74
+ exp[3][1..-1].each do |aSexp| # iterate over arguments
75
+ type,val = *aSexp # type is symbol, val is datatype like string or fixnum
76
+ call[:arguments] << val
77
+ end
78
+
79
+ check_call call
80
+
81
+ # pass through
82
+ begin
83
+ s(:call,
84
+ *(exp.map { |inner| process_inner_expr inner })
85
+ )
86
+ ensure
87
+ exp.clear
88
+ end
89
+ end
90
+
91
+ private
92
+
93
+ def process_inner_expr(inner)
94
+ inner.kind_of?(Array) ? process(inner) : inner
95
+ end
96
+
97
+ end
98
+
99
+ class TargetList < Hash
100
+
101
+ def self.import_array(targets = [])
102
+ aTargetList = self.new
103
+ targets.each do |aTarget|
104
+ aTargetList[aTarget.shift] = aTarget
105
+ end
106
+ return aTargetList
107
+ end
108
+
109
+ def export_array
110
+ self.map do |msgid,pos|
111
+ [msgid] + pos
112
+ end
113
+ end
114
+
115
+ def add_target(msgid, pos)
116
+ msgid.gsub!(/\n/, '\n') # escape newline: \n -> \\n
117
+ if self.include? msgid
118
+ self[msgid] << pos
119
+ return nil
120
+ else
121
+ self[msgid] = [pos]
122
+ return true
123
+ end
124
+ end
125
+
126
+ end
127
+
128
+ module KDERubyParser
129
+
130
+ # Syntax:
131
+ #
132
+ # first element in array: name of the function,
133
+ # after that other symbols defining the properties of the function :
134
+ # * qt : function from Qt or KDE framework
135
+ # * rgt (ruby gettext) : function from ruby gettext
136
+ # * plural : after msgid follows the argument for plural ( msgid_plural) and then a number to compute which form to use
137
+ # * context : before msgid is argument for context (msgctxt)
138
+ # * div : last argument defines a divider string, usually div = "|"
139
+ # actually only context and plural are handled
140
+ API = [
141
+ [:N_, :rgt],
142
+ [:_, :rgt],
143
+ [:gettext, :rgt],
144
+
145
+ [:Nn_, :rgt, :plural], # ! only 2 arguments: singular form, plural form
146
+ [:n_, :rgt, :plural],
147
+
148
+ [:p_, :rgt, :context],
149
+ [:pgettext, :rgt, :context],
150
+
151
+ [:npgettext, :rgt, :context, :plural],
152
+ [:np_, :rgt, :context, :plural],
153
+
154
+ [:s_, :rgt, :div],
155
+ [:sgettext, :rgt, :div],
156
+
157
+ [:ns_, :rgt, :div, :plural],
158
+ [:nsgettext, :rgt, :div, :plural],
159
+
160
+ [:i18n, :qt],
161
+ [:ki18n, :qt],
162
+ [:tr, :qt],
163
+
164
+ [:i18np, :qt, :plural],
165
+ [:ki18np, :qt, :plural],
166
+
167
+ [:i18nc, :qt, :context],
168
+ [:ki18nc, :qt, :context],
169
+
170
+ [:i18ncp, :qt, :context, :plural],
171
+ [:ki18ncp, :qt, :context, :plural],
172
+ ]
173
+
174
+ SEPARATOR = {:plural => "\000", :context => "\004"}
175
+
176
+ extend self
177
+
178
+ def parse(files, targets = []) # :nodoc: # files is string (1 file) or array (more files)
179
+ files = [files] unless files.class == Array
180
+ aKDERubyProcessor = KDERubyProcessor.create(API,SEPARATOR)
181
+ aKDERubyProcessor.parse_files(files,targets)
182
+ aKDERubyProcessor.targets
183
+ end
184
+
185
+ def target?(file) # :nodoc:
186
+ true # always true, as this parser is able to handle also normal ruby files
187
+ end
188
+
189
+ end
190
+
191
+ begin
192
+ require 'gettext/rgettext'
193
+ rescue LoadError
194
+ begin
195
+ require 'gettext/tools/rgettext'
196
+ rescue LoadError
197
+ raise 'Ruby-GetText-Package are not installed.'
198
+ end
199
+ end
200
+
201
+ GetText::RGetText.add_parser(KDERubyParser)
202
+ GetText.rgettext
@@ -0,0 +1,59 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{kdegettext}
8
+ s.version = "0.9.3"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Robert Riemann"]
12
+ s.date = %q{2009-08-06}
13
+ s.default_executable = %q{kdegettext.rb}
14
+ s.description = %q{KDEgettext.rb is a parser that extends ruby gettext to work with the Qt/KDE framework provided by korundum. It allows creating catalog files (po-file) with the GNU GetText format.}
15
+ s.email = %q{robert.riemann@physik.hu-berlin.de}
16
+ s.executables = ["kdegettext.rb"]
17
+ s.extra_rdoc_files = [
18
+ "LICENSE",
19
+ "README.markdown"
20
+ ]
21
+ s.files = [
22
+ "Changelog.markdown",
23
+ "LICENSE",
24
+ "README.markdown",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "bin/kdegettext.rb",
28
+ "kdegettext.gemspec",
29
+ "pkg/kdegettext-0.9.3.gem"
30
+ ]
31
+ s.homepage = %q{http://github.com/saLOUt/KDEgettext.rb/}
32
+ s.rdoc_options = ["--charset=UTF-8"]
33
+ s.require_paths = ["lib"]
34
+ s.rubyforge_project = %q{korundum}
35
+ s.rubygems_version = %q{1.3.1}
36
+ s.summary = %q{KDEgettext.rb is a tool to localize KDE programs implemented in ruby.}
37
+
38
+ if s.respond_to? :specification_version then
39
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
40
+ s.specification_version = 2
41
+
42
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
43
+ s.add_runtime_dependency(%q<gettext>, [">= 2.0.4"])
44
+ s.add_runtime_dependency(%q<locale>, [">= 2.0.4"])
45
+ s.add_runtime_dependency(%q<ruby_parser>, [">= 2.0.3"])
46
+ s.add_runtime_dependency(%q<sexp_processor>, [">= 3.0.2"])
47
+ else
48
+ s.add_dependency(%q<gettext>, [">= 2.0.4"])
49
+ s.add_dependency(%q<locale>, [">= 2.0.4"])
50
+ s.add_dependency(%q<ruby_parser>, [">= 2.0.3"])
51
+ s.add_dependency(%q<sexp_processor>, [">= 3.0.2"])
52
+ end
53
+ else
54
+ s.add_dependency(%q<gettext>, [">= 2.0.4"])
55
+ s.add_dependency(%q<locale>, [">= 2.0.4"])
56
+ s.add_dependency(%q<ruby_parser>, [">= 2.0.3"])
57
+ s.add_dependency(%q<sexp_processor>, [">= 3.0.2"])
58
+ end
59
+ end
Binary file
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kdegettext
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.3
5
+ platform: ruby
6
+ authors:
7
+ - Robert Riemann
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-08-06 00:00:00 +02:00
13
+ default_executable: kdegettext.rb
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: gettext
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 2.0.4
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: locale
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 2.0.4
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: ruby_parser
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 2.0.3
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: sexp_processor
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 3.0.2
54
+ version:
55
+ description: KDEgettext.rb is a parser that extends ruby gettext to work with the Qt/KDE framework provided by korundum. It allows creating catalog files (po-file) with the GNU GetText format.
56
+ email: robert.riemann@physik.hu-berlin.de
57
+ executables:
58
+ - kdegettext.rb
59
+ extensions: []
60
+
61
+ extra_rdoc_files:
62
+ - LICENSE
63
+ - README.markdown
64
+ files:
65
+ - Changelog.markdown
66
+ - LICENSE
67
+ - README.markdown
68
+ - Rakefile
69
+ - VERSION
70
+ - bin/kdegettext.rb
71
+ - kdegettext.gemspec
72
+ - pkg/kdegettext-0.9.3.gem
73
+ has_rdoc: false
74
+ homepage: http://github.com/saLOUt/KDEgettext.rb/
75
+ post_install_message:
76
+ rdoc_options:
77
+ - --charset=UTF-8
78
+ require_paths:
79
+ - lib
80
+ required_ruby_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: "0"
85
+ version:
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: "0"
91
+ version:
92
+ requirements: []
93
+
94
+ rubyforge_project: korundum
95
+ rubygems_version: 1.3.1
96
+ signing_key:
97
+ specification_version: 2
98
+ summary: KDEgettext.rb is a tool to localize KDE programs implemented in ruby.
99
+ test_files: []
100
+