asciidoctor-instant-articles 0.1.0.pre → 0.1.1.pre
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/asciidoctor-instant-articles +32 -0
- data/lib/asciidoctor-instant-articles/converter.rb +24 -0
- data/lib/asciidoctor-instant-articles/version.rb +1 -1
- data/templates/erb/document.html.erb +2 -2
- data/templates/slim/block_image.html.slim +21 -0
- data/templates/slim/document.html.slim +21 -0
- data/templates/slim/inline_image.html.slim +24 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26a87d4d0944fad054f18d6524312431053bd7f3
|
4
|
+
data.tar.gz: 294b3865967b8b5087f1ed2d6f4d5c1c7de1d635
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2c8988661e509622db022987dfe4a30d96356540a6fd9059d1525f6fc526d4491ee40969c947ad1d13021d242251de13b9859b16314f100d0f733de4dc95532
|
7
|
+
data.tar.gz: 511d666a90cc8ecbb0e751e5c0950f812b5c77d7e710985fc6501433288028092c1a76c3cca189c28912fa1f5b06416f7d7192ac0a54d0e208abae9884a26596
|
@@ -1 +1,33 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
puts File.exist?(asciidoctor_instant_articles = (File.expand_path '../../lib/asciidoctor-instant-articles', __FILE__))
|
3
|
+
if File.exist?(asciidoctor_instant_articles = (File.expand_path '../../lib/asciidoctor-instant-articles', __FILE__))
|
4
|
+
require asciidoctor_instant_articles
|
5
|
+
else
|
6
|
+
require 'asciidoctor-instant-articles'
|
7
|
+
end
|
8
|
+
require 'asciidoctor/cli'
|
9
|
+
|
10
|
+
options = Asciidoctor::Cli::Options.new backend: 'instant-articles'
|
11
|
+
|
12
|
+
# FIXME provide an API in Asciidoctor for sub-components to print version information
|
13
|
+
unless ARGV != ['-v'] && (ARGV & ['-V', '--version']).empty?
|
14
|
+
$stdout.write %(Asciidoctor Instant Articles #{Asciidoctor::InstantArticles::VERSION} using )
|
15
|
+
# NOTE the print_version method was added in Asciidoctor 1.5.2
|
16
|
+
if options.respond_to? :print_version
|
17
|
+
options.print_version
|
18
|
+
else
|
19
|
+
puts %(Asciidoctor #{::Asciidoctor::VERSION} [http://asciidoctor.org])
|
20
|
+
end
|
21
|
+
exit 0
|
22
|
+
end
|
23
|
+
|
24
|
+
# FIXME This is a really bizarre API. Please make me simpler.
|
25
|
+
case (result = options.parse! ARGV)
|
26
|
+
when Integer
|
27
|
+
exit result
|
28
|
+
else
|
29
|
+
invoker = Asciidoctor::Cli::Invoker.new options
|
30
|
+
GC.start
|
31
|
+
invoker.invoke!
|
32
|
+
exit invoker.code
|
33
|
+
end
|
@@ -6,6 +6,30 @@ module Asciidoctor
|
|
6
6
|
module InstantArticles
|
7
7
|
class Converter < ::Asciidoctor::Converter::CompositeConverter
|
8
8
|
register_for 'instant-articles'
|
9
|
+
|
10
|
+
ProvidedTemplatesDir = ::File.expand_path '../../../templates', __FILE__
|
11
|
+
SlimPrettyOpts = { pretty: true, indent: false }.freeze
|
12
|
+
|
13
|
+
def initialize backend, opts={}
|
14
|
+
template_dirs = [ProvidedTemplatesDir] # last dir wins
|
15
|
+
if (custom_template_dirs = opts[:template_dirs])
|
16
|
+
template_dirs += custom_template_dirs.map {|d| ::File.expand_path d }
|
17
|
+
end
|
18
|
+
include_dirs = template_dirs.reverse.tap {|c| c << (::File.join c.pop, 'slim') } # first dir wins
|
19
|
+
engine_opts = (opts[:template_engine_options] || {}).dup
|
20
|
+
extra_slim_opts = { include_dirs: include_dirs }
|
21
|
+
extra_slim_opts.update SlimPrettyOpts if Set.new(%w(1 true)).include?(ENV['SLIM_PRETTY'].to_s)
|
22
|
+
engine_opts[:slim] = (engine_opts.key? :slim) ? (extra_slim_opts.merge engine_opts[:slim]) : extra_slim_opts
|
23
|
+
template_opts = opts.merge htmlsyntax: 'html', template_engine: 'slim', template_engine_options: engine_opts
|
24
|
+
template_converter = ::Asciidoctor::Converter::TemplateConverter.new backend, template_dirs, template_opts
|
25
|
+
html5_converter = ::Asciidoctor::Converter::Html5Converter.new backend, opts
|
26
|
+
super backend, template_converter, html5_converter
|
27
|
+
basebackend 'html'
|
28
|
+
htmlsyntax 'html'
|
29
|
+
end
|
30
|
+
|
31
|
+
# def convert node, transform=nil, opts={}
|
32
|
+
# end
|
9
33
|
end
|
10
34
|
end
|
11
35
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<head>
|
4
4
|
<meta charset="utf-8">
|
5
5
|
<link href="https://fb.cloudhomez.com/articles/#{article.id}" rel="canonical" />
|
6
|
-
<title
|
6
|
+
<title><%= doctitle(:sanitize => true) || (attr 'untitled-label') %></title>
|
7
7
|
<meta content="default" property="fb:article_style" />
|
8
8
|
</head>
|
9
9
|
<body>
|
@@ -11,7 +11,7 @@
|
|
11
11
|
<header>
|
12
12
|
== article.header
|
13
13
|
</header>
|
14
|
-
|
14
|
+
<%= content %>
|
15
15
|
<footer>
|
16
16
|
== article.footer
|
17
17
|
</footer>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
- width = (attr? :width) ? (attr :width) : nil
|
2
|
+
- height = (attr? :height) ? (attr :height) : nil
|
3
|
+
|
4
|
+
/ When the stretch class is present, block images will take the most space
|
5
|
+
/ they can take. Setting width and height can override that.
|
6
|
+
/ We pinned the 100% to height to avoid aspect ratio breakage and since
|
7
|
+
/ widescreen monitors are the most popular, chances are that height will
|
8
|
+
/ be the biggest constraint
|
9
|
+
- if (has_role? 'stretch') && !((attr? :width) || (attr? :height))
|
10
|
+
- height = "100%"
|
11
|
+
|
12
|
+
- unless attr(1) == 'background' || attr(1) == "canvas"
|
13
|
+
figure (id=@id class=roles
|
14
|
+
style=[("text-align: #{attr :align}" if attr? :align),("float: #{attr :float}" if attr? :float)].compact.join('; '))
|
15
|
+
- if attr? :link
|
16
|
+
a.image href=(attr :link)
|
17
|
+
img src=image_uri(attr :target) alt=(attr :alt) width=(width) height=(height) style=((attr? :background) ? "background: #{attr :background}" : nil)
|
18
|
+
- else
|
19
|
+
img src=image_uri(attr :target) alt=(attr :alt) width=(width) height=(height) style=((attr? :background) ? "background: #{attr :background}" : nil)
|
20
|
+
- if title?
|
21
|
+
.title=captioned_title
|
@@ -0,0 +1,21 @@
|
|
1
|
+
doctype 5
|
2
|
+
html lang=(attr :lang, 'en' unless attr? :nolang)
|
3
|
+
head
|
4
|
+
meta charset="utf-8"
|
5
|
+
link href="https://fb.cloudhomez.com/articles/article.id" rel="canonical"
|
6
|
+
title=(doctitle(sanitize: true, use_fallback: true) || (attr 'untitled-label'))
|
7
|
+
meta content="default" property="fb:article_style"
|
8
|
+
body
|
9
|
+
article
|
10
|
+
header
|
11
|
+
figure
|
12
|
+
img src="https://fb.cloudhomez.com/talk-bubble-1964578_1920.jpg" alt="" title="" layout="responsive" width="720" height="480"
|
13
|
+
address=(attr :author)
|
14
|
+
time class="op-modified" datetime="#{attr :docdatetime}" = attr :docdatetime
|
15
|
+
time class="op-published" datetime="2017-02-27T23:52:05-08:00" 2017-02-27T23:52:05-08:00
|
16
|
+
| article.header
|
17
|
+
== content
|
18
|
+
footer
|
19
|
+
aside We left aligned the <b>footer, credits and copyright</b> and adjusted the typeface to Helvetica Neue Light and the color to grey.
|
20
|
+
small © Copyright
|
21
|
+
| article.footer
|
@@ -0,0 +1,24 @@
|
|
1
|
+
figure class=[@type,role] style=("float: #{attr :float}" if attr? :float)
|
2
|
+
- if @type == 'icon' && (@document.attr? :icons, 'font')
|
3
|
+
- style_class = ["fa fa-#{@target}"]
|
4
|
+
- style_class << "fa-#{attr :size}" if attr? :size
|
5
|
+
- style_class << "fa-rotate-#{attr :rotate}" if attr? :rotate
|
6
|
+
- style_class << "fa-flip-#{attr :flip}" if attr? :flip
|
7
|
+
- if attr? :link
|
8
|
+
a.image href=(attr :link) target=(attr :window)
|
9
|
+
i class=style_class title=(attr :title)
|
10
|
+
- else
|
11
|
+
i class=style_class title=(attr :title)
|
12
|
+
- elsif @type == 'icon' && !(@document.attr? :icons)
|
13
|
+
- if attr? :link
|
14
|
+
a.image href=(attr :link) target=(attr :window)
|
15
|
+
|[#{attr :alt}]
|
16
|
+
- else
|
17
|
+
|[#{attr :alt}]
|
18
|
+
- else
|
19
|
+
- src = (@type == 'icon' ? (icon_uri @target) : (image_uri @target))
|
20
|
+
- if attr? :link
|
21
|
+
a.image href=(attr :link) target=(attr :window)
|
22
|
+
img src=src alt=(attr :alt) width=(attr :width) height=(attr :height) title=(attr :title)
|
23
|
+
- else
|
24
|
+
img src=src alt=(attr :alt) width=(attr :width) height=(attr :height) title=(attr :title)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asciidoctor-instant-articles
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fritz Lee
|
@@ -80,6 +80,9 @@ files:
|
|
80
80
|
- lib/asciidoctor-instant-articles/converter.rb
|
81
81
|
- lib/asciidoctor-instant-articles/version.rb
|
82
82
|
- templates/erb/document.html.erb
|
83
|
+
- templates/slim/block_image.html.slim
|
84
|
+
- templates/slim/document.html.slim
|
85
|
+
- templates/slim/inline_image.html.slim
|
83
86
|
homepage: https://github.com/askagirl/asciidoctor-instant-articles
|
84
87
|
licenses:
|
85
88
|
- MIT
|