middleman-org 0.1.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f2cda372c2e2651915077bfb548761d0ec832213
4
- data.tar.gz: b25e56515d08b6a858414f159225c9c066601182
3
+ metadata.gz: a311d5390b08913e4ac82bcd7bb59531c3d4271f
4
+ data.tar.gz: 7eb15646043b8c664ddbd971ed0c6a0c55b5c66d
5
5
  SHA512:
6
- metadata.gz: cb94d0dc36a263675e6f65a718523fed6ff48e5db5fbb2473ad295393d164671993fb8eb13d7855bb57bac78a441087d05eb16b60d7e30850bd17ea216d3edc8
7
- data.tar.gz: e8cbe2ddae85763996df5eca673dafc8bf8cbb29acb110c0d1a58613ef2c51f298d9cc2eff9c058c34331149b086045639b706f79ea94e968f521515e50c809b
6
+ metadata.gz: 0d30c48667d5da0083fd65ea2692ba13e101fc467266679c5147d1a025bc2d5e04521f89bd52f02b559b13b797b92b4db784cf5a67e47d4db10b22ee71789695
7
+ data.tar.gz: 6d0e6436ea4300f2298a2f53484daa8c3b54c5a5c35bcd16c0aab0edfd27c8a34e26e372ab659e4ecf9344420b3d4875391faadac42971d47d9f55b084b92a52
@@ -4,12 +4,18 @@ require 'middleman-org/helpers'
4
4
 
5
5
  module Middleman
6
6
  class OrgExtension < ::Middleman::Extension
7
+ self.supports_multiple_instances = true
8
+
9
+ option :name, nil, 'Unique ID for telling multiple orgs apart'
7
10
  option :layout, 'layout', 'article specific layout'
8
11
  option :root, 'org', 'source folder for org files'
9
12
  option :prefix, nil, 'prefix on destination and root path'
10
- # option :resources, 'resources', 'folder name for resources'
13
+
14
+ option :emacs, 'emacs', 'emacs executable'
15
+ option :load, nil, 'load elisp file'
11
16
 
12
17
  attr_reader :data
18
+ attr_reader :name
13
19
 
14
20
  self.defined_helpers = [Middleman::Org::Helpers]
15
21
  def initialize(app, options_hash = {}, &block)
@@ -17,13 +23,19 @@ module Middleman
17
23
  super
18
24
 
19
25
  # Require libraries only when activated
26
+ require 'emacs-ruby'
20
27
  require 'org-ruby'
21
28
  require 'middleman-org/org_data'
29
+ ::Tilt.prefer(Tilt::OrgTemplate, 'org')
22
30
 
23
- options.root = File.join(options.prefix, options.root) if options.prefix
31
+ @name = options.name.to_sym if options.name
32
+ # options.root = File.join(options.prefix, options.root) if options.prefix
24
33
 
25
34
  app.after_configuration do
26
35
  template_extensions org: :html
36
+ if config[:org_engine] == :emacs_ruby
37
+ ::Tilt.prefer(Tilt::EmacsRuby::OrgTemplate, 'org')
38
+ end
27
39
  end
28
40
 
29
41
  # set up your extension
@@ -31,7 +43,8 @@ module Middleman
31
43
  end
32
44
 
33
45
  def after_configuration
34
- ::Middleman::Org.controller = self
46
+ @name ||= :"org#{::Middleman::Org.instances.keys.length}"
47
+ ::Middleman::Org.instances[@name] = self
35
48
 
36
49
  # Make sure ActiveSupport's TimeZone stuff has something to work with,
37
50
  # allowing people to set their desired time zone via Time.zone or
@@ -1,24 +1,38 @@
1
1
  module Middleman
2
2
  module Org
3
-
4
- def self.controller
5
- @controller ||= nil
3
+ def self.instances
4
+ @org_instances ||= {}
6
5
  end
7
6
 
8
- def self.controller=(v)
9
- @controller = v
7
+ def self.instances=(v)
8
+ @org_instances = v
10
9
  end
11
10
 
12
11
  module Helpers
13
12
  def self.included(base)
13
+ ::Middleman::Org.instances = {}
14
+ end
15
+
16
+ def org_instances
17
+ ::Middleman::Org.instances
18
+ end
19
+
20
+ def org_controller(org_name = nil)
21
+ # Warn if a non-existent org name provided
22
+ if org_name && !org_instances.keys.include?(org_name.to_sym)
23
+ fail "Non-existent org name provided: #{org_name}."
24
+ end
25
+
26
+ org_name ||= org_instances.keys.first
27
+ org_instances[org_name.to_sym]
14
28
  end
15
29
 
16
- def org_controller
17
- ::Middleman::Org.controller
30
+ def org_data(org_name = nil)
31
+ org_controller(org_name).data
18
32
  end
19
33
 
20
- def org_data
21
- org_controller.data
34
+ def org_article?
35
+ !current_article.nil?
22
36
  end
23
37
 
24
38
  def current_article
@@ -30,8 +44,8 @@ module Middleman
30
44
  end
31
45
  end
32
46
 
33
- def articles
34
- org_data.articles
47
+ def articles(org_name = nil)
48
+ org_data(org_name).articles
35
49
  end
36
50
  end
37
51
  end
@@ -42,7 +42,12 @@ module Middleman
42
42
  opts[:layout] = opts[:layout].to_s if opts[:layout].is_a? Symbol
43
43
  end
44
44
 
45
+ opts[:emacs] = org_options.emacs
46
+ opts[:load] = org_options.load
47
+
45
48
  content = super(opts, locs, &block)
49
+ # testing
50
+ # content = export source_file
46
51
  fix_links(content)
47
52
  end
48
53
 
@@ -58,19 +63,27 @@ module Middleman
58
63
  in_buffer_setting['TITLE'] || File.basename(source_file, '.*')
59
64
  end
60
65
 
61
- def tags
62
- article_tags = in_buffer_setting['KEYWORDS']
63
- return [] unless article_tags
66
+ def keywords
67
+ article_keywords = in_buffer_setting['KEYWORDS']
68
+ return [] unless article_keywords
64
69
 
65
- if article_tags.is_a? String
66
- article_tags.split(' ').map(&:strip)
70
+ if article_keywords.is_a? String
71
+ article_keywords.split(' ').map(&:strip)
67
72
  else
68
- Array(article_tags).map(&:to_s)
73
+ Array(article_keywords).map(&:to_s)
69
74
  end
70
75
  end
71
76
 
77
+ def description
78
+ in_buffer_setting['DESCRIPTION'] || 'no description'
79
+ end
80
+
81
+ def category
82
+ in_buffer_setting['CATEGORY'] || ''
83
+ end
84
+
72
85
  def published?
73
- true
86
+ in_buffer_setting['DATE'] || false
74
87
  end
75
88
 
76
89
  def body
@@ -80,7 +93,8 @@ module Middleman
80
93
  def date
81
94
  return @_date if @_date
82
95
 
83
- @_date = in_buffer_setting['DATE']
96
+ return nil unless in_buffer_setting['DATE']
97
+ @_date = Date.parse in_buffer_setting['DATE']
84
98
 
85
99
  # frontmatter_date = data['date']
86
100
 
@@ -28,15 +28,17 @@ module Middleman
28
28
  resources.each do |resource|
29
29
  next unless resource.path =~ /^#{options.root}/
30
30
 
31
- resource.destination_path = resource.path.gsub(/^#{options.root}/,
32
- options.prefix)
31
+ if options.prefix
32
+ resource.destination_path = resource
33
+ .path
34
+ .gsub(/^#{options.root}/,
35
+ options.prefix)
36
+ end
33
37
  if File.extname(resource.source_file) == '.org'
34
38
  article = convert_to_article resource
35
- puts article.source_file
36
39
  next unless publishable?(article)
37
40
  @_articles << article
38
41
  end
39
-
40
42
  end
41
43
  end
42
44
 
@@ -1,5 +1,5 @@
1
1
  module Middleman
2
2
  module Org
3
- VERSION = '0.1.0'
3
+ VERSION = '0.2.0'
4
4
  end
5
5
  end
@@ -23,4 +23,5 @@ Gem::Specification.new do |s|
23
23
  s.add_runtime_dependency('org-ruby', '~> 0.9.12')
24
24
  s.add_runtime_dependency('addressable', '~> 2.3')
25
25
  s.add_runtime_dependency('nokogiri', '~> 1.6')
26
+ s.add_runtime_dependency('emacs-ruby', '~> 0.1')
26
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-org
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xiaoxing Hu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-09 00:00:00.000000000 Z
11
+ date: 2015-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: middleman-core
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.6'
69
+ - !ruby/object:Gem::Dependency
70
+ name: emacs-ruby
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.1'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.1'
69
83
  description: Middleman extension for publishing org-mode project
70
84
  email:
71
85
  - dawnstar.hu@gmail.com