rwdlanguage 0.01
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.txt +475 -0
- data/bin/rwdlanguage +19 -0
- data/code/01rwdcore/01rwdcore.rb +29 -0
- data/code/01rwdcore/02helptexthashbegin.rb +16 -0
- data/code/01rwdcore/03helptexthash.rb +21 -0
- data/code/01rwdcore/jumplinkcommand.rb +36 -0
- data/code/01rwdcore/openhelpwindow.rb +38 -0
- data/code/01rwdcore/returntomain.rb +10 -0
- data/code/01rwdcore/rundocuments.rb +10 -0
- data/code/01rwdcore/runeditconfiguration.rb +10 -0
- data/code/01rwdcore/runhelpabout.rb +15 -0
- data/code/01rwdcore/runopentinkerdocument.rb +7 -0
- data/code/01rwdcore/runtab.rb +15 -0
- data/code/01rwdcore/rwdtinkerversion.rb +22 -0
- data/code/01rwdcore/rwdwindowreturn.rb +9 -0
- data/code/01rwdcore/selectiontab.rb +11 -0
- data/code/01rwdcore/setuphelpaboutoptions.rb +15 -0
- data/code/01rwdcore/setuptinkerdocuments.rb +7 -0
- data/code/01rwdcore/test_cases.rb +158 -0
- data/code/01rwdcore/test_harness.rb +20 -0
- data/code/01rwdcore/uploadreturns.rb +65 -0
- data/code/dd0viewphoto/dd0viewphoto.rb +5 -0
- data/code/superant.com.language/0uninstallapplet.rb +22 -0
- data/code/superant.com.language/googlelang.rb +25 -0
- data/code/superant.com.language/helptexthashload.rb +22 -0
- data/code/superant.com.language/loadconfigurationrecord.rb +22 -0
- data/code/superant.com.language/loadconfigurationvariables.rb +14 -0
- data/code/superant.com.language/openhelpwindow.rb +24 -0
- data/code/superant.com.language/rubySteak.rb +40 -0
- data/code/superant.com.language/runappletwindow.rb +12 -0
- data/code/superant.com.language/runrwdshellwindow.rb +12 -0
- data/code/superant.com.language/runrwdwordsbackwindow.rb +10 -0
- data/code/superant.com.language/rwdtinkerversion.rb +10 -0
- data/code/superant.com.language/saveconfigurationrecord.rb +20 -0
- data/code/superant.com.language/test_cases.rb +20 -0
- data/code/superant.com.rwdtinkerbackwindow/changelocale.rb +84 -0
- data/code/superant.com.rwdtinkerbackwindow/diagnostictab.rb +19 -0
- data/code/superant.com.rwdtinkerbackwindow/initiateapplets.rb +169 -0
- data/code/superant.com.rwdtinkerbackwindow/installgemapplet.rb +38 -0
- data/code/superant.com.rwdtinkerbackwindow/installremotegem.rb +20 -0
- data/code/superant.com.rwdtinkerbackwindow/listgemdirs.rb +12 -0
- data/code/superant.com.rwdtinkerbackwindow/listgemzips.rb +55 -0
- data/code/superant.com.rwdtinkerbackwindow/listinstalledfiles.rb +14 -0
- data/code/superant.com.rwdtinkerbackwindow/listzips.rb +37 -0
- data/code/superant.com.rwdtinkerbackwindow/loadconfigurationrecord.rb +24 -0
- data/code/superant.com.rwdtinkerbackwindow/loadconfigurationvariables.rb +14 -0
- data/code/superant.com.rwdtinkerbackwindow/network.rb +87 -0
- data/code/superant.com.rwdtinkerbackwindow/openappletname.rb +19 -0
- data/code/superant.com.rwdtinkerbackwindow/openhelpwindowtinkerwin2.rb +40 -0
- data/code/superant.com.rwdtinkerbackwindow/remotegemlist.rb +24 -0
- data/code/superant.com.rwdtinkerbackwindow/removeapplet.rb +46 -0
- data/code/superant.com.rwdtinkerbackwindow/removeappletvariables.rb +52 -0
- data/code/superant.com.rwdtinkerbackwindow/runremoteinstall.rb +11 -0
- data/code/superant.com.rwdtinkerbackwindow/runrwdtinkerbackwindow.rb +15 -0
- data/code/superant.com.rwdtinkerbackwindow/rwdtinkerwin2version.rb +13 -0
- data/code/superant.com.rwdtinkerbackwindow/saveconfigurationrecord.rb +19 -0
- data/code/superant.com.rwdtinkerbackwindow/showlocaleoptions.rb +9 -0
- data/code/superant.com.rwdtinkerbackwindow/viewappletcontents.rb +23 -0
- data/code/superant.com.rwdtinkerbackwindow/viewgemappletcontents.rb +24 -0
- data/code/superant.com.rwdtinkerbackwindow/viewlogfile.rb +16 -0
- data/code/superant.com.thesaurus/clearhttpview3.rb +9 -0
- data/code/superant.com.thesaurus/listwordlookup.rb +37 -0
- data/code/superant.com.thesaurus/runappletwindow.rb +12 -0
- data/code/superant.com.words/dictlookup.rb +20 -0
- data/code/superant.com.words/runrwdwordsbackwindow.rb +10 -0
- data/code/superant.com.words/rwdtinkerversion.rb +10 -0
- data/code/zz0applicationend/zz0end.rb +5 -0
- data/configuration/rwdtinker.dist +15 -0
- data/configuration/rwdwlanguage.dist +21 -0
- data/configuration/tinkerwin2variables.dist +23 -0
- data/gui/00coreguibegin/applicationguitop.rwd +9 -0
- data/gui/frontwindow0/cc0openphoto.rwd +22 -0
- data/gui/frontwindowselections/00selectiontabbegin.rwd +11 -0
- data/gui/frontwindowselections/jumplinkcommands.rwd +15 -0
- data/gui/frontwindowselections/wwselectionend.rwd +3 -0
- data/gui/frontwindowtdocuments/00documentbegin.rwd +6 -0
- data/gui/frontwindowtdocuments/tinkerdocuments.rwd +14 -0
- data/gui/frontwindowtdocuments/zzdocumentend.rwd +8 -0
- data/gui/helpaboutbegin/zzzrwdlasttab.rwd +6 -0
- data/gui/helpaboutbegin/zzzzhelpscreenstart.rwd +3 -0
- data/gui/helpaboutbegin/zzzzzzhelpabouttab.rwd +15 -0
- data/gui/helpaboutzend/helpscreenend.rwd +3 -0
- data/gui/helpaboutzend/zhelpscreenstart2.rwd +3 -0
- data/gui/helpaboutzend/zzzzhelpabout2.rwd +15 -0
- data/gui/helpaboutzend/zzzzhelpscreen2end.rwd +3 -0
- data/gui/tinkerbackwindows/superant.com.language/1appname.rwd +4 -0
- data/gui/tinkerbackwindows/superant.com.language/22google.rwd +38 -0
- data/gui/tinkerbackwindows/superant.com.language/44germany.rwd +19 -0
- data/gui/tinkerbackwindows/superant.com.language/67viewconfiguration.rwd +27 -0
- data/gui/tinkerbackwindows/superant.com.language/77jumplinkcommands.rwd +17 -0
- data/gui/tinkerbackwindows/superant.com.language/z9end.rwd +6 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/1appname.rwd +5 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/40rwdlistzips.rwd +41 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/45installremotezip.rwd +44 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/50rwdlistapplets.rwd +44 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/60editconfiguration.rwd +30 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/70rwddiagnostics.rwd +29 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/75rwdlogfile.rwd +20 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/80localechanger.rwd +17 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/81jumplinkcommands.rwd +17 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/9backend.rwd +6 -0
- data/gui/tinkerbackwindows/superant.com.tinkerhelpwindow/1appname.rwd +31 -0
- data/gui/tinkerbackwindows/superant.com.tinkerhelpwindow/9end.rwd +4 -0
- data/gui/tinkerbackwindows/superant.com.versionwindow/1appname.rwd +19 -0
- data/gui/tinkerbackwindows/superant.com.versionwindow/helpaboutwindow.rwd +17 -0
- data/gui/tinkerbackwindows/superant.com.words/1appname.rwd +4 -0
- data/gui/tinkerbackwindows/superant.com.words/1dictionary.rwd +19 -0
- data/gui/tinkerbackwindows/superant.com.words/4thesaurus.rwd +36 -0
- data/gui/tinkerbackwindows/superant.com.words/77jumplinkcommands.rwd +17 -0
- data/gui/tinkerbackwindows/superant.com.words/z9end.rwd +6 -0
- data/gui/zzcoreguiend/yy9rwdend.rwd +4 -0
- data/init.rb +179 -0
- data/installed/rwdwlanguage.inf +24 -0
- data/installed/temp.rb +1 -0
- data/lang/en/rwdcore/en.po +197 -0
- data/lang/en/rwdlanguage/en.po +32 -0
- data/lang/es/rwdcore/es.po +184 -0
- data/lang/es/rwdlanguage/en.po +32 -0
- data/lang/fr/rwdcore/fr.po +169 -0
- data/lang/fr/rwdlanguage/en.po +32 -0
- data/lang/hi/rwdcore/hi.po +173 -0
- data/lang/hi/rwdlanguage/en.po +32 -0
- data/lang/ja/rwdcore/ja.po +171 -0
- data/lang/ja/rwdlanguage/en.po +32 -0
- data/lang/nl/rwdcore/nl.po +169 -0
- data/lang/nl/rwdlanguage/en.po +32 -0
- data/lib/dict.rb +438 -0
- data/lib/g_translate.rb +43 -0
- data/lib/g_translate/client.rb +84 -0
- data/lib/g_translate/translator.rb +57 -0
- data/lib/ger-eng.txt +111283 -0
- data/lib/oothesaurus.rb +76 -0
- data/lib/rconftool.rb +387 -0
- data/lib/rwd/browser.rb +123 -0
- data/lib/rwd/ftools.rb +174 -0
- data/lib/rwd/mime.rb +328 -0
- data/lib/rwd/net.rb +877 -0
- data/lib/rwd/ruby.rb +889 -0
- data/lib/rwd/rwd.rb +1425 -0
- data/lib/rwd/sgml.rb +236 -0
- data/lib/rwd/thread.rb +63 -0
- data/lib/rwd/tree.rb +371 -0
- data/lib/rwd/xml.rb +101 -0
- data/lib/rwdthemes/default.rwd +317 -0
- data/lib/rwdthemes/pda.rwd +72 -0
- data/lib/rwdthemes/windowslike.rwd +171 -0
- data/lib/rwdtinker/rwdcodedir.rb +56 -0
- data/lib/rwdtinker/rwdguidir.rb +57 -0
- data/lib/rwdtinker/rwdlangdir.rb +60 -0
- data/lib/rwdtinker/rwdtinkertools.rb +25 -0
- data/lib/zip/ioextras.rb +155 -0
- data/lib/zip/stdrubyext.rb +111 -0
- data/lib/zip/tempfile_bugfixed.rb +195 -0
- data/lib/zip/zip.rb +1847 -0
- data/lib/zip/zipfilesystem.rb +609 -0
- data/lib/zip/ziprequire.rb +90 -0
- data/rwd_files/HowTo_Language.txt +179 -0
- data/rwd_files/HowTo_Tinker.txt +515 -0
- data/rwd_files/HowTo_TinkerWin2.txt +202 -0
- data/rwd_files/Readme.txt +57 -0
- data/rwd_files/RubyWebDialogs.html +6 -0
- data/rwd_files/Tinkerhelptexthash.txt +84 -0
- data/rwd_files/favicon.ico +0 -0
- data/rwd_files/log/rwdtinker.log +726 -0
- data/rwd_files/rdoc-style.css +175 -0
- data/rwd_files/rwdapplications.html +76 -0
- data/rwd_files/rwdlanguagehelpfiles.txt +34 -0
- data/rwd_files/tinker.png +0 -0
- data/rwdconfig.dist +24 -0
- data/rwdlanguage.rb +1 -0
- data/tests/RubyGauge.rb +179 -0
- data/tests/checkdepends.sh +4 -0
- data/tests/cleancnf.sh +6 -0
- data/tests/makedist-rwdwlanguage.rb +56 -0
- data/tests/makedist.rb +66 -0
- data/tests/rdep.rb +354 -0
- data/tests/totranslate.lang +93 -0
- data/zips/rwdwcalc-0.63.zip +0 -0
- data/zips/rwdwfoldeditor-0.08.zip +0 -0
- data/zips/rwdwhypernote-0.16.zip +0 -0
- data/zips/rwdwlanguage-0.01.zip +0 -0
- data/zips/rwdwmovies-0.98.zip +0 -0
- data/zips/rwdwruby-1.08.zip +0 -0
- data/zips/temp.rb +1 -0
- data/zips/tinkerbellw-0.04.zip +0 -0
- data/zips/wrubyslippers-1.08.zip +0 -0
- metadata +246 -0
data/tests/cleancnf.sh
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
#***********************************************************************
|
3
|
+
#* Rwd/Tinker -- A Ruby program for the RudyWebDialog.
|
4
|
+
#* Copyright (c) 2004, 2005 by Steven Gibson. All Rights Reserved.
|
5
|
+
#* at "steven@superant.com".
|
6
|
+
#***********************************************************************/
|
7
|
+
$progdir =""
|
8
|
+
$tinkerhelpaboutarray = [""]
|
9
|
+
$tinkerdocumentsarray = [""]
|
10
|
+
$testharnessarray = [""]
|
11
|
+
$rwdjumplink = [""]
|
12
|
+
JumpLink = Hash.new("default")
|
13
|
+
require 'fileutils'
|
14
|
+
DistroName = "rwdwlanguage"
|
15
|
+
DistroVersion="0.01"
|
16
|
+
load "configuration/#{DistroName}.dist"
|
17
|
+
|
18
|
+
|
19
|
+
DistroTitle="#{DistroName}-#{DistroVersion}"
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
$progdir = File::expand_path( File.dirname(__FILE__))
|
24
|
+
results = " "
|
25
|
+
|
26
|
+
puts "creating #{DistroName} distribution files version #{DistroVersion}"
|
27
|
+
|
28
|
+
#puts "moving up one directory"
|
29
|
+
#Dir.chdir("..")
|
30
|
+
|
31
|
+
|
32
|
+
FileUtils.rm_rf("#{DistroTitle}.zip")
|
33
|
+
zipcreatecmd = "zip -r #{DistroTitle}.zip *"
|
34
|
+
puts "#{zipcreatecmd}"
|
35
|
+
`#{zipcreatecmd}`
|
36
|
+
|
37
|
+
gemspecfilename = "rwdzip#{DistroTitle}.gemspec"
|
38
|
+
tobject = Time.now
|
39
|
+
year = tobject.year.to_s
|
40
|
+
month = tobject.mon.to_s
|
41
|
+
daydate = tobject.day.to_s
|
42
|
+
|
43
|
+
fd = File.open(gemspecfilename,"w")
|
44
|
+
fd.print("Gem::Specification.new do |s|\n")
|
45
|
+
fd.print(" s.name = %q{rwdzip#{DistroName}}\n")
|
46
|
+
fd.print(" s.version = \"#{DistroVersion}\"\n")
|
47
|
+
fd.print(" s.date = %q{#{year}-#{month}-#{daydate}}")
|
48
|
+
load "tests/gemspec-#{DistroName}"
|
49
|
+
fd.print($gemspecvar)
|
50
|
+
fd.close
|
51
|
+
|
52
|
+
ListingCommand = "ls -1 -s -h rwdzip#{DistroTitle}*"
|
53
|
+
|
54
|
+
puts `#{ListingCommand}`
|
55
|
+
|
56
|
+
print "Build finished\n"
|
data/tests/makedist.rb
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
#***********************************************************************
|
3
|
+
#* Rwd/Tinker -- A Ruby program for the RudyWebDialog.
|
4
|
+
#* Copyright (c) 2004, 2005 by Steven Gibson. All Rights Reserved.
|
5
|
+
#* at "steven@superant.com".
|
6
|
+
#***********************************************************************/
|
7
|
+
$progdir =""
|
8
|
+
$tinkerhelpaboutarray = [""]
|
9
|
+
$tinkerdocumentsarray = [""]
|
10
|
+
$testharnessarray = [""]
|
11
|
+
$rwdjumplink = [""]
|
12
|
+
JumpLink = Hash.new("default")
|
13
|
+
require 'fileutils'
|
14
|
+
|
15
|
+
DistroName = "rwdwlanguage"
|
16
|
+
|
17
|
+
DistroVersion="0.01"
|
18
|
+
|
19
|
+
DistroTitle="#{DistroName}.dist"
|
20
|
+
load "configuration/#{DistroTitle}"
|
21
|
+
DistroName = "rwdlanguage"
|
22
|
+
DistroTitle = "#{DistroName}-#{DistroVersion}"
|
23
|
+
|
24
|
+
|
25
|
+
$progdir = File::expand_path( File.dirname(__FILE__))
|
26
|
+
results = " "
|
27
|
+
|
28
|
+
puts "creating #{DistroName} distribution files version #{DistroVersion}"
|
29
|
+
puts "cleaning conf files"
|
30
|
+
`tests/cleancnf.sh`
|
31
|
+
puts "moving up one directory"
|
32
|
+
Dir.chdir("..")
|
33
|
+
|
34
|
+
|
35
|
+
|
36
|
+
FileUtils.rm_rf("#{DistroTitle}.zip")
|
37
|
+
zipcreatecmd = "zip -r #{DistroTitle}.zip #{DistroName}"
|
38
|
+
puts "#{zipcreatecmd}"
|
39
|
+
`#{zipcreatecmd}`
|
40
|
+
tarcreatecmd = "tar --gzip -cf #{DistroTitle}.tar.gz #{DistroName}"
|
41
|
+
puts "#{tarcreatecmd}"
|
42
|
+
`#{tarcreatecmd}`
|
43
|
+
tarcreatecmd2 = "tar --bzip2 -cf #{DistroTitle}.tar.bz2 #{DistroName}"
|
44
|
+
puts "#{tarcreatecmd2}"
|
45
|
+
`#{tarcreatecmd2}`
|
46
|
+
|
47
|
+
gemspecfilename = "#{DistroTitle}.gemspec"
|
48
|
+
tobject = Time.now
|
49
|
+
year = tobject.year.to_s
|
50
|
+
month = tobject.mon.to_s
|
51
|
+
daydate = tobject.day.to_s
|
52
|
+
|
53
|
+
fd = File.open(gemspecfilename,"w")
|
54
|
+
fd.print("Gem::Specification.new do |s|\n")
|
55
|
+
fd.print(" s.name = %q{#{DistroName}}\n")
|
56
|
+
fd.print(" s.version = \"#{DistroVersion}\"\n")
|
57
|
+
fd.print(" s.date = %q{#{year}-#{month}-#{daydate}}")
|
58
|
+
load "#{DistroName}/tests/gemspec"
|
59
|
+
fd.print($gemspecvar)
|
60
|
+
fd.close
|
61
|
+
|
62
|
+
ListingCommand = "ls -1 -s -h #{DistroTitle}*"
|
63
|
+
|
64
|
+
puts `#{ListingCommand}`
|
65
|
+
|
66
|
+
print "Build finished\n"
|
data/tests/rdep.rb
ADDED
@@ -0,0 +1,354 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
rdep - The Ruby Dependency Tool
|
4
|
+
Version 1.4
|
5
|
+
|
6
|
+
Hal E. Fulton
|
7
|
+
2 November 2002
|
8
|
+
Ruby's license
|
9
|
+
|
10
|
+
Purpose
|
11
|
+
|
12
|
+
Determine the library files on which a specified Ruby file is dependent
|
13
|
+
(and their location and availability).
|
14
|
+
|
15
|
+
Usage notes
|
16
|
+
|
17
|
+
Usage: ruby rdep.rb sourcefile
|
18
|
+
|
19
|
+
The sourcefile may or may not have a .rb extension.
|
20
|
+
|
21
|
+
The directories in the $: array (which includes the RUBYLIB environment
|
22
|
+
variable) are searched first. File extensions are currently searched for
|
23
|
+
in this order: no extension, .rb, .o, .so, .dll (this may not be correct).
|
24
|
+
|
25
|
+
If there are no detected dependencies, the program will give the
|
26
|
+
message, "No dependencies found."
|
27
|
+
|
28
|
+
If the program finds [auto]load and require statements that it can
|
29
|
+
understand, it searches for the specified files. Any recognized Ruby
|
30
|
+
source files (*.rb) are processed recursively in the same way. No attempt
|
31
|
+
is made to open the files that appear to be binary.
|
32
|
+
|
33
|
+
The program will print up to four lists (any or all may be omitted):
|
34
|
+
1. A list of files it found by going through RUBYLIB.;
|
35
|
+
2. A list of files found under the searchroot (or under '.');
|
36
|
+
3. A list of directories under searchroot which should perhaps be
|
37
|
+
added to RUBYLIB; and
|
38
|
+
4. A list of files (without extensions) which could not be found.
|
39
|
+
|
40
|
+
If there were unparseable [auto]load or require statements, a warning
|
41
|
+
will be issued.
|
42
|
+
|
43
|
+
Between lists 3 and 4, the program will give an opinion about the overall
|
44
|
+
situation. The worst case is that files were not found; the uncertain
|
45
|
+
case is when there were unparseable statements; and the best case is
|
46
|
+
when all files could be found (lists 1 and 2).
|
47
|
+
|
48
|
+
Exit codes
|
49
|
+
|
50
|
+
0 - Usage or successful execution
|
51
|
+
1 - Nonexistent sourcefile specified
|
52
|
+
2 - Improper sourcefile (pipe, special file, ...)
|
53
|
+
3 - Some kind of problem reading a file
|
54
|
+
|
55
|
+
Limitations
|
56
|
+
|
57
|
+
Requires Ruby 1.6.0 or higher
|
58
|
+
No recursion on binaries
|
59
|
+
Can't look at dynamically built names
|
60
|
+
Can't detect "tested" requires (e.g.: flag = require "foo.rb")
|
61
|
+
[auto]load/require can be preceded only by whitespace on the line
|
62
|
+
Only recognizes simple strings ("file" or 'file')
|
63
|
+
Does not recognized named constants (e.g.: require MyFile)
|
64
|
+
Assumes every directory entry is either a file or subdirectory
|
65
|
+
Does not handle the Windows variable RUBYLIB_PREFIX
|
66
|
+
May be SLOW if a directory structure is deep (especially
|
67
|
+
on Windows with 1.6.x)
|
68
|
+
|
69
|
+
Known bugs:
|
70
|
+
|
71
|
+
Logic may be incorrect in terms of search order, file extensions, etc.
|
72
|
+
Injected a bug in 1.3: In rare cases will recurse until stack overflow
|
73
|
+
|
74
|
+
Revision history
|
75
|
+
|
76
|
+
Version 1.0 - 13 October 2000 - Initial release
|
77
|
+
Version 1.1 - 10 July 2001 - Bug fixes
|
78
|
+
Version 1.2 - 15 August 2002 - Works correctly on Win98
|
79
|
+
Version 1.3 - 21 October 2002 - Removed globals; removed search root;
|
80
|
+
added $: instead of RUBYLIB; etc.
|
81
|
+
Version 1.4 - 2 November 2002 - Fixed autoload recursion bug
|
82
|
+
|
83
|
+
To-do list
|
84
|
+
|
85
|
+
Possibly change extension search order?
|
86
|
+
Possibly add extensions to list?
|
87
|
+
Are explicit extensions allowed other than .rb?
|
88
|
+
Is a null extension really legal?
|
89
|
+
Additional tests/safeguards? (file permissions, non-empty files,...)
|
90
|
+
Change inconsistent expansion of tilde, dot, etc.?
|
91
|
+
Make it smarter somehow??
|
92
|
+
|
93
|
+
=end
|
94
|
+
|
95
|
+
#
|
96
|
+
# File.doc_skip - iterator to skip embedded docs in Ruby input file
|
97
|
+
#
|
98
|
+
|
99
|
+
class File
|
100
|
+
|
101
|
+
def doc_skip
|
102
|
+
loop do
|
103
|
+
str = gets
|
104
|
+
break if not str
|
105
|
+
if str =~ /^=begin([ \t]|$)/
|
106
|
+
loop do
|
107
|
+
str = gets
|
108
|
+
break if not str
|
109
|
+
break if str =~ /^=end([ \t]|$)/
|
110
|
+
end
|
111
|
+
else
|
112
|
+
yield str
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
class Dependency
|
120
|
+
|
121
|
+
#
|
122
|
+
# unquote - Find the value of a string. Called from scan.
|
123
|
+
#
|
124
|
+
|
125
|
+
def unquote(str)
|
126
|
+
# Still more kludgy code.
|
127
|
+
return nil if str == nil
|
128
|
+
if [?', ?"].include? str[0] # ' Unconfuse gvim
|
129
|
+
str = str[1..-2]
|
130
|
+
else
|
131
|
+
""
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
#
|
136
|
+
# scan - Scans a line and returns the filename from a load or require
|
137
|
+
# statement. Returns null string if there was a parsing problem.
|
138
|
+
# Returns nil if this is not a load or require.
|
139
|
+
#
|
140
|
+
|
141
|
+
def scan(line)
|
142
|
+
line.strip!
|
143
|
+
if line =~ /^load/ or line =~ /^auto/ or line =~ /^require/
|
144
|
+
@has_dep = true # At least one dependency found.
|
145
|
+
# Kludge!!
|
146
|
+
junk = %w[ require load autoload ( ) , ] + [""]
|
147
|
+
temp = line.split(/[ \t\(\),]/) - junk
|
148
|
+
if temp[2] and temp[2][0].chr =~ /[#;]/ # Comments, semi...
|
149
|
+
temp = temp[0..1]
|
150
|
+
end
|
151
|
+
if temp[-1] =~ /\#\{/ # #{} means trouble
|
152
|
+
str = ""
|
153
|
+
else
|
154
|
+
str = unquote(temp[-1]) # May return nil.
|
155
|
+
end
|
156
|
+
str
|
157
|
+
else
|
158
|
+
nil
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
#
|
163
|
+
# find_files - The heart of the program. Search for files using $:
|
164
|
+
#
|
165
|
+
|
166
|
+
def find_files(source)
|
167
|
+
# loadable - This file or some variant can be found in one of the
|
168
|
+
# directories in $:
|
169
|
+
loadable = false
|
170
|
+
|
171
|
+
files = [] # Save a list of load/require files.
|
172
|
+
found = [] # Save a list of files found (.rb only for now)
|
173
|
+
|
174
|
+
# Open the file, strip embedded docs, and look for load/require statements.
|
175
|
+
|
176
|
+
begin
|
177
|
+
File.open(source).doc_skip {|line| files << scan(line)}
|
178
|
+
rescue => err
|
179
|
+
puts "Problem processing file #{source}: #{err}"
|
180
|
+
caller.each {|x| puts " #{x}"}
|
181
|
+
exit 3
|
182
|
+
end
|
183
|
+
|
184
|
+
# If no dependencies, don't bother searching!
|
185
|
+
if ! @has_dep
|
186
|
+
puts "No dependencies found."
|
187
|
+
exit 0
|
188
|
+
end
|
189
|
+
|
190
|
+
files.compact!
|
191
|
+
catch(:skip) do
|
192
|
+
for file in files
|
193
|
+
|
194
|
+
if file == "" # Warning
|
195
|
+
@warnfiles << source
|
196
|
+
next
|
197
|
+
end
|
198
|
+
|
199
|
+
throw :skip if (@inpath.include? file) || (@cantfind.include? file)
|
200
|
+
|
201
|
+
if file =~ /\.rb$/ then # Don't add suffix to *.rb
|
202
|
+
suffixes = [""] # Hmm... .rbw?? Probably not needed.
|
203
|
+
else
|
204
|
+
suffixes = @suffixes # Use any suffix (extension)
|
205
|
+
end
|
206
|
+
|
207
|
+
# Look through search path (@search_path)
|
208
|
+
|
209
|
+
for dir in @search_path
|
210
|
+
|
211
|
+
for suf in suffixes
|
212
|
+
filename = dir + file + suf
|
213
|
+
loadable = test ?e, filename
|
214
|
+
break if loadable
|
215
|
+
end
|
216
|
+
|
217
|
+
if loadable
|
218
|
+
@inpath << filename # Files we found in RUBYLIB
|
219
|
+
# Add to 'found' if it's a source file (so we can recurse)
|
220
|
+
found << filename if filename =~ /\.rb$/
|
221
|
+
break
|
222
|
+
end
|
223
|
+
|
224
|
+
end
|
225
|
+
|
226
|
+
@cantfind << file if !loadable
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
found.uniq!
|
231
|
+
found.compact!
|
232
|
+
list = found
|
233
|
+
found.each {|x| list += find_files(x)}
|
234
|
+
|
235
|
+
list
|
236
|
+
end
|
237
|
+
|
238
|
+
#
|
239
|
+
# print_list - Print a header message followed by a list of files
|
240
|
+
# or directories.
|
241
|
+
#
|
242
|
+
|
243
|
+
def print_list(header, list)
|
244
|
+
return if list.empty?
|
245
|
+
puts header + "\n\n" # Extra newlines
|
246
|
+
list.each {|x| puts " #{x}"}
|
247
|
+
puts "\n" # Extra newline
|
248
|
+
end
|
249
|
+
|
250
|
+
SEP = File::Separator
|
251
|
+
DIRSEP = if SEP=="/" then ":" else ";" end
|
252
|
+
|
253
|
+
def execute
|
254
|
+
@has_dep = false
|
255
|
+
@warnfiles = []
|
256
|
+
@newdirs = []
|
257
|
+
@inpath = []
|
258
|
+
@cantfind = []
|
259
|
+
@suffixes = [""] + %w[ .rb .o .so .dll ]
|
260
|
+
@rdirs = []
|
261
|
+
@global_found = []
|
262
|
+
|
263
|
+
# No parameters? Usage message
|
264
|
+
|
265
|
+
if not ARGV[0]
|
266
|
+
puts "Usage: ruby rdep.rb sourcefile [searchroot]"
|
267
|
+
exit 0
|
268
|
+
end
|
269
|
+
|
270
|
+
# Does sourcefile exist?
|
271
|
+
|
272
|
+
if ! test ?e, ARGV[0]
|
273
|
+
puts "#{ARGV[0]} does not exist."
|
274
|
+
exit 1
|
275
|
+
end
|
276
|
+
|
277
|
+
# Is sourcefile a "real" file?
|
278
|
+
|
279
|
+
if ! test ?f, ARGV[0]
|
280
|
+
puts "#{ARGV[0]} is not a regular file."
|
281
|
+
exit 2
|
282
|
+
end
|
283
|
+
|
284
|
+
# Be sure to search under the dir where the
|
285
|
+
# program lives...
|
286
|
+
|
287
|
+
@proghome = File.dirname(File.expand_path(ARGV[0]))
|
288
|
+
if @proghome != File.expand_path(".")
|
289
|
+
$: << @proghome
|
290
|
+
end
|
291
|
+
|
292
|
+
# Get list of dirs in $:
|
293
|
+
|
294
|
+
@search_path = $:
|
295
|
+
@search_path.collect! {|x| x[-1] == SEP ? x : x + SEP }
|
296
|
+
|
297
|
+
# All real work happens here -- big recursive find
|
298
|
+
|
299
|
+
find_files(ARGV[0])
|
300
|
+
|
301
|
+
@warnfiles.uniq!
|
302
|
+
@cantfind.uniq!
|
303
|
+
@newdirs.uniq!
|
304
|
+
@inpath.map! {|x| File.expand_path(x)}
|
305
|
+
@inpath.uniq!
|
306
|
+
|
307
|
+
#
|
308
|
+
# Now, what are all the results? Report to user.
|
309
|
+
#
|
310
|
+
|
311
|
+
if @inpath[0]
|
312
|
+
print_list("Found in search path:", @inpath)
|
313
|
+
if ! @cantfind.empty? && @warnfiles.empty?
|
314
|
+
puts "This will probably be sufficient.\n"
|
315
|
+
end
|
316
|
+
end
|
317
|
+
|
318
|
+
# Did we use any dirs under the "home"?
|
319
|
+
|
320
|
+
homedirs = @inpath.find_all {|x| x =~ Regexp.new("^"+@proghome)}
|
321
|
+
if homedirs[0] # not empty
|
322
|
+
homedirs.map! {|x| File.dirname(x) }.uniq!
|
323
|
+
puts "Consider adding these directories to RUBYPATH:\n\n"
|
324
|
+
homedirs.each {|x| puts " #{x}" }
|
325
|
+
puts
|
326
|
+
if @warnfiles[0] and homedirs == [] # There are unparseable statements.
|
327
|
+
puts "This will probably NOT be sufficient. See below.\n\n"
|
328
|
+
end
|
329
|
+
end
|
330
|
+
|
331
|
+
# What's our opinion?
|
332
|
+
|
333
|
+
if @cantfind[0] # There are unknown files.
|
334
|
+
puts "This will probably NOT be sufficient. See below.\n\n"
|
335
|
+
elsif @warnfiles[0] and homedirs == [] # There are unparseable statements.
|
336
|
+
puts "Files may still be missing. See below.\n\n"
|
337
|
+
else # We think everything is OK.
|
338
|
+
puts "This will probably be sufficient."
|
339
|
+
end
|
340
|
+
|
341
|
+
# Report unknown files
|
342
|
+
print_list("Not located anywhere:", @cantfind)
|
343
|
+
|
344
|
+
# Print warning about load/require strings we couldn't understand
|
345
|
+
print_list("Warning: Unparseable usages of 'load' or 'require' in:",
|
346
|
+
@warnfiles)
|
347
|
+
end
|
348
|
+
|
349
|
+
end
|
350
|
+
|
351
|
+
Dependency.new.execute
|
352
|
+
|
353
|
+
exit 0
|
354
|
+
|