majek 0.1.2 → 0.1.3

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.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YjgwM2QwZTU3OGQyNjFhNmYwMzgxOWY1NDc0YzZkOWEyNjQyYjllMw==
5
+ data.tar.gz: !binary |-
6
+ OWEzZDI3NmVhM2NkZGNkMWZjMmYxYmQ3YzdmYzgyNmRiZGY5ODk4OA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ ODBlZmJjNWE2NGE2ODg2NzBlNDQ2MGZhZDdkZmQ1YzMwM2EyNzlhYmQyOTE0
10
+ MDgyMGVjNTY4YzIzNmQ3YjhlNjM5NDgyMzEzODU2MDFjNDI1NmYyOTlmZGRl
11
+ ZGNmZGIzODk0OWM4YThkZDlhNzY2NDJkMjZiNzg2Mjk4N2IyYzA=
12
+ data.tar.gz: !binary |-
13
+ MWY0N2E5ODhjNTc1MTgxMjA0MmE2YTJmNTZmMGVhNjVhYzc1NjVhYTc5ODE5
14
+ YmI0OTBhM2RlMTdmODkxYThlOGExMTJhMDE0ZjVlMDhkYzFkZjU3Zjk3NzBh
15
+ ZjAxZDY1MDg5YjdkNmMyOWRmMzcyNWU1ZmQ3OWI5NmQwYWU1YzU=
@@ -0,0 +1,14 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 1.8.7
5
+ - 1.9.3
6
+ - 2.0.0
7
+
8
+ install: bundle install
9
+
10
+ script: bundle exec rake build
11
+
12
+ branches:
13
+ only:
14
+ - master
@@ -0,0 +1,27 @@
1
+ v0.1.3 (Mar 11 2013)
2
+ --------------------
3
+
4
+ * Only set post layout and post title in YAML front matter.
5
+ * Use post title *New Post* if none can be found.
6
+ * Read Markdown from standard input if file is absent.
7
+ * Add Travis config (no tests yet).
8
+ * Add this CHANGELOG file.
9
+ * Update to md_inc v0.2.9.
10
+ * Update README.
11
+
12
+ v0.1.2 (Feb 14 2013)
13
+ --------------------
14
+
15
+ * Big README update.
16
+
17
+ v0.1.1 (Feb 13 2013)
18
+ --------------------
19
+
20
+ * Add gemspec; source it in Gemfile.
21
+ * Add Rakefile.
22
+ * Add .gitignore.
23
+
24
+ v0.1.0 (Feb 13 2013)
25
+ --------------------
26
+
27
+ * First tagged version.
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
- source :rubygems
1
+ source 'https://rubygems.org/'
2
2
 
3
3
  gemspec
@@ -1,13 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- majek (0.1.2)
5
- md_inc
4
+ majek (0.1.3)
5
+ md_inc (>= 0.2.9)
6
6
 
7
7
  GEM
8
- remote: http://rubygems.org/
8
+ remote: https://rubygems.org/
9
9
  specs:
10
- md_inc (0.2.7)
10
+ md_inc (0.2.9)
11
11
  rake (10.0.3)
12
12
 
13
13
  PLATFORMS
data/README.md CHANGED
@@ -1,15 +1,15 @@
1
1
  Majek
2
2
  =====
3
3
 
4
- Majek is a preprocessor for Jekyll/Octopress blog posts that helps you to
5
- concentrate on writing. It allows you to include other files from your Markdown
6
- (thanks to [md_inc]) and produce posts in Jekyll format.
4
+ Majek is a preprocessor for Jekyll blog posts that helps you to concentrate on
5
+ writing. It allows you to include other files from your Markdown (thanks to
6
+ [md_inc]) and produce posts in Jekyll format.
7
7
 
8
8
  Majek is especially helpful when you're writing Markdown with a tool like
9
9
  [iA Writer] that is more about prose and less about code. Instead of including
10
10
  bulky code snippets directly in your Markdown file, you simply insert short
11
- commands like `.inc 'foo.txt'` or `.codeblock 'bar.rb'`, which will then be
12
- expanded by Majek.
11
+ commands like `.inc 'foo.txt'` or `.highlight 'bar.rb', 'ruby'`, which will then
12
+ be expanded by Majek.
13
13
 
14
14
 
15
15
  Installation
@@ -30,20 +30,37 @@ Alternatively, you can install the gem from source:
30
30
  Usage
31
31
  -----
32
32
 
33
- usage: majek <markdown file>
33
+ usage: majek [<markdown file>]
34
34
 
35
- Simply pass Majek a Markdown file and it will do the following:
35
+ Simply pass Majek a Markdown file and it will do the following (if the file is
36
+ absent, Majek reads from the standard input):
36
37
 
37
38
  - read the contents of the Markdown file
38
39
  - process the text with md_inc which provides commands to include other text
39
- files (`.inc`) and code (`.code_inc`) and more
40
- - process the text using custom md_inc commands for Octopress, see below
41
- - add a Jekyll header with title, date, categories, etc. (will be configurable
42
- in the future)
40
+ files, code snippets, and much more (see Commands)
41
+ - add Jekyll's YAML front matter with post layout and post title (will be
42
+ configurable in the future)
43
43
  - output the final text to screen
44
44
 
45
- In addition to the default commands of md_inc, Majek provides the following
46
- Octopress-specific commands:
45
+
46
+ Commands
47
+ --------
48
+
49
+ Majek provides all commands that come with md_inc as well as some additional
50
+ commands for Jekyll and Octopress:
51
+
52
+ ### md_inc
53
+
54
+ - `.inc path`
55
+ - `.code_inc path [,language]`
56
+
57
+ Read the documentation of [md_inc] to learn more.
58
+
59
+ ### Jekyll
60
+
61
+ - `.highlight path, language`
62
+
63
+ ### Octopress
47
64
 
48
65
  - `.blockquote path [,attributes...]`
49
66
  - `.codeblock path [,attributes...]`
@@ -55,8 +72,6 @@ Octopress-specific commands:
55
72
  - `.render_partial [attributes...]`
56
73
  - `.video [attributes...]`
57
74
 
58
- Make sure to also read the documentation of [md_inc] to learn more.
59
-
60
75
 
61
76
  Examples
62
77
  --------
@@ -78,9 +93,6 @@ $ majek one_month_of_coderwall_protips.md
78
93
  ---
79
94
  layout: post
80
95
  title: "One Month of Coderwall Protips"
81
- date: 2013-02-14 11:01:09 +0100
82
- comments: true
83
- categories:
84
96
  ---
85
97
 
86
98
  On 1 January 2013, I signed up on [Coderwall](https://coderwall.com/) -- a place
@@ -1,5 +1,7 @@
1
1
  require 'md_inc'
2
-
2
+ require 'md_inc/jekyll_commands'
3
3
  require 'md_inc/octopress_commands'
4
+
4
5
  require 'majek/application'
6
+ require 'majek/jekyll_page'
5
7
  require 'majek/version'
@@ -3,24 +3,28 @@ module Majek
3
3
  MATCH_TITLE = %r{^# (.+)$}
4
4
 
5
5
  def initialize(argv)
6
- @filename = argv.first
7
- @base_dir = File.dirname(File.expand_path(@filename))
6
+ if argv.empty?
7
+ @markdown = STDIN.read
8
+ @base_dir = nil
9
+ else
10
+ filename = argv.first
11
+ @markdown = File.read(filename)
12
+ @base_dir = File.dirname(File.expand_path(filename))
13
+ end
8
14
  end
9
15
 
10
16
  def run
11
- markdown = File.read(@filename)
12
- title = markdown.match(MATCH_TITLE)[1]
13
- jekyll_body = markdown.gsub(MATCH_TITLE, '')
14
- jekyll_header = %Q(---
15
- layout: post
16
- title: "#{title}"
17
- date: #{Time.now}
18
- comments: true
19
- categories:
20
- ---)
21
- MdInc::Commands::root(@base_dir)
17
+ match = @markdown.match(MATCH_TITLE)
18
+ title = match ? match[1] : 'New Post'
19
+ content = @markdown.sub(MATCH_TITLE, '').sub(/\n*/, '')
20
+
22
21
  tp = MdInc::TextProcessor.new
23
- puts tp.process(jekyll_header + jekyll_body)
22
+ tp.root(@base_dir) unless @base_dir.nil?
23
+ content = tp.process(content)
24
+
25
+ # TODO make variables configurable
26
+ page = JekyllPage.new content, :layout => 'post', :title => "\"#{title}\""
27
+ puts page.render
24
28
  end
25
29
  end
26
30
  end
@@ -0,0 +1,20 @@
1
+ module Majek
2
+ class JekyllPage
3
+ def initialize(content, vars=nil)
4
+ @content = content
5
+ @vars = vars || Hash.new
6
+ end
7
+
8
+ def content
9
+ @content
10
+ end
11
+
12
+ def front_matter
13
+ ['---', @vars.map { |k, v| "#{k}: #{v}" }, '---'].join("\n")
14
+ end
15
+
16
+ def render
17
+ [front_matter, '', content].join("\n")
18
+ end
19
+ end
20
+ end
@@ -1,3 +1,3 @@
1
1
  module Majek
2
- VERSION = '0.1.2'
2
+ VERSION = '0.1.3'
3
3
  end
@@ -0,0 +1,35 @@
1
+ # Add Jekyll commands to MdInc.
2
+ module MdInc
3
+ module Commands
4
+ class << self
5
+ def jekyll_tag(name, attrs=[], lines=[])
6
+ output = []
7
+ output << "{% #{([name] + attrs).join(" ")} %}"
8
+ unless lines.empty?
9
+ output += lines
10
+ output << "{% end#{name} %}"
11
+ end
12
+ output
13
+ end
14
+
15
+ # Public: Jekyll command to include code that should be highlighted from
16
+ # a file.
17
+ #
18
+ # path - Path to the file to be included.
19
+ # language - Language identifier
20
+ #
21
+ # Examples
22
+ #
23
+ # .highlight 'snippets/stub-spec.rb', 'ruby'
24
+ # # =>
25
+ # # {% highlight ruby %}
26
+ # # contents of snippets/stub-spec.rb
27
+ # # {% endhighlight %}
28
+ #
29
+ # Returns the Jekyll tag as a String Array.
30
+ def highlight(path, language)
31
+ jekyll_tag(:highlight, [language], inc(path))
32
+ end
33
+ end
34
+ end
35
+ end
@@ -2,16 +2,6 @@
2
2
  module MdInc
3
3
  module Commands
4
4
  class << self
5
- def octo_tag(name, attrs=[], lines=[])
6
- output = []
7
- output << "{% #{([name] + attrs).join(" ")} %}"
8
- unless lines.empty?
9
- output += lines
10
- output << "{% end#{name} %}"
11
- end
12
- output
13
- end
14
-
15
5
  # Public: Octopress command to include other files.
16
6
  #
17
7
  # path - Path to the file to be included.
@@ -19,15 +9,15 @@ module MdInc
19
9
  #
20
10
  # Examples
21
11
  #
22
- # .codeblock 'snippets/stub-spec.rb', 'ruby'
12
+ # .codeblock 'snippets/stub-spec.rb', 'lang:ruby'
23
13
  # # =>
24
- # # {% codeblock ruby %}
14
+ # # {% codeblock lang:ruby %}
25
15
  # # contents of snippets/stub-spec.rb
26
16
  # # {% endcodeblock %}
27
17
  #
28
18
  # Returns the Octopress tag as a String Array.
29
19
  %w(blockquote codeblock pullquote).each do |meth|
30
- define_method(meth) { |path, *attrs| octo_tag(meth, attrs, inc(path)) }
20
+ define_method(meth) { |path, *attrs| jekyll_tag(meth, attrs, inc(path)) }
31
21
  end
32
22
 
33
23
  # Public: Octopress command that doesn't include anything; only added for
@@ -45,7 +35,7 @@ module MdInc
45
35
  #
46
36
  # Returns the Octopress tag as a String Array.
47
37
  %w(gist img include_code jsfiddle render_partial video).each do |meth|
48
- define_method(meth) { |*attrs| octo_tag(meth, attrs) }
38
+ define_method(meth) { |*attrs| jekyll_tag(meth, attrs) }
49
39
  end
50
40
  end
51
41
  end
@@ -4,7 +4,7 @@ require File.expand_path('../lib/majek/version', __FILE__)
4
4
  Gem::Specification.new do |s|
5
5
  s.authors = ['Mathias Lafeldt']
6
6
  s.email = ['mathias.lafeldt@gmail.com']
7
- s.description = %q{A preprocessor for Jekyll/Octopress blog posts that helps you to concentrate on writing}
7
+ s.description = %q{A preprocessor for Jekyll blog posts that helps you to concentrate on writing}
8
8
  s.summary = s.description
9
9
  s.homepage = 'http://mlafeldt.github.com/majek'
10
10
  s.license = 'MIT'
@@ -16,6 +16,6 @@ Gem::Specification.new do |s|
16
16
  s.require_paths = ['lib']
17
17
  s.version = Majek::VERSION
18
18
 
19
- s.add_dependency 'md_inc'
19
+ s.add_dependency 'md_inc', '>= 0.2.9'
20
20
  s.add_development_dependency 'rake'
21
21
  end
metadata CHANGED
@@ -1,36 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: majek
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
5
- prerelease:
4
+ version: 0.1.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Mathias Lafeldt
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-14 00:00:00.000000000 Z
11
+ date: 2013-03-11 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: md_inc
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
21
- version: '0'
19
+ version: 0.2.9
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ! '>='
28
25
  - !ruby/object:Gem::Version
29
- version: '0'
26
+ version: 0.2.9
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ! '>='
36
32
  - !ruby/object:Gem::Version
@@ -38,13 +34,12 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ! '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
- description: A preprocessor for Jekyll/Octopress blog posts that helps you to concentrate
47
- on writing
41
+ description: A preprocessor for Jekyll blog posts that helps you to concentrate on
42
+ writing
48
43
  email:
49
44
  - mathias.lafeldt@gmail.com
50
45
  executables:
@@ -53,6 +48,8 @@ extensions: []
53
48
  extra_rdoc_files: []
54
49
  files:
55
50
  - .gitignore
51
+ - .travis.yml
52
+ - CHANGELOG.md
56
53
  - Gemfile
57
54
  - Gemfile.lock
58
55
  - LICENSE
@@ -61,39 +58,33 @@ files:
61
58
  - bin/majek
62
59
  - lib/majek.rb
63
60
  - lib/majek/application.rb
61
+ - lib/majek/jekyll_page.rb
64
62
  - lib/majek/version.rb
63
+ - lib/md_inc/jekyll_commands.rb
65
64
  - lib/md_inc/octopress_commands.rb
66
65
  - majek.gemspec
67
66
  homepage: http://mlafeldt.github.com/majek
68
67
  licenses:
69
68
  - MIT
69
+ metadata: {}
70
70
  post_install_message:
71
71
  rdoc_options: []
72
72
  require_paths:
73
73
  - lib
74
74
  required_ruby_version: !ruby/object:Gem::Requirement
75
- none: false
76
75
  requirements:
77
76
  - - ! '>='
78
77
  - !ruby/object:Gem::Version
79
78
  version: '0'
80
- segments:
81
- - 0
82
- hash: 204157305799219663
83
79
  required_rubygems_version: !ruby/object:Gem::Requirement
84
- none: false
85
80
  requirements:
86
81
  - - ! '>='
87
82
  - !ruby/object:Gem::Version
88
83
  version: '0'
89
- segments:
90
- - 0
91
- hash: 204157305799219663
92
84
  requirements: []
93
85
  rubyforge_project:
94
- rubygems_version: 1.8.25
86
+ rubygems_version: 2.0.2
95
87
  signing_key:
96
- specification_version: 3
97
- summary: A preprocessor for Jekyll/Octopress blog posts that helps you to concentrate
98
- on writing
88
+ specification_version: 4
89
+ summary: A preprocessor for Jekyll blog posts that helps you to concentrate on writing
99
90
  test_files: []