neruda 0.2.3 → 0.2.4
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 +4 -4
- data/bin/pablo +36 -22
- data/lib/neruda/config/lisp_config.rb +20 -22
- data/lib/neruda/emacs.rb +12 -19
- data/lib/neruda/org_file/htmlizer.rb +0 -9
- data/lib/neruda/templater.rb +16 -10
- data/lib/neruda/utils.rb +1 -2
- data/lib/neruda/version.rb +1 -1
- data/lib/tasks/site.rake +1 -33
- data/locales/en.yml +1 -0
- data/locales/fr.yml +2 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f704b888004971a0ee3c321f41874132283f7f42a3c6b57f267356b7723b2260
|
4
|
+
data.tar.gz: 54c3738824f1b80b46b00654aedd805ef0a999a096f1ff320c42001027419147
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba08196581125aa378a938cb34413d856d7126800cbe692b9237f6e3ffb7bf45743d7dd6fa0ab77c9adb13000dd266085a7ebb4fe556b3d223f620596b237074
|
7
|
+
data.tar.gz: efc4308eb4c1d43091f6134fbdee4054feb80535e01fa1cff7f79656f22540bd55011c66c6ac7ca33fb01c0b6c4dbcab6012db44f1726285dc6be85fb8236953
|
data/bin/pablo
CHANGED
@@ -15,26 +15,21 @@ module PabloCommands
|
|
15
15
|
def pablo_init
|
16
16
|
cnf = @options.merge
|
17
17
|
cnf.delete(:verbose)
|
18
|
-
cnf.delete(:directory)
|
19
18
|
cnf.transform_keys!(&:to_s)
|
20
19
|
Neruda::Config.save(Neruda::Config.settings.merge(cnf))
|
21
20
|
@rake.options.build_all = true
|
22
21
|
@rake.invoke_task('org:install')
|
23
22
|
return if File.exist? 'src/index.org'
|
24
23
|
Neruda::OrgFile.new('src/index.org', @options).write
|
24
|
+
pablo_open 'src/index.org'
|
25
25
|
end
|
26
26
|
alias_method :pablo_config, :pablo_init
|
27
27
|
|
28
|
-
def pablo_build
|
28
|
+
def pablo_build
|
29
29
|
@rake.options.build_all = true
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
suffix = ":one[#{file}]"
|
34
|
-
elsif @options[:force]
|
35
|
-
suffix = '[true]'
|
36
|
-
end
|
37
|
-
@rake.invoke_task("site:build#{suffix}")
|
30
|
+
task = 'site:build'
|
31
|
+
task = "#{task}[true]" if @options[:force]
|
32
|
+
@rake.invoke_task task
|
38
33
|
end
|
39
34
|
|
40
35
|
def pablo_preview
|
@@ -55,13 +50,17 @@ module PabloCommands
|
|
55
50
|
@rake.invoke_task('site:preview')
|
56
51
|
end
|
57
52
|
|
58
|
-
def pablo_open
|
59
|
-
filename = new_file_name(ARGV[0])
|
60
|
-
FileUtils.mkdir_p File.dirname(filename)
|
61
|
-
o = Neruda::OrgFile.new(filename, @options)
|
62
|
-
o.write unless File.exist? filename
|
53
|
+
def pablo_open(file_path = ARGV[0])
|
63
54
|
editor = ENV['EDITOR'] || ENV['VISUAL'] || 'emacs'
|
64
|
-
cmd = [editor
|
55
|
+
cmd = [editor]
|
56
|
+
if file_path.nil? || !File.file?(file_path)
|
57
|
+
# file_path may be updated with title given in options
|
58
|
+
file_path = create_new_file(file_path)
|
59
|
+
# Only move to the end of file for new file. Let the editor handle
|
60
|
+
# the best position for already existing files
|
61
|
+
cmd << '+6'
|
62
|
+
end
|
63
|
+
cmd << file_path
|
65
64
|
system(*cmd)
|
66
65
|
end
|
67
66
|
alias_method :pablo_edit, :pablo_open
|
@@ -86,12 +85,27 @@ module PabloCommands
|
|
86
85
|
|
87
86
|
private
|
88
87
|
|
89
|
-
def new_file_name(
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
88
|
+
def new_file_name(file_path)
|
89
|
+
file_path = File.expand_path(file_path || '')
|
90
|
+
return file_path if file_path[-4..] == '.org'
|
91
|
+
# file_path seems to be a dir path. Thus we have to create the new
|
92
|
+
# filename from its title
|
93
|
+
title = @options[:title]
|
94
|
+
# No title, nor a reliable file_path? Better abort
|
95
|
+
return nil if title.nil? || title == ''
|
96
|
+
filename = "#{Neruda::OrgFile.slug(title)}.org"
|
97
|
+
File.join file_path, filename
|
98
|
+
end
|
99
|
+
|
100
|
+
def create_new_file(file_path)
|
101
|
+
filename = new_file_name(file_path)
|
102
|
+
if filename.nil?
|
103
|
+
warn R18n.t.pablo.error.no_file
|
104
|
+
exit 1
|
105
|
+
end
|
106
|
+
FileUtils.mkdir_p File.dirname(filename)
|
107
|
+
Neruda::OrgFile.new(filename, @options).write
|
108
|
+
filename
|
95
109
|
end
|
96
110
|
|
97
111
|
def help_command_body(command)
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'json'
|
3
4
|
require 'open-uri'
|
4
5
|
require 'neruda/version'
|
5
6
|
|
@@ -16,17 +17,13 @@ module Neruda
|
|
16
17
|
@org_version = IO.read('tmp/__last_org_version__')
|
17
18
|
return @org_version
|
18
19
|
end
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
warn 'Org last version not found'
|
24
|
-
return nil
|
25
|
-
end
|
20
|
+
versions = JSON.parse(
|
21
|
+
URI('https://updates.orgmode.org/data/releases').open.read
|
22
|
+
).sort { |a, b| b['date'] <=> a['date'] }
|
23
|
+
@org_version = versions.first['version']
|
26
24
|
FileUtils.mkdir_p 'tmp'
|
27
|
-
IO.write('tmp/__last_org_version__',
|
28
|
-
|
29
|
-
@org_version = last_ver[1]
|
25
|
+
IO.write('tmp/__last_org_version__', @org_version)
|
26
|
+
@org_version
|
30
27
|
end
|
31
28
|
|
32
29
|
# Generate emacs lisp configuration file for Org and write it.
|
@@ -145,8 +142,6 @@ module Neruda
|
|
145
142
|
#{other_lines.join("\n ")}
|
146
143
|
:publishing-directory "#{publish_in}"
|
147
144
|
:publishing-function org-html-publish-to-html
|
148
|
-
:section-numbers nil
|
149
|
-
:with-toc nil
|
150
145
|
#{opts['org_headers']})
|
151
146
|
("#{project_name}-assets"
|
152
147
|
:base-directory "#{opts['path']}"
|
@@ -178,17 +173,20 @@ module Neruda
|
|
178
173
|
end
|
179
174
|
|
180
175
|
def org_default_html_options(project)
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
'html-postamble' => org_default_postamble,
|
185
|
-
'html-head-include-default-style' => 't',
|
186
|
-
'html-head-include-scripts' => 't' }
|
187
|
-
end
|
188
|
-
{ 'html-head' => org_default_html_head,
|
176
|
+
defaults = {
|
177
|
+
'section-numbers' => 'nil',
|
178
|
+
'with-toc' => 'nil',
|
189
179
|
'html-postamble' => org_default_postamble,
|
190
|
-
'html-head
|
191
|
-
'html-head-include-
|
180
|
+
'html-head' => '__ATOM_FEED__',
|
181
|
+
'html-head-include-default-style' => 't',
|
182
|
+
'html-head-include-scripts' => 't'
|
183
|
+
}
|
184
|
+
curtheme = project['theme'] || settings['theme']
|
185
|
+
return defaults if curtheme.nil? || curtheme == 'default'
|
186
|
+
defaults['html-head'] = org_default_html_head
|
187
|
+
defaults['html-head-include-default-style'] = 'nil'
|
188
|
+
defaults['html-head-include-scripts'] = 'nil'
|
189
|
+
defaults
|
192
190
|
end
|
193
191
|
|
194
192
|
def expand_vars_in_html_head(head, project)
|
data/lib/neruda/emacs.rb
CHANGED
@@ -11,34 +11,27 @@ module Neruda
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def publish
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
command = emacs_command(
|
15
|
+
'-l ./org-config.el', '--eval \'(org-publish "website")\''
|
16
|
+
)
|
17
|
+
if @verbose
|
18
|
+
warn command
|
19
|
+
return system(command, exception: true)
|
18
20
|
end
|
19
|
-
|
21
|
+
system command, out: '/dev/null', err: '/dev/null', exception: true
|
20
22
|
end
|
21
23
|
|
22
24
|
private
|
23
25
|
|
24
|
-
def emacs_command(arguments
|
26
|
+
def emacs_command(*arguments)
|
25
27
|
default_emacs = Neruda::Config.settings['emacs']
|
26
|
-
emacs_cmd = [
|
27
|
-
|
28
|
+
emacs_cmd = [
|
29
|
+
default_emacs || 'emacs -Q --batch -nw',
|
30
|
+
'--eval \'(setq enable-dir-local-variables nil)\''
|
31
|
+
]
|
28
32
|
emacs_cmd << '--eval \'(setq inhibit-message t)\'' unless @verbose
|
29
|
-
emacs_cmd << '-l ./org-config.el'
|
30
|
-
emacs_cmd << "--eval '(find-file \"#{@file}\")'" unless @file.nil?
|
31
33
|
emacs_cmd.concat(arguments)
|
32
34
|
emacs_cmd.join(' ')
|
33
35
|
end
|
34
|
-
|
35
|
-
def call_emacs(arguments = [])
|
36
|
-
command = emacs_command arguments
|
37
|
-
if @verbose
|
38
|
-
warn command
|
39
|
-
return system(command, exception: true)
|
40
|
-
end
|
41
|
-
system command, out: '/dev/null', err: '/dev/null', exception: true
|
42
|
-
end
|
43
36
|
end
|
44
37
|
end
|
@@ -7,15 +7,6 @@ module Neruda
|
|
7
7
|
# This module holds HTML formatter methods for the {Neruda::OrgFile}
|
8
8
|
# class.
|
9
9
|
module OrgFileHtmlizer
|
10
|
-
# Publish the current file
|
11
|
-
#
|
12
|
-
# @return [Boolean, nil] the underlying ~system~ method return value
|
13
|
-
def publish
|
14
|
-
Neruda::Emacs.new(
|
15
|
-
file_path: @file, verbose: @options[:verbose]
|
16
|
-
).publish
|
17
|
-
end
|
18
|
-
|
19
10
|
private
|
20
11
|
|
21
12
|
# Format {Neruda::OrgFile#keywords} list in an HTML listing.
|
data/lib/neruda/templater.rb
CHANGED
@@ -11,7 +11,7 @@ module Neruda
|
|
11
11
|
@dom = dom
|
12
12
|
@org_file = source
|
13
13
|
@position = opts['type'] || 'after'
|
14
|
-
@content = opts
|
14
|
+
@content = extract_content opts
|
15
15
|
@element = @dom.css(opts['selector'])
|
16
16
|
digest = Digest::MD5.hexdigest(@content)
|
17
17
|
@check_line = " Neruda Template: #{digest} "
|
@@ -54,15 +54,7 @@ module Neruda
|
|
54
54
|
def filter_templates(file_name)
|
55
55
|
templates = Neruda::Config.settings['templates']
|
56
56
|
return [] if templates.nil? || templates.empty?
|
57
|
-
templates.filter
|
58
|
-
if !t.has_key?('selector') || !t.has_key?('content')
|
59
|
-
false
|
60
|
-
elsif t.has_key?('path') && !check_path(file_name, t['path'])
|
61
|
-
false
|
62
|
-
else
|
63
|
-
true
|
64
|
-
end
|
65
|
-
end
|
57
|
+
templates.filter { |t| check_required_keys(t, file_name) }
|
66
58
|
end
|
67
59
|
|
68
60
|
def open_dom(file_name)
|
@@ -90,6 +82,13 @@ module Neruda
|
|
90
82
|
File.fnmatch?("#{pub_folder}#{pathes}",
|
91
83
|
file_name, File::FNM_DOTMATCH)
|
92
84
|
end
|
85
|
+
|
86
|
+
def check_required_keys(opts, file_name)
|
87
|
+
return false unless opts.has_key?('selector')
|
88
|
+
return false unless opts.has_key?('content') || opts.has_key?('source')
|
89
|
+
return check_path(file_name, opts['path']) if opts.has_key?('path')
|
90
|
+
true
|
91
|
+
end
|
93
92
|
end
|
94
93
|
|
95
94
|
private
|
@@ -108,5 +107,12 @@ module Neruda
|
|
108
107
|
elem.add_next_sibling content
|
109
108
|
end
|
110
109
|
end
|
110
|
+
|
111
|
+
def extract_content(opts)
|
112
|
+
return opts['content'] if opts['content']
|
113
|
+
# If we don't have a content option, then we must have a source
|
114
|
+
# one.
|
115
|
+
@dom.css(opts['source']).unlink.to_s
|
116
|
+
end
|
111
117
|
end
|
112
118
|
end
|
data/lib/neruda/utils.rb
CHANGED
@@ -26,7 +26,6 @@ module Neruda
|
|
26
26
|
# configuration
|
27
27
|
PABLO_OPTIONS = {
|
28
28
|
'-a' => { long: 'author' },
|
29
|
-
'-d' => { long: 'directory', boolean: true },
|
30
29
|
'-f' => { long: 'force', boolean: true },
|
31
30
|
'-h' => { long: 'help', boolean: true, meth: :on_tail },
|
32
31
|
'-l' => { long: 'lang', keyword: 'LOCALE' },
|
@@ -42,7 +41,7 @@ module Neruda
|
|
42
41
|
'init' => { opts: ['-a', '-h', '-l', '-t', '-v'] },
|
43
42
|
'config' => { alias: 'init' },
|
44
43
|
'preview' => { opts: ['-h'] },
|
45
|
-
'open' => { opts: ['-a', '-
|
44
|
+
'open' => { opts: ['-a', '-h', '-l', '-p', '-t', '-v'] },
|
46
45
|
'edit' => { alias: 'open' },
|
47
46
|
'build' => { opts: ['-f', '-h'] },
|
48
47
|
'publish' => { opts: ['-h'] },
|
data/lib/neruda/version.rb
CHANGED
data/lib/tasks/site.rake
CHANGED
@@ -23,7 +23,7 @@ namespace :site do
|
|
23
23
|
Neruda::Config.write_org_lisp_config(with_tags: true)
|
24
24
|
end
|
25
25
|
|
26
|
-
desc 'Convert all org files'
|
26
|
+
desc 'Convert and customize all org files'
|
27
27
|
task :build, [:force?] => ['org-config.el', :index] do |_, args|
|
28
28
|
args.with_defaults(:force? => false)
|
29
29
|
build_html = Thread.new do
|
@@ -47,38 +47,6 @@ namespace :site do
|
|
47
47
|
Neruda::Utils.throbber(customize_html, 'Customizing:')
|
48
48
|
end
|
49
49
|
|
50
|
-
namespace :build do
|
51
|
-
desc 'Convert one org file'
|
52
|
-
task :one, [:source] => ['org-config.el'] do |_, args|
|
53
|
-
if args[:source].nil?
|
54
|
-
warn 'No source file given'
|
55
|
-
next
|
56
|
-
end
|
57
|
-
verbose = Rake::FileUtilsExt.verbose_flag
|
58
|
-
project = Neruda::OrgFile.project_for_source(args[:source])
|
59
|
-
if project.nil?
|
60
|
-
warn "No project found for #{args['source']}"
|
61
|
-
next
|
62
|
-
end
|
63
|
-
build_html = Thread.new do
|
64
|
-
o = Neruda::OrgFile.new(
|
65
|
-
args[:source], project: project, verbose: verbose
|
66
|
-
)
|
67
|
-
Thread.current[:org_file] = o
|
68
|
-
o.publish
|
69
|
-
end
|
70
|
-
begin
|
71
|
-
Neruda::Utils.throbber(build_html, 'Building:')
|
72
|
-
rescue RuntimeError
|
73
|
-
warn 'Aborting'
|
74
|
-
next
|
75
|
-
end
|
76
|
-
target = Neruda::OrgFile.target_for_source(args[:source], project)
|
77
|
-
warn "Customizing file #{target}" if verbose
|
78
|
-
Neruda::Templater.customize_output(target, build_html[:org_file])
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
50
|
desc 'Start a test server'
|
83
51
|
task :preview do
|
84
52
|
require 'neruda/preview'
|
data/locales/en.yml
CHANGED
data/locales/fr.yml
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
---
|
2
2
|
pablo:
|
3
3
|
error:
|
4
|
-
no_command: 'ERREUR: Aucune commande ou commande inconnue donnée.'
|
4
|
+
no_command: 'ERREUR : Aucune commande ou commande inconnue donnée.'
|
5
|
+
no_file: 'ERREUR : Aucun fichier à ouvrir ou éditer.'
|
5
6
|
usage: 'Usage : pablo %1 [options]'
|
6
7
|
commands:
|
7
8
|
cmd_title: Commandes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: neruda
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Étienne Deparis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|