tiddlywiki_cp 0.0.1

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.
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"