retter 0.2.5 → 1.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -11
  3. data/.travis.yml +4 -2
  4. data/ChangeLog.md +11 -5
  5. data/Gemfile +4 -1
  6. data/LICENSE.txt +22 -0
  7. data/README.md +163 -246
  8. data/Rakefile +25 -5
  9. data/bin/retter +2 -22
  10. data/lib/retter.rb +57 -43
  11. data/lib/retter/cli.rb +46 -0
  12. data/lib/retter/cli/edit.rb +33 -0
  13. data/lib/retter/cli/hooks.rb +46 -0
  14. data/lib/retter/cli/list.rb +15 -0
  15. data/lib/retter/cli/new.rb +20 -0
  16. data/lib/retter/cli/preview.rb +9 -0
  17. data/lib/retter/cli/publish.rb +22 -0
  18. data/lib/retter/deprecated.rb +160 -0
  19. data/lib/retter/entry.rb +31 -106
  20. data/lib/retter/entry/article.rb +36 -0
  21. data/lib/retter/entry/find_methods.rb +38 -0
  22. data/lib/retter/entry/model_base.rb +10 -0
  23. data/lib/retter/entry/pagination.rb +23 -0
  24. data/lib/retter/entry/sort_methods.rb +7 -0
  25. data/lib/retter/entry/utils.rb +12 -0
  26. data/lib/retter/initializing.rb +45 -0
  27. data/lib/retter/repository.rb +99 -12
  28. data/lib/retter/retterfile.rb +67 -0
  29. data/lib/retter/retterfile/context.rb +57 -0
  30. data/lib/retter/static_site.rb +34 -0
  31. data/lib/retter/static_site/app.rb +13 -0
  32. data/lib/retter/static_site/app/application.rb +94 -0
  33. data/lib/retter/{generator/skel/entries → static_site/app/assets/images}/.gitkeep +0 -0
  34. data/lib/retter/{generator/skel → static_site/app/assets}/images/orange/bg_body.jpg +0 -0
  35. data/lib/retter/{generator/skel → static_site/app/assets}/images/orange/bg_entry.jpg +0 -0
  36. data/lib/retter/{generator/skel → static_site/app/assets}/images/orange/bg_header.png +0 -0
  37. data/lib/retter/{generator/skel → static_site/app/assets}/images/orange/ic_li01.gif +0 -0
  38. data/lib/retter/{generator/skel/images → static_site/app/assets/javascripts}/.gitkeep +0 -0
  39. data/lib/retter/static_site/app/assets/stylesheets/application.css.scss +3 -0
  40. data/lib/retter/{generator/skel/stylesheets/base.css → static_site/app/assets/stylesheets/base.css.scss} +0 -0
  41. data/lib/retter/{generator/skel/stylesheets/pygments.css → static_site/app/assets/stylesheets/highlight.css.scss} +0 -0
  42. data/lib/retter/static_site/app/assets/stylesheets/orange.css.scss +262 -0
  43. data/lib/retter/static_site/app/assets/stylesheets/retter.css.scss +198 -0
  44. data/lib/retter/static_site/app/config.ru +7 -0
  45. data/lib/retter/static_site/app/controllers.rb +113 -0
  46. data/lib/retter/static_site/app/helpers.rb +36 -0
  47. data/lib/retter/{generator/skel/layouts/profile.html.haml → static_site/app/templates/about/show.html.haml} +0 -0
  48. data/lib/retter/static_site/app/templates/entries/articles/show.html.haml +7 -0
  49. data/lib/retter/static_site/app/templates/entries/index.html.haml +13 -0
  50. data/lib/retter/static_site/app/templates/entries/index.rss.haml +24 -0
  51. data/lib/retter/static_site/app/templates/entries/show.html.haml +11 -0
  52. data/lib/retter/static_site/app/templates/index/show.html.haml +14 -0
  53. data/lib/retter/static_site/app/templates/layouts/application.html.haml +34 -0
  54. data/lib/retter/static_site/builder.rb +106 -0
  55. data/lib/retter/static_site/cli.rb +25 -0
  56. data/lib/retter/static_site/cli/build.rb +85 -0
  57. data/lib/retter/static_site/cli/edit.rb +17 -0
  58. data/lib/retter/static_site/cli/migrate.rb +93 -0
  59. data/lib/retter/static_site/cli/new.rb +50 -0
  60. data/lib/retter/static_site/cli/preview.rb +66 -0
  61. data/lib/retter/static_site/markdown.rb +25 -0
  62. data/lib/retter/static_site/markdown/code_ray_renderer.rb +13 -0
  63. data/lib/retter/static_site/markdown/pygments_renderer.rb +18 -0
  64. data/lib/retter/static_site/markdown_entry.rb +111 -0
  65. data/lib/retter/static_site/monkey/sprockets_task.rb +10 -0
  66. data/lib/retter/version.rb +1 -1
  67. data/retter.gemspec +59 -43
  68. data/skel/.gitignore +2 -0
  69. data/skel/Retterfile +16 -0
  70. data/skel/config.ru +22 -0
  71. data/{lib/retter/generator/skel/javascripts → skel/retters}/.gitkeep +0 -0
  72. data/skel/retters/today.md +3 -0
  73. data/spec/cli/build_spec.rb +87 -0
  74. data/spec/cli/edit_spec.rb +76 -0
  75. data/spec/cli/invocation_spec.rb +19 -0
  76. data/spec/cli/list_spec.rb +64 -0
  77. data/spec/cli/migrate_spec.rb +65 -0
  78. data/spec/cli/new_spec.rb +30 -0
  79. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/.gitignore +0 -0
  80. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/Retterfile +6 -3
  81. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/config.ru +0 -0
  82. data/{lib/retter/generator/skel/retters/.gitkeep → spec/fixtures/sites/site-0.2.5/entries.html} +0 -0
  83. data/spec/fixtures/sites/site-0.2.5/entries.rss +0 -0
  84. data/spec/fixtures/sites/site-0.2.5/entries/.gitkeep +0 -0
  85. data/spec/fixtures/sites/site-0.2.5/images/.gitkeep +0 -0
  86. data/spec/fixtures/sites/site-0.2.5/images/orange/bg_body.jpg +0 -0
  87. data/spec/fixtures/sites/site-0.2.5/images/orange/bg_entry.jpg +0 -0
  88. data/spec/fixtures/sites/site-0.2.5/images/orange/bg_header.png +0 -0
  89. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/index.html +0 -0
  90. data/spec/fixtures/sites/site-0.2.5/javascripts/.gitkeep +0 -0
  91. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/layouts/article.html.haml +0 -0
  92. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/layouts/entries.html.haml +0 -0
  93. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/layouts/entry.html.haml +0 -0
  94. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/layouts/index.html.haml +0 -0
  95. data/spec/fixtures/sites/site-0.2.5/layouts/profile.html.haml +7 -0
  96. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/layouts/retter.html.haml +0 -0
  97. data/spec/fixtures/sites/site-0.2.5/profile.html +0 -0
  98. data/spec/fixtures/sites/site-0.2.5/retters/.gitkeep +0 -0
  99. data/spec/fixtures/sites/site-0.2.5/stylesheets/base.css +22 -0
  100. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/stylesheets/orange.css +0 -0
  101. data/spec/fixtures/sites/site-0.2.5/stylesheets/pygments.css +288 -0
  102. data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/stylesheets/retter.css +0 -0
  103. data/spec/retter/deprecated_spec.rb +106 -0
  104. data/spec/retter/initializing_spec.rb +86 -0
  105. data/spec/retter/retterfile_spec.rb +32 -0
  106. data/spec/spec_helper.rb +38 -27
  107. data/spec/support/example_helper.rb +46 -0
  108. data/spec/support/matchers.rb +14 -0
  109. data/spec/support/test_site.rb +59 -0
  110. metadata +329 -236
  111. data/lib/retter/binder.rb +0 -50
  112. data/lib/retter/command.rb +0 -192
  113. data/lib/retter/config.rb +0 -96
  114. data/lib/retter/configurable.rb +0 -26
  115. data/lib/retter/entries.rb +0 -115
  116. data/lib/retter/generator.rb +0 -7
  117. data/lib/retter/generator/base.rb +0 -65
  118. data/lib/retter/generator/creator.rb +0 -34
  119. data/lib/retter/generator/skel/Gemfile +0 -5
  120. data/lib/retter/markdown.rb +0 -31
  121. data/lib/retter/markdown/code_ray_renderer.rb +0 -11
  122. data/lib/retter/markdown/pygments_renderer.rb +0 -16
  123. data/lib/retter/page.rb +0 -43
  124. data/lib/retter/page/article.rb +0 -54
  125. data/lib/retter/page/base.rb +0 -97
  126. data/lib/retter/page/entries.rb +0 -17
  127. data/lib/retter/page/entry.rb +0 -46
  128. data/lib/retter/page/feed.rb +0 -63
  129. data/lib/retter/page/index.rb +0 -17
  130. data/lib/retter/page/profile.rb +0 -17
  131. data/lib/retter/page/view_helper.rb +0 -66
  132. data/lib/retter/preprint.rb +0 -34
  133. data/spec/command/callback_spec.rb +0 -27
  134. data/spec/command/clean_spec.rb +0 -20
  135. data/spec/command/commit_spec.rb +0 -40
  136. data/spec/command/edit_spec.rb +0 -119
  137. data/spec/command/list_spec.rb +0 -42
  138. data/spec/command/open_spec.rb +0 -12
  139. data/spec/command/preview_spec.rb +0 -40
  140. data/spec/command/rebind_spec.rb +0 -276
  141. data/spec/support/example_group_helper.rb +0 -98
@@ -0,0 +1,25 @@
1
+ require 'redcarpet'
2
+ require 'rouge'
3
+ require 'rouge/lexer'
4
+ require 'rouge/plugins/redcarpet'
5
+
6
+ module Retter
7
+ module StaticSite
8
+ class Markdown < Redcarpet::Markdown
9
+ autoload :PygmentsRenderer, 'retter/static_site/markdown/pygments_renderer'
10
+ autoload :CodeRayRenderer, 'retter/static_site/markdown/code_ray_renderer'
11
+
12
+ class Renderer < Redcarpet::Render::HTML
13
+ include Rouge::Plugins::Redcarpet
14
+ end
15
+
16
+ class << self
17
+ def new(renderer = Renderer, options = {})
18
+ options.reverse_merge! space_after_headers: true, fenced_code_blocks: true, strikethrough: true, fenced_code_blocks: true, tables: true
19
+
20
+ super(renderer, options)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,13 @@
1
+ require 'coderay'
2
+
3
+ module Retter
4
+ module StaticSite
5
+ class Markdown < Redcarpet::Markdown
6
+ class CodeRayRenderer < Redcarpet::Render::HTML
7
+ def block_code(code, lang)
8
+ CodeRay.scan(code, lang ? lang.intern : :plain).div
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+ require 'pygments'
2
+ require 'set'
3
+
4
+ module Retter
5
+ module StaticSite
6
+ class Markdown < Redcarpet::Markdown
7
+ class PygmentsRenderer < Redcarpet::Render::HTML
8
+ LANGUAGES = Set.new(Pygments.lexers.map {|_, l| l[:aliases] }.flatten)
9
+
10
+ def block_code(code, lang)
11
+ lang = LANGUAGES.include?(lang) ? lang : 'text'
12
+
13
+ Pygments.highlight(code, lexer: lang, formatter: 'html', options: {encoding: 'utf-8'})
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,111 @@
1
+ require 'chronic'
2
+ require 'date'
3
+ require 'nokogiri'
4
+
5
+ module Retter
6
+ module StaticSite
7
+ module MarkdownEntry
8
+ mattr_accessor :source_path, :wip_file, :markdown
9
+
10
+ extend ActiveSupport::Concern
11
+
12
+ def load(path)
13
+ @source_path = Pathname(path)
14
+
15
+ fname = source_path.basename('.*').to_s
16
+ @date = Entry::Utils.parse_date(fname)
17
+
18
+ load_markdown
19
+ end
20
+
21
+ def commit!(date = Date.today)
22
+ raise 'Already committed' unless wip?
23
+
24
+ new_path = source_path.dirname.join(date.strftime('%Y%m%d.md'))
25
+ source_path.rename new_path
26
+ @source_path = new_path
27
+ end
28
+
29
+ def wip?
30
+ source_path == MarkdownEntry.wip_file
31
+ end
32
+
33
+ private
34
+
35
+ def load_markdown
36
+ html = Nokogiri::HTML(MarkdownEntry.markdown.render(source_path.read))
37
+ elements = html.search('body > *').to_a
38
+
39
+ @lede = ''
40
+ @articles = elements.each.with_object([]) {|el, articles|
41
+ if el.name == 'h1'
42
+ articles << Entry::Article.new(entry: self, index: articles.size, title: el.text, body: '')
43
+ else
44
+ if articles.empty?
45
+ @lede << el.to_s
46
+ next
47
+ end
48
+
49
+ articles.last.body << el.to_s
50
+ end
51
+ }
52
+ end
53
+
54
+ module ClassMethods
55
+ def load
56
+ return unless MarkdownEntry.source_path
57
+
58
+ load_entries
59
+ load_wip_entry
60
+
61
+ all.sort_by! &:date
62
+ end
63
+
64
+ def generate_entry_path(keyword)
65
+ if found_entry = find_by_keyword(keyword)
66
+ found_entry.source_path
67
+ elsif date = Entry::Utils.parse_date(keyword)
68
+ MarkdownEntry.source_path.join(date.strftime('%Y%m%d.md'))
69
+ else
70
+ if today_entry = find(Date.today)
71
+ today_entry.source_path
72
+ else
73
+ MarkdownEntry.wip_file
74
+ end
75
+ end
76
+ end
77
+
78
+ private
79
+
80
+ def load_entries
81
+ wip_file_path = MarkdownEntry.wip_file.to_path
82
+ except_wip = Dir.glob("#{MarkdownEntry.source_path}/*.md").reject {|path| path == wip_file_path }
83
+
84
+ self.all = except_wip.map {|path|
85
+ new.tap {|e| e.load path }
86
+ }
87
+ end
88
+
89
+ def load_wip_entry
90
+ return unless MarkdownEntry.wip_file.exist?
91
+
92
+ wip_entry = new.tap {|e| e.load(MarkdownEntry.wip_file) }
93
+
94
+ if find(wip_entry.date)
95
+ # this file won't read while find(Date.today)
96
+ else
97
+ all << wip_entry
98
+ end
99
+ end
100
+ end
101
+
102
+ Retter.on_initialize do |config|
103
+ self.source_path = config.source_path.try(:join, 'retters')
104
+ self.wip_file = source_path.try(:join, 'today.md')
105
+ self.markdown = Markdown.new(config.renderer || Markdown::Renderer)
106
+
107
+ -> { Retter::Entry.load }
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,10 @@
1
+ require 'rake/sprocketstask'
2
+
3
+ class Rake::SprocketsTask
4
+ private
5
+
6
+ # avoid logging to stderr
7
+ def with_logger
8
+ yield
9
+ end
10
+ end
@@ -1,3 +1,3 @@
1
1
  module Retter
2
- VERSION = '0.2.5'
2
+ VERSION = '1.0.0.pre'
3
3
  end
data/retter.gemspec CHANGED
@@ -1,46 +1,62 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path('../lib', __FILE__)
1
+ # coding: utf-8
2
+
3
+ lib = File.expand_path('../lib', __FILE__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+
3
6
  require 'retter/version'
4
7
 
5
- Gem::Specification.new do |gem|
6
- gem.name = 'retter'
7
- gem.version = Retter::VERSION
8
- gem.authors = ['hibariya', 'uzura29']
9
- gem.email = ['celluloid.key@gmail.com']
10
- gem.homepage = 'https://github.com/hibariya/retter'
11
- gem.summary = %q{Flyweight diary workflow}
12
- gem.description = %q{Flyweight diary workflow. ruby-1.9.2 or later is required.}
13
-
14
- gem.files = `git ls-files`.split("\n")
15
- gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
- gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
- gem.require_paths = ['lib']
18
-
19
- gem.required_ruby_version = '>= 1.9.1'
20
-
21
- gem.add_runtime_dependency 'thor', ['~> 0.16.0']
22
- gem.add_runtime_dependency 'builder', ['~> 3.1.3']
23
- gem.add_runtime_dependency 'redcarpet', ['~> 2.1.1']
24
- gem.add_runtime_dependency 'coderay', ['~> 1.0.7']
25
- gem.add_runtime_dependency 'pygments.rb', ['~> 0.3.1']
26
- gem.add_runtime_dependency 'nokogiri', ['~> 1.5.5']
27
- gem.add_runtime_dependency 'launchy', ['~> 2.1.2']
28
- gem.add_runtime_dependency 'haml', ['~> 3.1.7']
29
- gem.add_runtime_dependency 'tilt', ['~> 1.3.3']
30
- gem.add_runtime_dependency 'bundler', ['~> 1.2.1']
31
- gem.add_runtime_dependency 'grit', ['~> 2.5.0']
32
- gem.add_runtime_dependency 'chronic', ['~> 0.8.0']
33
- gem.add_runtime_dependency 'activesupport', ['~> 3.2.8']
34
-
35
- # XXX for ActiveSupport dependencies
36
- gem.add_runtime_dependency 'rack', ['~> 1.4.1']
37
- gem.add_runtime_dependency 'i18n', ['~> 0.6.1']
38
-
39
- gem.add_development_dependency 'rake', ['~> 0.9.2']
40
- gem.add_development_dependency 'ir_b', ['~> 1.5.0']
41
- gem.add_development_dependency 'tapp', ['~> 1.4.0']
42
- gem.add_development_dependency 'rspec', ['~> 2.11.0']
43
- gem.add_development_dependency 'fuubar', ['~> 1.0.0']
44
- gem.add_development_dependency 'simplecov', ['~> 0.6.4']
45
- gem.add_development_dependency 'delorean', ['~> 2.0.0']
8
+ Gem::Specification.new do |spec|
9
+ spec.name = 'retter'
10
+ spec.version = Retter::VERSION
11
+ spec.authors = ['hibariya', 'uzura29']
12
+ spec.email = ['celluloid.key@gmail.com']
13
+ spec.summary = %q{A diary workflow}
14
+ spec.description = %q{A diary workflow for shell users.}
15
+ spec.homepage = 'https://github.com/hibariya/retter'
16
+ spec.license = 'MIT'
17
+
18
+ spec.files = `git ls-files`.split($/)
19
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
20
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
+ spec.require_paths = ['lib']
22
+
23
+ spec.post_install_message = <<-EOM
24
+ HEADS UP! Retter-#{Retter::VERSION} has many changes, and incompatible with Retter (<= 0.2.5).
25
+ If you upgrading, please migrate your sites.
26
+ For more information: https://github.com/hibariya/retter
27
+ EOM
28
+
29
+ spec.required_ruby_version = '>= 1.9.1'
30
+
31
+ spec.add_runtime_dependency 'coffee-rails', '~> 4.0.1'
32
+ spec.add_runtime_dependency 'haml-rails', '~> 0.5.3'
33
+ spec.add_runtime_dependency 'jquery-rails', '~> 3.0.4'
34
+ spec.add_runtime_dependency 'rails', '~> 4.0.2'
35
+ spec.add_runtime_dependency 'sass-rails', '~> 4.0.1'
36
+ spec.add_runtime_dependency 'uglifier', '>= 2.4.0'
37
+
38
+ spec.add_runtime_dependency 'activesupport'
39
+ spec.add_runtime_dependency 'chronic', '~> 0.10.2'
40
+ spec.add_runtime_dependency 'guard-livereload', '~> 2.1.1'
41
+ spec.add_runtime_dependency 'launchy', '~> 2.4.2'
42
+ spec.add_runtime_dependency 'nokogiri', '~> 1.6.1'
43
+ spec.add_runtime_dependency 'rack-livereload', '~> 0.3.15'
44
+ spec.add_runtime_dependency 'redcarpet', '~> 3.0.0'
45
+ spec.add_runtime_dependency 'rouge', '~> 1.3.2'
46
+ spec.add_runtime_dependency 'thor', '~> 0.18.1'
47
+
48
+ spec.add_development_dependency 'bundler'
49
+ spec.add_development_dependency 'coderay', '~> 1.1.0'
50
+ spec.add_development_dependency 'pygments.rb', '~> 0.5.4'
51
+ spec.add_development_dependency 'rspec', '~> 2.14.1'
52
+ spec.add_development_dependency 'tapp', '~> 1.4.0'
53
+
54
+ # XXX: Avoid `WARN: Unresolved specs during Gem::Specification.reset:...'
55
+ spec.add_runtime_dependency 'arel', '~> 4.0.2'
56
+ spec.add_runtime_dependency 'coffee-script-source', '~> 1.7.0'
57
+ spec.add_runtime_dependency 'ffi', '~> 1.9.3'
58
+ spec.add_runtime_dependency 'haml', '~> 4.0.5'
59
+ spec.add_runtime_dependency 'rake', '~> 10.1.1'
60
+ spec.add_runtime_dependency 'sass', '~> 3.2.14'
61
+ spec.add_runtime_dependency 'tilt', '~> 1.4.1'
46
62
  end
data/skel/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ tmp/
2
+ assets/manifest-*.json
data/skel/Retterfile ADDED
@@ -0,0 +1,16 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ configure api_revision: <%= Retter::API_REVISION %> do |config|
5
+ # Website's root URL, title, description and author. URL is needed by feed generator.
6
+ config.url = 'http://retter.example.com/'
7
+ config.title = '<%= name %>'
8
+ config.description = '<%= name %>'
9
+ config.author = '<%= ENV["USER"] %>'
10
+
11
+ # Processing for `retter publish` command.
12
+ config.publisher do
13
+ # Uncomment it if you want to do `cd $RETTER_ROOT && git push origin master` via `retter publish`.
14
+ # run 'git push origin master'
15
+ end
16
+ end
data/skel/config.ru ADDED
@@ -0,0 +1,22 @@
1
+ require 'rack'
2
+
3
+ here = File.dirname(__FILE__)
4
+ static_files = Dir.glob("#{here}/**/*.{html,rss,css,js,png,jpg,jpeg,gif,ico}")
5
+
6
+ use Rack::Static, root: '.', urls: static_files.map {|path|
7
+ path.sub(here, '')
8
+ }
9
+
10
+ map '/' do
11
+ run ->(env) {
12
+ if env['PATH_INFO'] == '/'
13
+ [
14
+ 200,
15
+ {'Content-Type' => 'text/html', 'Cache-Control' => 'public, max-age=86400'},
16
+ File.open(File.join(here, 'index.html'), File::RDONLY)
17
+ ]
18
+ else
19
+ [404, {'Content-Type' => 'text/plain'}, ['Not Found']]
20
+ end
21
+ }
22
+ end
@@ -0,0 +1,3 @@
1
+ # Lorem ipsum
2
+
3
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
@@ -0,0 +1,87 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'retter build' do
4
+ context 'default site', :with_default_site do
5
+ let(:today_str) { Date.today.strftime('%Y%m%d') }
6
+
7
+ before do
8
+ File.write 'source/retters/20140101.md', <<-DIARY.strip_heredoc
9
+ # First
10
+
11
+ Hi, Alice.
12
+
13
+ # Second
14
+
15
+ Hi, Bob.
16
+ DIARY
17
+
18
+ File.write 'source/retters/today.md', <<-DIARY.strip_heredoc
19
+ # Today
20
+
21
+ Hi, Present.
22
+ DIARY
23
+
24
+ invoke_retter('build').should be_exit_successfully
25
+ end
26
+
27
+ describe 'source files' do
28
+ let(:wip_file) { Pathname('source/retters/today.md') }
29
+ let(:dest_file) { Pathname("source/retters/#{today_str}.md") }
30
+
31
+ specify 'wip file should renamed' do
32
+ wip_file.should_not be_exist
33
+ dest_file.should written
34
+ end
35
+ end
36
+
37
+ describe 'publish files' do
38
+ specify 'files are generated successfully' do
39
+ Dir.glob('assets/application-*.css').should be_present
40
+
41
+ %W(
42
+ index.html about.html entries.html entries.rss
43
+ entries/20140101.html
44
+ entries/20140101/a0.html
45
+ entries/20140101/a1.html
46
+ entries/#{today_str}.html
47
+ entries/#{today_str}/a0.html
48
+ ).each do |file|
49
+ Pathname(file).should written
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ context 'multi branch', :with_multi_branch_site do
56
+ before do
57
+ Retter::Repository.new '.' do |repo|
58
+ repo.checkout 'source' do
59
+ File.write 'source/retters/20140101.md', <<-DIARY.strip_heredoc
60
+ # First
61
+
62
+ Hi, Alice.
63
+
64
+ # Second
65
+
66
+ Hi, Bob.
67
+ DIARY
68
+ end
69
+ end
70
+
71
+ invoke_retter('build').should be_exit_successfully
72
+ end
73
+
74
+ specify 'files are generated successfully' do
75
+ Dir.glob('assets/application-*.css').should be_present
76
+
77
+ %W(
78
+ index.html about.html entries.html entries.rss
79
+ entries/20140101.html
80
+ entries/20140101/a0.html
81
+ entries/20140101/a1.html
82
+ ).each do |file|
83
+ Pathname(file).should written
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,76 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'retter edit' do
4
+ context 'default site', :with_default_site do
5
+ context 'with no keywords' do
6
+ before do
7
+ invoke_retter('edit').should be_exit_successfully
8
+ end
9
+
10
+ subject { Pathname('source/retters/today.md') }
11
+
12
+ it { should written }
13
+ end
14
+
15
+ context 'with date keyword' do
16
+ before do
17
+ invoke_retter('edit', '20140101').should be_exit_successfully
18
+ end
19
+
20
+ subject { Pathname('source/retters/20140101.md') }
21
+
22
+ it { should written }
23
+ end
24
+
25
+ context 'with human readable date keyword' do
26
+ before do
27
+ invoke_retter('edit', '2014-01-02').should be_exit_successfully
28
+ end
29
+
30
+ subject { Pathname('source/retters/20140102.md') }
31
+
32
+ it { should written }
33
+ end
34
+
35
+ context 'with date filename' do
36
+ before do
37
+ invoke_retter('edit', '20140103.md').should be_exit_successfully
38
+ end
39
+
40
+ subject { Pathname('source/retters/20140103.md') }
41
+
42
+ it { should written }
43
+ end
44
+
45
+ context 'with alias keyword' do
46
+ let(:path) { Pathname('source/retters/20140104.md') }
47
+
48
+ before do
49
+ FileUtils.touch path
50
+
51
+ invoke_retter('edit', 'e0').should be_exit_successfully
52
+ end
53
+
54
+ subject { path }
55
+
56
+ it { should written }
57
+ end
58
+ end
59
+
60
+ context 'multi branch', :with_multi_branch_site do
61
+ let(:path) { Pathname('source/retters/today.md') }
62
+
63
+ before do
64
+ invoke_retter('edit').should be_exit_successfully
65
+ end
66
+
67
+ specify 'source branch has changes' do
68
+ Retter::Repository.new '.' do |repo|
69
+ repo.current_branch.should == 'master'
70
+ repo.checkout 'source' do
71
+ path.should written
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end