caramelize 0.3.0 → 0.4.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.
Files changed (33) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +19 -24
  3. data/bin/caramelize +48 -2
  4. data/caramelize.gemspec +2 -1
  5. data/lib/caramelize.rb +12 -0
  6. data/lib/caramelize/caramel.rb +33 -29
  7. data/lib/caramelize/content_transferer.rb +78 -111
  8. data/lib/caramelize/filter_processor.rb +31 -0
  9. data/lib/caramelize/input_wiki/redmine_wiki.rb +97 -0
  10. data/lib/caramelize/{wiki → input_wiki}/trac_converter.rb +0 -0
  11. data/lib/caramelize/input_wiki/wiki.rb +61 -0
  12. data/lib/caramelize/input_wiki/wikkawiki.rb +57 -0
  13. data/lib/caramelize/output_wiki/gollum.rb +73 -0
  14. data/lib/caramelize/page.rb +10 -4
  15. data/lib/caramelize/services/page_builder.rb +20 -0
  16. data/lib/caramelize/version.rb +1 -1
  17. data/spec/lib/caramelize/content_transferer_spec.rb +9 -0
  18. data/spec/lib/caramelize/filter_processor_spec.rb +32 -0
  19. data/spec/lib/caramelize/filters/wikka_to_markdown_spec.rb +25 -13
  20. data/spec/lib/caramelize/{wiki → input_wiki}/wiki_spec.rb +30 -4
  21. data/spec/lib/caramelize/output_wiki/gollum_spec.rb +113 -0
  22. data/spec/lib/caramelize/page_spec.rb +49 -0
  23. data/spec/lib/caramelize/services/page_builder.rb +29 -0
  24. data/spec/spec_helper.rb +1 -1
  25. metadata +38 -17
  26. data/lib/caramelize/cli.rb +0 -89
  27. data/lib/caramelize/cli/create_command.rb +0 -36
  28. data/lib/caramelize/cli/run_command.rb +0 -33
  29. data/lib/caramelize/gollum_output.rb +0 -79
  30. data/lib/caramelize/wiki/redmine_wiki.rb +0 -88
  31. data/lib/caramelize/wiki/wiki.rb +0 -63
  32. data/lib/caramelize/wiki/wikkawiki.rb +0 -48
  33. data/spec/lib/caramelize/gollum_output_spec.rb +0 -64
@@ -1,9 +1,34 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Caramelize::GollumOutput do
3
+ describe Caramelize::InputWiki::Wiki do
4
+ subject(:wiki) { described_class.new }
4
5
 
5
- describe :revisions_by_author do
6
- let(:wiki) { Caramelize::Wiki.new }
6
+
7
+ describe '#latest_revisions' do
8
+ let(:page1) { double }
9
+ let(:page2) { double }
10
+ let(:page3) { double }
11
+
12
+ context 'no pages' do
13
+ it 'return empty array' do
14
+ expect(wiki.latest_revisions).to eq []
15
+ end
16
+ end
17
+
18
+ context 'pages with revisions' do
19
+ it 'returns list of latest pages' do
20
+ wiki.titles = ['allosaurus', 'brachiosaurus']
21
+ allow(wiki).to receive(:revisions_by_title)
22
+ .with('allosaurus').and_return([page1, page2])
23
+ allow(wiki).to receive(:revisions_by_title)
24
+ .with('brachiosaurus').and_return([page3])
25
+
26
+ expect(wiki.latest_revisions).to eq([page2, page3])
27
+ end
28
+ end
29
+ end
30
+
31
+ describe '#revisions_by_author' do
7
32
  context 'revisions is empty' do
8
33
  context 'and titles is empty' do
9
34
  it 'returns empty array' do
@@ -12,6 +37,7 @@ describe Caramelize::GollumOutput do
12
37
  end
13
38
  end
14
39
  end
40
+
15
41
  context 'revisions are given' do
16
42
  context 'and title given' do
17
43
  it 'returns empty array' do
@@ -28,4 +54,4 @@ describe Caramelize::GollumOutput do
28
54
  end
29
55
  end
30
56
  end
31
- end
57
+ end
@@ -0,0 +1,113 @@
1
+ require 'spec_helper'
2
+
3
+ describe Caramelize::OutputWiki::Gollum do
4
+ let(:gollum_output) { described_class.new('wiki.git') }
5
+ before do
6
+ allow(gollum_output).to receive(:initialize_repository).and_return true
7
+ end
8
+
9
+ describe '#commit_revision' do
10
+ let(:title) { 'title' }
11
+ let(:input_page) do
12
+ double(author_name: 'Steven Universe',
13
+ author_email: 'steven@example.com',
14
+ body: 'body',
15
+ commit_message: 'done',
16
+ time: Time.now,
17
+ title: title)
18
+ end
19
+ let(:gollum_page) do
20
+ double(:gollum_page,
21
+ name: 'title',
22
+ format: :markdown)
23
+ end
24
+ let(:markup) { :markdown }
25
+ let(:gollum) { double(:gollum) }
26
+
27
+ before do
28
+ allow(Gollum::Wiki).to receive(:new).and_return(gollum)
29
+ end
30
+
31
+ context 'page exists' do
32
+ before do
33
+ allow(gollum).to receive(:page).with(title).and_return(gollum_page)
34
+ end
35
+
36
+ it 'updates page' do
37
+ expect(gollum).to receive(:update_page).once.and_return(true)
38
+ gollum_output.commit_revision(input_page, markup)
39
+ end
40
+ end
41
+
42
+ context 'page does not exist yet' do
43
+ before do
44
+ allow(gollum).to receive(:page).with(title).and_return(nil)
45
+ end
46
+
47
+ it 'creates page' do
48
+ expect(gollum).to receive(:write_page).once
49
+ gollum_output.commit_revision(input_page, markup)
50
+ end
51
+ end
52
+ end
53
+
54
+ describe '#commit_history' do
55
+ pending
56
+ end
57
+
58
+ describe '#commit_namespace_overview' do
59
+ let(:namespaces) do
60
+ [
61
+ OpenStruct.new(identifier: 'velociraptors', name: 'Velociraptor'),
62
+ OpenStruct.new(identifier: 'allosaurus', name: 'Allosaurus')
63
+ ]
64
+ end
65
+
66
+ context '2 pages in namespaces' do
67
+ it 'commits page' do
68
+ allow(gollum_output).to receive(:commit_revision)
69
+ gollum_output.commit_namespace_overview(namespaces)
70
+ expect(gollum_output).to have_received(:commit_revision)
71
+ end
72
+ end
73
+ end
74
+
75
+ describe '#build_commit' do
76
+ let(:page) do
77
+ Caramelize::Page.new( title: 'Feathered Dinosaurs',
78
+ message: 'Dinosaurs really had feathers, do not forget!',
79
+ time: Time.parse('2015-02-12'),
80
+ body: 'Dinosaurs are awesome and have feathers!',
81
+ author: OpenStruct.new(name: 'Jeff Goldblum', email: 'jeff.g@example.com') )
82
+ end
83
+
84
+ let(:expected_hash) do
85
+ {
86
+ message: 'Dinosaurs really had feathers, do not forget!',
87
+ authored_date: Time.parse('2015-02-12'),
88
+ committed_date: Time.parse('2015-02-12'),
89
+ name: 'Jeff Goldblum',
90
+ email: 'jeff.g@example.com'
91
+ }
92
+ end
93
+
94
+ it 'builds commit hash' do
95
+ expect(gollum_output.build_commit(page)).to eq expected_hash
96
+ end
97
+
98
+ context 'page has message' do
99
+ it 'uses page.title' do
100
+ expect(gollum_output.build_commit(page)[:message])
101
+ .to eq 'Dinosaurs really had feathers, do not forget!'
102
+ end
103
+ end
104
+
105
+ context 'page has no message' do
106
+ it 'should create message "Edit in page Feathered Dinosaurs"' do
107
+ page.message = ''
108
+ expect(gollum_output.build_commit(page)[:message])
109
+ .to eq 'Edit in page Feathered Dinosaurs'
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+
3
+ describe Caramelize::Page do
4
+
5
+ let(:message) { 'Dinosaurs really had feathers, do not forget!' }
6
+ let(:author) { OpenStruct.new(name: 'Jeff Goldblum', email: 'jeff.g@example.com') }
7
+ subject(:page) do
8
+ Caramelize::Page.new( title: 'Feathered Dinosaurs',
9
+ message: message,
10
+ time: Time.parse('2015-02-12'),
11
+ body: 'Dinosaurs are awesome and have feathers!',
12
+ author: author )
13
+ end
14
+
15
+
16
+ describe '#author' do
17
+ context 'no author is set' do
18
+ let(:author) { nil }
19
+
20
+ it 'fills with Caramelize user' do
21
+ expect(page.author.name).to eql('Caramelize')
22
+ expect(page.author.email).to eql('mail@example.com')
23
+ end
24
+ end
25
+
26
+ context 'author is set' do
27
+ it 'fills with Caramelize user' do
28
+ expect(page.author.name).to eql(author.name)
29
+ expect(page.author.email).to eql(author.email)
30
+ end
31
+ end
32
+ end
33
+
34
+ describe '#commit_message' do
35
+ context 'page has message' do
36
+ it 'uses page.title' do
37
+ expect(page.commit_message).to eq 'Dinosaurs really had feathers, do not forget!'
38
+ end
39
+ end
40
+
41
+ context 'page has no message' do
42
+ let(:message) { '' }
43
+
44
+ it 'creates message "Edit in page Feathered Dinosaurs"' do
45
+ expect(page.commit_message).to eq 'Edit in page Feathered Dinosaurs'
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe Caramelize::Service::Pagebuilder do
4
+ describe '.build_namespace_overview' do
5
+ let(:body) do
6
+ "## Overview of namespaces\n\n* [[Velociraptor|velociraptors/Wiki]] \n* [[Allosaurus|allosaurus/Wiki]] \n"
7
+ end
8
+ let(:expected_page) do
9
+ Caramelize::Page.new(title: 'Home',
10
+ body: body,
11
+ message: 'Create Namespace Overview',
12
+ latest: true)
13
+ end
14
+ let(:namespaces) do
15
+ [
16
+ OpenStruct.new(identifier: 'velociraptors', name: 'Velociraptor'),
17
+ OpenStruct.new(identifier: 'allosaurus', name: 'Allosaurus')
18
+ ]
19
+ end
20
+
21
+ it 'returns page with expected attributes' do
22
+ page = described_class.build_namespace_overview
23
+ expected(page.title).to eql(expected_page.title)
24
+ expected(page.body).to eql(expected_page.body)
25
+ expected(page.latest).to eql(expected_page.latest)
26
+ expected(page.message).to eql(expected_page.message)
27
+ end
28
+ end
29
+ end
@@ -5,4 +5,4 @@ Dir[('./spec/support/**/*.rb')].each {|f| require f}
5
5
 
6
6
  RSpec.configure do |config|
7
7
  #config.include TestHelpers
8
- end
8
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caramelize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Senff
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-23 00:00:00.000000000 Z
11
+ date: 2020-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mysql2
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: cmdparse
28
+ name: commander
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: guard
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -181,33 +195,37 @@ files:
181
195
  - Rakefile
182
196
  - bin/caramelize
183
197
  - caramelize.gemspec
198
+ - lib/caramelize.rb
184
199
  - lib/caramelize/caramel.rb
185
- - lib/caramelize/cli.rb
186
- - lib/caramelize/cli/create_command.rb
187
- - lib/caramelize/cli/run_command.rb
188
200
  - lib/caramelize/content_transferer.rb
189
201
  - lib/caramelize/database_connector.rb
190
202
  - lib/caramelize/ext.rb
203
+ - lib/caramelize/filter_processor.rb
191
204
  - lib/caramelize/filters/remove_table_tab_line_endings.rb
192
205
  - lib/caramelize/filters/swap_wiki_links.rb
193
206
  - lib/caramelize/filters/trac_to_markdown.rb
194
207
  - lib/caramelize/filters/wikka_to_markdown.rb
195
- - lib/caramelize/gollum_output.rb
208
+ - lib/caramelize/input_wiki/redmine_wiki.rb
209
+ - lib/caramelize/input_wiki/trac_converter.rb
210
+ - lib/caramelize/input_wiki/wiki.rb
211
+ - lib/caramelize/input_wiki/wikkawiki.rb
212
+ - lib/caramelize/output_wiki/gollum.rb
196
213
  - lib/caramelize/page.rb
214
+ - lib/caramelize/services/page_builder.rb
197
215
  - lib/caramelize/version.rb
198
- - lib/caramelize/wiki/redmine_wiki.rb
199
- - lib/caramelize/wiki/trac_converter.rb
200
- - lib/caramelize/wiki/wiki.rb
201
- - lib/caramelize/wiki/wikkawiki.rb
202
216
  - spec/fixtures/markup/swap-links-input.textile
203
217
  - spec/fixtures/markup/swap-links-output.textile
204
218
  - spec/fixtures/markup/table-tab-line-endings-input.textile
205
219
  - spec/fixtures/markup/table-tab-line-endings-output.textile
220
+ - spec/lib/caramelize/content_transferer_spec.rb
221
+ - spec/lib/caramelize/filter_processor_spec.rb
206
222
  - spec/lib/caramelize/filters/remove_table_tab_line_endings_spec.rb
207
223
  - spec/lib/caramelize/filters/swap_wiki_links_spec.rb
208
224
  - spec/lib/caramelize/filters/wikka_to_markdown_spec.rb
209
- - spec/lib/caramelize/gollum_output_spec.rb
210
- - spec/lib/caramelize/wiki/wiki_spec.rb
225
+ - spec/lib/caramelize/input_wiki/wiki_spec.rb
226
+ - spec/lib/caramelize/output_wiki/gollum_spec.rb
227
+ - spec/lib/caramelize/page_spec.rb
228
+ - spec/lib/caramelize/services/page_builder.rb
211
229
  - spec/spec_helper.rb
212
230
  homepage: http://github.com/Dahie/caramelize
213
231
  licenses:
@@ -228,8 +246,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
228
246
  - !ruby/object:Gem::Version
229
247
  version: '0'
230
248
  requirements: []
231
- rubyforge_project:
232
- rubygems_version: 2.4.5
249
+ rubygems_version: 3.0.6
233
250
  signing_key:
234
251
  specification_version: 4
235
252
  summary: Flexible and modular wiki conversion tool
@@ -238,9 +255,13 @@ test_files:
238
255
  - spec/fixtures/markup/swap-links-output.textile
239
256
  - spec/fixtures/markup/table-tab-line-endings-input.textile
240
257
  - spec/fixtures/markup/table-tab-line-endings-output.textile
258
+ - spec/lib/caramelize/content_transferer_spec.rb
259
+ - spec/lib/caramelize/filter_processor_spec.rb
241
260
  - spec/lib/caramelize/filters/remove_table_tab_line_endings_spec.rb
242
261
  - spec/lib/caramelize/filters/swap_wiki_links_spec.rb
243
262
  - spec/lib/caramelize/filters/wikka_to_markdown_spec.rb
244
- - spec/lib/caramelize/gollum_output_spec.rb
245
- - spec/lib/caramelize/wiki/wiki_spec.rb
263
+ - spec/lib/caramelize/input_wiki/wiki_spec.rb
264
+ - spec/lib/caramelize/output_wiki/gollum_spec.rb
265
+ - spec/lib/caramelize/page_spec.rb
266
+ - spec/lib/caramelize/services/page_builder.rb
246
267
  - spec/spec_helper.rb
@@ -1,89 +0,0 @@
1
- require 'cmdparse'
2
- require 'caramelize/version'
3
-
4
- module Caramelize
5
- require 'caramelize/content_transferer'
6
- module CLI
7
- require 'caramelize/cli/run_command'
8
- require 'caramelize/cli/create_command'
9
-
10
- # This is the command parser class used for handling the webgen command line interface. After
11
- # creating an instance, the inherited #parse method can be used for parsing the command line
12
- # arguments and executing the requested command.
13
- class CommandParser < CmdParse::CommandParser
14
-
15
- # The verbosity level. Default: <tt>:normal</tt>
16
- attr_reader :verbosity
17
-
18
- # Create a new CommandParser class. T
19
- def initialize
20
- super(true)
21
- @verbosity = :normal
22
-
23
- self.program_name = "caramelize"
24
- self.program_version = Caramelize::VERSION
25
- self.options = CmdParse::OptionParserWrapper.new do |opts|
26
- opts.separator "Global options:"
27
- opts.on("--verbose", "-v", "Print more output") { @verbosity = :verbose }
28
- opts.on("--quiet", "-q", "No output") { @verbosity = :quiet }
29
- end
30
- self.add_command(CmdParse::HelpCommand.new)
31
- self.add_command(CmdParse::VersionCommand.new)
32
- end
33
-
34
- KNOWN_CONFIG_LOCATIONS = ['config/caramel.rb', "config/caramel.config", "caramel.rb", "src/caramel.rb"]
35
-
36
- # Finds the configuration file, if it exists in a known location.
37
- def detect_configuration_file(config_path = nil)
38
- possible_files = []
39
- possible_files << config_path if config_path
40
- possible_files |= KNOWN_CONFIG_LOCATIONS
41
- possible_files.detect{|f| File.exists?(f)}
42
- end
43
-
44
- # Utility method for sub-commands to transfer wiki contents
45
- def transfer_content(config_file = "")
46
- time_start = Time.now
47
-
48
- file = detect_configuration_file config_file
49
- puts "Read config file: #{file}" if verbose?
50
-
51
- unless file && File.exists?(file)
52
- puts "No config file found."
53
- return false
54
- end
55
-
56
- commence_transfer file
57
-
58
- puts "Time required: #{Time.now - time_start} s" if verbose?
59
- end
60
-
61
- def commence_transfer(file)
62
- #load file
63
- #original_wiki = Configuration.instance.input_wiki
64
- instance_eval(File.read(file))
65
- original_wiki = input_wiki
66
-
67
- options = original_wiki.options
68
- options[:verbosity] = @verbosity
69
- ContentTransferer.execute(original_wiki, options)
70
- end
71
-
72
- def verbose?
73
- @verbosity == :verbose
74
- end
75
-
76
- # :nodoc:
77
- def parse(argv = ARGV)
78
- Caramelize::CLI.constants.select {|c| c =~ /.+Command$/ }.each do |c|
79
- # set runcommand as default
80
- self.add_command(Caramelize::CLI.const_get(c).new, (c.to_s == 'RunCommand' ? false : false))
81
- end
82
- super
83
- end
84
-
85
- end
86
-
87
- end
88
-
89
- end