soywiki 0.2.9 → 0.3.0
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.markdown +41 -24
- data/bin/soywiki-rename +32 -15
- data/lib/soywiki.rb +1 -1
- data/lib/soywiki.vim +1 -0
- data/website/soywiki-template.html +5 -0
- data/website/top.screenshots +0 -2
- metadata +3 -3
data/README.markdown
CHANGED
@@ -4,7 +4,7 @@ SoyWiki turns Vim into a powerful, lean, and fast wiki. It's got all the
|
|
4
4
|
protein of a more conventional wiki, but less saturated fat and no
|
5
5
|
cholesterol.
|
6
6
|
|
7
|
-
A quick overview of
|
7
|
+
A quick overview of SoyWiki's characteristics and features:
|
8
8
|
|
9
9
|
* flat text files
|
10
10
|
* maximum data portability
|
@@ -112,16 +112,18 @@ link them together. You'll be surprised at how powerful this simple mechanism
|
|
112
112
|
is for organizing your notes.
|
113
113
|
|
114
114
|
In SoyWiki, a wiki page is a simple text file that has a WikiWord title
|
115
|
-
on the first line
|
116
|
-
|
117
|
-
|
118
|
-
content.
|
115
|
+
on the first line and any text your want to insert below that. (You may
|
116
|
+
alter the title line at the top, but it helps you see what wiki page
|
117
|
+
you're on.) SoyWiki will create stub WikiPages for you automatically as
|
118
|
+
you traverse WikiLinks that don't yet reference any content.
|
119
119
|
|
120
120
|
That's all you need to know to get started.
|
121
121
|
|
122
122
|
## Namespaced WikiWords
|
123
123
|
|
124
124
|
Every WikiWord in SoyWiki is implicitly or explicitly namespaced.
|
125
|
+
SoyWiki's namespaced WikiWords help organize your wiki space
|
126
|
+
conceptually. They also help reduce clutter in your wiki directory.
|
125
127
|
|
126
128
|
An explicitly namespaced WikiWord looks like this:
|
127
129
|
|
@@ -134,13 +136,18 @@ The implicitly namespaced form looks just like a conventional WikiWord:
|
|
134
136
|
A namespace must start with a lower-case letter and consist only of letters,
|
135
137
|
numbers, and underscore characters.
|
136
138
|
|
137
|
-
Within a WikiWord namespace you can use unqualified WikiWords to link
|
138
|
-
within that namespace together. For example, if you are editing a
|
139
|
-
`recipes.SoyMacaroni` and you want to link to a page called
|
139
|
+
Within a WikiWord namespace you can use unqualified WikiWords to link
|
140
|
+
pages within that namespace together. For example, if you are editing a
|
141
|
+
page called `recipes.SoyMacaroni` and you want to link to a page called
|
140
142
|
`recipes.SoyRaspberrySmoothie`, you can type a link called
|
141
143
|
`SoyRaspberrySmoothie`. SoyWiki will treat this link as an implicitly
|
142
144
|
namespaced link to another page in the `recipes` namespace.
|
143
145
|
|
146
|
+
SoyWiki wiki pages are stored as text files named by WikiWord within
|
147
|
+
subdirectories named after their namespace. So
|
148
|
+
`recipes.SoyRaspberrySmoothie` would be written to
|
149
|
+
`recipes/SoyRaspberrySmoothie`.
|
150
|
+
|
144
151
|
You can't chain namespace words together. The maximum nesting level is 1. More
|
145
152
|
nesting would imply hierarchical relationships, and permitting hierarchical
|
146
153
|
nesting goes against the grain of what a wiki is, which is an [undirected
|
@@ -151,8 +158,6 @@ wiki page" below to see how you can use SoyWiki like an outliner program.
|
|
151
158
|
|
152
159
|
[graph]:http://en.wikipedia.org/wiki/Graph_theory
|
153
160
|
|
154
|
-
SoyWiki's namespaced WikiWords help organize your wiki space conceptually.
|
155
|
-
They also help reduce clutter in your wiki directory.
|
156
161
|
|
157
162
|
When you start SoyWiki for the first time, the active namespace is the default
|
158
163
|
namespace `main`. `main.HomePage` is the first page you will see.
|
@@ -180,6 +185,9 @@ and forth in your jump history. See `:help jump-motions` for more on
|
|
180
185
|
this. You can press `CTRL-^` to toggle between the current page and the
|
181
186
|
last page you looked at.
|
182
187
|
|
188
|
+
* `,m` opens the page list
|
189
|
+
* `,M` opens the inbound links page list
|
190
|
+
|
183
191
|
You can view all the pages in your wiki, most recently modified first,
|
184
192
|
by pressing `,m`. This opens both a page list and autocompletion window.
|
185
193
|
You can use the standard Vim autocompletion commands here to find the
|
@@ -190,8 +198,11 @@ When you're on a wiki page and you want to see all the other wiki pages
|
|
190
198
|
that link in to it, press `,M`. If there is only one page that links in,
|
191
199
|
you'll be taken there automatically.
|
192
200
|
|
193
|
-
`,o` opens the first
|
194
|
-
|
201
|
+
* `,o` opens the first web hyperlink on or after the cursor
|
202
|
+
|
203
|
+
`,o` opens the next hyperlink on or after the cursor. These are the URLs
|
204
|
+
that begin with http:// or https://. You can also use `ENTER` when the
|
205
|
+
cursor is over a web hyperlink.
|
195
206
|
|
196
207
|
Under the covers, SoyWiki uses the command `gnome-open` or `open` to
|
197
208
|
launch your web browser. This should cover Linux Gnome desktop and OS X
|
@@ -202,8 +213,14 @@ adding this to your `~/.vimrc`:
|
|
202
213
|
|
203
214
|
If your Vim has `netrw`, you can open a hyperlink directly in same Vim
|
204
215
|
window by putting the cursor at the beginning of a hyperlink and typing
|
205
|
-
`gf`, or `C-w f` if you want to open the webpage in a split window.
|
206
|
-
`:help netrw` for more information.
|
216
|
+
`gf`, or `C-w f` if you want to open the webpage in a split window.
|
217
|
+
See `:help netrw` for more information.
|
218
|
+
|
219
|
+
Tip: I personally like using `netrw` (configured to use elinks) a lot
|
220
|
+
more than using a conventional web browser, because it lets me keep all
|
221
|
+
my URL bookmarks in regular text files and open, clip, and annotate them
|
222
|
+
all in SoyWiki and Vim.
|
223
|
+
|
207
224
|
|
208
225
|
## WikiLink autocompletion
|
209
226
|
|
@@ -268,8 +285,8 @@ same wiki page.
|
|
268
285
|
|
269
286
|
## Search
|
270
287
|
|
271
|
-
* `:SWSearch
|
272
|
-
* `:SWNamespaceSearch
|
288
|
+
* `:SWSearch [term]`
|
289
|
+
* `:SWNamespaceSearch [term]`
|
273
290
|
|
274
291
|
These commands search your SoyWiki wiki. `:SWNamespaceSearch` confines
|
275
292
|
your search to the current namespace.
|
@@ -282,11 +299,11 @@ QuickFix commands.
|
|
282
299
|
|
283
300
|
Examples:
|
284
301
|
|
285
|
-
:SWSearch
|
286
|
-
:SWNamespaceSearch
|
302
|
+
:SWSearch gnu
|
303
|
+
:SWNamespaceSearch gnu
|
287
304
|
|
288
305
|
You can use `:SWS` as a shortcut for `:SWSearch`. You can also
|
289
|
-
tab-complete `:
|
306
|
+
tab-complete `:SWN` to `:SWNamespaceSearch`.
|
290
307
|
|
291
308
|
Searches are case-insensitve.
|
292
309
|
|
@@ -318,9 +335,9 @@ You can always bypass Vim and SoyWiki altogether and use Git directly to
|
|
318
335
|
inspect your revision history. The Git repo for your SoyWiki wiki will
|
319
336
|
be located in the same directory as your wiki files.
|
320
337
|
|
321
|
-
To sync your SoyWiki wiki between two personal computers, you can follow
|
322
|
-
instructions [here][git-sync]
|
323
|
-
|
338
|
+
To sync your SoyWiki wiki between two personal computers, you can follow
|
339
|
+
the instructions [here][git-sync] and set up an bare Git repository on
|
340
|
+
some server for all your computers to push to and pull from.
|
324
341
|
|
325
342
|
[git-sync]:http://www-cs-students.stanford.edu/~blynn/gitmagic/ch03.html
|
326
343
|
|
@@ -397,10 +414,10 @@ following reasons:
|
|
397
414
|
* Besides being the original, CamelCase is the most elegantly minimalist approach to linking wiki pages together -- "with no additional markup whatsoever," [as Ward Cunninghamb put it][ward].
|
398
415
|
* It encourages you more than other wiki link patterns to create wiki pages with succinctly descriptive names that are easy to remember.
|
399
416
|
* Because the link pattern is so minimal and succinct, writing
|
400
|
-
them interrupts your flow of thought
|
417
|
+
them interrupts your flow of thought less than other wiki link patterns.
|
401
418
|
* It is very conducive to storing
|
402
419
|
wiki pages in plain text files: the page names can map directly to Unix
|
403
|
-
file names without any awkward character escaping.
|
420
|
+
file names without any awkward character escaping or munging.
|
404
421
|
|
405
422
|
[ward]:http://c2.com/cgi/wiki?WikiCase
|
406
423
|
|
data/bin/soywiki-rename
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# encoding: UTF-8
|
2
3
|
require 'soywiki'
|
3
4
|
|
4
5
|
oldname, newname = *ARGV
|
@@ -14,11 +15,15 @@ def change_all_absolute_links(oldname, newname)
|
|
14
15
|
target_files = `grep -rlF '#{oldname.to_page_title}' *`.strip.split(/\n/)
|
15
16
|
target_files.each do |file|
|
16
17
|
text = File.read(file)
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
18
|
+
begin
|
19
|
+
regex = /\b#{oldname.to_page_title}\b/
|
20
|
+
matches = text.scan(regex)
|
21
|
+
text.gsub!(regex, newname.to_page_title)
|
22
|
+
File.open(file, 'w') {|f| f.puts text}
|
23
|
+
report file, oldname.to_page_title, newname.to_page_title
|
24
|
+
rescue
|
25
|
+
puts "Error processing #{file}: #$!"
|
26
|
+
end
|
22
27
|
end
|
23
28
|
end
|
24
29
|
|
@@ -27,9 +32,13 @@ def change_unqualified_inbound_links_in_same_namespace(oldname, newname)
|
|
27
32
|
target_files = `grep -rlF '[^.]#{oldname.short_page_title}' #{oldname.namespace}/*`.strip.split(/\n/)
|
28
33
|
target_files.each do |file|
|
29
34
|
text = File.read(file)
|
30
|
-
|
31
|
-
|
32
|
-
|
35
|
+
begin
|
36
|
+
text.gsub!(/(\A|\s)#{oldname.short_page_title}\b/, "." + newname)
|
37
|
+
File.open(file, 'w') {|f| f.puts text}
|
38
|
+
report file, oldname.short_page_title, newname
|
39
|
+
rescue
|
40
|
+
puts "Error processing #{file}: #$!"
|
41
|
+
end
|
33
42
|
end
|
34
43
|
end
|
35
44
|
|
@@ -40,10 +49,14 @@ def absolutize_unqualified_outbound_links(oldname, newname)
|
|
40
49
|
target_file = newname.to_file_path
|
41
50
|
if File.exist?(target_file)
|
42
51
|
text = File.read(target_file)
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
52
|
+
begin
|
53
|
+
matches = text.scan(RELATIVE_LINK_REGEX)
|
54
|
+
text.gsub!(RELATIVE_LINK_REGEX, oldname.namespace + '.\1')
|
55
|
+
File.open(target_file, 'w') {|f| f.puts text}
|
56
|
+
MEMO << " - In file #{target_file}: Absolutized these unqualified links: #{matches.inspect}"
|
57
|
+
rescue
|
58
|
+
puts "Error processing #{file}: #$!"
|
59
|
+
end
|
47
60
|
end
|
48
61
|
end
|
49
62
|
|
@@ -60,9 +73,13 @@ if oldname.namespace == newname.namespace
|
|
60
73
|
target_files = `grep -rlF '#{oldname.short_page_title}' #{oldname.namespace}/*`.strip.split(/\n/)
|
61
74
|
target_files.each do |file|
|
62
75
|
text = File.read(file)
|
63
|
-
|
64
|
-
|
65
|
-
|
76
|
+
begin
|
77
|
+
text.gsub!(/(\A\s)(#{oldname.short_page_title})\b/, newname.short_page_title)
|
78
|
+
File.open(file, 'w') {|f| f.puts text}
|
79
|
+
report file, oldname.short_page_title, newname.short_page_title
|
80
|
+
rescue
|
81
|
+
puts "Error processing #{file}: #$!"
|
82
|
+
end
|
66
83
|
end
|
67
84
|
end
|
68
85
|
|
data/lib/soywiki.rb
CHANGED
data/lib/soywiki.vim
CHANGED
@@ -236,6 +236,7 @@ func! s:rename_page(page_path_or_title)
|
|
236
236
|
return
|
237
237
|
endif
|
238
238
|
if s:valid_wiki_word(page_title)
|
239
|
+
write!
|
239
240
|
let original_file = bufname('')
|
240
241
|
echo system("git mv " . original_file . " " . newfile)
|
241
242
|
exec "!" . s:rename_links_command . original_file . " " . newfile
|
@@ -45,6 +45,11 @@
|
|
45
45
|
<span class="st_twitter_large" displayText="Tweet"></span><span class="st_facebook_large" displayText="Facebook"></span><span class="st_ybuzz_large" displayText="Yahoo! Buzz"></span><span class="st_gbuzz_large" displayText="Google Buzz"></span><span class="st_email_large" displayText="Email"></span><span class="st_sharethis_large" displayText="ShareThis"></span>
|
46
46
|
|
47
47
|
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdanielchoi.com%2Fsoftware%2Fsoywiki.html&layout=button_count&show_faces=false&width=50&action=like&colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:120px; height:25px; margin-top:6px;"></iframe>
|
48
|
+
<br/>
|
49
|
+
<a href="http://twitter.com/share"
|
50
|
+
class="twitter-share-button"
|
51
|
+
data-url="http://danielchoi.com/software/soywiki.html"
|
52
|
+
data-text="SoyWiki" data-count="horizontal">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
|
48
53
|
|
49
54
|
<div class="also-by">
|
50
55
|
<h4>also by this developer</h4>
|
data/website/top.screenshots
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
## Screenshots
|
2
|
-
|
3
1
|
<a href="images-soywiki/page-select.png" rel="lightbox[screens]"><img src="images-soywiki/sm-page-select.png" /></a>
|
4
2
|
<a href="images-soywiki/search.png" rel="lightbox[screens]"><img src="images-soywiki/sm-search.png" /></a>
|
5
3
|
<a href="images-soywiki/expand.png" rel="lightbox[screens]"><img src="images-soywiki/sm-expand.png" /></a>
|