bitclust-dev 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 64de78dba91ef0131462b61f9b0a94184b224883
4
+ data.tar.gz: dba918642eeabca7e8b356ea1fb353823548e67b
5
+ SHA512:
6
+ metadata.gz: e7ee421a6b18041c0e6996d692e04da261f7cfb3d1c30f3310c985c65abf4d78d9fd50329bab815fdff9a0771f7c5c47d7375ce866d6f034c6f3d9f7179d4fd5
7
+ data.tar.gz: 9576244d6879781eaef8a64c9f52acaa5b17e7688cf9a65a88d8682b4ea9865321dfb4f5d8646b71ea057988c904769250a4f905a4a61ead0c57cf658c69ae13
metadata CHANGED
@@ -1,156 +1,121 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bitclust-dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
5
- prerelease:
4
+ version: 0.7.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - http://bugs.ruby-lang.org/projects/rurema
9
8
  autorequire:
10
9
  bindir: tools
11
10
  cert_chain: []
12
- date: 2013-04-10 00:00:00.000000000 Z
11
+ date: 2013-05-12 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bitclust-core
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - '='
20
18
  - !ruby/object:Gem::Version
21
- version: 0.6.0
19
+ version: 0.7.0
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - '='
28
25
  - !ruby/object:Gem::Version
29
- version: 0.6.0
26
+ version: 0.7.0
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: test-unit
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: 2.3.0
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: 2.3.0
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: test-unit-notify
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: test-unit-rr
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
- description: ! 'Rurema is a Japanese ruby documentation project, and
79
-
69
+ description: |
70
+ Rurema is a Japanese ruby documentation project, and
80
71
  bitclust is a rurema document processor.
81
-
82
72
  This is tools for Rurema developpers.
83
-
84
- '
85
73
  email:
86
74
  - ''
87
75
  executables:
88
- - bc-tochm.rb
89
- - bc-methods.rb
90
76
  - bc-checkparams.rb
91
- - bc-ancestors.rb
92
- - bc-list.rb
93
- - stattodo.rb
94
- - statrefm.rb
95
- - bc-classes.rb
96
- - bc-tohtml.rb
97
- - forall-ruby.rb
98
- - gencatalog.rb
99
77
  - bc-convert.rb
100
78
  - bc-rdoc.rb
101
- - bc-preproc.rb
102
- - update-database.rb
103
- - bc-tohtmlpackage.rb
104
79
  - check-signature.rb
80
+ - forall-ruby.rb
81
+ - gencatalog.rb
82
+ - statrefm.rb
83
+ - stattodo.rb
84
+ - update-database.rb
105
85
  extensions: []
106
86
  extra_rdoc_files: []
107
87
  files:
108
- - tools/bc-tochm.rb
109
- - tools/bc-methods.rb
110
88
  - tools/bc-checkparams.rb
111
- - tools/bc-ancestors.rb
112
- - tools/bc-list.rb
113
- - tools/stattodo.rb
114
- - tools/statrefm.rb
115
- - tools/bc-classes.rb
116
- - tools/bc-tohtml.rb
117
- - tools/forall-ruby.rb
118
- - tools/gencatalog.rb
119
89
  - tools/bc-convert.rb
120
90
  - tools/bc-rdoc.rb
121
- - tools/bc-preproc.rb
122
- - tools/update-database.rb
123
- - tools/bc-tohtmlpackage.rb
124
91
  - tools/check-signature.rb
92
+ - tools/forall-ruby.rb
93
+ - tools/gencatalog.rb
94
+ - tools/statrefm.rb
95
+ - tools/stattodo.rb
96
+ - tools/update-database.rb
125
97
  - lib/bitclust.rb
126
98
  homepage: http://doc.ruby-lang.org/ja/
127
99
  licenses: []
100
+ metadata: {}
128
101
  post_install_message:
129
102
  rdoc_options: []
130
103
  require_paths:
131
104
  - lib
132
105
  required_ruby_version: !ruby/object:Gem::Requirement
133
- none: false
134
106
  requirements:
135
- - - ! '>='
107
+ - - '>='
136
108
  - !ruby/object:Gem::Version
137
109
  version: '0'
138
- segments:
139
- - 0
140
- hash: 4246355290174863682
141
110
  required_rubygems_version: !ruby/object:Gem::Requirement
142
- none: false
143
111
  requirements:
144
- - - ! '>='
112
+ - - '>='
145
113
  - !ruby/object:Gem::Version
146
114
  version: '0'
147
- segments:
148
- - 0
149
- hash: 4246355290174863682
150
115
  requirements: []
151
116
  rubyforge_project: ''
152
- rubygems_version: 1.8.23
117
+ rubygems_version: 2.0.0
153
118
  signing_key:
154
- specification_version: 3
119
+ specification_version: 4
155
120
  summary: BitClust is a rurema document processor.
156
121
  test_files: []
@@ -1,153 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'pathname'
4
-
5
- bindir = Pathname.new(__FILE__).realpath.dirname
6
- $LOAD_PATH.unshift((bindir + '../lib').realpath)
7
-
8
- require 'bitclust'
9
- require 'bitclust/crossrubyutils'
10
- require 'optparse'
11
- require 'set'
12
-
13
- include BitClust::CrossRubyUtils
14
-
15
- def main
16
- prefix = nil
17
- requires = []
18
- ver = RUBY_VERSION
19
- @verbose = false
20
- all = false
21
- parser = OptionParser.new
22
- parser.banner =<<BANNER
23
- Usage: #{File.basename($0, '.*')} [-r<lib>] [--ruby=<VER>] --db=PATH <classname>
24
- #{File.basename($0, '.*')} [-r<lib>] [--ruby=<VER>] --db=PATH --all
25
- NG Sample:
26
- $ #{File.basename($0, '.*')} -rfoo --ruby=1.9.1 --db=./db Foo
27
- NG : Foo
28
- + FooModule (The Ruby have this class/module in ancestors of the class)
29
- - BarModule (The Database have this class/module in ancestors of the class)
30
- Options:
31
- BANNER
32
- parser.on('-d', '--database=PATH', 'Database prefix.') {|path|
33
- prefix = path
34
- }
35
- parser.on('-r LIB', 'Requires library LIB') {|lib|
36
- requires.push lib
37
- }
38
- parser.on('--ruby=[VER]', "The version of Ruby interpreter"){|ver|
39
- ver = ver
40
- }
41
- parser.on('-v', '--verbose', 'Show differences'){
42
- @verbose = true
43
- }
44
- parser.on('--all', 'Check anccestors for all classes'){
45
- all = true
46
- }
47
- parser.on('--help', 'Prints this message and quit.') {
48
- puts parser.help
49
- exit 0
50
- }
51
- begin
52
- parser.parse!
53
- rescue OptionParser::ParseError => err
54
- $stderr.puts err.message
55
- $stderr.puts parser.help
56
- exit 1
57
- end
58
- unless ARGV.size == 1 || all
59
- $stderr.puts "wrong number of arguments"
60
- $stderr.puts parser.help
61
- exit 1
62
- end
63
- classname = ARGV[0]
64
- db = BitClust::MethodDatabase.new(prefix)
65
- ruby = get_ruby(ver)
66
- if classname && !all
67
- check_ancestors(db, ruby, requires, classname)
68
- else
69
- $stderr.puts 'check all...'
70
- check_all_ancestors(db, ruby, requires)
71
- end
72
- end
73
-
74
- def ancestors(ruby, requires, classname)
75
- req = requires.map{|lib|
76
- unless '_builtin' == lib
77
- "-r#{lib}"
78
- else
79
- ''
80
- end
81
- }.join(" ")
82
- script =<<-SRC
83
- c = #{classname}
84
- puts c.ancestors.join("\n")
85
- SRC
86
- `#{ruby} #{req} -e '#{script}'`.split
87
- end
88
-
89
- def check_ancestors(db, ruby, requires, classname)
90
- a = ancestors(ruby, requires, classname)
91
- begin
92
- b = db.fetch_class(classname).ancestors.map(&:name)
93
- rescue BitClust::ClassNotFound => ex
94
- $stderr.puts "class not found in database : #{classname}"
95
- b = []
96
- end
97
- unless a.to_set == b.to_set
98
- puts "NG : #{classname}"
99
- puts (a-b).map{|c| "+ #{c}" }.join("\n")
100
- puts (b-a).map{|c| "- #{c}" }.join("\n")
101
- else
102
- puts "OK : #{classname}" if @verbose
103
- end
104
- end
105
-
106
- def check_all_ancestors(db, ruby, requires)
107
- classnames = []
108
- requires.each do |lib|
109
- classnames.push(*defined_classes(ruby, lib, []))
110
- end
111
- classnames.each do |classname|
112
- check_ancestors(db, ruby, requires, classname)
113
- end
114
- end
115
-
116
- def defined_classes(ruby, lib, rejects)
117
- output = `#{ruby} -e '
118
- def class_extent
119
- result = []
120
- ObjectSpace.each_object(Module) do |c|
121
- result.push c
122
- end
123
- result
124
- end
125
-
126
- %w(#{rejects.join(" ")}).each do |lib|
127
- begin
128
- require lib
129
- rescue LoadError
130
- end
131
- end
132
- if "#{lib}" == "_builtin"
133
- class_extent().each do |c|
134
- puts c
135
- end
136
- else
137
- before = class_extent()
138
- begin
139
- require "#{lib}"
140
- rescue LoadError
141
- $stderr.puts "\#{RUBY_VERSION} (\#{RUBY_RELEASE_DATE}): library not exist: #{lib}"
142
- exit
143
- end
144
- after = class_extent()
145
- (after - before).each do |c|
146
- puts c
147
- end
148
- end
149
- '`
150
- output.split
151
- end
152
-
153
- main
data/tools/bc-classes.rb DELETED
@@ -1,80 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'pathname'
4
-
5
- bindir = Pathname.new(__FILE__).realpath.dirname
6
- $LOAD_PATH.unshift((bindir + '../lib').realpath)
7
-
8
- require 'bitclust/crossrubyutils'
9
- require 'optparse'
10
-
11
- include BitClust::CrossRubyUtils
12
-
13
- def main
14
- rejects = []
15
- @verbose = false
16
- opts = OptionParser.new
17
- opts.banner = "Usage: #{File.basename($0, '.*')} [-r<lib>] <lib>"
18
- opts.on('-r', '--reject=LIB', 'Reject library LIB') {|lib|
19
- rejects.concat lib.split(',')
20
- }
21
- opts.on('-v', '--verbose', 'Show all ruby version.') {
22
- @verbose = true
23
- }
24
- opts.on('--help', 'Prints this message and quit.') {
25
- puts opts.help
26
- exit 0
27
- }
28
- begin
29
- opts.parse!(ARGV)
30
- rescue OptionParser::ParseError => err
31
- $stderr.puts err.message
32
- exit 1
33
- end
34
- unless ARGV.size == 1
35
- $stderr.puts 'wrong number of arguments'
36
- $stderr.puts opts.help
37
- exit 1
38
- end
39
- lib = ARGV[0]
40
- print_crossruby_table {|ruby| defined_classes(ruby, lib, rejects) }
41
- end
42
-
43
- def defined_classes(ruby, lib, rejects)
44
- output = `#{ruby} -e '
45
- def class_extent
46
- result = []
47
- ObjectSpace.each_object(Module) do |c|
48
- result.push c
49
- end
50
- result
51
- end
52
-
53
- %w(#{rejects.join(" ")}).each do |lib|
54
- begin
55
- require lib
56
- rescue LoadError
57
- end
58
- end
59
- if "#{lib}" == "_builtin"
60
- class_extent().each do |c|
61
- puts c
62
- end
63
- else
64
- before = class_extent()
65
- begin
66
- require "#{lib}"
67
- rescue LoadError
68
- $stderr.puts "\#{RUBY_VERSION} (\#{RUBY_RELEASE_DATE}): library not exist: #{lib}"
69
- exit
70
- end
71
- after = class_extent()
72
- (after - before).each do |c|
73
- puts c
74
- end
75
- end
76
- '`
77
- output.split
78
- end
79
-
80
- main
data/tools/bc-list.rb DELETED
@@ -1,63 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'pathname'
4
-
5
- bindir = Pathname.new(__FILE__).realpath.dirname
6
- $LOAD_PATH.unshift((bindir + '../lib').realpath)
7
-
8
- require 'bitclust'
9
- require 'optparse'
10
-
11
- def main
12
- check_only = false
13
- parser = OptionParser.new
14
- parser.banner = "Usage: #{File.basename($0, '.*')} <file>..."
15
- parser.on('-c', '--check-only', 'Check syntax and output status.') {
16
- check_only = true
17
- }
18
- parser.on('--help', 'Prints this message and quit.') {
19
- puts parser.help
20
- exit
21
- }
22
- begin
23
- parser.parse!
24
- rescue OptionParser::ParseError => err
25
- $stderr.puts err.message
26
- exit 1
27
- end
28
-
29
- success = true
30
- ARGV.each do |path|
31
- begin
32
- lib = BitClust::RRDParser.parse_stdlib_file(path)
33
- if check_only
34
- $stderr.puts "#{path}: OK"
35
- else
36
- show_library lib
37
- end
38
- rescue BitClust::WriterError => err
39
- raise if $DEBUG
40
- $stderr.puts "#{File.basename($0, '.*')}: FAIL: #{err.message}"
41
- success = false
42
- end
43
- end
44
- exit success
45
- end
46
-
47
- def show_library(lib)
48
- puts "= Library #{lib.name}"
49
- lib.classes.each do |c|
50
- puts "#{c.type} #{c.name}"
51
- c.each do |m|
52
- puts "\t* #{m.klass.name}#{m.typemark}#{m.names.join(',')}"
53
- end
54
- end
55
- unless lib.methods.empty?
56
- puts "Additional Methods:"
57
- lib.methods.each do |m|
58
- puts "\t* #{m.klass.name}#{m.typemark}#{m.names.join(',')}"
59
- end
60
- end
61
- end
62
-
63
- main
data/tools/bc-methods.rb DELETED
@@ -1,171 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # bc-methods.rb -- list all methods of existing rubys.
4
- #
5
- # This program is derived from bc-vdtb.rb, posted in
6
- # [ruby-reference-manual:160] by sheepman.
7
- #
8
-
9
- require 'pathname'
10
-
11
- bindir = Pathname.new(__FILE__).realpath.dirname
12
- $LOAD_PATH.unshift((bindir + '../lib').realpath)
13
-
14
- require 'bitclust'
15
- require 'bitclust/crossrubyutils'
16
- require 'optparse'
17
-
18
- include BitClust::CrossRubyUtils
19
-
20
- def main
21
- @requires = []
22
- @verbose = false
23
- @ver = RUBY_VERSION
24
- mode = :list
25
- target = nil
26
- opts = OptionParser.new
27
- opts.banner = "Usage: #{File.basename($0, '.*')} [-r<lib>] <classname>"
28
- opts.on('-r LIB', 'Requires library LIB') {|lib|
29
- @requires.push lib
30
- }
31
- opts.on('-v', '--verbose', "Prints each ruby's version") {
32
- @verbose = true
33
- }
34
- opts.on('--diff=RDFILE', 'RD file name') {|path|
35
- mode = :diff
36
- target = path
37
- }
38
- opts.on('-c', '') {
39
- @content = true
40
- require 'bitclust/ridatabase'
41
- }
42
- opts.on('--ruby=[VER]', "The version of Ruby interpreter"){|ver|
43
- @ver = ver
44
- }
45
- opts.on('--ri-database', 'The path of ri database'){|path|
46
- @ri_path = path
47
- }
48
- opts.on('--help', 'Prints this message and quit.') {
49
- puts opts.help
50
- exit 0
51
- }
52
- begin
53
- opts.parse!(ARGV)
54
- rescue OptionParser::ParseError => err
55
- $stderr.puts err.message
56
- exit 1
57
- end
58
- unless ARGV.size == 1
59
- $stderr.puts "wrong number of arguments"
60
- $stderr.puts opts.help
61
- exit 1
62
- end
63
- classname = ARGV[0]
64
-
65
- case mode
66
- when :list
67
- print_crossruby_table {|ruby| defined_methods(ruby, classname) }
68
- when :diff
69
- unless ruby = get_ruby(@ver)
70
- raise "Not found Ruby interpreter of the given version"
71
- end
72
- keys = defined_methods(ruby, classname)
73
- lib = BitClust::RRDParser.parse_stdlib_file(target, { 'version' => @ver })
74
- c = lib.fetch_class(classname)
75
- list0 = lib.classes.find_all{|c0| /\A#{classname}\b/o =~ c0.name }
76
- list0 = c.entries + list0
77
- list = list0.map {|ent| ent.labels.map {|n| expand_mf(n) } }.flatten
78
- if @content
79
- ri = @ri_path ? RiDatabase.open(@ri_path, nil) : RiDatabase.open_system_db
80
- ri.current_class = c.name
81
- mthds = ( ri.singleton_methods + ri.instance_methods )
82
- fmt = Formatter.new
83
- (keys - list).sort.each do |name|
84
- mthd = mthds.find{|m| name == m.fullname }
85
- if mthd
86
- puts fmt.method_info(mthd.entry)
87
- else
88
- name = name.sub(/\A\w+#/, '')
89
- puts "--- #{name}\n\#@todo\n\n"
90
- end
91
- end
92
- else
93
- (keys - list).sort.each do |name|
94
- puts "-#{name}"
95
- end
96
- (list - keys).sort.each do |name|
97
- puts "+#{name}"
98
- end
99
- end
100
- else
101
- raise "must not happen: #{mode.inspect}"
102
- end
103
- end
104
-
105
- def expand_mf(n)
106
- if /\.\#/ =~ n
107
- [n.sub(/\.\#/, '.'), n.sub(/\.\#/, '#')]
108
- else
109
- n
110
- end
111
- end
112
-
113
- def crossrubyutils_sort_entries(ents)
114
- ents.sort_by {|m| m_order(m) }
115
- end
116
-
117
- ORDER = { '.' => 1, '#' => 2, '::' => 3 }
118
-
119
- def m_order(m)
120
- m, t, c = *m.reverse.split(/(\#|\.|::)/, 2)
121
- [ORDER[t] || 0, m.reverse]
122
- end
123
-
124
- def defined_methods(ruby, classname)
125
- req = @requires.map {|lib| "-r#{lib}" }.join(' ')
126
- avoid_tracer = ""
127
- avoid_tracer = "Tracer.off" if @requires.include?("tracer")
128
- if classname == 'Object'
129
- `#{ruby} #{req} -e '
130
- c = #{classname}
131
- c.singleton_methods(false).each do |m|
132
- puts "#{classname}.\#{m}"
133
- end
134
- c.instance_methods(true).each do |m|
135
- puts "#{classname}\\#\#{m}"
136
- end
137
- '`.split
138
- elsif classname == 'Kernel'
139
- `#{ruby} #{req} -e '
140
- c = #{classname}
141
- c.singleton_methods(true).each do |m|
142
- puts "#{classname}.\#{m}"
143
- end
144
- ( c.private_instance_methods(false) && c.methods(false) ).each do |m|
145
- puts "#{classname}\\#\#{m}"
146
- end
147
- Object::constants.delete_if{|c| cl = Object.const_get(c).class; cl == Class or cl == Module }.each do |m|
148
- puts "#{classname}::\#{m}"
149
- end
150
- global_variables.each do |m|
151
- puts "#{classname}\#{m}"
152
- end
153
- '`.split
154
- else
155
- `#{ruby} #{req} -e '
156
- #{avoid_tracer}
157
- c = #{classname}
158
- c.singleton_methods(false).each do |m|
159
- puts "#{classname}.\#{m}"
160
- end
161
- c.instance_methods(false).each do |m|
162
- puts "#{classname}\\#\#{m}"
163
- end
164
- c.ancestors.map {|mod| mod.constants }.inject {|r,n| r-n }.each do |m|
165
- puts "#{classname}::\#{m}"
166
- end
167
- '`.split
168
- end
169
- end
170
-
171
- main
data/tools/bc-preproc.rb DELETED
@@ -1,42 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'pathname'
4
-
5
- bindir = Pathname.new(__FILE__).realpath.dirname
6
- $LOAD_PATH.unshift((bindir + '../lib').realpath)
7
-
8
- require 'bitclust/rrdparser'
9
- require 'optparse'
10
-
11
- def main
12
- params = {"version" => "1.9.0"}
13
- parser = OptionParser.new
14
- parser.banner = "Usage: #{File.basename($0, '.*')} <file>..."
15
- parser.on('--param=KVPAIR', 'Set parameter by key/value pair.') {|kv|
16
- k, v = kv.split('=', 2)
17
- params[k] = v
18
- }
19
- parser.on('--help', 'Prints this message and quit.') {
20
- puts parser.help
21
- exit
22
- }
23
- begin
24
- parser.parse!
25
- rescue OptionParser::ParseError => err
26
- $stderr.puts err.message
27
- exit 1
28
- end
29
-
30
- ARGV.each do |path|
31
- File.open(path) {|f|
32
- BitClust::Preprocessor.wrap(f, params).each do |line|
33
- puts line
34
- end
35
- }
36
- end
37
- rescue BitClust::WriterError => err
38
- $stderr.puts err.message
39
- exit 1
40
- end
41
-
42
- main
data/tools/bc-tochm.rb DELETED
@@ -1,301 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
- require 'pathname'
4
- def srcdir_root
5
- (Pathname.new(__FILE__).realpath.dirname + '..').cleanpath
6
- end
7
-
8
- $LOAD_PATH.unshift srcdir_root() + 'lib'
9
-
10
- #def srcdir_root
11
- # #Pathname.new(__FILE__).realpath.dirname.parent.cleanpath
12
- # Pathname.new(__FILE__).dirname.parent.cleanpath
13
- #end
14
- #$LOAD_PATH.unshift srcdir_root + 'lib'
15
-
16
- require 'bitclust'
17
- require 'erb'
18
- require 'fileutils'
19
- require 'kconv'
20
- require 'optparse'
21
- begin
22
- require 'progressbar'
23
- rescue LoadError
24
- class ProgressBar
25
- def initialize(title, total, out = STDERR)
26
- @title, @total, @out = title, total, out
27
- end
28
- attr_reader :title
29
-
30
- def inc(step = 1)
31
- end
32
-
33
- def finish
34
- end
35
- end
36
- end
37
-
38
- HHP_SKEL = <<EOS
39
- [OPTIONS]
40
- Compatibility=1.1 or later
41
- Compiled file=refm.chm
42
- Contents file=refm.hhc
43
- Default Window=titlewindow
44
- Default topic=doc/index.html
45
- Display compile progress=No
46
- Error log file=refm.log
47
- Full-text search=Yes
48
- Index file=refm.hhk
49
- Language=0x411 日本語 (日本)
50
- Title=Rubyリファレンスマニュアル
51
-
52
- [WINDOWS]
53
- titlewindow="Rubyリファレンスマニュアル","refm.hhc","refm.hhk","doc/index.html","doc/index.html",,,,,0x21420,,0x387e,,,,,,,,0
54
-
55
- [FILES]
56
- <%= @html_files.join("\n") %>
57
- EOS
58
-
59
- HHC_SKEL = <<EOS
60
- <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
61
- <HTML>
62
- <HEAD>
63
- </HEAD>
64
- <BODY>
65
- <UL><% [:library].each do |k| %>
66
- <%= @sitemap[k].to_html %>
67
- <% end %></UL>
68
- </BODY>
69
- </HTML>
70
- EOS
71
-
72
- HHK_SKEL = <<EOS
73
- <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
74
- <HTML>
75
- <HEAD>
76
- </HEAD>
77
- <BODY>
78
- <UL><% @index_contents.sort.each do |content| %>
79
- <%= content.to_html %>
80
- <% end %></UL>
81
- </BODY>
82
- </HTML>
83
- EOS
84
-
85
- class Sitemap
86
- def initialize(name, local = nil)
87
- @name = name
88
- @contents = Content.new(name, local)
89
- end
90
-
91
- def method_missing(name, *args, &block)
92
- @contents.send(name, *args, &block)
93
- end
94
-
95
- class Content
96
- include Enumerable
97
- include ERB::Util
98
-
99
- def initialize(name, local = nil)
100
- @name = name
101
- @local = local
102
- @contents = []
103
- end
104
- attr_reader :name, :local, :contents
105
-
106
- def [](index)
107
- @contents[index]
108
- end
109
-
110
- def <<(content)
111
- @contents << content
112
- end
113
-
114
- def <=>(other)
115
- @name <=> other.name
116
- end
117
-
118
- def each
119
- @contents.each do |content|
120
- yield content
121
- end
122
- end
123
-
124
- def to_html
125
- str = "<LI> <OBJECT type=\"text/sitemap\">\n"
126
- str << " <param name=\"Name\" value=\"<%=h @name%>\">\n"
127
- if @local
128
- str << " <param name=\"Local\" value=\"<%=@local%>\">\n"
129
- end
130
- str << " </OBJECT>\n"
131
- unless contents.empty?
132
- str << "<UL>\n"
133
- @contents.each do |content|
134
- str << content.to_html
135
- end
136
- str << "</UL>\n"
137
- end
138
- ERB.new(str).result(binding)
139
- end
140
- end
141
- end
142
-
143
- module BitClust
144
-
145
- class URLMapperEx < URLMapper
146
- def library_url(name)
147
- if name == '/'
148
- "/library/index.html"
149
- else
150
- "/library/#{encodename_fs(name)}.html"
151
- end
152
- end
153
-
154
- def class_url(name)
155
- "/class/#{encodename_fs(name)}.html"
156
- end
157
-
158
- def method_url(spec)
159
- cname, tmark, mname = *split_method_spec(spec)
160
- "/method/#{encodename_fs(cname)}/#{typemark2char(tmark)}/#{encodename_fs(mname)}.html"
161
- end
162
-
163
- def document_url(name)
164
- "/doc/#{encodename_fs(name)}.html"
165
- end
166
- end
167
- end
168
-
169
- def main
170
- @sitemap = {
171
- :library => Sitemap.new('ライブラリ', 'library/index.html'),
172
- }
173
- @sitemap[:library] << Sitemap::Content.new('標準ライブラリ', 'library/_builtin.html')
174
- @sitemap[:library] << Sitemap::Content.new('添付ライブラリ')
175
- @stdlibs = {}
176
- @index_contents = []
177
- prefix = Pathname.new('./db')
178
- outputdir = Pathname.new('./chm')
179
- manager_config = {
180
- :baseurl => 'http://example.com/',
181
- :suffix => '.html',
182
- :templatedir => srcdir_root + 'data'+ 'bitclust' + 'template',
183
- :themedir => srcdir_root + 'theme' + 'default',
184
- :css_url => 'style.css',
185
- :cgi_url => '',
186
- :tochm_mode => true
187
- }
188
- manager_config[:urlmapper] = BitClust::URLMapperEx.new(manager_config)
189
-
190
- parser = OptionParser.new
191
- parser.on('-d', '--database=PATH', 'Database prefix') do |path|
192
- prefix = Pathname.new(path).realpath
193
- end
194
- parser.on('-o', '--outputdir=PATH', 'Output directory') do |path|
195
- begin
196
- outputdir = Pathname.new(path).realpath
197
- rescue Errno::ENOENT
198
- FileUtils.mkdir_p(path, :verbose => true)
199
- retry
200
- end
201
- end
202
- parser.on('--help', 'Prints this message and quit') do
203
- puts(parser.help)
204
- exit(0)
205
- end
206
- begin
207
- parser.parse!
208
- rescue OptionParser::ParseError => err
209
- STDERR.puts(err.message)
210
- STDERR.puts(parser.help)
211
- exit(1)
212
- end
213
-
214
- db = BitClust::MethodDatabase.new(prefix.to_s)
215
- manager = BitClust::ScreenManager.new(manager_config)
216
- @html_files = []
217
- db.transaction do
218
- methods = {}
219
- pb = ProgressBar.new('method', db.methods.size)
220
- db.methods.each_with_index do |entry, i|
221
- method_name = entry.klass.name + entry.typemark + entry.name
222
- (methods[method_name] ||= []) << entry
223
- pb.inc
224
- end
225
- pb.finish
226
- entries = db.docs + db.libraries.sort + db.classes.sort + methods.values.sort
227
- pb = ProgressBar.new('entry', entries.size)
228
- entries.each_with_index do |c, i|
229
- filename = create_html_file(c, manager, outputdir, db)
230
- @html_files << filename
231
- e = c.is_a?(Array) ? c.sort.first : c
232
- case e.type_id
233
- when :library
234
- content = Sitemap::Content.new(e.name.to_s, filename)
235
- if e.name.to_s != '_builtin'
236
- @sitemap[:library][1] << content
237
- @stdlibs[e.name.to_s] = content
238
- end
239
- @index_contents << Sitemap::Content.new(e.name.to_s, filename)
240
- when :class
241
- content = Sitemap::Content.new(e.name.to_s, filename)
242
- if e.library.name.to_s == '_builtin'
243
- @sitemap[:library][0] << content
244
- else
245
- @stdlibs[e.library.name.to_s] << content
246
- end
247
- @index_contents << Sitemap::Content.new("#{e.name} (#{e.library.name})", filename)
248
- when :method
249
- e.names.each do |e_name|
250
- name = e.typename == :special_variable ? "$#{e_name}" : e_name
251
- @index_contents <<
252
- Sitemap::Content.new("#{name} (#{e.library.name} - #{e.klass.name})", filename)
253
- @index_contents <<
254
- Sitemap::Content.new("#{e.klass.name}#{e.typemark}#{name} (#{e.library.name})", filename)
255
- end
256
- end
257
- pb.title.replace(e.name)
258
- pb.inc
259
- end
260
- pb.finish
261
- end
262
- @html_files.sort!
263
- create_file(outputdir + 'refm.hhp', HHP_SKEL, true)
264
- create_file(outputdir + 'refm.hhc', HHC_SKEL, true)
265
- create_file(outputdir + 'refm.hhk', HHK_SKEL, true)
266
- create_file(outputdir + 'library/index.html', manager.library_index_screen(db.libraries.sort, {:database => db}).body)
267
- create_file(outputdir + 'class/index.html', manager.class_index_screen(db.classes.sort, {:database => db}).body)
268
- FileUtils.cp(manager_config[:themedir] + manager_config[:css_url],
269
- outputdir.to_s, {:verbose => true, :preserve => true})
270
- end
271
-
272
- def create_html_file(entry, manager, outputdir, db)
273
- html = manager.entry_screen(entry, {:database => db}).body
274
- e = entry.is_a?(Array) ? entry.sort.first : entry
275
- path = case e.type_id
276
- when :library, :class, :doc
277
- outputdir + e.type_id.to_s + (BitClust::NameUtils.encodename_fs(e.name) + '.html')
278
- when :method
279
- outputdir + e.type_id.to_s + BitClust::NameUtils.encodename_fs(e.klass.name) +
280
- e.typechar + (BitClust::NameUtils.encodename_fs(e.name) + '.html')
281
- else
282
- raise
283
- end
284
- FileUtils.mkdir_p(path.dirname) unless path.dirname.directory?
285
- path.open('w') do |f|
286
- f.write(html)
287
- end
288
- path.relative_path_from(outputdir).to_s
289
- end
290
-
291
- def create_file(path, skel, sjis_flag = false)
292
- STDERR.print("creating #{path} ...")
293
- str = ERB.new(skel).result(binding)
294
- str = str.tosjis if sjis_flag
295
- path.open('w') do |f|
296
- f.write(str)
297
- end
298
- STDERR.puts(" done.")
299
- end
300
-
301
- main
data/tools/bc-tohtml.rb DELETED
@@ -1,125 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # bc-tohtml.rb
4
- #
5
- # Copyright (c) 2006-2007 Minero Aoki
6
- #
7
- # This program is free software.
8
- # You can distribute/modify this program under the Ruby License.
9
- #
10
-
11
- require 'pathname'
12
-
13
- def srcdir_root
14
- (Pathname.new(__FILE__).realpath.dirname + '..').cleanpath
15
- end
16
-
17
- $LOAD_PATH.unshift srcdir_root() + 'lib'
18
-
19
- $KCODE = 'UTF-8' unless Object.const_defined?(:Encoding)
20
-
21
- require 'bitclust'
22
- require 'optparse'
23
-
24
- def main
25
- templatedir = srcdir_root() + 'data' + 'bitclust' + 'template.offline'
26
- target = nil
27
- baseurl = 'file://' + srcdir_root.to_s
28
- ver = '1.9.0'
29
- db = BitClust::MethodDatabase.dummy({'version' => ver})
30
- parser = OptionParser.new
31
- parser.banner = "Usage: #{File.basename($0, '.*')} rdfile"
32
- parser.on('--target=NAME', 'Compile NAME to HTML.') {|name|
33
- target = name
34
- }
35
- parser.on('--force', '-f', 'Force to use rd_file template.') {|name|
36
- @rd_file = true
37
- }
38
- parser.on('--ruby_version=VER', '--ruby=VER', 'Set Ruby version') {|v|
39
- ver = v
40
- }
41
- parser.on('--db=DB', '--database=DB', 'Set database path') {|path|
42
- db = BitClust::MethodDatabase.new(path)
43
- }
44
- parser.on('--baseurl=URL', 'Base URL of generated HTML') {|url|
45
- baseurl = url
46
- }
47
- parser.on('--templatedir=PATH', 'Template directory') {|path|
48
- templatedir = path
49
- }
50
- parser.on('--help', 'Prints this message and quit.') {
51
- puts parser.help
52
- exit 0
53
- }
54
- parser.on('--capi', 'C API mode.') {
55
- @capi = true
56
- }
57
- begin
58
- parser.parse!
59
- rescue OptionParser::ParseError => err
60
- $stderr.puts err.message
61
- $stderr.puts parser.help
62
- exit 1
63
- end
64
- if ARGV.size > 1
65
- $stderr.puts "too many arguments (expected 1)"
66
- exit 1
67
- end
68
-
69
- manager = BitClust::ScreenManager.new(
70
- :templatedir => templatedir,
71
- :base_url => baseurl,
72
- :cgi_url => baseurl,
73
- :default_encoding => 'utf-8')
74
- unless @rd_file
75
- begin
76
- if @capi
77
- lib = BitClust::FunctionReferenceParser.parse_file(ARGV[0], {'version' => ver})
78
- unless target
79
- raise NotImplementedError, "generating a C API html without --target=NAME is not implemented yet."
80
- end
81
- else
82
- lib = BitClust::RRDParser.parse_stdlib_file(ARGV[0], {'version' => ver})
83
- end
84
- entry = target ? lookup(lib, target) : lib
85
- puts manager.entry_screen(entry, {:database => db}).body
86
- return
87
- rescue BitClust::ParseError => ex
88
- $stderr.puts ex.message
89
- $stderr.puts ex.backtrace[0], ex.backtrace[1..-1].map{|s| "\tfrom " + s}
90
- end
91
- end
92
-
93
- ent = BitClust::DocEntry.new(db, ARGV[0])
94
- ret = BitClust::Preprocessor.read(ARGV[0], {'version' => ver})
95
- ent.source = ret
96
- puts manager.doc_screen(ent, {:database => db} ).body
97
- return
98
- rescue BitClust::WriterError => err
99
- $stderr.puts err.message
100
- exit 1
101
- end
102
-
103
- def lookup(lib, key)
104
- case
105
- when @capi && BitClust::NameUtils.functionname?(key)
106
- lib.find {|func| func.name == key}
107
- when BitClust::NameUtils.method_spec?(key)
108
- spec = BitClust::MethodSpec.parse(key)
109
- if spec.constant?
110
- begin
111
- lib.fetch_class(key)
112
- rescue BitClust::UserError
113
- lib.fetch_methods(spec)
114
- end
115
- else
116
- lib.fetch_methods(spec)
117
- end
118
- when BitClust::NameUtils.classname?(key)
119
- lib.fetch_class(key)
120
- else
121
- raise BitClust::InvalidKey, "wrong search key: #{key.inspect}"
122
- end
123
- end
124
-
125
- main
@@ -1,247 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
- require 'pathname'
4
-
5
- def srcdir_root
6
- (Pathname.new(__FILE__).realpath.dirname + '..').cleanpath
7
- end
8
- $LOAD_PATH.unshift srcdir_root() + 'lib'
9
-
10
- require 'bitclust'
11
- require 'fileutils'
12
- require 'optparse'
13
-
14
- if Object.const_defined?(:Encoding)
15
- Encoding.default_external = 'utf-8'
16
- end
17
-
18
- module BitClust
19
-
20
- class URLMapperEx < URLMapper
21
- def library_url(name)
22
- if name == '/'
23
- $bitclust_html_base + "/library/index.html"
24
- else
25
- $bitclust_html_base + "/library/#{encodename_package(name)}.html"
26
- end
27
- end
28
-
29
- def class_url(name)
30
- $bitclust_html_base + "/class/#{encodename_package(name)}.html"
31
- end
32
-
33
- def method_url(spec)
34
- cname, tmark, mname = *split_method_spec(spec)
35
- $bitclust_html_base +
36
- "/method/#{encodename_package(cname)}/#{typemark2char(tmark)}/#{encodename_package(mname)}.html"
37
- end
38
-
39
- def function_url(name)
40
- $bitclust_html_base + "/function/#{name.empty? ? 'index' : name}.html"
41
- end
42
-
43
- def document_url(name)
44
- $bitclust_html_base + "/doc/#{encodename_package(name)}.html"
45
- end
46
-
47
- def css_url
48
- $bitclust_html_base + "/" + @css_url
49
- end
50
-
51
- def favicon_url
52
- $bitclust_html_base + "/" + @favicon_url
53
- end
54
-
55
- def library_index_url
56
- $bitclust_html_base + "/library/index.html"
57
- end
58
-
59
- def function_index_url
60
- $bitclust_html_base + "/function/index.html"
61
- end
62
-
63
- end
64
- end
65
-
66
- def main
67
- prefix = Pathname.new('./db')
68
- outputdir = Pathname.new('./doc')
69
- templatedir = srcdir_root + 'data'+ 'bitclust' + 'template'
70
- catalogdir = nil
71
- verbose = true
72
- parser = OptionParser.new
73
- parser.on('-d', '--database=PATH', 'Database prefix') do |path|
74
- prefix = Pathname.new(path).realpath
75
- end
76
- parser.on('-o', '--outputdir=PATH', 'Output directory') do |path|
77
- begin
78
- outputdir = Pathname.new(path).realpath
79
- rescue Errno::ENOENT
80
- FileUtils.mkdir_p(path, :verbose => verbose)
81
- retry
82
- end
83
- end
84
- parser.on('--catalog=PATH', 'Catalog directory') do |path|
85
- catalogdir = Pathname.new(path).realpath
86
- end
87
- parser.on('--templatedir=PATH', 'Template directory') do |path|
88
- templatedir = Pathname.new(path).realpath
89
- end
90
- parser.on('--fs-casesensitive', 'Filesystem is case-sensitive') do
91
- $fs_casesensitive = true
92
- end
93
- parser.on('--[no-]quiet', 'Be quiet') do |quiet|
94
- verbose = !quiet
95
- end
96
- parser.on('--help', 'Prints this message and quit') do
97
- puts(parser.help)
98
- exit(0)
99
- end
100
- begin
101
- parser.parse!
102
- rescue OptionParser::ParseError => err
103
- STDERR.puts(err.message)
104
- STDERR.puts(parser.help)
105
- exit(1)
106
- end
107
-
108
- manager_config = {
109
- :catalogdir => catalogdir,
110
- :suffix => '.html',
111
- :templatedir => templatedir,
112
- :themedir => srcdir_root + 'theme' + 'default',
113
- :css_url => 'style.css',
114
- :favicon_url => 'rurema.png',
115
- :cgi_url => '',
116
- :tochm_mode => true
117
- }
118
- manager_config[:urlmapper] = BitClust::URLMapperEx.new(manager_config)
119
-
120
- db = BitClust::MethodDatabase.new(prefix.to_s)
121
- fdb = BitClust::FunctionDatabase.new(prefix.to_s)
122
- manager = BitClust::ScreenManager.new(manager_config)
123
- db.transaction do
124
- methods = {}
125
- db.methods.each_with_index do |entry, i|
126
- entry.names.each do |name|
127
- method_name = entry.klass.name + entry.typemark + name
128
- (methods[method_name] ||= []) << entry
129
- end
130
- end
131
- entries = db.docs + db.libraries.sort + db.classes.sort
132
- n = entries.length + methods.length
133
- entries.each_with_index do |c, i|
134
- create_html_file(c, manager, outputdir, db)
135
- $stderr.puts("#{i}/#{n} done") if i % 100 == 0 and verbose
136
- end
137
- i = entries.length
138
- methods.each do |s, ents|
139
- create_html_method_file(s, ents, manager, outputdir, db)
140
- $stderr.puts("#{i}/#{n} done") if i % 100 == 0 and verbose
141
- i += 1
142
- end
143
- end
144
- fdb.transaction do
145
- functions = {}
146
- fdb.functions.each_with_index do |entry, i|
147
- create_html_file(entry, manager, outputdir, fdb)
148
- $stderr.puts("#{i} done") if i % 100 == 0 and verbose
149
- end
150
- end
151
- $bitclust_html_base = '..'
152
- create_file(outputdir + 'library/index.html',
153
- manager.library_index_screen(db.libraries.sort, {:database => db}).body,
154
- :verbose => verbose)
155
- create_file(outputdir + 'class/index.html',
156
- manager.class_index_screen(db.classes.sort, {:database => db}).body,
157
- :verbose => verbose)
158
- create_file(outputdir + 'function/index.html',
159
- manager.function_index_screen(fdb.functions.sort, { :database => fdb }).body,
160
- :verbose => verbose)
161
- create_index_html(outputdir)
162
- FileUtils.cp(manager_config[:themedir] + manager_config[:css_url],
163
- outputdir.to_s, {:verbose => verbose, :preserve => true})
164
- FileUtils.cp(manager_config[:themedir] + manager_config[:favicon_url],
165
- outputdir.to_s, {:verbose => verbose, :preserve => true})
166
- Dir.mktmpdir do |tmpdir|
167
- FileUtils.cp_r(manager_config[:themedir] + 'images', tmpdir,
168
- {:verbose => verbose, :preserve => true})
169
- Dir.glob(File.join(tmpdir, 'images', '/**/.svn')).each do |d|
170
- FileUtils.rm_r(d, {:verbose => verbose})
171
- end
172
- FileUtils.cp_r(File.join(tmpdir, 'images'), outputdir.to_s,
173
- {:verbose => verbose, :preserve => true})
174
- end
175
- end
176
-
177
- def encodename_package(str)
178
- if $fs_casesensitive
179
- BitClust::NameUtils.encodename_url(str)
180
- else
181
- BitClust::NameUtils.encodename_fs(str)
182
- end
183
- end
184
-
185
- def create_index_html(outputdir)
186
- path = outputdir + 'index.html'
187
- File.open(path, 'w'){|io|
188
- io.write <<HERE
189
- <meta http-equiv="refresh" content="0; URL=doc/index.html">
190
- <a href="doc/index.html">Go</a>
191
- HERE
192
- }
193
- end
194
-
195
- def create_html_file(entry, manager, outputdir, db)
196
- e = entry.is_a?(Array) ? entry.sort.first : entry
197
- case e.type_id
198
- when :library, :class, :doc
199
- $bitclust_html_base = '..'
200
- path = outputdir + e.type_id.to_s + (encodename_package(e.name) + '.html')
201
- create_html_file_p(entry, manager, path, db)
202
- path.relative_path_from(outputdir).to_s
203
- when :function
204
- create_html_function_file(entry, manager, outputdir, db)
205
- else
206
- raise
207
- end
208
- e.unload
209
- end
210
-
211
- def create_html_method_file(method_name, entries, manager, outputdir, db)
212
- path = nil
213
- $bitclust_html_base = '../../..'
214
- e = entries.sort.first
215
- name = method_name.sub(e.klass.name + e.typemark, "")
216
- path = outputdir + e.type_id.to_s + encodename_package(e.klass.name) +
217
- e.typechar + (encodename_package(name) + '.html')
218
- create_html_file_p(entries, manager, path, db)
219
- path.relative_path_from(outputdir).to_s
220
- end
221
-
222
- def create_html_function_file(entry, manager, outputdir, db)
223
- path = nil
224
- $bitclust_html_base = '..'
225
- path = outputdir + entry.type_id.to_s + (entry.name + '.html')
226
- create_html_file_p(entry, manager, path, db)
227
- path.relative_path_from(outputdir).to_s
228
- end
229
-
230
- def create_html_file_p(entry, manager, path, db)
231
- FileUtils.mkdir_p(path.dirname) unless path.dirname.directory?
232
- html = manager.entry_screen(entry, {:database => db}).body
233
- path.open('w') do |f|
234
- f.write(html)
235
- end
236
- end
237
-
238
- def create_file(path, str, options={})
239
- verbose = options[:verbose]
240
- STDERR.print("creating #{path} ...") if verbose
241
- path.open('w') do |f|
242
- f.write(str)
243
- end
244
- STDERR.puts(" done.") if verbose
245
- end
246
-
247
- main