fagiani-jekyll 0.10.1

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 (97) hide show
  1. data/History.txt +284 -0
  2. data/LICENSE +21 -0
  3. data/README.textile +41 -0
  4. data/Rakefile +159 -0
  5. data/bin/jekyll +192 -0
  6. data/cucumber.yml +1 -0
  7. data/features/create_sites.feature +94 -0
  8. data/features/embed_filters.feature +60 -0
  9. data/features/markdown.feature +30 -0
  10. data/features/pagination.feature +27 -0
  11. data/features/permalinks.feature +65 -0
  12. data/features/post_data.feature +153 -0
  13. data/features/site_configuration.feature +126 -0
  14. data/features/site_data.feature +82 -0
  15. data/features/step_definitions/jekyll_steps.rb +145 -0
  16. data/features/support/env.rb +16 -0
  17. data/jekyll.gemspec +140 -0
  18. data/lib/jekyll.rb +125 -0
  19. data/lib/jekyll/albino.rb +120 -0
  20. data/lib/jekyll/converter.rb +50 -0
  21. data/lib/jekyll/converters/identity.rb +22 -0
  22. data/lib/jekyll/converters/markdown.rb +113 -0
  23. data/lib/jekyll/converters/textile.rb +33 -0
  24. data/lib/jekyll/convertible.rb +98 -0
  25. data/lib/jekyll/core_ext.rb +52 -0
  26. data/lib/jekyll/errors.rb +6 -0
  27. data/lib/jekyll/filters.rb +53 -0
  28. data/lib/jekyll/generator.rb +7 -0
  29. data/lib/jekyll/generators/pagination.rb +87 -0
  30. data/lib/jekyll/layout.rb +36 -0
  31. data/lib/jekyll/migrators/csv.rb +26 -0
  32. data/lib/jekyll/migrators/drupal.rb +86 -0
  33. data/lib/jekyll/migrators/marley.rb +53 -0
  34. data/lib/jekyll/migrators/mephisto.rb +79 -0
  35. data/lib/jekyll/migrators/mt.rb +77 -0
  36. data/lib/jekyll/migrators/textpattern.rb +50 -0
  37. data/lib/jekyll/migrators/typo.rb +49 -0
  38. data/lib/jekyll/migrators/wordpress.com.rb +38 -0
  39. data/lib/jekyll/migrators/wordpress.rb +56 -0
  40. data/lib/jekyll/page.rb +134 -0
  41. data/lib/jekyll/plugin.rb +76 -0
  42. data/lib/jekyll/post.rb +244 -0
  43. data/lib/jekyll/site.rb +273 -0
  44. data/lib/jekyll/static_file.rb +75 -0
  45. data/lib/jekyll/tags/highlight.rb +73 -0
  46. data/lib/jekyll/tags/include.rb +37 -0
  47. data/test/helper.rb +34 -0
  48. data/test/source/.htaccess +8 -0
  49. data/test/source/_includes/sig.markdown +3 -0
  50. data/test/source/_layouts/default.html +27 -0
  51. data/test/source/_layouts/simple.html +1 -0
  52. data/test/source/_posts/2008-02-02-not-published.textile +8 -0
  53. data/test/source/_posts/2008-02-02-published.textile +8 -0
  54. data/test/source/_posts/2008-10-18-foo-bar.textile +8 -0
  55. data/test/source/_posts/2008-11-21-complex.textile +8 -0
  56. data/test/source/_posts/2008-12-03-permalinked-post.textile +9 -0
  57. data/test/source/_posts/2008-12-13-include.markdown +8 -0
  58. data/test/source/_posts/2009-01-27-array-categories.textile +10 -0
  59. data/test/source/_posts/2009-01-27-categories.textile +7 -0
  60. data/test/source/_posts/2009-01-27-category.textile +7 -0
  61. data/test/source/_posts/2009-01-27-empty-categories.textile +7 -0
  62. data/test/source/_posts/2009-01-27-empty-category.textile +7 -0
  63. data/test/source/_posts/2009-03-12-hash-#1.markdown +6 -0
  64. data/test/source/_posts/2009-05-18-empty-tag.textile +6 -0
  65. data/test/source/_posts/2009-05-18-empty-tags.textile +6 -0
  66. data/test/source/_posts/2009-05-18-tag.textile +6 -0
  67. data/test/source/_posts/2009-05-18-tags.textile +9 -0
  68. data/test/source/_posts/2009-06-22-empty-yaml.textile +3 -0
  69. data/test/source/_posts/2009-06-22-no-yaml.textile +1 -0
  70. data/test/source/_posts/2010-01-08-triple-dash.markdown +5 -0
  71. data/test/source/_posts/2010-01-09-date-override.textile +7 -0
  72. data/test/source/_posts/2010-01-09-time-override.textile +7 -0
  73. data/test/source/_posts/2010-01-09-timezone-override.textile +7 -0
  74. data/test/source/_posts/2010-01-16-override-data.textile +4 -0
  75. data/test/source/about.html +6 -0
  76. data/test/source/category/_posts/2008-9-23-categories.textile +6 -0
  77. data/test/source/contacts.html +5 -0
  78. data/test/source/css/screen.css +76 -0
  79. data/test/source/deal.with.dots.html +7 -0
  80. data/test/source/foo/_posts/bar/2008-12-12-topical-post.textile +8 -0
  81. data/test/source/index.html +22 -0
  82. data/test/source/sitemap.xml +32 -0
  83. data/test/source/win/_posts/2009-05-24-yaml-linebreak.markdown +7 -0
  84. data/test/source/z_category/_posts/2008-9-23-categories.textile +6 -0
  85. data/test/suite.rb +9 -0
  86. data/test/test_configuration.rb +29 -0
  87. data/test/test_core_ext.rb +66 -0
  88. data/test/test_filters.rb +53 -0
  89. data/test/test_generated_site.rb +72 -0
  90. data/test/test_kramdown.rb +23 -0
  91. data/test/test_page.rb +117 -0
  92. data/test/test_pager.rb +113 -0
  93. data/test/test_post.rb +396 -0
  94. data/test/test_rdiscount.rb +18 -0
  95. data/test/test_site.rb +186 -0
  96. data/test/test_tags.rb +127 -0
  97. metadata +332 -0
@@ -0,0 +1,16 @@
1
+ require 'fileutils'
2
+ require 'rr'
3
+ require 'test/unit'
4
+
5
+ World do
6
+ include Test::Unit::Assertions
7
+ end
8
+
9
+ TEST_DIR = File.join('/', 'tmp', 'jekyll')
10
+ JEKYLL_PATH = File.join(ENV['PWD'], 'bin', 'jekyll')
11
+
12
+ def run_jekyll(opts = {})
13
+ command = JEKYLL_PATH
14
+ command << " >> /dev/null 2>&1" if opts[:debug].nil?
15
+ system command
16
+ end
@@ -0,0 +1,140 @@
1
+ Gem::Specification.new do |s|
2
+ s.specification_version = 2 if s.respond_to? :specification_version=
3
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
4
+ s.rubygems_version = '1.3.5'
5
+
6
+ s.name = 'fagiani-jekyll'
7
+ s.version = '0.10.1'
8
+ s.date = '2011-02-09'
9
+ s.rubyforge_project = 'jekyll'
10
+
11
+ s.summary = "A simple, blog aware, static site generator."
12
+ s.description = "Jekyll is a simple, blog aware, static site generator."
13
+
14
+ s.authors = ["Tom Preston-Werner"]
15
+ s.email = 'tom@mojombo.com'
16
+ s.homepage = 'http://github.com/mojombo/jekyll'
17
+
18
+ s.require_paths = %w[lib]
19
+
20
+ s.executables = ["jekyll"]
21
+ s.default_executable = 'jekyll'
22
+
23
+ s.rdoc_options = ["--charset=UTF-8"]
24
+ s.extra_rdoc_files = %w[README.textile LICENSE]
25
+
26
+ s.add_runtime_dependency('liquid', [">= 1.9.0"])
27
+ s.add_runtime_dependency('classifier', [">= 1.3.1"])
28
+ s.add_runtime_dependency('directory_watcher', [">= 1.1.1"])
29
+ s.add_runtime_dependency('maruku', [">= 0.5.9"])
30
+
31
+ s.add_development_dependency('redgreen', [">= 4.2.1"])
32
+ s.add_development_dependency('shoulda', [">= 4.2.1"])
33
+ s.add_development_dependency('rr', [">= 4.2.1"])
34
+ s.add_development_dependency('cucumber', [">= 4.2.1"])
35
+ s.add_development_dependency('RedCloth', [">= 4.2.1"])
36
+ s.add_development_dependency('kramdown', [">= 0.12.0"])
37
+
38
+ # = MANIFEST =
39
+ s.files = %w[
40
+ History.txt
41
+ LICENSE
42
+ README.textile
43
+ Rakefile
44
+ bin/jekyll
45
+ cucumber.yml
46
+ features/create_sites.feature
47
+ features/embed_filters.feature
48
+ features/markdown.feature
49
+ features/pagination.feature
50
+ features/permalinks.feature
51
+ features/post_data.feature
52
+ features/site_configuration.feature
53
+ features/site_data.feature
54
+ features/step_definitions/jekyll_steps.rb
55
+ features/support/env.rb
56
+ jekyll.gemspec
57
+ lib/jekyll.rb
58
+ lib/jekyll/albino.rb
59
+ lib/jekyll/converter.rb
60
+ lib/jekyll/converters/identity.rb
61
+ lib/jekyll/converters/markdown.rb
62
+ lib/jekyll/converters/textile.rb
63
+ lib/jekyll/convertible.rb
64
+ lib/jekyll/core_ext.rb
65
+ lib/jekyll/errors.rb
66
+ lib/jekyll/filters.rb
67
+ lib/jekyll/generator.rb
68
+ lib/jekyll/generators/pagination.rb
69
+ lib/jekyll/layout.rb
70
+ lib/jekyll/migrators/csv.rb
71
+ lib/jekyll/migrators/drupal.rb
72
+ lib/jekyll/migrators/marley.rb
73
+ lib/jekyll/migrators/mephisto.rb
74
+ lib/jekyll/migrators/mt.rb
75
+ lib/jekyll/migrators/textpattern.rb
76
+ lib/jekyll/migrators/typo.rb
77
+ lib/jekyll/migrators/wordpress.com.rb
78
+ lib/jekyll/migrators/wordpress.rb
79
+ lib/jekyll/page.rb
80
+ lib/jekyll/plugin.rb
81
+ lib/jekyll/post.rb
82
+ lib/jekyll/site.rb
83
+ lib/jekyll/static_file.rb
84
+ lib/jekyll/tags/highlight.rb
85
+ lib/jekyll/tags/include.rb
86
+ test/helper.rb
87
+ test/source/.htaccess
88
+ test/source/_includes/sig.markdown
89
+ test/source/_layouts/default.html
90
+ test/source/_layouts/simple.html
91
+ test/source/_posts/2008-02-02-not-published.textile
92
+ test/source/_posts/2008-02-02-published.textile
93
+ test/source/_posts/2008-10-18-foo-bar.textile
94
+ test/source/_posts/2008-11-21-complex.textile
95
+ test/source/_posts/2008-12-03-permalinked-post.textile
96
+ test/source/_posts/2008-12-13-include.markdown
97
+ test/source/_posts/2009-01-27-array-categories.textile
98
+ test/source/_posts/2009-01-27-categories.textile
99
+ test/source/_posts/2009-01-27-category.textile
100
+ test/source/_posts/2009-01-27-empty-categories.textile
101
+ test/source/_posts/2009-01-27-empty-category.textile
102
+ test/source/_posts/2009-03-12-hash-#1.markdown
103
+ test/source/_posts/2009-05-18-empty-tag.textile
104
+ test/source/_posts/2009-05-18-empty-tags.textile
105
+ test/source/_posts/2009-05-18-tag.textile
106
+ test/source/_posts/2009-05-18-tags.textile
107
+ test/source/_posts/2009-06-22-empty-yaml.textile
108
+ test/source/_posts/2009-06-22-no-yaml.textile
109
+ test/source/_posts/2010-01-08-triple-dash.markdown
110
+ test/source/_posts/2010-01-09-date-override.textile
111
+ test/source/_posts/2010-01-09-time-override.textile
112
+ test/source/_posts/2010-01-09-timezone-override.textile
113
+ test/source/_posts/2010-01-16-override-data.textile
114
+ test/source/about.html
115
+ test/source/category/_posts/2008-9-23-categories.textile
116
+ test/source/contacts.html
117
+ test/source/css/screen.css
118
+ test/source/deal.with.dots.html
119
+ test/source/foo/_posts/bar/2008-12-12-topical-post.textile
120
+ test/source/index.html
121
+ test/source/sitemap.xml
122
+ test/source/win/_posts/2009-05-24-yaml-linebreak.markdown
123
+ test/source/z_category/_posts/2008-9-23-categories.textile
124
+ test/suite.rb
125
+ test/test_configuration.rb
126
+ test/test_core_ext.rb
127
+ test/test_filters.rb
128
+ test/test_generated_site.rb
129
+ test/test_kramdown.rb
130
+ test/test_page.rb
131
+ test/test_pager.rb
132
+ test/test_post.rb
133
+ test/test_rdiscount.rb
134
+ test/test_site.rb
135
+ test/test_tags.rb
136
+ ]
137
+ # = MANIFEST =
138
+
139
+ s.test_files = s.files.select { |path| path =~ /^test\/test_.*\.rb/ }
140
+ end
@@ -0,0 +1,125 @@
1
+ $:.unshift File.dirname(__FILE__) # For use/testing when no gem is installed
2
+
3
+ # Require all of the Ruby files in the given directory.
4
+ #
5
+ # path - The String relative path from here to the directory.
6
+ #
7
+ # Returns nothing.
8
+ def require_all(path)
9
+ glob = File.join(File.dirname(__FILE__), path, '*.rb')
10
+ Dir[glob].each do |f|
11
+ require f
12
+ end
13
+ end
14
+
15
+ # rubygems
16
+ require 'rubygems'
17
+
18
+ # stdlib
19
+ require 'fileutils'
20
+ require 'time'
21
+ require 'yaml'
22
+
23
+ # 3rd party
24
+ require 'liquid'
25
+ require 'maruku'
26
+
27
+ # internal requires
28
+ require 'jekyll/core_ext'
29
+ require 'jekyll/site'
30
+ require 'jekyll/convertible'
31
+ require 'jekyll/layout'
32
+ require 'jekyll/page'
33
+ require 'jekyll/post'
34
+ require 'jekyll/filters'
35
+ require 'jekyll/albino'
36
+ require 'jekyll/static_file'
37
+ require 'jekyll/errors'
38
+
39
+ # extensions
40
+ require 'jekyll/plugin'
41
+ require 'jekyll/converter'
42
+ require 'jekyll/generator'
43
+ require_all 'jekyll/converters'
44
+ require_all 'jekyll/generators'
45
+ require_all 'jekyll/tags'
46
+
47
+ module Jekyll
48
+ VERSION = '0.10.0'
49
+
50
+ # Default options. Overriden by values in _config.yml or command-line opts.
51
+ # (Strings rather symbols used for compatability with YAML).
52
+ DEFAULTS = {
53
+ 'safe' => false,
54
+ 'auto' => false,
55
+ 'server' => false,
56
+ 'server_port' => 4000,
57
+
58
+ 'source' => Dir.pwd,
59
+ 'destination' => File.join(Dir.pwd, '_site'),
60
+ 'plugins' => File.join(Dir.pwd, '_plugins'),
61
+
62
+ 'future' => true,
63
+ 'lsi' => false,
64
+ 'pygments' => false,
65
+ 'markdown' => 'maruku',
66
+ 'permalink' => 'date',
67
+
68
+ 'maruku' => {
69
+ 'use_tex' => false,
70
+ 'use_divs' => false,
71
+ 'png_engine' => 'blahtex',
72
+ 'png_dir' => 'images/latex',
73
+ 'png_url' => '/images/latex'
74
+ },
75
+ 'rdiscount' => {
76
+ 'extensions' => []
77
+ },
78
+ 'kramdown' => {
79
+ 'auto_ids' => true,
80
+ 'footnote_nr' => 1,
81
+ 'entity_output' => 'as_char',
82
+ 'toc_levels' => '1..6',
83
+ 'use_coderay' => false,
84
+
85
+ 'coderay' => {
86
+ 'coderay_wrap' => 'div',
87
+ 'coderay_line_numbers' => 'inline',
88
+ 'coderay_line_number_start' => 1,
89
+ 'coderay_tab_width' => 4,
90
+ 'coderay_bold_every' => 10,
91
+ 'coderay_css' => 'style'
92
+ }
93
+ }
94
+ }
95
+
96
+ # Generate a Jekyll configuration Hash by merging the default options
97
+ # with anything in _config.yml, and adding the given options on top.
98
+ #
99
+ # override - A Hash of config directives that override any options in both
100
+ # the defaults and the config file. See Jekyll::DEFAULTS for a
101
+ # list of option names and their defaults.
102
+ #
103
+ # Returns the final configuration Hash.
104
+ def self.configuration(override)
105
+ # _config.yml may override default source location, but until
106
+ # then, we need to know where to look for _config.yml
107
+ source = override['source'] || Jekyll::DEFAULTS['source']
108
+
109
+ # Get configuration from <source>/_config.yml
110
+ config_file = File.join(source, '_config.yml')
111
+ begin
112
+ config = YAML.load_file(config_file)
113
+ raise "Invalid configuration - #{config_file}" if !config.is_a?(Hash)
114
+ $stdout.puts "Configuration from #{config_file}"
115
+ rescue => err
116
+ $stderr.puts "WARNING: Could not read configuration. " +
117
+ "Using defaults (and options)."
118
+ $stderr.puts "\t" + err.to_s
119
+ config = {}
120
+ end
121
+
122
+ # Merge DEFAULTS < _config.yml < override
123
+ Jekyll::DEFAULTS.deep_merge(config).deep_merge(override)
124
+ end
125
+ end
@@ -0,0 +1,120 @@
1
+ ##
2
+ # Wrapper for the Pygments command line tool, pygmentize.
3
+ #
4
+ # Pygments: http://pygments.org/
5
+ #
6
+ # Assumes pygmentize is in the path. If not, set its location
7
+ # with Albino.bin = '/path/to/pygmentize'
8
+ #
9
+ # Use like so:
10
+ #
11
+ # @syntaxer = Albino.new('/some/file.rb', :ruby)
12
+ # puts @syntaxer.colorize
13
+ #
14
+ # This'll print out an HTMLized, Ruby-highlighted version
15
+ # of '/some/file.rb'.
16
+ #
17
+ # To use another formatter, pass it as the third argument:
18
+ #
19
+ # @syntaxer = Albino.new('/some/file.rb', :ruby, :bbcode)
20
+ # puts @syntaxer.colorize
21
+ #
22
+ # You can also use the #colorize class method:
23
+ #
24
+ # puts Albino.colorize('/some/file.rb', :ruby)
25
+ #
26
+ # Another also: you get a #to_s, for somewhat nicer use in Rails views.
27
+ #
28
+ # ... helper file ...
29
+ # def highlight(text)
30
+ # Albino.new(text, :ruby)
31
+ # end
32
+ #
33
+ # ... view file ...
34
+ # <%= highlight text %>
35
+ #
36
+ # The default lexer is 'text'. You need to specify a lexer yourself;
37
+ # because we are using STDIN there is no auto-detect.
38
+ #
39
+ # To see all lexers and formatters available, run `pygmentize -L`.
40
+ #
41
+ # Chris Wanstrath // chris@ozmm.org
42
+ # GitHub // http://github.com
43
+ #
44
+
45
+ class Albino
46
+ @@bin = Rails.development? ? 'pygmentize' : '/usr/bin/pygmentize' rescue 'pygmentize'
47
+
48
+ def self.bin=(path)
49
+ @@bin = path
50
+ end
51
+
52
+ def self.colorize(*args)
53
+ new(*args).colorize
54
+ end
55
+
56
+ def initialize(target, lexer = :text, format = :html)
57
+ @target = target
58
+ @options = { :l => lexer, :f => format, :O => 'encoding=utf-8' }
59
+ end
60
+
61
+ def execute(command)
62
+ output = ''
63
+ IO.popen(command, mode='r+') do |p|
64
+ p.write @target
65
+ p.close_write
66
+ output = p.read.strip
67
+ end
68
+ output
69
+ end
70
+
71
+ def colorize(options = {})
72
+ html = execute(@@bin + convert_options(options))
73
+ # Work around an RDiscount bug: http://gist.github.com/97682
74
+ html.to_s.sub(%r{</pre></div>\Z}, "</pre>\n</div>")
75
+ end
76
+ alias_method :to_s, :colorize
77
+
78
+ def convert_options(options = {})
79
+ @options.merge(options).inject('') do |string, (flag, value)|
80
+ string + " -#{flag} #{value}"
81
+ end
82
+ end
83
+ end
84
+
85
+ if $0 == __FILE__
86
+ require 'rubygems'
87
+ require 'test/spec'
88
+ require 'mocha'
89
+ begin require 'redgreen'; rescue LoadError; end
90
+
91
+ context "Albino" do
92
+ setup do
93
+ @syntaxer = Albino.new(__FILE__, :ruby)
94
+ end
95
+
96
+ specify "defaults to text" do
97
+ syntaxer = Albino.new(__FILE__)
98
+ syntaxer.expects(:execute).with('pygmentize -f html -l text').returns(true)
99
+ syntaxer.colorize
100
+ end
101
+
102
+ specify "accepts options" do
103
+ @syntaxer.expects(:execute).with('pygmentize -f html -l ruby').returns(true)
104
+ @syntaxer.colorize
105
+ end
106
+
107
+ specify "works with strings" do
108
+ syntaxer = Albino.new('class New; end', :ruby)
109
+ assert_match %r(highlight), syntaxer.colorize
110
+ end
111
+
112
+ specify "aliases to_s" do
113
+ assert_equal @syntaxer.colorize, @syntaxer.to_s
114
+ end
115
+
116
+ specify "class method colorize" do
117
+ assert_equal @syntaxer.colorize, Albino.colorize(__FILE__, :ruby)
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,50 @@
1
+ module Jekyll
2
+
3
+ class Converter < Plugin
4
+ # Public: Get or set the pygments prefix. When an argument is specified,
5
+ # the prefix will be set. If no argument is specified, the current prefix
6
+ # will be returned.
7
+ #
8
+ # pygments_prefix - The String prefix (default: nil).
9
+ #
10
+ # Returns the String prefix.
11
+ def self.pygments_prefix(pygments_prefix = nil)
12
+ @pygments_prefix = pygments_prefix if pygments_prefix
13
+ @pygments_prefix
14
+ end
15
+
16
+ # Public: Get or set the pygments suffix. When an argument is specified,
17
+ # the suffix will be set. If no argument is specified, the current suffix
18
+ # will be returned.
19
+ #
20
+ # pygments_suffix - The String suffix (default: nil).
21
+ #
22
+ # Returns the String suffix.
23
+ def self.pygments_suffix(pygments_suffix = nil)
24
+ @pygments_suffix = pygments_suffix if pygments_suffix
25
+ @pygments_suffix
26
+ end
27
+
28
+ # Initialize the converter.
29
+ #
30
+ # Returns an initialized Converter.
31
+ def initialize(config = {})
32
+ @config = config
33
+ end
34
+
35
+ # Get the pygments prefix.
36
+ #
37
+ # Returns the String prefix.
38
+ def pygments_prefix
39
+ self.class.pygments_prefix
40
+ end
41
+
42
+ # Get the pygments suffix.
43
+ #
44
+ # Returns the String suffix.
45
+ def pygments_suffix
46
+ self.class.pygments_suffix
47
+ end
48
+ end
49
+
50
+ end