tiddlywiki_cp 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. data/COPYING +674 -0
  2. data/History.txt +4 -0
  3. data/Manifest.txt +68 -0
  4. data/README.txt +3 -0
  5. data/Rakefile +123 -0
  6. data/bin/tiddlywiki_cp +13 -0
  7. data/lib/tiddlywiki_cp/converters.rb +36 -0
  8. data/lib/tiddlywiki_cp/file2file.rb +32 -0
  9. data/lib/tiddlywiki_cp/file2tiddler.rb +42 -0
  10. data/lib/tiddlywiki_cp/r4tw.rb +763 -0
  11. data/lib/tiddlywiki_cp/tiddler2directory.rb +27 -0
  12. data/lib/tiddlywiki_cp/tiddler2file.rb +41 -0
  13. data/lib/tiddlywiki_cp/tiddler2tiddlywiki.rb +29 -0
  14. data/lib/tiddlywiki_cp/tiddler_css.rb +39 -0
  15. data/lib/tiddlywiki_cp/tiddler_html.rb +39 -0
  16. data/lib/tiddlywiki_cp/tiddler_js.rb +39 -0
  17. data/lib/tiddlywiki_cp/tiddlywiki2file.rb +29 -0
  18. data/lib/tiddlywiki_cp/version.rb +24 -0
  19. data/lib/tiddlywiki_cp.rb +378 -0
  20. data/scripts/txt2html +67 -0
  21. data/setup.rb +1585 -0
  22. data/test/content/a +0 -0
  23. data/test/content/a.div +0 -0
  24. data/test/content/b +0 -0
  25. data/test/content/e +3 -0
  26. data/test/content/e.div +1 -0
  27. data/test/content/html_entities.html +6 -0
  28. data/test/content/test_fetch.html +6 -0
  29. data/test/content/universe.html +10522 -0
  30. data/test/r4tw/addtag.rb +93 -0
  31. data/test/r4tw/all.rb +29 -0
  32. data/test/r4tw/createfrom.rb +62 -0
  33. data/test/r4tw/empties/2.1.3.html +7087 -0
  34. data/test/r4tw/empties/2.2.0.beta5.html +8726 -0
  35. data/test/r4tw/fromremote.rb +19 -0
  36. data/test/r4tw/fromurl.rb +28 -0
  37. data/test/r4tw/shadows.rb +27 -0
  38. data/test/r4tw/tiddler.rb +70 -0
  39. data/test/r4tw/tiddlerfromurl.rb +23 -0
  40. data/test/r4tw/tiddlywiki.rb +66 -0
  41. data/test/r4tw/utils.rb +55 -0
  42. data/test/r4tw/withcontent/2.2.0.beta5.html +8739 -0
  43. data/test/r4tw/withcontent/22b5index.html +13523 -0
  44. data/test/r4tw/withcontent/empty2.html +7084 -0
  45. data/test/r4tw/withcontent/nothing.js +1 -0
  46. data/test/r4tw/write_all_tiddlers_to.rb +62 -0
  47. data/test/test_all.rb +8 -0
  48. data/test/test_helper.rb +36 -0
  49. data/test/test_tiddler_css.rb +55 -0
  50. data/test/test_tiddler_html.rb +54 -0
  51. data/test/test_tiddler_js.rb +56 -0
  52. data/test/test_tiddlywiki_cp.rb +341 -0
  53. data/website/files/DefaultTiddlers.tiddler +2 -0
  54. data/website/files/DefaultTiddlers.tiddler.div +1 -0
  55. data/website/files/Introduction.tiddler +12 -0
  56. data/website/files/Introduction.tiddler.div +1 -0
  57. data/website/files/MainMenu.tiddler +1 -0
  58. data/website/files/MainMenu.tiddler.div +1 -0
  59. data/website/files/SiteSubtitle.tiddler +1 -0
  60. data/website/files/SiteSubtitle.tiddler.div +1 -0
  61. data/website/files/SiteTitle.tiddler +1 -0
  62. data/website/files/SiteTitle.tiddler.div +1 -0
  63. data/website/files/Usage.tiddler +55 -0
  64. data/website/files/Usage.tiddler.div +1 -0
  65. data/website/files/WebDAVSavingPlugin.js +234 -0
  66. data/website/files/WebDAVSavingPlugin.js.div +1 -0
  67. data/website/index.html +9144 -0
  68. data/website/index.xml +336 -0
  69. metadata +116 -0
@@ -0,0 +1 @@
1
+ // hey there
@@ -0,0 +1,62 @@
1
+
2
+ require 'test/unit'
3
+ require 'fileutils'
4
+ require 'pathname'
5
+
6
+ $LOAD_PATH << "..";
7
+ require 'r4tw'
8
+
9
+ class TiddlyWikiTest < Test::Unit::TestCase
10
+
11
+ def setup
12
+
13
+ @tw = make_tw { source_file "#{this_dir(__FILE__)}/withcontent/2.2.0.beta5.html" }
14
+ FileUtils.remove_dir 'spit' if File.exists? 'spit'
15
+ Dir.mkdir 'spit'
16
+
17
+ end
18
+
19
+ def teardown
20
+ FileUtils.remove_dir 'spit'
21
+ end
22
+
23
+ def test_text
24
+ @tw.add_tiddler_from('tiddler' => 'js tiddler',
25
+ 'text' => ';',
26
+ 'tags' => 'systemConfig',
27
+ 'modified' => Time.now.convertToYYYYMMDDHHMM
28
+ )
29
+ @tw.write_all_tiddlers_to 'spit'
30
+ @tw.tiddlers.each do |t|
31
+ if t.tags and t.tags.include? "systemConfig"
32
+ type = 'js'
33
+ else
34
+ type = 'tiddler'
35
+ end
36
+ file = "#{this_dir(__FILE__)}/spit/#{t.name}.#{type}"
37
+ assert_equal(t.text, File.read(file))
38
+ if t.modified
39
+ assert_equal(t.modified, File.mtime(file).convertToYYYYMMDDHHMM)
40
+ end
41
+ end
42
+ end
43
+
44
+ def test_divs
45
+ @tw.write_all_tiddlers_to('spit', true)
46
+ @tw.tiddlers.each do |t|
47
+ file = "#{this_dir(__FILE__)}/spit/#{t.name}.tiddler"
48
+ assert_equal(t.text, File.read(file))
49
+ assert_equal(t.to_fields_string(true).join(' '), File.read("#{file}.div"))
50
+ end
51
+ end
52
+
53
+ def test_slash
54
+ slash_title = 'title with / in / the name'
55
+ @tw.add_tiddler_from('tiddler' => slash_title,
56
+ 'text' => 'ABC'
57
+ )
58
+ @tw.write_all_tiddlers_to('spit', true)
59
+ assert(File.exists?('spit/title with %2F in %2F the name.tiddler'))
60
+ end
61
+
62
+ end
data/test/test_all.rb ADDED
@@ -0,0 +1,8 @@
1
+ $LOAD_PATH << "test/r4tw"
2
+ $LOAD_PATH << "lib/tiddlywiki_cp"
3
+ #require 'r4tw/all.rb'
4
+ require 'test_tiddlywiki_cp'
5
+
6
+ require 'test_tiddler_js.rb'
7
+ require 'test_tiddler_html.rb'
8
+ require 'test_tiddler_css.rb'
@@ -0,0 +1,36 @@
1
+ #
2
+ # Copyright (C) 2007 Loic Dachary <loic@dachary.org>
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program 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
12
+ # GNU General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+ #
17
+ require 'test/unit'
18
+ require 'fileutils'
19
+ require File.dirname(__FILE__) + '/../lib/tiddlywiki_cp'
20
+
21
+ module TiddlyBase
22
+
23
+ def rm_out
24
+ FileUtils.remove_dir 'spit' if File.exists? 'spit'
25
+ end
26
+
27
+ def setup
28
+ rm_out
29
+ Dir.mkdir 'spit'
30
+ end
31
+
32
+ def teardown
33
+ rm_out
34
+ end
35
+
36
+ end
@@ -0,0 +1,55 @@
1
+ #
2
+ # Copyright (C) 2007 Loic Dachary <loic@dachary.org>
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program 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
12
+ # GNU General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+ #
17
+ require File.dirname(__FILE__) + '/test_helper.rb'
18
+
19
+ module TiddlywikiCp
20
+
21
+ class TestTiddler < Test::Unit::TestCase
22
+ include TiddlyBase
23
+
24
+ def test_tiddler_css
25
+ t = TiddlyWikiCp.new
26
+ tiddler = Tiddler.new
27
+ assert_equal(false, t.tiddler_css?(tiddler))
28
+ tiddler.from_scratch({'tiddler', 'StyleSheet'})
29
+ assert_equal(TiddlyWikiCp::TIDDLER_CSS, t.tiddler_css?(tiddler))
30
+ tiddler.from_scratch({'tiddler', 'Styles'})
31
+ assert_equal(TiddlyWikiCp::TIDDLER_CSS, t.tiddler_css?(tiddler))
32
+ end
33
+
34
+ def test_css2directory
35
+ t = TiddlyWikiCp.new
36
+ tiddler = 'DesignStyle'
37
+ uri = "#{this_dir(__FILE__)}/content/universe.html#" + tiddler
38
+ t.css2directory(uri, 'spit')
39
+ assert(File.exists?('spit/' + tiddler + '.' + TiddlyWikiCp::TIDDLER_CSS))
40
+ assert(File.exists?('spit/' + tiddler + '.' + TiddlyWikiCp::TIDDLER_CSS + '.div'))
41
+ end
42
+
43
+ def test_css2file
44
+ assert(TiddlyWikiCp.new.respond_to?(:css2file))
45
+ end
46
+
47
+ def test_css2tiddlywiki
48
+ assert(TiddlyWikiCp.new.respond_to?(:css2tiddlywiki))
49
+ end
50
+ end
51
+
52
+ end # module TiddlywikiCp
53
+ # Local Variables:
54
+ # compile-command: "RUBYLIB='../lib/tiddlywiki_cp:../lib' ruby test_tiddler_css.rb"
55
+ # End:
@@ -0,0 +1,54 @@
1
+ #
2
+ # Copyright (C) 2007 Loic Dachary <loic@dachary.org>
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program 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
12
+ # GNU General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+ #
17
+ require File.dirname(__FILE__) + '/test_helper.rb'
18
+
19
+ module TiddlywikiCp
20
+
21
+ class TestTiddler < Test::Unit::TestCase
22
+ include TiddlyBase
23
+
24
+ def test_tiddler_html
25
+ t = TiddlyWikiCp.new
26
+ tiddler = Tiddler.new
27
+ assert_equal(false, t.tiddler_html?(tiddler))
28
+ tiddler.from_scratch({'tiddler', 'TemplateFoo'})
29
+ assert_equal(TiddlyWikiCp::TIDDLER_HTML, t.tiddler_html?(tiddler))
30
+ end
31
+
32
+ def test_html2directory
33
+ t = TiddlyWikiCp.new
34
+ tiddler = 'DesignTemplate'
35
+ uri = "#{this_dir(__FILE__)}/content/universe.html#" + tiddler
36
+ t.html2directory(uri, 'spit')
37
+ assert(File.exists?('spit/' + tiddler + '.' + TiddlyWikiCp::TIDDLER_HTML))
38
+ assert(File.exists?('spit/' + tiddler + '.' + TiddlyWikiCp::TIDDLER_HTML + '.div'))
39
+ end
40
+
41
+ def test_html2file
42
+ assert(TiddlyWikiCp.new.respond_to?(:html2file))
43
+ end
44
+
45
+ def test_html2tiddlywiki
46
+ assert(TiddlyWikiCp.new.respond_to?(:html2tiddlywiki))
47
+ end
48
+
49
+ end
50
+
51
+ end # module TiddlywikiCp
52
+ # Local Variables:
53
+ # compile-command: "RUBYLIB='../lib/tiddlywiki_cp:../lib' ruby test_tiddler_html.rb"
54
+ # End:
@@ -0,0 +1,56 @@
1
+ #
2
+ # Copyright (C) 2007 Loic Dachary <loic@dachary.org>
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program 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
12
+ # GNU General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+ #
17
+ require File.dirname(__FILE__) + '/test_helper.rb'
18
+ require 'tiddlywiki_cp/tiddler_js'
19
+
20
+ module TiddlywikiCp
21
+
22
+ class TestTiddler < Test::Unit::TestCase
23
+ include TiddlyBase
24
+
25
+ def test_tiddler_js?
26
+ t = TiddlyWikiCp.new
27
+ tiddler = Tiddler.new
28
+ assert_equal(nil, t.tiddler_js?(tiddler))
29
+ tiddler.from_scratch({'tags', ['bla']})
30
+ assert_equal(false, t.tiddler_js?(tiddler))
31
+ tiddler.from_scratch({'tags', ['systemConfig']})
32
+ assert_equal(TiddlyWikiCp::TIDDLER_JS, t.tiddler_js?(tiddler))
33
+ end
34
+
35
+ def test_js2directory
36
+ t = TiddlyWikiCp.new
37
+ tiddler = 'GenerateRssHijack'
38
+ uri = "#{this_dir(__FILE__)}/content/universe.html#" + tiddler
39
+ t.js2directory(uri, 'spit')
40
+ assert(File.exists?('spit/' + tiddler + '.' + TiddlyWikiCp::TIDDLER_JS))
41
+ assert(File.exists?('spit/' + tiddler + '.' + TiddlyWikiCp::TIDDLER_JS + '.div'))
42
+ end
43
+
44
+ def test_js2file
45
+ assert(TiddlyWikiCp.new.respond_to?(:js2file))
46
+ end
47
+
48
+ def test_js2tiddlywiki
49
+ assert(TiddlyWikiCp.new.respond_to?(:js2tiddlywiki))
50
+ end
51
+ end
52
+
53
+ end # module TiddlywikiCp
54
+ # Local Variables:
55
+ # compile-command: "RUBYLIB='../lib/tiddlywiki_cp:../lib' ruby test_tiddler_js.rb"
56
+ # End:
@@ -0,0 +1,341 @@
1
+ #
2
+ # Copyright (C) 2007 Loic Dachary <loic@dachary.org>
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program 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
12
+ # GNU General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+ #
17
+ require File.dirname(__FILE__) + '/test_helper.rb'
18
+ require 'open-uri'
19
+
20
+ module TiddlywikiCp
21
+
22
+ class TiddlyWikiCp
23
+
24
+ attr_accessor :stdout
25
+
26
+ def puts(string)
27
+ if ! defined?(@stdout):
28
+ @stdout = []
29
+ end
30
+ @stdout.push(string)
31
+ end
32
+
33
+ end
34
+
35
+ class TestTiddlywikiCp < Test::Unit::TestCase
36
+ include TiddlyBase
37
+
38
+ def test_main
39
+ t = TiddlyWikiCp.new
40
+ a = "#{this_dir(__FILE__)}/content/a" # existing file without .div
41
+ t.main([a, 'spit/a'])
42
+ assert(File.exists?('spit/a'))
43
+ end
44
+
45
+ def test_parse!
46
+ t = TiddlyWikiCp.new
47
+
48
+ options = t.parse!([])
49
+
50
+ assert_equal(false, options.times)
51
+ assert(t.parse!(['-t']).times)
52
+ assert(t.parse!(['--times']).times)
53
+
54
+ assert_equal(false, options.recursive)
55
+ assert(t.parse!(['-r']).recursive)
56
+ assert(t.parse!(['--recursive']).recursive)
57
+
58
+ t.reset
59
+ assert_equal(false, options.recursive)
60
+ assert_equal(false, options.times)
61
+ t.parse!(['-a'])
62
+ assert(t.options.recursive)
63
+ assert(t.options.times)
64
+ t.reset
65
+ t.parse!(['--all'])
66
+ assert(t.options.recursive)
67
+ assert(t.options.times)
68
+ t.reset
69
+
70
+ assert_equal(false, options.verbose)
71
+ assert(t.parse!(['-v']).verbose)
72
+ assert(t.parse!(['--verbose']).verbose)
73
+
74
+ assert_equal(false, options.dry_run)
75
+ assert(t.parse!(['-n']).dry_run)
76
+ assert(t.parse!(['--dry-run']).dry_run)
77
+
78
+ assert_equal([], options.includes)
79
+ assert_equal(['a'], t.parse!(['-i', 'a']).includes)
80
+ assert_equal(['a'], t.parse!(['--include', 'a']).includes)
81
+
82
+ assert_equal([], options.excludes)
83
+ assert_equal(['a'], t.parse!(['--exclude', 'a']).excludes)
84
+
85
+ t.parse!(['--version'])
86
+ assert_equal(VERSION::STRING, t.stdout[0])
87
+ t.stdout = []
88
+
89
+ t.parse!(['--help'])
90
+ assert_match('Usage:', t.stdout[0])
91
+ t.stdout = []
92
+
93
+ args = ['-t', 'b', 'c']
94
+ options = t.parse!(args)
95
+ assert_equal(['b', 'c'], args)
96
+ end
97
+
98
+ def test_run
99
+ t = TiddlyWikiCp.new
100
+
101
+ #
102
+ # not enough arguments
103
+ #
104
+ assert_raise RuntimeError do
105
+ t.run([])
106
+ end
107
+
108
+ #
109
+ # destination is not a directory/tiddlywiki
110
+ #
111
+ a = "#{this_dir(__FILE__)}/content/a" # fake tiddler file
112
+
113
+ assert_equal(TiddlyWikiCp::CONTAINER_FILE, t.uri2container(a))
114
+ assert_raise RuntimeError do
115
+ t.run([a, a, a])
116
+ end
117
+
118
+ #
119
+ # copy file to file
120
+ #
121
+ a_c = "spit/a"
122
+ t.run([a, a_c])
123
+ assert(File.exists?(a_c))
124
+ assert(File.exists?("#{a_c}.div"))
125
+
126
+ #
127
+ # copy file to tiddlywiki
128
+ #
129
+ e = "#{this_dir(__FILE__)}/content/e" # good tiddler file
130
+
131
+ tiddlywiki = "#{this_dir(__FILE__)}/content/universe.html" # regular tiddlywiki
132
+ FileUtils.cp(tiddlywiki, "spit/t.html")
133
+ t.run([e, "spit/t.html"])
134
+
135
+ t = TiddlyWikiCp.new
136
+ assert_equal('ETiddler', t.uri2tiddlywiki("spit/t.html").get_tiddler('ETiddler').tiddler)
137
+
138
+ #
139
+ # dry run
140
+ #
141
+ t.options.dry_run = true
142
+ a_fake = "spit/a_fake"
143
+ t.run([a, a_fake])
144
+ assert(!File.exists?(a_fake))
145
+ assert_equal("copy '#{a}' '#{a_fake}'", t.stdout[0])
146
+ end
147
+
148
+ def test_args2from
149
+ t = TiddlyWikiCp.new
150
+
151
+ a = "#{this_dir(__FILE__)}/content/a" # fake tiddler file
152
+ b = "#{this_dir(__FILE__)}/content/b" # existing file without .div
153
+ c = "#{this_dir(__FILE__)}/content/c" # no existent file
154
+ d = "#{this_dir(__FILE__)}/content/d" # directory
155
+ tiddlywiki = "#{this_dir(__FILE__)}/content/universe.html" # regular tiddlywiki
156
+ tiddler = "#{this_dir(__FILE__)}/content/universe.html#Implementation" # regular tiddler
157
+
158
+ #
159
+ # Non recursive
160
+ #
161
+ t.options.excludes = []
162
+ assert_equal([a], t.args2from([a], false))
163
+ t.options.excludes.push('a$')
164
+ assert_equal([], t.args2from([a], false))
165
+
166
+ assert_raises Errno::ENOENT do
167
+ t.args2from([b], false)
168
+ end
169
+
170
+ assert_raises Errno::ENOENT do
171
+ t.args2from([c], false)
172
+ end
173
+
174
+ assert_equal([tiddlywiki], t.args2from([tiddlywiki], false))
175
+ assert_equal([tiddler], t.args2from([tiddler], false))
176
+
177
+ assert_raises RuntimeError do
178
+ t.args2from([d], false)
179
+ end
180
+
181
+ #
182
+ # Recursive
183
+ #
184
+ t.options.excludes = []
185
+ assert_equal([a], t.args2from([a], true))
186
+ t.options.excludes.push('a$')
187
+ assert_equal([], t.args2from([a], true))
188
+
189
+ assert_raises Errno::ENOENT do
190
+ t.args2from([b], true)
191
+ end
192
+
193
+ assert_raises Errno::ENOENT do
194
+ t.args2from([c], true)
195
+ end
196
+
197
+ title = '#Implementation'
198
+ t.options.includes = [title]
199
+ assert_equal([tiddlywiki + title], t.args2from([tiddlywiki], true))
200
+
201
+ assert_equal([tiddler], t.args2from([tiddler], true))
202
+
203
+ assert_equal([], t.args2from([d], true))
204
+
205
+ end
206
+
207
+ def test_uri2type
208
+ t = TiddlyWikiCp.new
209
+ assert_equal(TiddlyWikiCp::TIDDLER_JS, t.uri2type("#{this_dir(__FILE__)}/content/universe.html#GenerateRssHijack"))
210
+ assert_equal(TiddlyWikiCp::TIDDLER_DEFAULT, t.uri2type("#{this_dir(__FILE__)}/content/universe.html#Scope"))
211
+ end
212
+
213
+ def test_uri2container
214
+ t = TiddlyWikiCp.new
215
+ assert_equal(TiddlyWikiCp::CONTAINER_TIDDLYWIKI, t.uri2container("#{this_dir(__FILE__)}/content/universe.html"))
216
+ assert_equal(TiddlyWikiCp::CONTAINER_TIDDLER, t.uri2container("#{this_dir(__FILE__)}/content/universe.html#Implementation"))
217
+ assert_equal(TiddlyWikiCp::CONTAINER_DIRECTORY, t.uri2container("."))
218
+ assert_equal(TiddlyWikiCp::CONTAINER_FILE, t.uri2container("whatever"))
219
+ assert_equal(TiddlyWikiCp::CONTAINER_FILE, t.uri2container("#{this_dir(__FILE__)}/content/html_entities.html"))
220
+ end
221
+
222
+ def test_accept?
223
+ t = TiddlyWikiCp.new
224
+ assert(t.accept?('a'))
225
+
226
+ t.options.includes.push('a')
227
+ assert(t.accept?('a'))
228
+ assert_equal(false, t.accept?('b'))
229
+
230
+ t.options.excludes.push('ab')
231
+ assert(t.accept?('a'))
232
+ assert_equal(false, t.accept?('b'))
233
+ assert_equal(false, t.accept?('ab'))
234
+ end
235
+
236
+ def test_tiddler2filename
237
+ assert_equal('D/a%2Fb%2Fc', TiddlyWikiCp.tiddler2filename('D', 'F#a/b/c'))
238
+ assert_raise RuntimeError do
239
+ TiddlyWikiCp.tiddler2filename('D', 'a/b/c')
240
+ end
241
+ end
242
+
243
+ def test_uri2tiddlywiki
244
+ t = TiddlyWikiCp.new
245
+ uri = "#{this_dir(__FILE__)}/content/universe.html"
246
+ tw = t.uri2tiddlywiki("#{uri}#f")
247
+ assert_equal('Implementation', tw.get_tiddler('Implementation').name)
248
+ assert_equal(t.tiddlywiki_cache[uri], tw)
249
+ tw.get_tiddler('Implementation').rename('Other Implementation')
250
+ tw = t.uri2tiddlywiki("#{uri}#f")
251
+ assert_equal(nil, tw.get_tiddler('Implementation'))
252
+ end
253
+
254
+ def test_read_write_uri
255
+ t = TiddlyWikiCp.new
256
+ content = t.read_uri("#{this_dir(__FILE__)}/content/html_entities.html")
257
+ assert_equal(content.length, File.size("#{this_dir(__FILE__)}/content/html_entities.html"))
258
+ t.write_uri("spit/out.html", content)
259
+ assert_equal(File.size("#{this_dir(__FILE__)}/content/html_entities.html"), File.size("spit/out.html"))
260
+ assert_equal(t.file_cache["spit/out.html"], File.read("spit/out.html"))
261
+
262
+ assert_raise Errno::ENOENT do
263
+ t.read_uri("unlikely_to_exists")
264
+ end
265
+
266
+ assert_raise OpenURI::HTTPError, Errno::ECONNREFUSED do
267
+ t.read_uri('http://127.0.0.1/unlikely_to_exists')
268
+ end
269
+ end
270
+
271
+ def test_without_fragment
272
+ assert_equal('http://a.com/', TiddlyWikiCp.without_fragment('http://a.com/#f'))
273
+ assert_equal('/dir/file', TiddlyWikiCp.without_fragment('/dir/file#f'))
274
+ assert_equal('/dir/file', TiddlyWikiCp.without_fragment('/dir/file'))
275
+ end
276
+
277
+ def test_tiddler_uri?
278
+ assert_equal(false, TiddlyWikiCp.tiddler_uri?('http://domain.com/'))
279
+ assert_equal(false, TiddlyWikiCp.tiddler_uri?('/dir/file.html'))
280
+ assert(TiddlyWikiCp.tiddler_uri?('http://domain.com/#tiddler'))
281
+ end
282
+
283
+ def test_tiddlywiki?
284
+ t = TiddlyWikiCp.new
285
+ assert(t.tiddlywiki?("#{this_dir(__FILE__)}/content/universe.html"))
286
+ assert_equal(nil, t.tiddlywiki?("#{this_dir(__FILE__)}/content/html_entities.html"))
287
+ end
288
+
289
+ def test_tiddler2file
290
+ t = TiddlyWikiCp.new
291
+ a = "#{this_dir(__FILE__)}/content/universe.html#Implementation"
292
+ t.tiddler2file(a, "-")
293
+ assert(t.stdout.select{ |l| l =~ /Implementation/ })
294
+ t.options.times = true
295
+ tiddler = t.uri2tiddlywiki(a).get_tiddler('Implementation')
296
+ t.tiddler2file(a, "spit/a")
297
+ assert(Time.convertFromYYYYMMDDHHMM(tiddler.modified), File.mtime("spit/a"))
298
+ end
299
+
300
+ def test_file2tiddler
301
+ t = TiddlyWikiCp.new
302
+ a = "#{this_dir(__FILE__)}/content/universe.html#Implementation"
303
+ tiddler = t.uri2tiddlywiki(a).get_tiddler('Implementation')
304
+ original_modified = tiddler.modified
305
+ t.tiddler2file(a, "spit/a")
306
+ t = TiddlyWikiCp.new
307
+ t.options.times = true
308
+ t.file2tiddler("spit/a", a)
309
+ tiddler = t.uri2tiddlywiki(a).get_tiddler('Implementation')
310
+ assert(original_modified != tiddler.modified)
311
+ assert(Time.convertFromYYYYMMDDHHMM(tiddler.modified), File.mtime("spit/a"))
312
+ end
313
+
314
+ def test_tiddler2directory
315
+ t = TiddlyWikiCp.new
316
+ t.tiddler2directory("#{this_dir(__FILE__)}/content/universe.html#Implementation", "spit")
317
+ assert(File.exists?('spit/Implementation.tiddler'))
318
+ end
319
+
320
+ def test_tiddler2tiddlywiki
321
+ u = "#{this_dir(__FILE__)}/content/universe.html"
322
+ t = TiddlyWikiCp.new
323
+ FileUtils.cp(u, "spit/t.html")
324
+ tiddler = t.uri2tiddlywiki(u).get_tiddler("Implementation")
325
+ tiddler.rename('NEW')
326
+ t.tiddler2tiddlywiki("#{u}#NEW", "spit/t.html")
327
+ assert(t.uri2tiddlywiki("spit/t.html").get_tiddler("NEW"))
328
+ end
329
+
330
+ def test_tiddlywiki2file
331
+ t = TiddlyWikiCp.new
332
+ t.tiddlywiki2file("#{this_dir(__FILE__)}/content/universe.html", "spit/u.html")
333
+ assert(File.exists?('spit/u.html'))
334
+ end
335
+
336
+ end
337
+
338
+ end # module TiddlywikiCp
339
+ # Local Variables:
340
+ # compile-command: "RUBYLIB='../lib/tiddlywiki_cp:../lib' ruby test_tiddlywiki_cp.rb"
341
+ # End:
@@ -0,0 +1,2 @@
1
+ Introduction
2
+ Usage
@@ -0,0 +1 @@
1
+ title="DefaultTiddlers" modifier="loic" modified="200707211643" created="200707211620" changecount="2"
@@ -0,0 +1,12 @@
1
+ a ruby gem (http://rubyforge.org/projects/tiddlywikicp/) providing a library and a command line interface to copy [[tiddlywiki|http://tiddlywiki.com/]] tiddlers to files and vice versa.
2
+
3
+ Development is discussed at irc.freenode.net#tiddlywiki
4
+
5
+ This tiddlywiki was created using the following commands:
6
+ {{{
7
+ tiddlywiki_cp 'http://tiddlylab.bidix.info/#WebDAVSavingPlugin' website/index.html
8
+ tiddlywiki_cp -a website/index.html website/files
9
+ ( echo '{{''{' ; RUBYLIB=lib ruby bin/tiddlywiki_cp --help ; echo '}}''}' ) > website/files/Usage
10
+ tiddlywiki_cp -a website/files website/index.html
11
+ }}}
12
+ Loic Dachary <mailto:loic@dachary.org>
@@ -0,0 +1 @@
1
+ title="Introduction" modifier="loic" modified="200707211647" created="200707211630" changecount="5"
@@ -0,0 +1 @@
1
+ [[Usage]]
@@ -0,0 +1 @@
1
+ title="MainMenu" modifier="loic" modified="200707211621" created="200707211619" changecount="2"
@@ -0,0 +1 @@
1
+ copy tiddlers to files and vice versa
@@ -0,0 +1 @@
1
+ title="SiteSubtitle" modifier="loic" modified="200707211623" created="200707211618" changecount="1"
@@ -0,0 +1 @@
1
+ tiddlywiki_cp
@@ -0,0 +1 @@
1
+ title="SiteTitle" modifier="loic" modified="200707211623" created="200707211617" changecount="1"