Blux 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,81 @@
1
+ require 'blux_config_reader.rb'
2
+
3
+ describe BluxConfigurationReader do
4
+ before :each do
5
+ def STDERR.puts(str) end
6
+ end
7
+
8
+ after :each do
9
+ system "rm #{@blux_rc}" if File.exists? @blux_rc
10
+ end
11
+
12
+ context "loading the editor from the config file" do
13
+ before :each do
14
+ @blux_rc = "#{File.dirname(__FILE__)}/.bluxrc"
15
+ create_config
16
+
17
+ @reader = BluxConfigurationReader.new
18
+ @reader.load_config @blux_rc
19
+ end
20
+
21
+ it "should read the editor from the config file" do
22
+ @reader.launch_editor_cmd.should == 'gedit'
23
+ end
24
+
25
+ it "should read the html_converter from the config file" do
26
+ @reader.html_converter_cmd.should == 'ruby textile_to_html.rb'
27
+ end
28
+
29
+ it "should read the blog from the config file" do
30
+ @reader.blog.should == 'myownblog'
31
+ end
32
+
33
+ it "should read the blog from the config file" do
34
+ @reader.author_name.should == 'Author Bob'
35
+ end
36
+
37
+ it "should read the blog from the config file" do
38
+ @reader.user_name.should == 'this_user'
39
+ end
40
+
41
+ it "should read the blog from the config file" do
42
+ @reader.password.should == 'pass123'
43
+ end
44
+ end
45
+
46
+ context "loading the editor from the config file when it doesn't exist" do
47
+ before :each do
48
+ @blux_rc = "#{File.dirname(__FILE__)}/.bluxrc"
49
+ create_empty_config
50
+
51
+ @reader = BluxConfigurationReader.new
52
+ @reader.load_config @blux_rc
53
+ end
54
+
55
+ it "should show a warning" do
56
+ STDERR.should_receive(:puts).with("please specify an editor in .bluxrc: editor: [your editor of choice]\n")
57
+ STDERR.should_receive(:puts).with("please specify an html converter in .bluxrc: html_converter: [your converter command of choice]\n")
58
+ STDERR.should_receive(:puts).with("please specify your wordpress blog name in .bluxrc: blog: [your blog]\n")
59
+ STDERR.should_receive(:puts).with("please specify an author name in .bluxrc: author_name: [your name]\n")
60
+ STDERR.should_receive(:puts).with("please specify your wordpress user name in .bluxrc: user_name: [your user name]\n")
61
+ STDERR.should_receive(:puts).with("please specify your wordpress password in .bluxrc: password: [your password]\n")
62
+ @reader.load_config @blux_rc
63
+ end
64
+ end
65
+
66
+ def create_empty_config
67
+ File.open(@blux_rc, 'w') do |f|
68
+ end
69
+ end
70
+
71
+ def create_config
72
+ File.open(@blux_rc, 'w') do |f|
73
+ f.puts "editor: gedit"
74
+ f.puts "html_converter: ruby textile_to_html.rb"
75
+ f.puts "blog: myownblog"
76
+ f.puts "author_name: Author Bob"
77
+ f.puts "user_name: this_user"
78
+ f.puts "password: pass123"
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,363 @@
1
+ require 'draft_manager.rb'
2
+ require 'tempfile'
3
+
4
+ describe DraftManager do
5
+ before :each do
6
+ @blux_dir = "#{File.dirname(__FILE__)}/.blux"
7
+ @temp_dir = "#{@blux_dir}/tmp"
8
+ @draft_dir = "#{@blux_dir}/draft"
9
+
10
+ Dir.mkdir(@blux_dir) unless Dir.exists?(@blux_dir)
11
+ Dir.mkdir(@temp_dir) unless Dir.exists?(@temp_dir)
12
+ Dir.mkdir(@draft_dir) unless Dir.exists?(@draft_dir)
13
+
14
+ def STDERR.puts(str) end
15
+ @manager = DraftManager.new()
16
+ @manager.setup('gedit', @temp_dir, @draft_dir)
17
+ end
18
+
19
+ after :each do
20
+ `rm -Rf #{@blux_dir}`
21
+ end
22
+
23
+ context "when using a new manager" do
24
+ it "should have an empty draft index" do
25
+ @manager.index.keys.length.should == 0
26
+ end
27
+
28
+ it "should load the draft index from disk" do
29
+ File.open("#{@draft_dir}/.draft_index", 'w') do |f|
30
+ f.write('{"test.sh":{"a":1,"b":2}}')
31
+ end
32
+
33
+ manager = DraftManager.new
34
+ manager.setup('gedit', @temp_dir, @draft_dir)
35
+
36
+ manager.index.key?("test.sh").should == true
37
+ manager.index["test.sh"].key?("a").should == true
38
+ manager.index["test.sh"].key?("b").should == true
39
+ end
40
+ end
41
+
42
+ context "when using a new manager with no draft index" do
43
+ it "should create an empty draft index" do
44
+ File.exists?("#{@draft_dir}/.draft_index").should == true
45
+ end
46
+ end
47
+
48
+ context "when creating a new draft" do
49
+ before :each do
50
+ @manager.stub!(:system).and_return(nil)
51
+ end
52
+
53
+ after :each do
54
+ `rm -f #{@draft_dir}/*`
55
+ end
56
+
57
+ it "should call the editor command" do
58
+ class Tempfile
59
+ def path() 'test/test.sh' end
60
+ end
61
+
62
+ @manager.should_receive(:system).with('gedit test/test.sh')
63
+ @manager.create_draft
64
+ end
65
+
66
+ it "should not copy the temp file in the draft folder if it has no data" do
67
+ tempfile = mock("Tempfile")
68
+ def tempfile.initialize(basename, path)
69
+ system "touch #{@temp_dir}/test"
70
+ end
71
+
72
+ def tempfile.path
73
+ "#{@temp_dir}/test"
74
+ end
75
+
76
+ @manager.create_draft
77
+ Dir.entries(@draft_dir).length.should == 3 # . and .. and .index
78
+ end
79
+
80
+ it "should copy the temp file in the draft folder if it has data" do
81
+ class Tempfile
82
+ def size() 123 end
83
+ def path() 'test/test.sh' end
84
+ end
85
+
86
+ @manager.should_receive(:system).with('gedit test/test.sh').ordered
87
+ @manager.should_receive(:system).with("mv test/test.sh #{@draft_dir}").ordered
88
+ @manager.create_draft
89
+ end
90
+ end
91
+
92
+ context "when saving a new draft" do
93
+ before :each do
94
+ @manager.stub!(:system).and_return(nil)
95
+
96
+ class Tempfile
97
+ def size() 123 end
98
+ def path() 'test/test.sh' end
99
+ end
100
+ end
101
+
102
+ after :each do
103
+ `rm -f #{@draft_dir}/*`
104
+ end
105
+
106
+ it "should save the draft index to disk" do
107
+ @manager.create_draft
108
+ File.exists?("#{@draft_dir}/.draft_index").should == true
109
+ end
110
+
111
+ it "should add the creation time to the attributes of that draft" do
112
+ time = Time.now.to_s
113
+ @manager.create_draft
114
+ @manager.index["test.sh"][:creation_time].to_s.should == time
115
+ end
116
+ end
117
+
118
+ context "when editing a draft" do
119
+ before :each do
120
+ File.open("#{@draft_dir}/.draft_index", 'w') do |f|
121
+ f.write('{"test.sh":{}}')
122
+ end
123
+
124
+ @manager = DraftManager.new
125
+ @manager.setup('gedit', @temp_dir, @draft_dir)
126
+ @manager.stub!(:system).and_return(nil)
127
+ end
128
+
129
+ it "should call the editor command" do
130
+ system "touch #{@draft_dir}/test.sh"
131
+
132
+ @manager.should_receive(:system).with("gedit #{@draft_dir}/test.sh")
133
+ @manager.edit_draft('test.sh')
134
+ end
135
+
136
+ it "should show an error if the file doesn't exist" do
137
+ STDERR.should_receive(:puts).with("draft filename asdf.asf does not exist\n")
138
+ @manager.edit_draft('asdf.asf')
139
+ end
140
+
141
+ it "should add the edited time to the attributes of that draft" do
142
+ system "touch #{@draft_dir}/test.sh"
143
+ time = Time.now.to_s
144
+
145
+ @manager.edit_draft('test.sh')
146
+ @manager.index["test.sh"]["edited_time"].to_s.should == time
147
+ end
148
+ end
149
+
150
+ context "when listing drafts" do
151
+ before :each do
152
+ system "touch #{@draft_dir}/1"
153
+ system "touch #{@draft_dir}/2"
154
+ system "touch #{@draft_dir}/3"
155
+ end
156
+
157
+ it "should list all the draft filenames, one per line" do
158
+ @manager.list.should == ["1", "2", "3"]
159
+ end
160
+ end
161
+
162
+ context "when requesting info about a draft" do
163
+ before :each do
164
+ File.open("#{@draft_dir}/.draft_index", 'w') do |f|
165
+ f.write('{"file1":{"a":1,"b":2},"file1":{"a":1,"b":2}}')
166
+ end
167
+
168
+ system "touch #{@draft_dir}/file1"
169
+ system "touch #{@draft_dir}/file2"
170
+
171
+ @manager = DraftManager.new
172
+ @manager.setup('gedit', @temp_dir, @draft_dir)
173
+ end
174
+
175
+ it "should display the info about the selected draft in json format" do
176
+ @manager.show_info('file1').should == '{"a":1,"b":2}'
177
+ end
178
+
179
+ it "should output an error message if the file does not exist" do
180
+ STDERR.should_receive(:puts).with("draft filename asdf.asf does not exist\n")
181
+ @manager.edit_draft('asdf.asf')
182
+ end
183
+ end
184
+
185
+ context "when showing a draft preview" do
186
+ before :each do
187
+ File.open("#{@draft_dir}/.draft_index", 'w') do |f|
188
+ f.write('{"file1":{"a":1,"b":2},"file2":{"a":1,"b":2}, "file3":{}}')
189
+ end
190
+
191
+ system "echo this is blog with lots of letters intended to go beyond the 76 chars that will be displayed by the preview functionnality of the draft manager > #{@draft_dir}/file1"
192
+ system "echo this is a blog > #{@draft_dir}/file2"
193
+ system "touch #{@draft_dir}/file3"
194
+
195
+ @manager = DraftManager.new
196
+ @manager.setup('gedit', @temp_dir, @draft_dir)
197
+ end
198
+
199
+ it "should trunk the preview to 76 chars, with '...' appended at the end" do
200
+ @manager.show_preview('file1').should == 'this is blog with lots of letters intended to go beyond the 76 chars that wi...'
201
+ end
202
+
203
+ it "should display the first line as is if it doesn't have more than 76 chars" do
204
+ @manager.show_preview('file2').should == 'this is a blog'
205
+ end
206
+
207
+ it "should display an empty string for an empty draft" do
208
+ @manager.show_preview('file3').should == ''
209
+ end
210
+ end
211
+
212
+ context "when outputing a draft" do
213
+ before :each do
214
+ File.open("#{@draft_dir}/.draft_index", 'w') do |f|
215
+ f.write('{"file1":{"a":1,"b":2},"file2":{"a":1,"b":2}, "file3":{}}')
216
+ end
217
+
218
+ system "echo this is blog with lots of letters intended to go beyond the 76 chars that will be displayed by the preview functionnality of the draft manager > #{@draft_dir}/file1"
219
+ system "echo this is a blog > #{@draft_dir}/file2"
220
+ system "touch #{@draft_dir}/file3"
221
+
222
+ @manager = DraftManager.new
223
+ @manager.setup('gedit', @temp_dir, @draft_dir)
224
+ end
225
+
226
+ it "should show the entire content of the draft" do
227
+ @manager.output('file1').should == "this is blog with lots of letters intended to go beyond the 76 chars that will be displayed by the preview functionnality of the draft manager\n"
228
+ end
229
+
230
+ it "should display an empty string for an empty draft" do
231
+ @manager.output('file3').should == ''
232
+ end
233
+ end
234
+
235
+ context "when adding an attribute" do
236
+ before :each do
237
+ File.open("#{@draft_dir}/.draft_index", 'w') do |f|
238
+ f.write('{"draft.1":{}}')
239
+ end
240
+
241
+ system "touch #{@draft_dir}/draft.1"
242
+ @manager = DraftManager.new
243
+ @manager.setup('gedit', @temp_dir, @draft_dir)
244
+ end
245
+
246
+ it "should add the attribute to the draft index" do
247
+ @manager.set_attribute('draft.1', "attr", "123")
248
+ @manager.index['draft.1']["attr"].should == "123"
249
+ end
250
+
251
+ it "should overwrite the value if the attribute already exists" do
252
+ @manager.set_attribute('draft.1', "attr", "123")
253
+ @manager.set_attribute('draft.1', "attr", "456")
254
+ @manager.index['draft.1']["attr"].should == "456"
255
+ end
256
+
257
+ it "should output an error message if the file does not exist" do
258
+ STDERR.should_receive(:puts).with("draft filename asdf.asf does not exist\n")
259
+ @manager.set_attribute('asdf.asf', "attr", "456")
260
+ end
261
+
262
+ it "should save the draft index to disk" do
263
+ File.should_receive(:open).with("#{@draft_dir}/.draft_index", 'w')
264
+ @manager.set_attribute('draft.1', "attr", "123")
265
+ end
266
+ end
267
+
268
+ context "when adding a title" do
269
+ before :each do
270
+ File.open("#{@draft_dir}/.draft_index", 'w') do |f|
271
+ f.write('{"draft.1":{},"draft.2":{}}')
272
+ end
273
+
274
+ system "touch #{@draft_dir}/draft.1"
275
+ system "touch #{@draft_dir}/draft.2"
276
+ @manager = DraftManager.new
277
+ @manager.setup('gedit', @temp_dir, @draft_dir)
278
+ end
279
+
280
+ it "should output an error message if the title is not unique" do
281
+ @manager.set_attribute('draft.1', "title", 'title')
282
+
283
+ STDERR.should_receive(:puts).with("title 'title' is not unique\n")
284
+ @manager.set_attribute('draft.2', "title", 'title')
285
+ end
286
+
287
+ it "should not change the value of the previous title" do
288
+ @manager.set_attribute('draft.1', 'title', 'title')
289
+ @manager.set_attribute('draft.2', 'title', 'title2')
290
+ @manager.set_attribute('draft.2', 'title', 'title')
291
+
292
+ @manager.index['draft.2']["title"].should == 'title2'
293
+ end
294
+ end
295
+
296
+ context "when deleting an attribute" do
297
+ before :each do
298
+ File.open("#{@draft_dir}/.draft_index", 'w') do |f|
299
+ f.write('{"draft.1":{"a":1,"b":2}}')
300
+ end
301
+
302
+ system "touch #{@draft_dir}/draft.1"
303
+ @manager = DraftManager.new
304
+ @manager.setup('gedit', @temp_dir, @draft_dir)
305
+ end
306
+
307
+ it "should remove the attribute from the draft index" do
308
+ @manager.delete_attribute('draft.1', :a)
309
+ @manager.index['draft.1']["a"].should == nil
310
+ end
311
+
312
+ it "should output an error message if the file does not exist" do
313
+ STDERR.should_receive(:puts).with("draft filename asdf.asf does not exist\n")
314
+ @manager.delete_attribute('asdf.asf', :attr)
315
+ end
316
+
317
+ it "should save the draft index to disk" do
318
+ File.stub!(:open)
319
+ File.should_receive(:open).with("#{@draft_dir}/.draft_index", 'w')
320
+ @manager.delete_attribute('draft.1', :attr)
321
+ end
322
+ end
323
+
324
+ context "when requesting the latest created draft" do
325
+ it "should return the latest draft filename" do
326
+ File.open("#{@draft_dir}/.draft_index", 'w') do |f|
327
+ f.write({"draft.1" => {"creation_time" => "2010-10-10 15:30:12"},
328
+ "draft.2" => {"creation_time" => "2010-10-09 15:30:12"}}.to_json)
329
+ end
330
+
331
+ @manager = DraftManager.new
332
+ @manager.setup('gedit', @temp_dir, @draft_dir)
333
+
334
+ @manager.get_latest_created_draft().should == "draft.1"
335
+ end
336
+
337
+ it "should output an error message if there are no drafts saved" do
338
+ STDERR.should_receive(:puts).with("there is currently no saved index\n")
339
+ @manager.get_latest_created_draft
340
+ end
341
+ end
342
+
343
+ context "when requesting a draft by title" do
344
+ it "should return the the proper filename" do
345
+ File.open("#{@draft_dir}/.draft_index", 'w') do |f|
346
+ f.write({"draft.1" => {"title" => "title1"},
347
+ "draft.2" => {"title" => "title2"}}.to_json)
348
+ end
349
+
350
+ @manager = DraftManager.new
351
+ @manager.setup('gedit', @temp_dir, @draft_dir)
352
+
353
+ @manager.get_draft_by_title("title1").should == "draft.1"
354
+ @manager.get_draft_by_title("title2").should == "draft.2"
355
+ end
356
+
357
+ it "should output an error message if there are no drafts saved" do
358
+ STDERR.should_receive(:puts).with("there is currently no saved index\n")
359
+ @manager.get_draft_by_title("title2")
360
+ end
361
+ end
362
+ end
363
+
metadata ADDED
@@ -0,0 +1,236 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: Blux
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 3
9
+ version: 0.0.3
10
+ platform: ruby
11
+ authors:
12
+ - Louis Salin
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain:
16
+ - |
17
+ -----BEGIN CERTIFICATE-----
18
+ MIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMRMwEQYDVQQDDApsb3Vp
19
+ cy5waGlsMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNj
20
+ b20wHhcNMTAxMDEwMjIzMTI4WhcNMTExMDEwMjIzMTI4WjBBMRMwEQYDVQQDDAps
21
+ b3Vpcy5waGlsMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZ
22
+ FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD+iOXo0jnNOn73
23
+ uJyRsPSoLpVwzqmiYPqvM3kGAaPDDDk7FBwgQbZbxGBQb3jiM0NW7jn3IJOcnWOf
24
+ BeQzYKzsEHmoY+RbAHKvff1OZZFk+1xpGfIHhwZ6zRtDjFDkNvBqs6YR4kKEjTZD
25
+ zPaqBFIUxAiNMF5VDRrgtZkpSVi1vUWOh/TmCZxdZNDtVeGsvNqWo5dUyCT5Xihy
26
+ bkWXOfWkdiKp3mQwmQIeJ+0CxfJooAo7xRGdrlPqHC4TMJeq6Clv6gVMkdGC/5T6
27
+ 8bjaM8ISTrg1JxrHhrpTqFCmMOuI4VHJBYki/5xPfd99uL1ZI7nNWL0cLwv7ETP1
28
+ 53wBSBhHAgMBAAGjOTA3MAkGA1UdEwQCMAAwHQYDVR0OBBYEFCJZDYpaQwUEcx4p
29
+ pke28LvXVgXqMAsGA1UdDwQEAwIEsDANBgkqhkiG9w0BAQUFAAOCAQEA+1z4hGmh
30
+ TR5IyITJ/HKAJSrcim3cWijHSyXCl/e4bSGLgZ5Wyr6lEiPK5Mtr2CdugRYUG25H
31
+ uPTVMgAIYagenqYmEMFdfOoElsDi+hBnMzgBc+y/dJQ+QgA4Gw3bUJAZioCnMrAF
32
+ eQzKM1lTl9G9jUz7AoIxN2IcW+p7yX00eBAsMbwlnaCHICzT2wehfBi6ePkPyWmX
33
+ mAFlAPy2kCmBAkHFfSZLC/9dt2IXmZWYJAPOZQILt2SwiGJgqEleuNVHHGzpWnLO
34
+ QtvFR/GYZmDeXEPoI5rYR539S0snVVp3z6NCnca/LGFsMRTmk02nCs4j8KUb5Dq1
35
+ 1GuoIVBODMvF3w==
36
+ -----END CERTIFICATE-----
37
+
38
+ date: 2010-10-10 00:00:00 -05:00
39
+ default_executable:
40
+ dependencies:
41
+ - !ruby/object:Gem::Dependency
42
+ name: OptionParser
43
+ prerelease: false
44
+ requirement: &id001 !ruby/object:Gem::Requirement
45
+ none: false
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ segments:
50
+ - 0
51
+ - 5
52
+ - 1
53
+ version: 0.5.1
54
+ type: :runtime
55
+ version_requirements: *id001
56
+ - !ruby/object:Gem::Dependency
57
+ name: atom-tools
58
+ prerelease: false
59
+ requirement: &id002 !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ segments:
65
+ - 2
66
+ - 0
67
+ - 5
68
+ version: 2.0.5
69
+ type: :runtime
70
+ version_requirements: *id002
71
+ - !ruby/object:Gem::Dependency
72
+ name: json
73
+ prerelease: false
74
+ requirement: &id003 !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ segments:
80
+ - 1
81
+ - 4
82
+ - 6
83
+ version: 1.4.6
84
+ type: :runtime
85
+ version_requirements: *id003
86
+ - !ruby/object:Gem::Dependency
87
+ name: RedCloth
88
+ prerelease: false
89
+ requirement: &id004 !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ segments:
95
+ - 4
96
+ - 2
97
+ - 3
98
+ version: 4.2.3
99
+ type: :runtime
100
+ version_requirements: *id004
101
+ - !ruby/object:Gem::Dependency
102
+ name: OptionParser
103
+ prerelease: false
104
+ requirement: &id005 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ segments:
110
+ - 0
111
+ - 5
112
+ - 1
113
+ version: 0.5.1
114
+ type: :development
115
+ version_requirements: *id005
116
+ - !ruby/object:Gem::Dependency
117
+ name: atom-tools
118
+ prerelease: false
119
+ requirement: &id006 !ruby/object:Gem::Requirement
120
+ none: false
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ segments:
125
+ - 2
126
+ - 0
127
+ - 5
128
+ version: 2.0.5
129
+ type: :development
130
+ version_requirements: *id006
131
+ - !ruby/object:Gem::Dependency
132
+ name: json
133
+ prerelease: false
134
+ requirement: &id007 !ruby/object:Gem::Requirement
135
+ none: false
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ segments:
140
+ - 1
141
+ - 4
142
+ - 6
143
+ version: 1.4.6
144
+ type: :development
145
+ version_requirements: *id007
146
+ - !ruby/object:Gem::Dependency
147
+ name: RedCloth
148
+ prerelease: false
149
+ requirement: &id008 !ruby/object:Gem::Requirement
150
+ none: false
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ segments:
155
+ - 4
156
+ - 2
157
+ - 3
158
+ version: 4.2.3
159
+ type: :development
160
+ version_requirements: *id008
161
+ description: An offline blog manager
162
+ email: louis.phil@gmail.com
163
+ executables:
164
+ - blux
165
+ - blux_textile_to_html
166
+ - blux_wp_publish
167
+ extensions: []
168
+
169
+ extra_rdoc_files:
170
+ - COPYING
171
+ - README.markdown
172
+ - bin/blux
173
+ - bin/blux_textile_to_html
174
+ - bin/blux_wp_publish
175
+ - lib/blog_manager.rb
176
+ - lib/blux_config_reader.rb
177
+ - lib/blux_option_parser.rb
178
+ - lib/draft_manager.rb
179
+ - lib/indexer.rb
180
+ files:
181
+ - COPYING
182
+ - Manifest
183
+ - README.markdown
184
+ - Rakefile
185
+ - bin/blux
186
+ - bin/blux_textile_to_html
187
+ - bin/blux_wp_publish
188
+ - lib/blog_manager.rb
189
+ - lib/blux_config_reader.rb
190
+ - lib/blux_option_parser.rb
191
+ - lib/draft_manager.rb
192
+ - lib/indexer.rb
193
+ - spec/blog_manager_spec.rb
194
+ - spec/blux_config_reader_spec.rb
195
+ - spec/draft_manager_spec.rb
196
+ - Blux.gemspec
197
+ has_rdoc: true
198
+ homepage: http://github.com/louissalin/blux
199
+ licenses: []
200
+
201
+ post_install_message:
202
+ rdoc_options:
203
+ - --line-numbers
204
+ - --inline-source
205
+ - --title
206
+ - Blux
207
+ - --main
208
+ - README.markdown
209
+ require_paths:
210
+ - lib
211
+ required_ruby_version: !ruby/object:Gem::Requirement
212
+ none: false
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ segments:
217
+ - 0
218
+ version: "0"
219
+ required_rubygems_version: !ruby/object:Gem::Requirement
220
+ none: false
221
+ requirements:
222
+ - - ">="
223
+ - !ruby/object:Gem::Version
224
+ segments:
225
+ - 1
226
+ - 2
227
+ version: "1.2"
228
+ requirements: []
229
+
230
+ rubyforge_project: blux
231
+ rubygems_version: 1.3.7
232
+ signing_key:
233
+ specification_version: 3
234
+ summary: An offline blog manager
235
+ test_files: []
236
+