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
@@ -1,7 +0,0 @@
1
- # coding: utf-8
2
-
3
- module Retter::Generator
4
- autoload :Creator, 'retter/generator/creator'
5
- end
6
-
7
- require 'retter/generator/base'
@@ -1,65 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'thor/group'
4
- require 'grit'
5
- require 'bundler'
6
- require 'bundler/cli'
7
- require 'retter'
8
-
9
- class Retter::Generator::Base < Thor::Group
10
- TEMPLATES = %w(
11
- Retterfile
12
- Gemfile
13
- config.ru
14
- index.html
15
- layouts/entries.html.haml
16
- layouts/entry.html.haml
17
- layouts/article.html.haml
18
- layouts/profile.html.haml
19
- layouts/index.html.haml
20
- layouts/retter.html.haml
21
- )
22
-
23
- FILES = %w(
24
- .gitignore
25
- retters/.gitkeep
26
- images/.gitkeep
27
- entries/.gitkeep
28
- tmp/cache/.gitkeep
29
- javascripts/.gitkeep
30
- stylesheets/base.css
31
- stylesheets/retter.css
32
- stylesheets/pygments.css
33
-
34
- stylesheets/orange.css
35
- images/orange/bg_body.jpg
36
- images/orange/bg_entry.jpg
37
- images/orange/bg_header.png
38
- )
39
-
40
- include Thor::Actions
41
-
42
- argument :name
43
-
44
- def self.source_root
45
- File.dirname(__FILE__)
46
- end
47
-
48
- def create_files
49
- FILES.each do |file|
50
- copy_file %(skel/#{file}), %(#{name}/#{file})
51
- end
52
-
53
- TEMPLATES.each do |file|
54
- template %(skel/#{file}), %(#{name}/#{file})
55
- end
56
- end
57
-
58
- def bundle_install
59
- Dir.chdir name do
60
- cli = Bundler::CLI.new
61
-
62
- cli.install
63
- end
64
- end
65
- end
@@ -1,34 +0,0 @@
1
- # coding: utf-8
2
-
3
- class Retter::Generator::Creator < Retter::Generator::Base
4
- def git_init
5
- Grit::Repo.init "#{Dir.pwd}/#{name}"
6
- end
7
-
8
- def notice_how_to_use
9
- editor = ENV['EDITOR']
10
-
11
- say "-- Thanks for flying Retter :-> --\n", :green
12
- say <<-EOM, :green
13
- Setting $EDITOR:
14
- retter *requires* $EDITOR variable.
15
- example:
16
- echo "export EDITOR=vim" >> ~/.zshenv # or ~/.bash_profile
17
- . ~/.zshenv
18
- EOM
19
-
20
- say " Current your $EDITOR is #{editor ? editor : 'undefined'}.\n", :red
21
-
22
- say <<-EOM, :green
23
- Setting $RETTER_HOME:
24
- You can use retter command anywhere, If you set $RETTER_HOME variable.
25
- example:
26
- echo "export RETTER_HOME=#{Dir.pwd}/#{name}" >> ~/.zshenv
27
- ...
28
-
29
- See also:
30
- retter usage
31
- retter help
32
- EOM
33
- end
34
- end
@@ -1,5 +0,0 @@
1
- source :rubygems
2
-
3
- gem 'retter', '~> <%= Retter::VERSION %>'
4
- gem 'rack'
5
- gem 'thin' # for heroku
@@ -1,31 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'redcarpet'
4
-
5
- module Retter
6
- module Markdown
7
- autoload :CodeRayRenderer, 'retter/markdown/code_ray_renderer'
8
- autoload :PygmentsRenderer, 'retter/markdown/pygments_renderer'
9
-
10
- extend Configurable
11
-
12
- configurable :renderer
13
-
14
- class << self
15
- def instance
16
- @instances ||= {}
17
-
18
- @instances[renderer.name] ||= Redcarpet::Markdown.new(
19
- renderer,
20
- autolink: true,
21
- space_after_headers: true,
22
- fenced_code_blocks: true,
23
- strikethrough: true,
24
- superscript: true,
25
- fenced_code_blocks: true,
26
- tables: true
27
- )
28
- end
29
- end
30
- end
31
- end
@@ -1,11 +0,0 @@
1
- require 'coderay'
2
-
3
- module Retter
4
- module Markdown
5
- class CodeRayRenderer < Redcarpet::Render::HTML
6
- def block_code(code, lang)
7
- CodeRay.scan(code, lang ? lang.intern : :plain).div
8
- end
9
- end
10
- end
11
- end
@@ -1,16 +0,0 @@
1
- require 'pygments'
2
- require 'set'
3
-
4
- module Retter
5
- module Markdown
6
- class PygmentsRenderer < Redcarpet::Render::HTML
7
- LANGUAGES = Set.new(Pygments.lexers.map {|_, l| l[:aliases] }.flatten)
8
-
9
- def block_code(code, lang)
10
- lang = LANGUAGES.include?(lang) ? lang : 'text'
11
-
12
- Pygments.highlight(code, lexer: lang, formatter: 'html', options: {encoding: 'utf-8'})
13
- end
14
- end
15
- end
16
- end
data/lib/retter/page.rb DELETED
@@ -1,43 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'tilt'
4
- require 'haml'
5
- require 'nokogiri'
6
-
7
- module Retter
8
- module Page
9
- autoload :Base, 'retter/page/base'
10
- autoload :ViewHelper, 'retter/page/view_helper'
11
-
12
- autoload :Index, 'retter/page/index'
13
- autoload :Profile, 'retter/page/profile'
14
- autoload :Entries, 'retter/page/entries'
15
- autoload :Feed, 'retter/page/feed'
16
- autoload :Entry, 'retter/page/entry'
17
- autoload :Article, 'retter/page/article'
18
-
19
- extend Configurable
20
-
21
- configurable :layouts_dir, :entries_dir
22
-
23
- class << self
24
- def find_template_path(name)
25
- detected = Dir.glob(layouts_dir.join("#{name}.*.*")).first
26
-
27
- Pathname.new(detected)
28
- end
29
-
30
- def layout_path
31
- @layout_path ||= find_template_path('retter')
32
- end
33
-
34
- def entry_file(date)
35
- entries_dir.join date.strftime('%Y%m%d.html')
36
- end
37
-
38
- def entry_dir(date)
39
- entries_dir.join date.strftime('%Y%m%d')
40
- end
41
- end
42
- end
43
- end
@@ -1,54 +0,0 @@
1
- # coding: utf-8
2
-
3
- module Retter
4
- module Page
5
- class Article
6
- class ViewContext < Base::ViewContext
7
- attr_reader :entry, :article
8
-
9
- def initialize(entry, article)
10
- @entry, @article = entry, article
11
- end
12
- end
13
-
14
- include Base
15
-
16
- attr_reader :article
17
-
18
- def initialize(article)
19
- super()
20
- @path_prefix = '../../'
21
- @article = article
22
- @title = "#{article.title} - #{config.title}"
23
- end
24
-
25
- def path
26
- Page.entry_dir(article.entry.date).join("#{article.id}.html")
27
- end
28
-
29
- def template_path
30
- Page.find_template_path('article')
31
- end
32
-
33
- def bind
34
- context = ViewContext.new(article.entry, article)
35
- part = Tilt.new(
36
- template_path.to_path,
37
- ugly: true,
38
- filename: template_path.to_path
39
- ).render(context)
40
-
41
- print part
42
- end
43
-
44
- private
45
-
46
- def print(part)
47
- entry_dir = Page.entry_dir(article.entry.date)
48
- entry_dir.mkdir unless entry_dir.directory?
49
-
50
- super
51
- end
52
- end
53
- end
54
- end
@@ -1,97 +0,0 @@
1
- # coding: utf-8
2
-
3
- module Retter
4
- module Page
5
- module Base
6
- class ViewContext
7
- include ViewHelper
8
- end
9
-
10
- include Site
11
-
12
- attr_reader :path_prefix, :title
13
-
14
- def initialize
15
- @path_prefix = './'
16
- @title = config.title
17
- end
18
-
19
- def bind
20
- context = ViewContext.new
21
- part = Tilt.new(
22
- template_path.to_path,
23
- ugly: true,
24
- filename: template_path.to_path
25
- ).render(context)
26
-
27
- print part
28
- end
29
-
30
- def path
31
- raise NotImplementedError
32
- end
33
-
34
- def template_path
35
- raise NotImplementedError
36
- end
37
-
38
- private
39
-
40
- def print(content)
41
- context = ViewContext.new
42
- draft = layout_renderer.render(context, content: content, title: title)
43
- path_fixed = fix_path(draft, path_prefix)
44
-
45
- path.open('w') {|f| f.puts path_fixed }
46
- end
47
-
48
- def layout_renderer
49
- path = Page.layout_path.to_path
50
-
51
- @layout_renderer ||= Tilt.new(path, ugly: true, filename: path)
52
- end
53
-
54
- def fix_path(html, prefix='./')
55
- elements = Nokogiri::HTML(html)
56
-
57
- fix_href_path(fix_src_path(elements, prefix), prefix).to_s
58
- end
59
-
60
- def fix_src_path(elements, prefix = './')
61
- elements.search("[src!=''][src!='']").each do |el|
62
- src = el.attr('src')
63
- next if src =~ /^(?:http:|https:|\/\/)/
64
-
65
- el.set_attribute 'src', normarize_path(prefix, src)
66
- end
67
-
68
- elements
69
- end
70
-
71
- def fix_href_path(elements, prefix = './')
72
- elements.search("[href][href!='#']").each do |el|
73
- href = el.attr('href')
74
- next if href =~ /^(?:http:|https:|\/\/)/
75
-
76
- if href == '/'
77
- el.set_attribute 'href', [prefix, 'index.html'].join
78
- else
79
- el.set_attribute 'href', normarize_path(prefix, href)
80
- end
81
- end
82
-
83
- elements
84
- end
85
-
86
- def normarize_path(prefix, path)
87
- absolute = /^\//
88
-
89
- if path =~ absolute
90
- [prefix, path.gsub(absolute, '')].join
91
- else
92
- path
93
- end
94
- end
95
- end
96
- end
97
- end
@@ -1,17 +0,0 @@
1
- # coding: utf-8
2
-
3
- module Retter
4
- module Page
5
- class Entries
6
- include Base
7
-
8
- def path
9
- config.retter_home.join('entries.html')
10
- end
11
-
12
- def template_path
13
- Page.find_template_path('entries')
14
- end
15
- end
16
- end
17
- end
@@ -1,46 +0,0 @@
1
- # coding: utf-8
2
-
3
- module Retter
4
- module Page
5
- class Entry
6
- class ViewContext < Base::ViewContext
7
- attr_reader :entry
8
-
9
- def initialize(entry)
10
- @entry = entry
11
- end
12
- end
13
-
14
- include Base
15
-
16
- attr_reader :entry
17
-
18
- def initialize(entry)
19
- super()
20
-
21
- @path_prefix = '../'
22
- @entry = entry
23
- @title = "#{entry.date} - #{config.title}"
24
- end
25
-
26
- def path
27
- Page.entry_file(entry.date)
28
- end
29
-
30
- def template_path
31
- Page.find_template_path('entry')
32
- end
33
-
34
- def bind
35
- context = ViewContext.new(entry)
36
- part = Tilt.new(
37
- template_path.to_path,
38
- ugly: true,
39
- filename: template_path.to_path
40
- ).render(context)
41
-
42
- print part
43
- end
44
- end
45
- end
46
- end