packnga 0.9.5 → 0.9.6
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.
- data/README.textile +2 -2
- data/Rakefile +9 -3
- data/doc/text/news.textile +26 -0
- data/doc/text/tutorial.textile +2 -9
- data/lib/packnga/document-task.rb +15 -1
- data/lib/packnga/reference-task.rb +35 -407
- data/lib/packnga/release-task.rb +1 -115
- data/lib/packnga/version.rb +1 -1
- data/test/run-test.rb +38 -0
- data/test/test-document-task.rb +216 -0
- data/test/test-reference-task.rb +51 -0
- metadata +14 -24
data/README.textile
CHANGED
@@ -35,8 +35,8 @@ h2. Install
|
|
35
35
|
|
36
36
|
h2. Documents
|
37
37
|
|
38
|
-
* "Reference manual in English":http://
|
39
|
-
* "Reference manual in Japanese":http://
|
38
|
+
* "Reference manual in English":http://ranguba.org/packnga/en/
|
39
|
+
* "Reference manual in Japanese":http://ranguba.org/packnga/ja/
|
40
40
|
|
41
41
|
h2. Mailing list
|
42
42
|
|
data/Rakefile
CHANGED
@@ -33,6 +33,10 @@ require "packnga"
|
|
33
33
|
|
34
34
|
helper = Bundler::GemHelper.new(base_dir)
|
35
35
|
helper.install
|
36
|
+
def helper.version_tag
|
37
|
+
version
|
38
|
+
end
|
39
|
+
|
36
40
|
spec = helper.gemspec
|
37
41
|
Rake::Task["release"].prerequisites.clear
|
38
42
|
|
@@ -40,11 +44,13 @@ Gem::PackageTask.new(spec) do |pkg|
|
|
40
44
|
pkg.need_tar_gz = true
|
41
45
|
end
|
42
46
|
|
43
|
-
Packnga::DocumentTask.new(spec)
|
47
|
+
Packnga::DocumentTask.new(spec) do |task|
|
48
|
+
task.original_language = "en"
|
49
|
+
task.translate_languages = "ja"
|
50
|
+
end
|
44
51
|
|
45
52
|
Packnga::ReleaseTask.new(spec) do |task|
|
46
|
-
task.index_html_dir = "../
|
47
|
-
task.changes = File.read("doc/text/news.textile").split(/^h2\.\s(.*)$/)[2]
|
53
|
+
task.index_html_dir = "../ranguba.org"
|
48
54
|
end
|
49
55
|
|
50
56
|
desc "Run tests."
|
data/doc/text/news.textile
CHANGED
@@ -1,5 +1,31 @@
|
|
1
1
|
h1. NEWS
|
2
2
|
|
3
|
+
h2. 0.9.6: 2012-12-19
|
4
|
+
|
5
|
+
h3. Improvements
|
6
|
+
|
7
|
+
* [ReferenceTask] Used GetText::Tools::MsgMerge.run instead of
|
8
|
+
GNU msgmerge.
|
9
|
+
* [DocumentTask] Added #original_language for translation
|
10
|
+
target. Its default value is user's current locale.
|
11
|
+
* [DocumentTask] Added #translate_languages to translate document.
|
12
|
+
Its default value is English if user's current locale isn't it,
|
13
|
+
otherwise default value is not specified.
|
14
|
+
|
15
|
+
h3. Changes
|
16
|
+
|
17
|
+
* Use user's current locale as the default translation targets
|
18
|
+
instead of Japanese.
|
19
|
+
* For Ranguba project:
|
20
|
+
* [template] Removed needless Piwik tag.
|
21
|
+
* Followed the move from rubyforge.org to ranguba.org.
|
22
|
+
* [ReleaseTask] Removed rubyforge support.
|
23
|
+
|
24
|
+
h3. Fixes
|
25
|
+
|
26
|
+
* [ReferenceTask] Removed needless patch for YARD. This patch is
|
27
|
+
needless from YARD 0.8.3.
|
28
|
+
|
3
29
|
h2. 0.9.5: 2012-08-30
|
4
30
|
|
5
31
|
h3. Improvements
|
data/doc/text/tutorial.textile
CHANGED
@@ -62,14 +62,12 @@ Gem::Specification.new do |s|
|
|
62
62
|
s.files += Dir.glob("doc/text/*.*")
|
63
63
|
end
|
64
64
|
|
65
|
-
s.homepage = "http://
|
65
|
+
s.homepage = "http://ranguba.org/"
|
66
66
|
s.licenses = ["LGPLv2"]
|
67
67
|
s.require_paths = ["lib"]
|
68
|
-
s.rubyforge_project = "groonga"
|
69
68
|
|
70
69
|
s.add_runtime_dependency("rake")
|
71
70
|
s.add_runtime_dependency("yard")
|
72
|
-
s.add_runtime_dependency("rubyforge")
|
73
71
|
s.add_runtime_dependency("gettext")
|
74
72
|
s.add_development_dependency("test-unit")
|
75
73
|
s.add_development_dependency("test-unit-notify")
|
@@ -78,9 +76,6 @@ Gem::Specification.new do |s|
|
|
78
76
|
end
|
79
77
|
</pre>
|
80
78
|
|
81
|
-
If you set the attribute @rubyforge_project@ of @spec@ value,
|
82
|
-
"Packnga::ReleaseTask" class creates tasks for rubyforge.
|
83
|
-
|
84
79
|
Next, we should get @spec@ value in Rakefile from gemspec,
|
85
80
|
so we write below source code in Rakefile.
|
86
81
|
|
@@ -104,8 +99,7 @@ Jeweler::Tasks.new do |_spec|
|
|
104
99
|
spec = _spec
|
105
100
|
spec.name = "packnga"
|
106
101
|
spec.version = version
|
107
|
-
spec.
|
108
|
-
spec.homepage = "http://groonga.rubyforge.org/"
|
102
|
+
spec.homepage = "http://ranguba.org/"
|
109
103
|
spec.authors = ["Haruka Yoshihara", "Kouhei Sutou"]
|
110
104
|
spec.email = ["yoshihara@clear-code.com", "kou@clear-code.com"]
|
111
105
|
entries = File.read("README.textile").split(/^h2\.\s(.*)$/)
|
@@ -135,7 +129,6 @@ This table describes Packnga's classes.
|
|
135
129
|
- Packnga::ReleaseTask :=
|
136
130
|
This class create tasks for uploading references and package and preparing to upload them.
|
137
131
|
It defines a task to tag the current version in git and a task to user-install gem for test.
|
138
|
-
It also create tasks for uploading rubyforge if you set @rubyforge_project@ in @spec@ .
|
139
132
|
=:
|
140
133
|
|
141
134
|
Please see below for creating tasks.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
#
|
3
|
-
# Copyright (C) 2011 Haruka Yoshihara <yoshihara@clear-code.com>
|
3
|
+
# Copyright (C) 2011-2012 Haruka Yoshihara <yoshihara@clear-code.com>
|
4
4
|
# Copyright (C) 2011 Kouhei Sutou <kou@clear-code.com>
|
5
5
|
#
|
6
6
|
# This library is free software; you can redistribute it and/or
|
@@ -47,6 +47,20 @@ module Packnga
|
|
47
47
|
@reference_task.base_dir = dir
|
48
48
|
end
|
49
49
|
|
50
|
+
# Sets original language which you wrote document.
|
51
|
+
# Default value is your current locale (Locale.current.to_s).
|
52
|
+
# @param [String] language language you wrote document
|
53
|
+
def original_language=(language)
|
54
|
+
@reference_task.original_language = language
|
55
|
+
end
|
56
|
+
|
57
|
+
# Sets translate languages for document.
|
58
|
+
# @param [String] languages languages to translate
|
59
|
+
def translate_languages=(languages)
|
60
|
+
languages = [languages] if languages.instance_of?(String)
|
61
|
+
@reference_task.translate_languages = languages
|
62
|
+
end
|
63
|
+
|
50
64
|
# Runs block to task for YARD documentation.
|
51
65
|
def yard
|
52
66
|
yield(@yard_task)
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
#
|
3
|
-
# Copyright (C) 2011 Haruka Yoshihara <yoshihara@clear-code.com>
|
3
|
+
# Copyright (C) 2011-2012 Haruka Yoshihara <yoshihara@clear-code.com>
|
4
|
+
# Copyright (C) 2012 Kouhei Sutou <kou@clear-code.com>
|
4
5
|
#
|
5
6
|
# This library is free software; you can redistribute it and/or
|
6
7
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -46,10 +47,22 @@ module Packnga
|
|
46
47
|
# @return [Array<String>] target text files
|
47
48
|
attr_accessor :text_files
|
48
49
|
|
50
|
+
# This attribute is used to set the language you wrote original
|
51
|
+
# document. Its default value is your current locale.
|
52
|
+
# @return [String] language you used to write document
|
53
|
+
attr_accessor :original_language
|
54
|
+
|
55
|
+
# This attribute is used to set languages for tnanslated document.
|
56
|
+
# If original_language isn't one, its default value is English.
|
57
|
+
# Otherwise, it is not specified.
|
58
|
+
# @return [Array<String>] target languages
|
59
|
+
attr_accessor :translate_languages
|
60
|
+
|
49
61
|
# @private
|
50
62
|
def initialize(spec)
|
51
63
|
@spec = spec
|
52
64
|
@base_dir = nil
|
65
|
+
@original_language = nil
|
53
66
|
@translate_languages = nil
|
54
67
|
@supported_languages = nil
|
55
68
|
@source_files = nil
|
@@ -57,7 +70,6 @@ module Packnga
|
|
57
70
|
@readme = nil
|
58
71
|
@extra_files = nil
|
59
72
|
@files = nil
|
60
|
-
@html_files = nil
|
61
73
|
@po_dir = nil
|
62
74
|
@pot_file = nil
|
63
75
|
end
|
@@ -76,9 +88,13 @@ module Packnga
|
|
76
88
|
private
|
77
89
|
def set_default_values
|
78
90
|
@base_dir ||= Pathname.new("doc")
|
79
|
-
@
|
80
|
-
@
|
81
|
-
|
91
|
+
@original_language ||= current_language
|
92
|
+
if @original_language == "en"
|
93
|
+
@translate_languages ||= []
|
94
|
+
else
|
95
|
+
@translate_languages ||= ["en"]
|
96
|
+
end
|
97
|
+
@supported_languages = [@original_language, *@translate_languages]
|
82
98
|
@po_dir = "#{@base_dir}/po"
|
83
99
|
@pot_file = "#{@po_dir}/#{@spec.name}.pot"
|
84
100
|
@extra_files = @text_files
|
@@ -86,12 +102,20 @@ module Packnga
|
|
86
102
|
@files = @source_files + @extra_files
|
87
103
|
end
|
88
104
|
|
89
|
-
def
|
90
|
-
|
105
|
+
def current_language
|
106
|
+
locale = Locale.current
|
107
|
+
language = locale.language
|
108
|
+
region = locale.region
|
109
|
+
|
110
|
+
if region.nil?
|
111
|
+
language
|
112
|
+
else
|
113
|
+
"#{language}_#{region}"
|
114
|
+
end
|
91
115
|
end
|
92
116
|
|
93
|
-
def
|
94
|
-
@base_dir + "reference
|
117
|
+
def reference_base_dir
|
118
|
+
@base_dir + "reference"
|
95
119
|
end
|
96
120
|
|
97
121
|
def html_base_dir
|
@@ -134,8 +158,8 @@ module Packnga
|
|
134
158
|
file po_file => @files do |t|
|
135
159
|
current_pot_file = "tmp.pot"
|
136
160
|
create_pot_file(current_pot_file)
|
137
|
-
GetText.
|
138
|
-
|
161
|
+
GetText::Tools::MsgMerge.run(po_file, current_pot_file,
|
162
|
+
"-o", po_file)
|
139
163
|
FileUtils.rm_f(current_pot_file)
|
140
164
|
end
|
141
165
|
else
|
@@ -374,399 +398,3 @@ module Packnga
|
|
374
398
|
end
|
375
399
|
end
|
376
400
|
end
|
377
|
-
|
378
|
-
# XXX: This module is the patch to translate documents.
|
379
|
-
# This module should be deleted after
|
380
|
-
# https://github.com/lsegal/yard/pull/594 is merged and released.
|
381
|
-
# @private
|
382
|
-
module YARD
|
383
|
-
# @private
|
384
|
-
module I18n
|
385
|
-
# @private
|
386
|
-
class Locale
|
387
|
-
def translate(message)
|
388
|
-
return message if @messages[message].nil?
|
389
|
-
return message if @messages[message].empty?
|
390
|
-
@messages[message]
|
391
|
-
end
|
392
|
-
end
|
393
|
-
end
|
394
|
-
end
|
395
|
-
|
396
|
-
# XXX: This module is the re-definition of YARD module.
|
397
|
-
# this module should be deleted in the next release of YARD.
|
398
|
-
# @private
|
399
|
-
module YARD
|
400
|
-
module CLI
|
401
|
-
# @private
|
402
|
-
class Yardoc
|
403
|
-
def parse_arguments(*args)
|
404
|
-
parse_yardopts_options(*args)
|
405
|
-
|
406
|
-
# Parse files and then command line arguments
|
407
|
-
optparse(*support_rdoc_document_file!) if use_document_file
|
408
|
-
optparse(*yardopts) if use_yardopts_file
|
409
|
-
optparse(*args)
|
410
|
-
|
411
|
-
# Last minute modifications
|
412
|
-
self.files = ['{lib,app}/**/*.rb', 'ext/**/*.c'] if self.files.empty?
|
413
|
-
self.files.delete_if {|x| x =~ /\A\s*\Z/ } # remove empty ones
|
414
|
-
readme = Dir.glob('README*').first
|
415
|
-
readme ||= Dir.glob(files.first).first if options.onefile
|
416
|
-
options.readme ||= CodeObjects::ExtraFileObject.new(readme) if readme
|
417
|
-
options.files.unshift(options.readme).uniq! if options.readme
|
418
|
-
|
419
|
-
Tags::Library.visible_tags -= hidden_tags
|
420
|
-
add_visibility_verifier
|
421
|
-
add_api_verifier
|
422
|
-
|
423
|
-
apply_locale
|
424
|
-
|
425
|
-
# US-ASCII is invalid encoding for onefile
|
426
|
-
if defined?(::Encoding) && options.onefile
|
427
|
-
if ::Encoding.default_internal == ::Encoding::US_ASCII
|
428
|
-
log.warn "--one-file is not compatible with US-ASCII encoding, using ASCII-8BIT"
|
429
|
-
::Encoding.default_external, ::Encoding.default_internal = ['ascii-8bit'] * 2
|
430
|
-
end
|
431
|
-
end
|
432
|
-
|
433
|
-
if generate && !verify_markup_options
|
434
|
-
false
|
435
|
-
else
|
436
|
-
true
|
437
|
-
end
|
438
|
-
end
|
439
|
-
|
440
|
-
def apply_locale
|
441
|
-
options.files.each do |file|
|
442
|
-
file.locale = options.locale
|
443
|
-
end
|
444
|
-
end
|
445
|
-
|
446
|
-
def output_options(opts)
|
447
|
-
opts.separator ""
|
448
|
-
opts.separator "Output options:"
|
449
|
-
|
450
|
-
opts.on('--one-file', 'Generates output as a single file') do
|
451
|
-
options.onefile = true
|
452
|
-
end
|
453
|
-
|
454
|
-
opts.on('--list', 'List objects to standard out (implies -n)') do |format|
|
455
|
-
self.generate = false
|
456
|
-
self.list = true
|
457
|
-
end
|
458
|
-
|
459
|
-
opts.on('--no-public', "Don't show public methods. (default shows public)") do
|
460
|
-
visibilities.delete(:public)
|
461
|
-
end
|
462
|
-
|
463
|
-
opts.on('--protected', "Show protected methods. (default hides protected)") do
|
464
|
-
visibilities.push(:protected)
|
465
|
-
end
|
466
|
-
|
467
|
-
opts.on('--private', "Show private methods. (default hides private)") do
|
468
|
-
visibilities.push(:private)
|
469
|
-
end
|
470
|
-
|
471
|
-
opts.on('--no-private', "Hide objects with @private tag") do
|
472
|
-
options.verifier.add_expressions '!object.tag(:private) &&
|
473
|
-
(object.namespace.is_a?(CodeObjects::Proxy) || !object.namespace.tag(:private))'
|
474
|
-
end
|
475
|
-
|
476
|
-
opts.on('--[no-]api API', 'Generates documentation for a given API',
|
477
|
-
'(objects which define the correct @api tag).',
|
478
|
-
'If --no-api is given, displays objects with',
|
479
|
-
'no @api tag.') do |api|
|
480
|
-
api = '' if api == false
|
481
|
-
apis.push(api)
|
482
|
-
end
|
483
|
-
|
484
|
-
opts.on('--embed-mixins', "Embeds mixin methods into class documentation") do
|
485
|
-
options.embed_mixins << '*'
|
486
|
-
end
|
487
|
-
|
488
|
-
opts.on('--embed-mixin [MODULE]', "Embeds mixin methods from a particular",
|
489
|
-
" module into class documentation") do |mod|
|
490
|
-
options.embed_mixins << mod
|
491
|
-
end
|
492
|
-
|
493
|
-
opts.on('--no-highlight', "Don't highlight code blocks in output.") do
|
494
|
-
options.highlight = false
|
495
|
-
end
|
496
|
-
|
497
|
-
opts.on('--default-return TYPE', "Shown if method has no return type. ",
|
498
|
-
" (defaults to 'Object')") do |type|
|
499
|
-
options.default_return = type
|
500
|
-
end
|
501
|
-
|
502
|
-
opts.on('--hide-void-return', "Hides return types specified as 'void'. ",
|
503
|
-
" (default is shown)") do
|
504
|
-
options.hide_void_return = true
|
505
|
-
end
|
506
|
-
|
507
|
-
opts.on('--query QUERY', "Only show objects that match a specific query") do |query|
|
508
|
-
next if YARD::Config.options[:safe_mode]
|
509
|
-
options.verifier.add_expressions(query.taint)
|
510
|
-
end
|
511
|
-
|
512
|
-
opts.on('--title TITLE', 'Add a specific title to HTML documents') do |title|
|
513
|
-
options.title = title
|
514
|
-
end
|
515
|
-
|
516
|
-
opts.on('-r', '--readme FILE', '--main FILE', 'The readme file used as the title page',
|
517
|
-
' of documentation.') do |readme|
|
518
|
-
if File.file?(readme)
|
519
|
-
options.readme = CodeObjects::ExtraFileObject.new(readme)
|
520
|
-
else
|
521
|
-
log.warn "Could not find readme file: #{readme}"
|
522
|
-
end
|
523
|
-
end
|
524
|
-
|
525
|
-
opts.on('--files FILE1,FILE2,...', 'Any extra comma separated static files to be ',
|
526
|
-
' included (eg. FAQ)') do |files|
|
527
|
-
add_extra_files(*files.split(","))
|
528
|
-
end
|
529
|
-
|
530
|
-
opts.on('--asset FROM[:TO]', 'A file or directory to copy over to output ',
|
531
|
-
' directory after generating') do |asset|
|
532
|
-
re = /^(?:\.\.\/|\/)/
|
533
|
-
from, to = *asset.split(':').map {|f| File.cleanpath(f) }
|
534
|
-
to ||= from
|
535
|
-
if from =~ re || to =~ re
|
536
|
-
log.warn "Invalid file '#{asset}'"
|
537
|
-
else
|
538
|
-
assets[from] = to
|
539
|
-
end
|
540
|
-
end
|
541
|
-
|
542
|
-
opts.on('-o', '--output-dir PATH',
|
543
|
-
'The output directory. (defaults to ./doc)') do |dir|
|
544
|
-
options.serializer.basepath = dir
|
545
|
-
end
|
546
|
-
|
547
|
-
opts.on('-m', '--markup MARKUP',
|
548
|
-
'Markup style used in documentation, like textile, ',
|
549
|
-
' markdown or rdoc. (defaults to rdoc)') do |markup|
|
550
|
-
self.has_markup = true
|
551
|
-
options.markup = markup.to_sym
|
552
|
-
end
|
553
|
-
|
554
|
-
opts.on('-M', '--markup-provider MARKUP_PROVIDER',
|
555
|
-
'Overrides the library used to process markup ',
|
556
|
-
' formatting (specify the gem name)') do |markup_provider|
|
557
|
-
options.markup_provider = markup_provider.to_sym
|
558
|
-
end
|
559
|
-
|
560
|
-
opts.on('--charset ENC', 'Character set to use when parsing files ',
|
561
|
-
' (default is system locale)') do |encoding|
|
562
|
-
begin
|
563
|
-
if defined?(Encoding) && Encoding.respond_to?(:default_external=)
|
564
|
-
Encoding.default_external, Encoding.default_internal = encoding, encoding
|
565
|
-
end
|
566
|
-
rescue ArgumentError => e
|
567
|
-
raise OptionParser::InvalidOption, e
|
568
|
-
end
|
569
|
-
end
|
570
|
-
|
571
|
-
opts.on('-t', '--template TEMPLATE',
|
572
|
-
'The template to use. (defaults to "default")') do |template|
|
573
|
-
options.template = template.to_sym
|
574
|
-
end
|
575
|
-
|
576
|
-
opts.on('-p', '--template-path PATH',
|
577
|
-
'The template path to look for templates in.',
|
578
|
-
' (used with -t).') do |path|
|
579
|
-
next if YARD::Config.options[:safe_mode]
|
580
|
-
YARD::Templates::Engine.register_template_path(File.expand_path(path))
|
581
|
-
end
|
582
|
-
|
583
|
-
opts.on('-f', '--format FORMAT',
|
584
|
-
'The output format for the template.',
|
585
|
-
' (defaults to html)') do |format|
|
586
|
-
options.format = format.to_sym
|
587
|
-
end
|
588
|
-
|
589
|
-
opts.on('--no-stats', 'Don\'t print statistics') do
|
590
|
-
self.statistics = false
|
591
|
-
end
|
592
|
-
|
593
|
-
opts.on('--locale LOCALE',
|
594
|
-
'The locale for generated documentation.',
|
595
|
-
' (defaults to en)') do |locale|
|
596
|
-
options.locale = locale
|
597
|
-
end
|
598
|
-
|
599
|
-
opts.on('--po-dir DIR',
|
600
|
-
'The directory that has .po files.',
|
601
|
-
' (defaults to #{YARD::Registry.po_dir})') do |dir|
|
602
|
-
YARD::Registry.po_dir = dir
|
603
|
-
end
|
604
|
-
end
|
605
|
-
end
|
606
|
-
end
|
607
|
-
|
608
|
-
module CodeObjects
|
609
|
-
# @private
|
610
|
-
class ExtraFileObject
|
611
|
-
attr_writer :attributes
|
612
|
-
attr_reader :locale
|
613
|
-
|
614
|
-
def initialize(filename, contents = nil)
|
615
|
-
self.filename = filename
|
616
|
-
self.name = File.basename(filename).gsub(/\.[^.]+$/, '')
|
617
|
-
self.attributes = SymbolHash.new(false)
|
618
|
-
@original_contents = contents
|
619
|
-
@parsed = false
|
620
|
-
@locale = nil
|
621
|
-
ensure_parsed
|
622
|
-
end
|
623
|
-
|
624
|
-
def attributes
|
625
|
-
ensure_parsed
|
626
|
-
@attributes
|
627
|
-
end
|
628
|
-
|
629
|
-
def contents
|
630
|
-
ensure_parsed
|
631
|
-
@contents
|
632
|
-
end
|
633
|
-
|
634
|
-
def contents=(contents)
|
635
|
-
@original_contents = contents
|
636
|
-
@parsed = false
|
637
|
-
end
|
638
|
-
|
639
|
-
def locale=(locale)
|
640
|
-
@locale = locale
|
641
|
-
@parsed = false
|
642
|
-
end
|
643
|
-
|
644
|
-
private
|
645
|
-
def ensure_parsed
|
646
|
-
return if @parsed
|
647
|
-
@parsed = true
|
648
|
-
@contents = parse_contents(@original_contents || File.read(@filename))
|
649
|
-
end
|
650
|
-
|
651
|
-
def parse_contents(data)
|
652
|
-
retried = false
|
653
|
-
cut_index = 0
|
654
|
-
data = translate(data)
|
655
|
-
data = data.split("\n")
|
656
|
-
data.each_with_index do |line, index|
|
657
|
-
case line
|
658
|
-
when /^#!(\S+)\s*$/
|
659
|
-
if index == 0
|
660
|
-
attributes[:markup] = $1
|
661
|
-
else
|
662
|
-
cut_index = index
|
663
|
-
break
|
664
|
-
end
|
665
|
-
when /^\s*#\s*@(\S+)\s*(.+?)\s*$/
|
666
|
-
attributes[$1] = $2
|
667
|
-
else
|
668
|
-
cut_index = index
|
669
|
-
break
|
670
|
-
end
|
671
|
-
end
|
672
|
-
data = data[cut_index..-1] if cut_index > 0
|
673
|
-
contents = data.join("\n")
|
674
|
-
|
675
|
-
if contents.respond_to?(:force_encoding) && attributes[:encoding]
|
676
|
-
begin
|
677
|
-
contents.force_encoding(attributes[:encoding])
|
678
|
-
rescue ArgumentError
|
679
|
-
log.warn "Invalid encoding `#{attributes[:encoding]}' in #{filename}"
|
680
|
-
end
|
681
|
-
end
|
682
|
-
contents
|
683
|
-
rescue ArgumentError => e
|
684
|
-
if retried && e.message =~ /invalid byte sequence/
|
685
|
-
# This should never happen.
|
686
|
-
log.warn "Could not read #{filename}, #{e.message}. You probably want to set `--charset`."
|
687
|
-
return ''
|
688
|
-
end
|
689
|
-
data.force_encoding('binary') if data.respond_to?(:force_encoding)
|
690
|
-
retried = true
|
691
|
-
retry
|
692
|
-
end
|
693
|
-
|
694
|
-
def translate(data)
|
695
|
-
text = YARD::I18n::Text.new(data, :have_header => true)
|
696
|
-
text.translate(YARD::Registry.locale(locale))
|
697
|
-
end
|
698
|
-
end
|
699
|
-
end
|
700
|
-
|
701
|
-
module I18n
|
702
|
-
# @private
|
703
|
-
class Locale
|
704
|
-
def load(locale_directory)
|
705
|
-
return false if @name.nil?
|
706
|
-
|
707
|
-
po_file = File.join(locale_directory, "#{@name}.po")
|
708
|
-
return false unless File.exist?(po_file)
|
709
|
-
|
710
|
-
begin
|
711
|
-
require "gettext/tools/poparser"
|
712
|
-
require "gettext/runtime/mofile"
|
713
|
-
rescue LoadError
|
714
|
-
log.warn "Need gettext gem for i18n feature:"
|
715
|
-
log.warn " gem install gettext"
|
716
|
-
return false
|
717
|
-
end
|
718
|
-
|
719
|
-
parser = GetText::PoParser.new
|
720
|
-
parser.report_warning = false
|
721
|
-
data = GetText::MoFile.new
|
722
|
-
parser.parse_file(po_file, data)
|
723
|
-
@messages.merge!(data)
|
724
|
-
true
|
725
|
-
end
|
726
|
-
end
|
727
|
-
end
|
728
|
-
|
729
|
-
# @private
|
730
|
-
module Registry
|
731
|
-
DEFAULT_PO_DIR = "po"
|
732
|
-
class << self
|
733
|
-
def locale(name)
|
734
|
-
thread_local_store.locale(name)
|
735
|
-
end
|
736
|
-
|
737
|
-
attr_accessor :po_dir
|
738
|
-
undef po_dir, po_dir=
|
739
|
-
def po_dir=(dir) Thread.current[:__yard_po_dir__] = dir end
|
740
|
-
def po_dir
|
741
|
-
Thread.current[:__yard_po_dir__] ||= DEFAULT_PO_DIR
|
742
|
-
end
|
743
|
-
end
|
744
|
-
end
|
745
|
-
|
746
|
-
# @private
|
747
|
-
class RegistryStore
|
748
|
-
def initialize
|
749
|
-
@file = nil
|
750
|
-
@checksums = {}
|
751
|
-
@store = {}
|
752
|
-
@proxy_types = {}
|
753
|
-
@object_types = {:root => [:root]}
|
754
|
-
@notfound = {}
|
755
|
-
@loaded_objects = 0
|
756
|
-
@available_objects = 0
|
757
|
-
@locales = {}
|
758
|
-
@store[:root] = CodeObjects::RootObject.allocate
|
759
|
-
@store[:root].send(:initialize, nil, :root)
|
760
|
-
end
|
761
|
-
|
762
|
-
def locale(name)
|
763
|
-
@locales[name] ||= load_locale(name)
|
764
|
-
end
|
765
|
-
|
766
|
-
def load_locale(name)
|
767
|
-
locale = I18n::Locale.new(name)
|
768
|
-
locale.load(Registry.po_dir)
|
769
|
-
locale
|
770
|
-
end
|
771
|
-
end
|
772
|
-
end
|
data/lib/packnga/release-task.rb
CHANGED
@@ -15,14 +15,10 @@
|
|
15
15
|
# License along with this library; if not, write to the Free Software
|
16
16
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
17
17
|
|
18
|
-
require "rubyforge"
|
19
|
-
require "digest"
|
20
|
-
|
21
18
|
module Packnga
|
22
19
|
# This class creates release tasks.
|
23
20
|
#
|
24
21
|
# Release tasks tag current version and install gem for test.
|
25
|
-
# It also define tasks to upload RubyForge whether option.
|
26
22
|
#
|
27
23
|
# @since 0.9.0
|
28
24
|
class ReleaseTask
|
@@ -37,27 +33,16 @@ module Packnga
|
|
37
33
|
# This attribute is message when tagging in release.
|
38
34
|
# @param [String] value message
|
39
35
|
attr_writer :tag_message
|
40
|
-
# This attribute is options for uploading RubyForge by rsync.
|
41
|
-
# @param [Hash] value options for uploading.
|
42
|
-
attr_writer :publish_options
|
43
|
-
# This attribute is text for changes in new release
|
44
|
-
# to post news to RubyForge.
|
45
|
-
# @param [String] value text for changes.
|
46
|
-
attr_writer :changes
|
47
36
|
# Defines task for preparing to release.
|
48
37
|
# Defined tasks update version and release-date in index files
|
49
38
|
# and tag in git.
|
50
|
-
# If you set rubyforge_project of Jeweler::Task.new with its given block,
|
51
|
-
# it also define tasks to update RubyForge.
|
52
39
|
# @param [Gem::Specification] spec specification for your package
|
53
40
|
def initialize(spec)
|
54
41
|
@spec = spec
|
55
42
|
@index_html_dir = nil
|
56
|
-
@rubyforge = nil
|
57
43
|
@tag_messsage = nil
|
58
44
|
@publish_options = nil
|
59
45
|
@changes = nil
|
60
|
-
@rubyforge_password = nil
|
61
46
|
yield(self) if block_given?
|
62
47
|
set_default_values
|
63
48
|
define_tasks
|
@@ -84,7 +69,6 @@ module Packnga
|
|
84
69
|
namespace :release do
|
85
70
|
define_info_task
|
86
71
|
define_tag_task
|
87
|
-
define_rubyforge_tasks
|
88
72
|
end
|
89
73
|
end
|
90
74
|
|
@@ -105,7 +89,7 @@ module Packnga
|
|
105
89
|
raise ArgumentError, "Specify option(s) of #{empty_options.join(", ")}."
|
106
90
|
end
|
107
91
|
@index_html_dir = Pathname(@index_html_dir)
|
108
|
-
indexes = [@index_html_dir + "index.html", @index_html_dir + "index.html
|
92
|
+
indexes = [@index_html_dir + "index.html", @index_html_dir + "ja/index.html"]
|
109
93
|
indexes.each do |index|
|
110
94
|
content = replaced_content = File.read(index)
|
111
95
|
[[old_version, new_version],
|
@@ -136,103 +120,5 @@ module Packnga
|
|
136
120
|
sh("git tag -a #{version} -m '#{@tag_message}'")
|
137
121
|
end
|
138
122
|
end
|
139
|
-
|
140
|
-
def define_rubyforge_tasks
|
141
|
-
return if @spec.rubyforge_project.nil?
|
142
|
-
@rubyforge = RubyForge.new
|
143
|
-
@uninitialized_password = Digest::SHA2.hexdigest(Time.now.to_f.to_s)
|
144
|
-
@rubyforge.configure("password" => @uninitialized_password)
|
145
|
-
define_reference_task
|
146
|
-
define_html_task
|
147
|
-
define_publish_task
|
148
|
-
define_upload_tasks
|
149
|
-
define_post_task
|
150
|
-
end
|
151
|
-
|
152
|
-
def define_reference_task
|
153
|
-
namespace :reference do
|
154
|
-
desc "Upload document to RubyForge."
|
155
|
-
task :publish => "reference:publication:generate" do
|
156
|
-
rsync_to_rubyforge(@spec, "#{html_reference_dir}/", @spec.name, @publish_options)
|
157
|
-
end
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
|
-
def define_html_task
|
162
|
-
namespace :html do
|
163
|
-
desc "Publish HTML to Web site."
|
164
|
-
task :publish do
|
165
|
-
rsync_to_rubyforge(@spec, "#{html_base_dir}/", "", @publish_options)
|
166
|
-
end
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
def define_publish_task
|
171
|
-
desc "Upload document and HTML to RubyForge."
|
172
|
-
task :publish => ["html:publish", "reference:publish"]
|
173
|
-
end
|
174
|
-
|
175
|
-
def define_upload_tasks
|
176
|
-
namespace :rubyforge do
|
177
|
-
desc "Upload tar.gz to RubyForge."
|
178
|
-
task :upload => "package" do
|
179
|
-
ensure_rubyforge_password
|
180
|
-
if @rubyforge.autoconfig["group_ids"][@spec.rubyforge_project].nil?
|
181
|
-
@rubyforge.scrape_config
|
182
|
-
@rubyforge.save_autoconfig
|
183
|
-
end
|
184
|
-
if @rubyforge.autoconfig["package_ids"][@spec.name].nil?
|
185
|
-
@rubyforge.create_package(@rubyforge.autoconfig["group_ids"][@spec.rubyforge_project], @spec.name)
|
186
|
-
end
|
187
|
-
@rubyforge.add_release(@spec.rubyforge_project,
|
188
|
-
@spec.name,
|
189
|
-
@spec.version.to_s,
|
190
|
-
"pkg/#{@spec.name}-#{@spec.version}.tar.gz")
|
191
|
-
end
|
192
|
-
end
|
193
|
-
desc "Release to RubyForge."
|
194
|
-
task :rubyforge => "release:rubyforge:upload"
|
195
|
-
end
|
196
|
-
|
197
|
-
def define_post_task
|
198
|
-
namespace :rubyforge do
|
199
|
-
namespace :news do
|
200
|
-
desc "Post news to RubyForge."
|
201
|
-
task :post do
|
202
|
-
ensure_rubyforge_password
|
203
|
-
group_id =
|
204
|
-
@rubyforge.autoconfig["group_ids"][@spec.rubyforge_project]
|
205
|
-
subject =
|
206
|
-
"#{@spec.name} version #{@spec.version} has been released!"
|
207
|
-
body = @spec.description + "\nChanges:" + @changes
|
208
|
-
|
209
|
-
if @rubyforge.post_news(group_id, subject, body).nil?
|
210
|
-
raise "News couldn't be posted to RubyForge."
|
211
|
-
end
|
212
|
-
end
|
213
|
-
end
|
214
|
-
end
|
215
|
-
end
|
216
|
-
|
217
|
-
def rsync_to_rubyforge(spec, source, destination, options={})
|
218
|
-
host = "#{@rubyforge.userconfig["username"]}@rubyforge.org"
|
219
|
-
|
220
|
-
rsync_args = "-av --exclude '*.erb' --chmod=ug+w"
|
221
|
-
rsync_args << " --group=#{spec.rubyforge_project}"
|
222
|
-
rsync_args << " --delete" if options[:delete]
|
223
|
-
rsync_args << " --dry-run" if options[:dryrun]
|
224
|
-
remote_dir = "/var/www/gforge-projects/#{spec.rubyforge_project}/"
|
225
|
-
sh("rsync #{rsync_args} #{source} #{host}:#{remote_dir}#{destination}")
|
226
|
-
end
|
227
|
-
|
228
|
-
def ensure_rubyforge_password
|
229
|
-
if @rubyforge.userconfig["password"] == @uninitialized_password
|
230
|
-
print "password:"
|
231
|
-
system("stty -echo")
|
232
|
-
@rubyforge.userconfig["password"] = STDIN.gets.chomp
|
233
|
-
system("stty echo")
|
234
|
-
puts
|
235
|
-
end
|
236
|
-
end
|
237
123
|
end
|
238
124
|
end
|
data/lib/packnga/version.rb
CHANGED
data/test/run-test.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Copyright (C) 2012 Haruka Yoshihara <yoshihara@clear-code.com>
|
4
|
+
#
|
5
|
+
# This library is free software; you can redistribute it and/or
|
6
|
+
# modify it under the terms of the GNU Lesser General Public
|
7
|
+
# License version 2.1 as published by the Free Software Foundation.
|
8
|
+
#
|
9
|
+
# This library is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
# Lesser General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU Lesser General Public
|
15
|
+
# License along with this library; if not, write to the Free Software
|
16
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
17
|
+
|
18
|
+
$KCODE = "u" if RUBY_VERSION < "1.9"
|
19
|
+
|
20
|
+
require "test-unit"
|
21
|
+
require "test/unit/notify"
|
22
|
+
|
23
|
+
base_dir = File.expand_path(File.join(File.dirname(__FILE__), ".."))
|
24
|
+
lib_dir = File.join(base_dir, "lib")
|
25
|
+
test_dir = File.join(base_dir, "test")
|
26
|
+
|
27
|
+
$LOAD_PATH.unshift(lib_dir)
|
28
|
+
$LOAD_PATH.unshift(test_dir)
|
29
|
+
|
30
|
+
require "packnga"
|
31
|
+
|
32
|
+
Dir.glob("#{test_dir}/**/test{_,-}*.rb") do |file|
|
33
|
+
require file.sub(/\.rb$/, '')
|
34
|
+
end
|
35
|
+
|
36
|
+
ENV["TEST_UNIT_MAX_DIFF_TARGET_STRING_SIZE"] ||= "5000"
|
37
|
+
|
38
|
+
exit Test::Unit::AutoRunner.run
|
@@ -0,0 +1,216 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright (C) 2012 Haruka Yoshihara <yoshihara@clear-code.com>
|
4
|
+
#
|
5
|
+
# This library is free software; you can redistribute it and/or
|
6
|
+
# modify it under the terms of the GNU Lesser General Public
|
7
|
+
# License version 2.1 as published by the Free Software Foundation.
|
8
|
+
#
|
9
|
+
# This library is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
# Lesser General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU Lesser General Public
|
15
|
+
# License along with this library; if not, write to the Free Software
|
16
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
17
|
+
|
18
|
+
class DocumentTaskTest < Test::Unit::TestCase
|
19
|
+
def teardown
|
20
|
+
Rake::Task.clear
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_base_directory_set
|
24
|
+
spec = Gem::Specification.new
|
25
|
+
base_dir = Pathname("base_directory")
|
26
|
+
document_task = Packnga::DocumentTask.new(spec) do |task|
|
27
|
+
task.base_dir = base_dir.to_s
|
28
|
+
end
|
29
|
+
|
30
|
+
document_task.yard do |yard_task|
|
31
|
+
assert_equal(base_dir, yard_task.base_dir)
|
32
|
+
end
|
33
|
+
|
34
|
+
document_task.reference do |reference_task|
|
35
|
+
assert_equal(base_dir, reference_task.base_dir)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class TranslateLanguagesTest < self
|
40
|
+
def test_single
|
41
|
+
translate_language = "ja"
|
42
|
+
options = {:translate_languages => translate_language}
|
43
|
+
document_task = create_document_task(options)
|
44
|
+
|
45
|
+
document_task.reference do |reference_task|
|
46
|
+
assert_equal([translate_language], reference_task.translate_languages)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_multi
|
51
|
+
translate_languages = ["ja", "uk"]
|
52
|
+
options = {:translate_languages => translate_languages}
|
53
|
+
document_task = create_document_task(options)
|
54
|
+
|
55
|
+
document_task.reference do |reference_task|
|
56
|
+
assert_equal(translate_languages, reference_task.translate_languages)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
def create_document_task(options)
|
62
|
+
translate_languages = options[:translate_languages]
|
63
|
+
spec = Gem::Specification.new
|
64
|
+
Packnga::DocumentTask.new(spec) do |task|
|
65
|
+
task.translate_languages = translate_languages
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_original_language
|
71
|
+
original_language = "original_language"
|
72
|
+
spec = Gem::Specification.new
|
73
|
+
document_task = Packnga::DocumentTask.new(spec) do |task|
|
74
|
+
task.original_language = original_language
|
75
|
+
end
|
76
|
+
|
77
|
+
document_task.reference do |reference_task|
|
78
|
+
assert_equal(original_language, reference_task.original_language)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
class ReadmeTest < self
|
83
|
+
def setup
|
84
|
+
@readme = "README.textile"
|
85
|
+
spec = Gem::Specification.new do |_spec|
|
86
|
+
_spec.files = [@readme]
|
87
|
+
end
|
88
|
+
document_task = Packnga::DocumentTask.new(spec)
|
89
|
+
@yard_task = extract_yard_task(document_task)
|
90
|
+
@reference_task = extract_reference_task(document_task)
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_readme
|
94
|
+
assert_equal(@readme, @yard_task.readme)
|
95
|
+
assert_equal(@readme, @reference_task.readme)
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_source_files
|
99
|
+
assert_equal([], @yard_task.source_files)
|
100
|
+
assert_equal([], @reference_task.source_files)
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_text_files
|
104
|
+
assert_equal([], @yard_task.text_files)
|
105
|
+
assert_equal([], @reference_task.text_files)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
class SourceFilesTest < self
|
110
|
+
def setup
|
111
|
+
source_ruby_files = ["lib/packnga.rb", "lib/packnga/version.rb"]
|
112
|
+
other_ruby_files = ["other1.rb", "ext/other2.rb"]
|
113
|
+
|
114
|
+
source_c_files = ["ext/packnga.c", "ext/packnga/version.c"]
|
115
|
+
other_c_files = ["other1.c", "lib/other2.c"]
|
116
|
+
|
117
|
+
spec = Gem::Specification.new do |_spec|
|
118
|
+
_spec.files = [
|
119
|
+
source_ruby_files,
|
120
|
+
other_ruby_files,
|
121
|
+
source_c_files,
|
122
|
+
other_c_files,
|
123
|
+
]
|
124
|
+
end
|
125
|
+
document_task = Packnga::DocumentTask.new(spec)
|
126
|
+
@yard_task = extract_yard_task(document_task)
|
127
|
+
@reference_task = extract_reference_task(document_task)
|
128
|
+
|
129
|
+
@source_files = source_ruby_files + source_c_files
|
130
|
+
end
|
131
|
+
|
132
|
+
def test_readme
|
133
|
+
assert_nil(@yard_task.readme)
|
134
|
+
assert_nil(@reference_task.readme)
|
135
|
+
end
|
136
|
+
|
137
|
+
def test_source_files
|
138
|
+
assert_equal(@source_files, @yard_task.source_files)
|
139
|
+
assert_equal(@source_files, @reference_task.source_files)
|
140
|
+
end
|
141
|
+
|
142
|
+
def test_text_files
|
143
|
+
assert_equal([], @yard_task.text_files)
|
144
|
+
assert_equal([], @reference_task.text_files)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
class TextFilesTest < self
|
149
|
+
def setup
|
150
|
+
@source_text_files = ["doc/text/tutorial.textile", "doc/text/new.md"]
|
151
|
+
other_text_files = ["other1.textile", "doc/other2.md", "Rakefile"]
|
152
|
+
|
153
|
+
spec = Gem::Specification.new do |_spec|
|
154
|
+
_spec.files = [
|
155
|
+
@source_text_files,
|
156
|
+
other_text_files,
|
157
|
+
]
|
158
|
+
end
|
159
|
+
document_task = Packnga::DocumentTask.new(spec)
|
160
|
+
@yard_task = extract_yard_task(document_task)
|
161
|
+
@reference_task = extract_reference_task(document_task)
|
162
|
+
end
|
163
|
+
|
164
|
+
def test_readme
|
165
|
+
assert_nil(@yard_task.readme)
|
166
|
+
assert_nil(@reference_task.readme)
|
167
|
+
end
|
168
|
+
|
169
|
+
def test_source_files
|
170
|
+
assert_equal([], @yard_task.source_files)
|
171
|
+
assert_equal([], @reference_task.source_files)
|
172
|
+
end
|
173
|
+
|
174
|
+
def test_text_files
|
175
|
+
assert_equal(@source_text_files, @yard_task.text_files)
|
176
|
+
assert_equal(@source_text_files, @reference_task.text_files)
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
class NoFilesTest < self
|
181
|
+
def setup
|
182
|
+
spec = Gem::Specification.new
|
183
|
+
document_task = Packnga::DocumentTask.new(spec)
|
184
|
+
@yard_task = extract_yard_task(document_task)
|
185
|
+
@reference_task = extract_reference_task(document_task)
|
186
|
+
end
|
187
|
+
|
188
|
+
def test_readme
|
189
|
+
assert_nil(@yard_task.readme)
|
190
|
+
assert_nil(@reference_task.readme)
|
191
|
+
end
|
192
|
+
|
193
|
+
def test_source_files
|
194
|
+
assert_equal([], @yard_task.source_files)
|
195
|
+
assert_equal([], @reference_task.source_files)
|
196
|
+
end
|
197
|
+
|
198
|
+
def test_text_files
|
199
|
+
assert_equal([], @yard_task.text_files)
|
200
|
+
assert_equal([], @reference_task.text_files)
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
private
|
205
|
+
def extract_yard_task(document_task)
|
206
|
+
document_task.yard do |yard_task|
|
207
|
+
yard_task
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
def extract_reference_task(document_task)
|
212
|
+
document_task.reference do |reference_task|
|
213
|
+
reference_task
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright (C) 2012 Haruka Yoshihara <yoshihara@clear-code.com>
|
4
|
+
#
|
5
|
+
# This library is free software; you can redistribute it and/or
|
6
|
+
# modify it under the terms of the GNU Lesser General Public
|
7
|
+
# License version 2.1 as published by the Free Software Foundation.
|
8
|
+
#
|
9
|
+
# This library is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
# Lesser General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU Lesser General Public
|
15
|
+
# License along with this library; if not, write to the Free Software
|
16
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
17
|
+
|
18
|
+
require "test/unit/rr"
|
19
|
+
require "tmpdir"
|
20
|
+
|
21
|
+
class ReferenceTaskTest < Test::Unit::TestCase
|
22
|
+
def teardown
|
23
|
+
Rake::Task.clear
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_po_update_no_po_file_exists
|
27
|
+
Dir.mktmpdir do |base_dir|
|
28
|
+
package_name = "packnga"
|
29
|
+
language = "ja"
|
30
|
+
|
31
|
+
spec = Gem::Specification.new do |_spec|
|
32
|
+
_spec.name = package_name
|
33
|
+
end
|
34
|
+
|
35
|
+
Packnga::DocumentTask.new(spec) do |task|
|
36
|
+
task.translate_languages = language
|
37
|
+
task.base_dir = base_dir
|
38
|
+
end
|
39
|
+
|
40
|
+
po_dir = "#{base_dir}/po"
|
41
|
+
pot_file = "#{po_dir}/#{package_name}.pot"
|
42
|
+
po_file = "#{po_dir}/#{language}.po"
|
43
|
+
|
44
|
+
mock(GetText::Tools::MsgInit).run("--input", pot_file,
|
45
|
+
"--output", po_file,
|
46
|
+
"--locale", language)
|
47
|
+
|
48
|
+
Rake::Task["reference:po:update:ja"].invoke
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: packnga
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-12-19 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rake
|
@@ -44,22 +44,6 @@ dependencies:
|
|
44
44
|
- - ! '>='
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0'
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: rubyforge
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
|
-
requirements:
|
52
|
-
- - ! '>='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
type: :runtime
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
|
-
requirements:
|
60
|
-
- - ! '>='
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '0'
|
63
47
|
- !ruby/object:Gem::Dependency
|
64
48
|
name: gettext
|
65
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,7 +51,7 @@ dependencies:
|
|
67
51
|
requirements:
|
68
52
|
- - ! '>='
|
69
53
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
54
|
+
version: 2.3.6
|
71
55
|
type: :runtime
|
72
56
|
prerelease: false
|
73
57
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -75,7 +59,7 @@ dependencies:
|
|
75
59
|
requirements:
|
76
60
|
- - ! '>='
|
77
61
|
- !ruby/object:Gem::Version
|
78
|
-
version:
|
62
|
+
version: 2.3.6
|
79
63
|
- !ruby/object:Gem::Dependency
|
80
64
|
name: test-unit
|
81
65
|
requirement: !ruby/object:Gem::Requirement
|
@@ -180,6 +164,9 @@ files:
|
|
180
164
|
- doc/text/release.textile
|
181
165
|
- doc/text/lgpl.txt
|
182
166
|
- doc/text/news.textile
|
167
|
+
- test/run-test.rb
|
168
|
+
- test/test-document-task.rb
|
169
|
+
- test/test-reference-task.rb
|
183
170
|
homepage: http://groonga.rubyforge.org/
|
184
171
|
licenses:
|
185
172
|
- LGPLv2
|
@@ -195,7 +182,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
195
182
|
version: '0'
|
196
183
|
segments:
|
197
184
|
- 0
|
198
|
-
hash:
|
185
|
+
hash: 4177022307643837781
|
199
186
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
200
187
|
none: false
|
201
188
|
requirements:
|
@@ -204,12 +191,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
204
191
|
version: '0'
|
205
192
|
segments:
|
206
193
|
- 0
|
207
|
-
hash:
|
194
|
+
hash: 4177022307643837781
|
208
195
|
requirements: []
|
209
|
-
rubyforge_project:
|
196
|
+
rubyforge_project:
|
210
197
|
rubygems_version: 1.8.23
|
211
198
|
signing_key:
|
212
199
|
specification_version: 3
|
213
200
|
summary: An utility library to package i18n-ed library.
|
214
|
-
test_files:
|
201
|
+
test_files:
|
202
|
+
- test/run-test.rb
|
203
|
+
- test/test-document-task.rb
|
204
|
+
- test/test-reference-task.rb
|
215
205
|
has_rdoc:
|