re-org 0.0.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.
- data/.gitignore +17 -0
- data/Gemfile +8 -0
- data/LICENSE +22 -0
- data/README.org +56 -0
- data/Rakefile +10 -0
- data/TODO.org +10 -0
- data/bin/re-org +32 -0
- data/lib/re-org.rb +4 -0
- data/lib/re-org/command.rb +126 -0
- data/lib/re-org/ext.rb +10 -0
- data/lib/re-org/org_file.rb +78 -0
- data/lib/re-org/templates/clockfile.org +14 -0
- data/lib/re-org/templates/jekyll-post.org +5 -0
- data/lib/re-org/templates/notebook.org +8 -0
- data/lib/re-org/templates/writing.org +19 -0
- data/lib/re-org/version.rb +3 -0
- data/re-org.gemspec +20 -0
- data/spec/command_spec.rb +62 -0
- data/spec/org_file_spec.rb +13 -0
- data/spec/spec_helper.rb +5 -0
- metadata +93 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Waldemar Quevedo
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.org
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
* ReOrg
|
2
|
+
|
3
|
+
An Org mode file organizer.
|
4
|
+
|
5
|
+
** Motivation
|
6
|
+
|
7
|
+
Instead of having tons of sparsed Org mode files everywhere,
|
8
|
+
this project attemtps to give the Org mode writer a framework
|
9
|
+
to re-organize the files in a less chaotic manner.
|
10
|
+
|
11
|
+
** Installation
|
12
|
+
|
13
|
+
=re-org= is distributed using =rubygems=:
|
14
|
+
|
15
|
+
#+begin_src sh
|
16
|
+
$ gem install re-org
|
17
|
+
#+end_src
|
18
|
+
|
19
|
+
** Usage
|
20
|
+
|
21
|
+
The idea here is to have a pair of ~todo~ and ~done~ folders.
|
22
|
+
Writings that are still in progress would go into the ~todo~ folder
|
23
|
+
and those that are considered as finished can go into the ~done~ directory.
|
24
|
+
|
25
|
+
#+begin_src sh
|
26
|
+
re-org
|
27
|
+
#+end_src
|
28
|
+
|
29
|
+
(the name of these folders could depend of the project, and it marks the difference
|
30
|
+
between the drafts and finished folders.
|
31
|
+
|
32
|
+
For example, in Jekyll the name of these folders would be ~_drafts~
|
33
|
+
and ~_posts~.
|
34
|
+
|
35
|
+
- I suppose there is another kind of folder which works as the outline
|
36
|
+
of the work that is being done. (~_clockfiles~?). Maintenance of
|
37
|
+
this file is usually done per month from my experience.
|
38
|
+
~re-org~ helps to create a new file by using the same template.
|
39
|
+
|
40
|
+
Digressions on the site itself also would go here.
|
41
|
+
|
42
|
+
These kind of entries are much more useful to post them to a site
|
43
|
+
(like ~org-remote~) where you can track and see them published on a per Headline basis
|
44
|
+
by using what is included in the ~PROPERTIES~ drawer and ~CLOCK~.
|
45
|
+
|
46
|
+
#+begin_src sh :results output
|
47
|
+
bundle exec ruby bin/re-org --help
|
48
|
+
#+end_src
|
49
|
+
|
50
|
+
** Contributing
|
51
|
+
|
52
|
+
1. Fork it
|
53
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
54
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
55
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
56
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
|
4
|
+
require 'rspec/core'
|
5
|
+
require 'rspec/core/rake_task'
|
6
|
+
|
7
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
8
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
9
|
+
spec.rspec_opts = ["--format", "documentation", "--colour"]
|
10
|
+
end
|
data/TODO.org
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
# -*- mode: org -*-
|
2
|
+
|
3
|
+
- [X] Create new file with current datetime
|
4
|
+
- [X] Put the current writings in =todo= directory
|
5
|
+
- [X] Allow to use different templates
|
6
|
+
- [ ] Completed and organized files go to the =done= folder.
|
7
|
+
- [ ] Make it possible to set a =templates= directory
|
8
|
+
- [ ] Load an Org mode file, do some changes to it, and then export it again to Org
|
9
|
+
+ Needs work on this =org-ruby= branch: [[https://github.com/wallyqs/org-ruby/commits/feature/org-exporter][link]]
|
10
|
+
- [ ] Add examples to README.org
|
data/bin/re-org
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- mode: ruby -*-
|
3
|
+
require 'docopt'
|
4
|
+
require 're-org'
|
5
|
+
|
6
|
+
doc = <<OPTIONS
|
7
|
+
|
8
|
+
re-org: A tool to help re-organize your texts written in Org mode
|
9
|
+
|
10
|
+
Usage:
|
11
|
+
re-org new <template> [--notebook=<notebook>] [--title=<title>]
|
12
|
+
re-org status [--notebook=<notebook>] [--count-keywords]
|
13
|
+
re-org templates [--name=<name>]
|
14
|
+
|
15
|
+
Options:
|
16
|
+
|
17
|
+
-h --help Show this screen.
|
18
|
+
--version Show this version.
|
19
|
+
|
20
|
+
OPTIONS
|
21
|
+
|
22
|
+
begin
|
23
|
+
require "pp"
|
24
|
+
cmd = Docopt::docopt(doc)
|
25
|
+
rescue Docopt::Exit => e
|
26
|
+
puts e.message
|
27
|
+
end
|
28
|
+
|
29
|
+
exit 1 unless cmd
|
30
|
+
|
31
|
+
o = ReOrg::Command.new(cmd)
|
32
|
+
o.execute!
|
data/lib/re-org.rb
ADDED
@@ -0,0 +1,126 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'org-ruby'
|
4
|
+
|
5
|
+
module ReOrg
|
6
|
+
|
7
|
+
class Command
|
8
|
+
|
9
|
+
CUSTOM_TEMPLATES_DIRS = ['templates', '_templates']
|
10
|
+
|
11
|
+
def initialize(options)
|
12
|
+
@options = options
|
13
|
+
end
|
14
|
+
|
15
|
+
def execute!
|
16
|
+
case true
|
17
|
+
when @options['new']
|
18
|
+
new_file
|
19
|
+
when @options['status']
|
20
|
+
show_status
|
21
|
+
when (@options['templates'] and not @options['--name'].nil?)
|
22
|
+
cat_template
|
23
|
+
when @options['templates']
|
24
|
+
show_templates
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def show_status
|
29
|
+
puts '* Current Status'.yellow
|
30
|
+
puts ''
|
31
|
+
summary = Hash.new { |h,k| h[k] = {} }
|
32
|
+
|
33
|
+
org_files = Dir["#{OrgFile.todo_dir}/*"]
|
34
|
+
org_files.each do |org_file|
|
35
|
+
org_content = Orgmode::Parser.new(File.open(org_file).read)
|
36
|
+
if org_content.in_buffer_settings["NOTEBOOK"]
|
37
|
+
notebook_name = org_content.in_buffer_settings["NOTEBOOK"]
|
38
|
+
summary[notebook_name][:texts] ||= []
|
39
|
+
summary[notebook_name][:keywords] ||= {}
|
40
|
+
summary[notebook_name][:texts] << org_content
|
41
|
+
keywords = org_content.headlines.map { |h| h.keyword }
|
42
|
+
keywords.each do |k|
|
43
|
+
summary[notebook_name][:keywords][k] ||= 0
|
44
|
+
summary[notebook_name][:keywords][k] += 1
|
45
|
+
end
|
46
|
+
else
|
47
|
+
puts "Org file without notebook defined: #{org_file}".yellow
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
summary.each_pair do |notebook, info|
|
52
|
+
puts "- #{info[:texts].count} org files for '#{notebook}' notebook".green
|
53
|
+
info[:keywords].each do |keyword, count|
|
54
|
+
keyword ||= 'NONE'
|
55
|
+
puts "#{keyword}: #{count}"
|
56
|
+
end if @options["--count-keywords"]
|
57
|
+
info[:texts].each { |o| puts ["\t", o.headlines.first].join('')}
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def show_templates
|
62
|
+
puts '* Default Templates'.yellow
|
63
|
+
puts ''
|
64
|
+
default_template_dir = File.expand_path("templates/", File.dirname(__FILE__))
|
65
|
+
default_templates = Dir["#{default_template_dir}/*"]
|
66
|
+
default_templates.each do |template|
|
67
|
+
puts "- #{File.basename(template)}\t(default)"
|
68
|
+
end
|
69
|
+
|
70
|
+
CUSTOM_TEMPLATES_DIRS.each do |template_dir|
|
71
|
+
if Dir.exists?(template_dir)
|
72
|
+
Dir["#{template_dir}/*"].each do |template|
|
73
|
+
puts "- #{File.basename(template)}\t(found at #{template_dir}/)"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def cat_template
|
80
|
+
default_template_dir = File.expand_path("templates/", File.dirname(__FILE__))
|
81
|
+
default_templates = Dir["#{default_template_dir}/*"]
|
82
|
+
template_name = default_templates.select { |path| File.basename(path) == @options['--name']}
|
83
|
+
puts File.open(template_name.first).read
|
84
|
+
rescue => e
|
85
|
+
puts "Could not fetch template '#{@options['--name']}'".red
|
86
|
+
end
|
87
|
+
|
88
|
+
def new_file
|
89
|
+
@org = OrgFile.new({ :title => @options["--title"],
|
90
|
+
:template => @options["<template>"],
|
91
|
+
:notebook => @options["<notebook>"] || @options["--notebook"],
|
92
|
+
:path => @options["--path"]
|
93
|
+
})
|
94
|
+
OrgFile.prepare_directories(@org)
|
95
|
+
|
96
|
+
c = 1
|
97
|
+
while File.exists?(@org[:file])
|
98
|
+
c += 1
|
99
|
+
@org[:filename] = Time.at(@org[:time]).strftime("%Y-%m-%d-%s-#{c}")
|
100
|
+
@org[:file] = File.expand_path(File.join(@org[:todo_dir], "#{@org[:filename]}.org"))
|
101
|
+
end
|
102
|
+
template = @org[:template] || 'writing'
|
103
|
+
template_file = find_template(template)
|
104
|
+
if not File.exists?(template_file)
|
105
|
+
puts "Could not find template `#{template}.org' at #{template_file}".red
|
106
|
+
exit 1
|
107
|
+
end
|
108
|
+
template = File.open(template_file).read
|
109
|
+
content = ERB.new(template).result(binding)
|
110
|
+
File.open(@org[:file], 'w') {|f| f.puts content }
|
111
|
+
puts content.yellow if ENV['DEBUG']
|
112
|
+
puts "Created a new writing at `#{@org[:file]}'".green
|
113
|
+
end
|
114
|
+
|
115
|
+
private
|
116
|
+
def find_template(template)
|
117
|
+
CUSTOM_TEMPLATES_DIRS.each do |template_dir|
|
118
|
+
if Dir.exists?(template_dir) and File.exists?(File.join(template_dir, "#{template}.org"))
|
119
|
+
return File.expand_path(File.join(template_dir, "#{template}.org"))
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
return File.expand_path(File.join('templates', "#{template}.org"), File.dirname(__FILE__))
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
data/lib/re-org/ext.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
module StringWithColors
|
2
|
+
def red; colorize("\e[0m\e[31m"); end
|
3
|
+
def green; colorize("\e[0m\e[32m"); end
|
4
|
+
def yellow; colorize("\e[0m\e[33m"); end
|
5
|
+
def bold; colorize("\e[0m\e[1m"); end
|
6
|
+
def colorize(color_code); "#{color_code}#{self}\e[0m"; end
|
7
|
+
end
|
8
|
+
class String
|
9
|
+
include StringWithColors
|
10
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
module ReOrg
|
2
|
+
class OrgFile
|
3
|
+
|
4
|
+
attr_accessor :options
|
5
|
+
|
6
|
+
DEFAULT_TODO_ORGS_DIR = 'todo'
|
7
|
+
DEFAULT_DONE_ORGS_DIR = 'done'
|
8
|
+
|
9
|
+
def initialize(opts={})
|
10
|
+
@options = opts
|
11
|
+
@options[:title] ||= 'Untitled'
|
12
|
+
@options[:time] = Time.now
|
13
|
+
@options[:date] = Time.at(@options[:time]).strftime("%Y-%m-%d")
|
14
|
+
@options[:org_format_date] = org_format_date(@options[:time])
|
15
|
+
@options[:todo_dir] ||= OrgFile.todo_dir
|
16
|
+
@options[:done_dir] ||= OrgFile.done_dir
|
17
|
+
@options[:notebook] ||= File.basename(File.expand_path('.'))
|
18
|
+
@options[:filename] = resolve_filename
|
19
|
+
@options[:file] = File.expand_path(File.join(@options[:todo_dir], "#{@options[:filename]}.org"))
|
20
|
+
end
|
21
|
+
|
22
|
+
def []=(key, value)
|
23
|
+
@options[key] = value
|
24
|
+
end
|
25
|
+
|
26
|
+
def [](key)
|
27
|
+
@options[key]
|
28
|
+
end
|
29
|
+
|
30
|
+
def org_format_date(time=nil)
|
31
|
+
time ||= @options[:time]
|
32
|
+
Time.at(time).strftime("[%Y-%m-%d %a]")
|
33
|
+
end
|
34
|
+
|
35
|
+
def resolve_filename
|
36
|
+
slug = slugify(@options[:title] || @options[:notebook])
|
37
|
+
Time.at(@options[:time]).strftime("%Y-%m-%d-#{slug}")
|
38
|
+
end
|
39
|
+
|
40
|
+
def slugify(name)
|
41
|
+
return nil unless name
|
42
|
+
name.gsub(/[\s.\/\\]/, '-').downcase
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.prepare_directories(org={})
|
46
|
+
todo_dir = org[:path] || OrgFile.todo_dir
|
47
|
+
if not File.exists?(todo_dir)
|
48
|
+
puts "Creating working dir at `#{todo_dir}'".green
|
49
|
+
FileUtils.mkdir(todo_dir)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.path
|
54
|
+
File.expand_path(ENV['ORG_NOTEBOOKS_PATH'] || '.')
|
55
|
+
end
|
56
|
+
|
57
|
+
# FIXME: There should be a todo dir and a done dir?
|
58
|
+
def self.todo_dir
|
59
|
+
# Detect that we are on a Jekyll site and use _drafts
|
60
|
+
if File.exists?(File.expand_path('_config.yml', File.dirname('.'))) \
|
61
|
+
and Dir.exists?('_drafts')
|
62
|
+
File.expand_path('_drafts', File.dirname('.'))
|
63
|
+
else
|
64
|
+
File.expand_path("#{self.path}/#{DEFAULT_TODO_ORGS_DIR}", File.dirname('.'))
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def self.done_dir
|
69
|
+
# Detect that we are on a Jekyll site and use _posts
|
70
|
+
if File.exists?(File.expand_path('_config.yml', File.dirname('.'))) \
|
71
|
+
and Dir.exists?('_posts')
|
72
|
+
File.expand_path('_posts', File.dirname('.'))
|
73
|
+
else
|
74
|
+
File.expand_path("#{self.path}/#{DEFAULT_DONE_ORGS_DIR}", File.dirname('.'))
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# -*- mode: org -*-
|
2
|
+
#+OPTIONS: ^:nil
|
3
|
+
#+TODO: TODO STARTED | DONE CANCELED
|
4
|
+
#+DATE: <%= @org[:date] %>
|
5
|
+
#+STARTUP: showeverything
|
6
|
+
#+NOTEBOOK: <%= @org[:notebook] %>
|
7
|
+
|
8
|
+
* [0/1] <%= @org[:org_format_date] %>
|
9
|
+
:PROPERTIES:
|
10
|
+
:DATE: <%= @org[:date] %>
|
11
|
+
:NOTEBOOK: <%= @org[:notebook] %>
|
12
|
+
:END:
|
13
|
+
|
14
|
+
** TODO
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- mode: org -*-
|
2
|
+
#+OPTIONS: ^:nil
|
3
|
+
#+TITLE: <%= @org[:title] %>
|
4
|
+
#+DATE: <%= @org[:date] %>
|
5
|
+
#+STARTUP: showeverything
|
6
|
+
#+NOTEBOOK: <%= @org[:notebook] %>
|
7
|
+
|
8
|
+
*
|
9
|
+
:PROPERTIES:
|
10
|
+
:DATE: <%= @org[:date] %>
|
11
|
+
:NOTEBOOK: <%= @org[:notebook] %>
|
12
|
+
:END:
|
13
|
+
|
14
|
+
|
15
|
+
* COMMENT ________
|
16
|
+
# Local Variables:
|
17
|
+
# eval: (auto-fill-mode t)
|
18
|
+
# eval: (progn (goto-line 0)(re-search-forward ":PROPERTIES:") (org-narrow-to-subtree))
|
19
|
+
# End:
|
data/re-org.gemspec
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/re-org/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.authors = ["Waldemar Quevedo"]
|
6
|
+
gem.email = ["waldemar.quevedo@gmail.com"]
|
7
|
+
gem.description = %q{An Org mode file organizer}
|
8
|
+
gem.summary = %q{Instead of having tons of sparsed Org mode files everywhere, this project attemtps to give the Org mode writer a framework to re-organize the files in a less chaotic manner.
|
9
|
+
}
|
10
|
+
gem.homepage = "https://github.com/wallyqs/re-org"
|
11
|
+
|
12
|
+
gem.files = `git ls-files`.split($\)
|
13
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
14
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
15
|
+
gem.name = "re-org"
|
16
|
+
gem.require_paths = ["lib"]
|
17
|
+
gem.version = ReOrg::VERSION
|
18
|
+
gem.add_dependency(%q<docopt>)
|
19
|
+
gem.add_dependency(%q<org-ruby>)
|
20
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ReOrg::Command do
|
4
|
+
before(:all) { $test_number = 0 }
|
5
|
+
before(:each) {
|
6
|
+
@dir = "#{RESULTS_DIR}/#{$test_number}"
|
7
|
+
FileUtils.mkdir_p(@dir)
|
8
|
+
ENV['ORG_NOTEBOOKS_PATH'] = @dir
|
9
|
+
}
|
10
|
+
after(:each) { $test_number += 1 }
|
11
|
+
|
12
|
+
context "when using `re-org new`" do
|
13
|
+
before(:each) do
|
14
|
+
@cmd = {
|
15
|
+
"new" => true,
|
16
|
+
"<template>" => 'writing',
|
17
|
+
"--notebook" => nil,
|
18
|
+
"--title" => "test-#{$test_number}",
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should create new writing for a notebook with --notebook option' do
|
23
|
+
@cmd['--notebook'] = 'tests'
|
24
|
+
o = ReOrg::Command.new(@cmd)
|
25
|
+
o.execute!
|
26
|
+
orgs = Dir["#{@dir}/todo/*"]
|
27
|
+
orgs.count.should == 1
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should create new clockfile when the template is choosen' do
|
31
|
+
@cmd['<template>'] = 'clockfile'
|
32
|
+
@cmd['--notebook'] = 'tests'
|
33
|
+
o = ReOrg::Command.new(@cmd)
|
34
|
+
o.execute!
|
35
|
+
orgs = Dir["#{@dir}/todo/*"]
|
36
|
+
orgs.count.should == 1
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'should create new writing with --title option' do
|
40
|
+
@cmd['--notebook'] = 'tests'
|
41
|
+
@cmd['--title'] = 'Testing the title'
|
42
|
+
o = ReOrg::Command.new(@cmd)
|
43
|
+
o.execute!
|
44
|
+
orgs = Dir["#{@dir}/todo/*"]
|
45
|
+
orgs.count.should == 1
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "when using `re-org templates`" do
|
50
|
+
before(:each) do
|
51
|
+
@cmd = {
|
52
|
+
"templates" => true
|
53
|
+
}
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'should display the currently installed templates' do
|
57
|
+
pending
|
58
|
+
o = ReOrg::Command.new(@cmd)
|
59
|
+
o.execute!
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'time'
|
3
|
+
|
4
|
+
describe ReOrg::OrgFile do
|
5
|
+
before(:each) do
|
6
|
+
@org = ReOrg::OrgFile.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should create date in org format' do
|
10
|
+
date = Time.at(1377411362)
|
11
|
+
@org.org_format_date(date).should == '[2013-08-25 Sun]'
|
12
|
+
end
|
13
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: re-org
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Waldemar Quevedo
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-12-08 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: docopt
|
16
|
+
requirement: &70292512920380 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70292512920380
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: org-ruby
|
27
|
+
requirement: &70292512916760 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70292512916760
|
36
|
+
description: An Org mode file organizer
|
37
|
+
email:
|
38
|
+
- waldemar.quevedo@gmail.com
|
39
|
+
executables:
|
40
|
+
- re-org
|
41
|
+
extensions: []
|
42
|
+
extra_rdoc_files: []
|
43
|
+
files:
|
44
|
+
- .gitignore
|
45
|
+
- Gemfile
|
46
|
+
- LICENSE
|
47
|
+
- README.org
|
48
|
+
- Rakefile
|
49
|
+
- TODO.org
|
50
|
+
- bin/re-org
|
51
|
+
- lib/re-org.rb
|
52
|
+
- lib/re-org/command.rb
|
53
|
+
- lib/re-org/ext.rb
|
54
|
+
- lib/re-org/org_file.rb
|
55
|
+
- lib/re-org/templates/clockfile.org
|
56
|
+
- lib/re-org/templates/jekyll-post.org
|
57
|
+
- lib/re-org/templates/notebook.org
|
58
|
+
- lib/re-org/templates/writing.org
|
59
|
+
- lib/re-org/version.rb
|
60
|
+
- re-org.gemspec
|
61
|
+
- spec/command_spec.rb
|
62
|
+
- spec/org_file_spec.rb
|
63
|
+
- spec/spec_helper.rb
|
64
|
+
homepage: https://github.com/wallyqs/re-org
|
65
|
+
licenses: []
|
66
|
+
post_install_message:
|
67
|
+
rdoc_options: []
|
68
|
+
require_paths:
|
69
|
+
- lib
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
|
+
none: false
|
78
|
+
requirements:
|
79
|
+
- - ! '>='
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
requirements: []
|
83
|
+
rubyforge_project:
|
84
|
+
rubygems_version: 1.8.10
|
85
|
+
signing_key:
|
86
|
+
specification_version: 3
|
87
|
+
summary: Instead of having tons of sparsed Org mode files everywhere, this project
|
88
|
+
attemtps to give the Org mode writer a framework to re-organize the files in a less
|
89
|
+
chaotic manner.
|
90
|
+
test_files:
|
91
|
+
- spec/command_spec.rb
|
92
|
+
- spec/org_file_spec.rb
|
93
|
+
- spec/spec_helper.rb
|