reverse_adoc 0.2.10 → 0.3.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/.editorconfig +15 -0
- data/.github/workflows/rake.yml +32 -0
- data/.github/workflows/release.yml +45 -0
- data/.gitignore +10 -0
- data/.hound.yml +3 -1
- data/.rubocop.yml +7 -7
- data/README.adoc +1 -3
- data/{bin → exe}/reverse_adoc +0 -0
- data/{bin → exe}/w2a +0 -0
- data/lib/reverse_adoc/cleaner.rb +24 -23
- data/lib/reverse_adoc/converters/base.rb +3 -1
- data/lib/reverse_adoc/converters/img.rb +2 -2
- data/lib/reverse_adoc/html_converter.rb +38 -38
- data/lib/reverse_adoc/version.rb +1 -1
- data/reverse_adoc.gemspec +17 -15
- data/spec/assets/escapables.html +2 -0
- data/spec/bin/reverse_adoc_spec.rb +2 -2
- data/spec/bin/w2a_spec.rb +7 -7
- data/spec/components/basic_spec.rb +1 -1
- data/spec/components/code_spec.rb +0 -1
- data/spec/components/escapables_spec.rb +8 -0
- data/spec/components/html_fragment_spec.rb +0 -1
- data/spec/components/unknown_tags_spec.rb +0 -1
- data/spec/lib/reverse_adoc/converters/audio_spec.rb +0 -1
- data/spec/lib/reverse_adoc/converters/code_spec.rb +0 -1
- data/spec/lib/reverse_adoc/converters/div_spec.rb +0 -1
- data/spec/lib/reverse_adoc/converters/figure_spec.rb +0 -1
- data/spec/lib/reverse_adoc/converters/img_spec.rb +0 -1
- data/spec/lib/reverse_adoc/converters/p_spec.rb +0 -1
- data/spec/lib/reverse_adoc/converters/pre_spec.rb +0 -1
- data/spec/lib/reverse_adoc/converters/video_spec.rb +0 -1
- metadata +36 -36
- data/.github/workflows/macos.yml +0 -41
- data/.github/workflows/ubuntu.yml +0 -40
- data/.github/workflows/windows.yml +0 -44
- data/Gemfile.lock +0 -85
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 36f817d275ce6148cc1013a3b50e313b481d44121babe05d13fc07d49e221c2d
|
4
|
+
data.tar.gz: 6885e6d6810fb0c0113ff2108c50e7326eb74479501607b4825fe9581ab7b03f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a38b5a9afc809ff511606abfd62a2cd3bf75e3c632bd60319be2477e8879626ba20151ba1dd31b9114adc28492ebf864f9dc189e175bfb47b91b551ed0f8e701
|
7
|
+
data.tar.gz: b9ce3a1c1123166c2ecf2f5bdde273ecb003505071b8863196fe99e3d7a4d6225ea1d362c010ec034f8f60df8cf920ca7ef63ed0bc1f05b7ec3f51a7b66f687e
|
data/.editorconfig
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# EditorConfig is awesome: http://EditorConfig.org
|
2
|
+
|
3
|
+
# top-most EditorConfig file
|
4
|
+
root = true
|
5
|
+
|
6
|
+
# Unix-style newlines with a newline ending every file
|
7
|
+
[*]
|
8
|
+
charset = utf-8
|
9
|
+
end_of_line = lf
|
10
|
+
|
11
|
+
[{*.adoc,*.html,*.js,*.json,*.rake,*.rb,*.rf,*.yaml,*.yml,Rakefile,rakefile}]
|
12
|
+
indent_style = space
|
13
|
+
indent_size = 2
|
14
|
+
insert_final_newline = true
|
15
|
+
trim_trailing_whitespace = true
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# Auto-generated by Cimas: Do not edit it manually!
|
2
|
+
# See https://github.com/metanorma/cimas
|
3
|
+
name: rake
|
4
|
+
|
5
|
+
on:
|
6
|
+
push:
|
7
|
+
branches: [ master, main ]
|
8
|
+
tags: [ v* ]
|
9
|
+
pull_request:
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
rake:
|
13
|
+
name: Test on Ruby ${{ matrix.ruby }} ${{ matrix.os }}
|
14
|
+
runs-on: ${{ matrix.os }}
|
15
|
+
continue-on-error: ${{ matrix.experimental }}
|
16
|
+
strategy:
|
17
|
+
fail-fast: false
|
18
|
+
matrix:
|
19
|
+
ruby: [ '3.0', '2.7', '2.6', '2.5' ]
|
20
|
+
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
21
|
+
experimental: [ false ]
|
22
|
+
steps:
|
23
|
+
- uses: actions/checkout@master
|
24
|
+
|
25
|
+
- uses: ruby/setup-ruby@v1
|
26
|
+
with:
|
27
|
+
ruby-version: ${{ matrix.ruby }}
|
28
|
+
bundler-cache: true
|
29
|
+
|
30
|
+
- uses: metanorma/metanorma-build-scripts/libreoffice-setup-action@master
|
31
|
+
|
32
|
+
- run: bundle exec rake
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# Auto-generated by Cimas: Do not edit it manually!
|
2
|
+
# See https://github.com/metanorma/cimas
|
3
|
+
name: release
|
4
|
+
|
5
|
+
on:
|
6
|
+
workflow_dispatch:
|
7
|
+
inputs:
|
8
|
+
next_version:
|
9
|
+
description: |
|
10
|
+
Next release version. Possible values: x.y.z, major, minor, patch or pre|rc|etc
|
11
|
+
required: true
|
12
|
+
default: 'skip'
|
13
|
+
push:
|
14
|
+
tags: [ v* ]
|
15
|
+
|
16
|
+
jobs:
|
17
|
+
release:
|
18
|
+
runs-on: ubuntu-latest
|
19
|
+
steps:
|
20
|
+
- uses: actions/checkout@v2
|
21
|
+
|
22
|
+
- uses: ruby/setup-ruby@v1
|
23
|
+
with:
|
24
|
+
ruby-version: '2.6'
|
25
|
+
bundler-cache: true
|
26
|
+
|
27
|
+
- run: gem install gem-release
|
28
|
+
|
29
|
+
- if: ${{ github.event_name == 'workflow_dispatch' }} && ${{ github.event.inputs.next_version != 'skip' }}
|
30
|
+
run: |
|
31
|
+
git config user.name github-actions
|
32
|
+
git config user.email github-actions@github.com
|
33
|
+
gem bump --version ${{ github.event.inputs.next_version }} --tag --push
|
34
|
+
|
35
|
+
- name: publish to rubygems.org
|
36
|
+
env:
|
37
|
+
RUBYGEMS_API_KEY: ${{secrets.METANORMA_CI_RUBYGEMS_API_KEY}}
|
38
|
+
run: |
|
39
|
+
gem install gem-release
|
40
|
+
envsubst << 'EOF' > ~/.gem/credentials
|
41
|
+
---
|
42
|
+
:rubygems_api_key: ${RUBYGEMS_API_KEY}
|
43
|
+
EOF
|
44
|
+
chmod 0600 ~/.gem/credentials
|
45
|
+
gem release
|
data/.gitignore
ADDED
data/.hound.yml
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
#
|
2
|
-
# https://github.com/
|
3
|
-
# All project-specific additions and overrides should be specified in this file.
|
4
|
-
|
1
|
+
# Auto-generated by Cimas: Do not edit it manually!
|
2
|
+
# See https://github.com/metanorma/cimas
|
5
3
|
inherit_from:
|
6
4
|
- https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
|
5
|
+
|
6
|
+
# local repo-specific modifications
|
7
|
+
# ...
|
8
|
+
|
7
9
|
AllCops:
|
8
|
-
TargetRubyVersion: 2.
|
9
|
-
Rails:
|
10
|
-
Enabled: true
|
10
|
+
TargetRubyVersion: 2.5
|
data/README.adoc
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
= AsciiDoc from HTML and Microsoft Word: reverse_adoc
|
2
2
|
|
3
3
|
https://github.com/metanorma/reverse_adoc[reverse_adoc] image:https://img.shields.io/gem/v/reverse_adoc.svg["Gem Version", link="https://rubygems.org/gems/reverse_adoc"]::
|
4
|
-
image:https://github.com/metanorma/reverse_adoc/workflows/
|
5
|
-
image:https://github.com/metanorma/reverse_adoc/workflows/windows/badge.svg["Build Status", link="https://github.com/metanorma/reverse_adoc/actions?workflow=windows"]
|
6
|
-
image:https://github.com/metanorma/reverse_adoc/workflows/ubuntu/badge.svg["Build Status", link="https://github.com/metanorma/reverse_adoc/actions?workflow=ubuntu"]
|
4
|
+
image:https://github.com/metanorma/reverse_adoc/workflows/rake/badge.svg["Build Status", link="https://github.com/metanorma/reverse_adoc/actions?workflow=rake"]
|
7
5
|
image:https://codeclimate.com/github/metanorma/reverse_adoc/badges/gpa.svg["Code Climate", link="https://codeclimate.com/github/metanorma/reverse_adoc"]
|
8
6
|
image:https://img.shields.io/github/issues-pr-raw/metanorma/reverse_adoc.svg["Pull Requests", link="https://github.com/metanorma/reverse_adoc/pulls"]
|
9
7
|
image:https://img.shields.io/github/commits-since/metanorma/reverse_adoc/latest.svg["Commits since latest",link="https://github.com/metanorma/reverse_adoc/releases"]
|
data/{bin → exe}/reverse_adoc
RENAMED
File without changes
|
data/{bin → exe}/w2a
RENAMED
File without changes
|
data/lib/reverse_adoc/cleaner.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
module ReverseAdoc
|
2
2
|
class Cleaner
|
3
|
-
|
4
3
|
def tidy(string)
|
5
4
|
result = remove_inner_whitespaces(string)
|
6
5
|
result = remove_newlines(result)
|
@@ -14,7 +13,7 @@ module ReverseAdoc
|
|
14
13
|
end
|
15
14
|
|
16
15
|
def remove_leading_newlines(string)
|
17
|
-
string.gsub(/\A\n+/,
|
16
|
+
string.gsub(/\A\n+/, "")
|
18
17
|
end
|
19
18
|
|
20
19
|
def remove_inner_whitespaces(string)
|
@@ -25,7 +24,7 @@ module ReverseAdoc
|
|
25
24
|
end
|
26
25
|
string.each_line.inject("") do |memo, line|
|
27
26
|
memo + preserve_border_whitespaces(line) do
|
28
|
-
line.strip.gsub(/[ \t]{2,}/,
|
27
|
+
line.strip.gsub(/[ \t]{2,}/, " ")
|
29
28
|
end
|
30
29
|
end
|
31
30
|
end
|
@@ -37,64 +36,67 @@ module ReverseAdoc
|
|
37
36
|
def clean_tag_borders(string)
|
38
37
|
result = string.gsub(/\s?\*{2,}.*?\*{2,}\s?/) do |match|
|
39
38
|
preserve_border_whitespaces(match, default_border: ReverseAdoc.config.tag_border) do
|
40
|
-
match.strip.sub(
|
39
|
+
match.strip.sub("** ", "**").sub(" **", "**")
|
41
40
|
end
|
42
41
|
end
|
43
42
|
|
44
|
-
result = result.gsub(/\s
|
43
|
+
result = result.gsub(/\s?_{2,}.*?_{2,}\s?/) do |match|
|
45
44
|
preserve_border_whitespaces(match, default_border: ReverseAdoc.config.tag_border) do
|
46
|
-
match.strip.sub(
|
45
|
+
match.strip.sub("__ ", "__").sub(" __", "__")
|
47
46
|
end
|
48
47
|
end
|
49
48
|
|
50
49
|
result = result.gsub(/\s?~{2,}.*?~{2,}\s?/) do |match|
|
51
50
|
preserve_border_whitespaces(match, default_border: ReverseAdoc.config.tag_border) do
|
52
|
-
match.strip.sub(
|
51
|
+
match.strip.sub("~~ ", "~~").sub(" ~~", "~~")
|
53
52
|
end
|
54
53
|
end
|
55
54
|
|
56
55
|
result.gsub(/\s?\[.*?\]\s?/) do |match|
|
57
56
|
preserve_border_whitespaces(match) do
|
58
|
-
match.strip.sub(
|
57
|
+
match.strip.sub("[ ", "[").sub(" ]", "]")
|
59
58
|
end
|
60
59
|
end
|
61
60
|
end
|
62
61
|
|
63
62
|
def clean_punctuation_characters(string)
|
64
|
-
string.gsub(/(\*\*|~~|__)\s([
|
63
|
+
string.gsub(/(\*\*|~~|__)\s([.!?'"])/, "\\1".strip + "\\2")
|
65
64
|
end
|
66
65
|
|
67
|
-
|
66
|
+
# preprocesses HTML, rather than postprocessing it
|
68
67
|
def preprocess_word_html(string)
|
69
68
|
clean_headings(scrub_whitespace(string.dup))
|
70
69
|
end
|
71
70
|
|
72
71
|
def scrub_whitespace(string)
|
73
|
-
string.gsub!(/ 
|
74
|
-
string.sub!(/^\A[[:space:]]+/m,
|
75
|
-
string.sub!(/[[:space:]]+\z$/m,
|
76
|
-
string.gsub!(/(
|
77
|
-
string.gsub!(/\n\n\n\n/, "\n\n")
|
78
|
-
#string.delete!('?| ') # Unicode non-breaking spaces, injected as tabs
|
72
|
+
string.gsub!(/ | |\u00a0/i, " ") # HTML encoded spaces
|
73
|
+
string.sub!(/^\A[[:space:]]+/m, "") # document leading whitespace
|
74
|
+
string.sub!(/[[:space:]]+\z$/m, "") # document trailing whitespace
|
75
|
+
string.gsub!(/( +)$/, " ") # line trailing whitespace
|
76
|
+
string.gsub!(/\n\n\n\n/, "\n\n") # Quadruple line breaks
|
77
|
+
# string.delete!('?| ') # Unicode non-breaking spaces, injected as tabs
|
79
78
|
string
|
80
79
|
end
|
81
80
|
|
82
81
|
# following added by me
|
83
82
|
def clean_headings(string)
|
84
|
-
string.gsub!(%r{<h([1-9])[^>]*></h\1>}, " ")
|
83
|
+
string.gsub!(%r{<h([1-9])[^>]*></h\1>}, " ")
|
84
|
+
# I don't know why Libre Office is inserting them, but they need to go
|
85
85
|
string.gsub!(%r{<h([1-9])[^>]* style="vertical-align: super;[^>]*>(.+?)</h\1>},
|
86
|
-
"<sup>\\2</sup>")
|
86
|
+
"<sup>\\2</sup>")
|
87
|
+
# I absolutely don't know why Libre Office is rendering superscripts as h1
|
87
88
|
string
|
88
89
|
end
|
89
90
|
|
90
91
|
private
|
91
92
|
|
92
|
-
def preserve_border_whitespaces(string, options = {}
|
93
|
-
return string if
|
94
|
-
|
93
|
+
def preserve_border_whitespaces(string, options = {})
|
94
|
+
return string if /\A\s*\Z/.match?(string)
|
95
|
+
|
96
|
+
default_border = options.fetch(:default_border, "")
|
95
97
|
# If the string contains part of a link so the characters [,],(,)
|
96
98
|
# then don't add any extra spaces
|
97
|
-
default_border =
|
99
|
+
default_border = "" if /[\[(\])]/.match?(string)
|
98
100
|
string_start = present_or_default(string[/\A\s*/], default_border)
|
99
101
|
string_end = present_or_default(string[/\s*\Z/], default_border)
|
100
102
|
result = yield
|
@@ -108,6 +110,5 @@ module ReverseAdoc
|
|
108
110
|
string
|
109
111
|
end
|
110
112
|
end
|
111
|
-
|
112
113
|
end
|
113
114
|
end
|
@@ -12,7 +12,9 @@ module ReverseAdoc
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def escape_keychars(string)
|
15
|
-
|
15
|
+
subs = { '*' => '\*', '_' => '\_' }
|
16
|
+
string
|
17
|
+
.gsub(/((?<=\s)[\*_]+)|[\*_]+(?=\s)/) { |n| n.chars.map { |char| subs[char] }.join }
|
16
18
|
end
|
17
19
|
|
18
20
|
def extract_title(node)
|
@@ -2,7 +2,7 @@ require "fileutils"
|
|
2
2
|
require "pathname"
|
3
3
|
require "tempfile"
|
4
4
|
require "base64"
|
5
|
-
require "
|
5
|
+
require "marcel"
|
6
6
|
|
7
7
|
module ReverseAdoc
|
8
8
|
module Converters
|
@@ -50,7 +50,7 @@ module ReverseAdoc
|
|
50
50
|
f.binmode
|
51
51
|
f.write(Base64.strict_decode64(imgdata))
|
52
52
|
f.rewind
|
53
|
-
ext =
|
53
|
+
ext = Marcel::MimeType.for(f).sub(%r{^[^/]+/}, "")
|
54
54
|
[ext, f.path]
|
55
55
|
end
|
56
56
|
end
|
@@ -1,51 +1,51 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
12
|
-
require
|
13
|
-
require
|
14
|
-
require
|
15
|
-
require
|
16
|
-
require
|
17
|
-
require
|
18
|
-
require
|
19
|
-
require
|
20
|
-
require
|
21
|
-
require
|
22
|
-
require
|
23
|
-
require
|
24
|
-
require
|
25
|
-
require
|
26
|
-
require
|
27
|
-
require
|
28
|
-
require
|
29
|
-
require
|
30
|
-
require
|
31
|
-
require
|
32
|
-
require
|
33
|
-
require
|
34
|
-
require
|
35
|
-
require
|
3
|
+
require "reverse_adoc/converters/a"
|
4
|
+
require "reverse_adoc/converters/aside"
|
5
|
+
require "reverse_adoc/converters/audio"
|
6
|
+
require "reverse_adoc/converters/blockquote"
|
7
|
+
require "reverse_adoc/converters/br"
|
8
|
+
require "reverse_adoc/converters/bypass"
|
9
|
+
require "reverse_adoc/converters/code"
|
10
|
+
require "reverse_adoc/converters/div"
|
11
|
+
require "reverse_adoc/converters/drop"
|
12
|
+
require "reverse_adoc/converters/em"
|
13
|
+
require "reverse_adoc/converters/figure"
|
14
|
+
require "reverse_adoc/converters/h"
|
15
|
+
require "reverse_adoc/converters/head"
|
16
|
+
require "reverse_adoc/converters/hr"
|
17
|
+
require "reverse_adoc/converters/ignore"
|
18
|
+
require "reverse_adoc/converters/img"
|
19
|
+
require "reverse_adoc/converters/mark"
|
20
|
+
require "reverse_adoc/converters/li"
|
21
|
+
require "reverse_adoc/converters/ol"
|
22
|
+
require "reverse_adoc/converters/p"
|
23
|
+
require "reverse_adoc/converters/pass_through"
|
24
|
+
require "reverse_adoc/converters/pre"
|
25
|
+
require "reverse_adoc/converters/q"
|
26
|
+
require "reverse_adoc/converters/strong"
|
27
|
+
require "reverse_adoc/converters/sup"
|
28
|
+
require "reverse_adoc/converters/sub"
|
29
|
+
require "reverse_adoc/converters/table"
|
30
|
+
require "reverse_adoc/converters/td"
|
31
|
+
require "reverse_adoc/converters/th"
|
32
|
+
require "reverse_adoc/converters/text"
|
33
|
+
require "reverse_adoc/converters/tr"
|
34
|
+
require "reverse_adoc/converters/video"
|
35
|
+
require "reverse_adoc/converters/math"
|
36
36
|
|
37
37
|
module ReverseAdoc
|
38
38
|
class HtmlConverter
|
39
39
|
def self.convert(input, options = {})
|
40
40
|
root = if input.is_a?(String)
|
41
41
|
then Nokogiri::HTML(input).root
|
42
|
-
|
42
|
+
elsif input.is_a?(Nokogiri::XML::Document)
|
43
43
|
then input.root
|
44
|
-
|
44
|
+
elsif input.is_a?(Nokogiri::XML::Node)
|
45
45
|
then input
|
46
|
-
|
46
|
+
end
|
47
47
|
|
48
|
-
root || (return
|
48
|
+
root || (return "")
|
49
49
|
|
50
50
|
ReverseAdoc.config.with(options) do
|
51
51
|
result = ReverseAdoc::Converters.lookup(root.name).convert(root)
|
@@ -53,4 +53,4 @@ module ReverseAdoc
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
56
|
-
end
|
56
|
+
end
|
data/lib/reverse_adoc/version.rb
CHANGED
data/reverse_adoc.gemspec
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
|
2
|
+
|
3
|
+
$:.push File.expand_path("lib", __dir__)
|
3
4
|
require "reverse_adoc/version"
|
4
5
|
|
5
6
|
Gem::Specification.new do |s|
|
@@ -9,29 +10,30 @@ Gem::Specification.new do |s|
|
|
9
10
|
s.email = ["open.source@ribose.com"]
|
10
11
|
|
11
12
|
s.homepage = "http://github.com/metanorma/reverse_adoc"
|
12
|
-
s.summary =
|
13
|
-
s.description =
|
13
|
+
s.summary = "Generate AsciiDoc from HTML and Microsoft Word via CLI or library."
|
14
|
+
s.description = "Generate AsciiDoc from HTML and Microsoft Word via CLI or library."
|
14
15
|
s.license = "BSD-2-Clause"
|
15
16
|
|
16
17
|
s.files = `git ls-files`.split("\n")
|
17
18
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
-
s.executables = `git ls-files --
|
19
|
+
s.executables = `git ls-files -- exe/*`.split("\n").map { |f| File.basename(f) }
|
20
|
+
s.bindir = "exe"
|
19
21
|
s.require_paths = ["lib"]
|
20
|
-
s.required_ruby_version = Gem::Requirement.new(">= 2.
|
22
|
+
s.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
|
21
23
|
|
22
24
|
# specify any dependencies here; for example:
|
23
|
-
s.add_dependency
|
24
|
-
s.add_dependency
|
25
|
-
s.add_dependency
|
26
|
-
s.add_development_dependency
|
27
|
-
s.add_development_dependency
|
28
|
-
s.add_development_dependency
|
29
|
-
s.add_development_dependency
|
30
|
-
s.add_development_dependency
|
25
|
+
s.add_dependency "marcel", "~> 1.0.0"
|
26
|
+
s.add_dependency "mathml2asciimath"
|
27
|
+
s.add_dependency "nokogiri", "~> 1.12"
|
28
|
+
s.add_development_dependency "codeclimate-test-reporter"
|
29
|
+
s.add_development_dependency "rake"
|
30
|
+
s.add_development_dependency "redcarpet"
|
31
|
+
s.add_development_dependency "rspec"
|
32
|
+
s.add_development_dependency "simplecov"
|
31
33
|
|
32
34
|
# spec.add_runtime_dependency "thor"
|
33
35
|
|
34
36
|
# All the following are for bin/w2m
|
35
|
-
s.add_dependency
|
36
|
-
s.add_dependency
|
37
|
+
s.add_dependency "premailer", "~> 1.11.0"
|
38
|
+
s.add_dependency "word-to-markdown"
|
37
39
|
end
|
data/spec/assets/escapables.html
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
describe '
|
5
|
+
describe 'exe/revrse_adoc' do
|
6
6
|
subject(:convert) do
|
7
|
-
ShellUtils.execute!("./
|
7
|
+
ShellUtils.execute!("./exe/reverse_adoc -e -o test1 #{input_file_path}")
|
8
8
|
end
|
9
9
|
unless Gem.win_platform?
|
10
10
|
context 'when external images present' do
|
data/spec/bin/w2a_spec.rb
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
describe '
|
5
|
+
describe 'exe/w2a' do
|
6
6
|
subject(:convert) do
|
7
|
-
ShellUtils.execute!("./
|
7
|
+
ShellUtils.execute!("./exe/w2a -e -o test1 #{input_file_path}")
|
8
8
|
end
|
9
9
|
# TODO: fix github actions integration with libreoffice, currently it hangs
|
10
10
|
# when trying to use soffice binary
|
@@ -22,13 +22,13 @@ describe 'bin/w2a' do
|
|
22
22
|
expect { convert }.to_not raise_error
|
23
23
|
end
|
24
24
|
|
25
|
-
it '
|
25
|
+
it 'extracts images from source html' do
|
26
26
|
expect { convert }
|
27
27
|
.to(change do
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
28
|
+
Dir["#{images_folder}/*gif"]
|
29
|
+
.map { |entry| File.basename(entry) }
|
30
|
+
.size > 0
|
31
|
+
end.from(false).to(true))
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
@@ -8,7 +8,7 @@ describe ReverseAdoc do
|
|
8
8
|
|
9
9
|
it { is_expected.to match /plain text ?\n/ }
|
10
10
|
it { is_expected.to match /\n== h1\n/ }
|
11
|
-
it { is_expected.to match /\n\[\[A]\]\n== h1 with anchor\n/ }
|
11
|
+
it { is_expected.to match /\n\[\[A\]\]\n== h1 with anchor\n/ }
|
12
12
|
it { is_expected.to match /\n=== h2\n/ }
|
13
13
|
it { is_expected.to match /\n==== h3\n/ }
|
14
14
|
it { is_expected.to match /\n===== h4\n/ }
|
@@ -9,6 +9,9 @@ describe ReverseAdoc do
|
|
9
9
|
context "multiple asterisks" do
|
10
10
|
it { is_expected.to include ' \*\*two asterisks\*\* ' }
|
11
11
|
it { is_expected.to include ' \*\*\*three asterisks\*\*\* ' }
|
12
|
+
it { is_expected.to include ' \*and*the\* ' }
|
13
|
+
it { is_expected.to include ' asterisc*word ' }
|
14
|
+
it { is_expected.to include ' asterisc**multword asterisks\*\*\* ' }
|
12
15
|
end
|
13
16
|
|
14
17
|
context "multiple underscores" do
|
@@ -16,6 +19,11 @@ describe ReverseAdoc do
|
|
16
19
|
it { is_expected.to include ' \_\_\_three underscores\_\_\_ ' }
|
17
20
|
end
|
18
21
|
|
22
|
+
context "multiple underscores with undersocre inside words and new lines" do
|
23
|
+
it { is_expected.to include 'another_undersocre' }
|
24
|
+
it { is_expected.to include ' \_\_\_three__underscores\_\_\_ ' }
|
25
|
+
end
|
26
|
+
|
19
27
|
context "underscores within words in code blocks" do
|
20
28
|
it { is_expected.to include "....\n<code>var theoretical_max_infin = 1.0;</code>\n....\n" }
|
21
29
|
end
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reverse_adoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: marcel
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: 1.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: mathml2asciimath
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -39,21 +39,21 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: nokogiri
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '1.12'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '1.12'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: codeclimate-test-reporter
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
@@ -81,7 +81,7 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: redcarpet
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
@@ -95,7 +95,7 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: rspec
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: simplecov
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
@@ -123,33 +123,33 @@ dependencies:
|
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: premailer
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- - "
|
129
|
+
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
131
|
+
version: 1.11.0
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- - "
|
136
|
+
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
138
|
+
version: 1.11.0
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
140
|
+
name: word-to-markdown
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- - "
|
143
|
+
- - ">="
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
145
|
+
version: '0'
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- - "
|
150
|
+
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
152
|
+
version: '0'
|
153
153
|
description: Generate AsciiDoc from HTML and Microsoft Word via CLI or library.
|
154
154
|
email:
|
155
155
|
- open.source@ribose.com
|
@@ -159,18 +159,18 @@ executables:
|
|
159
159
|
extensions: []
|
160
160
|
extra_rdoc_files: []
|
161
161
|
files:
|
162
|
-
- ".
|
163
|
-
- ".github/workflows/
|
164
|
-
- ".github/workflows/
|
162
|
+
- ".editorconfig"
|
163
|
+
- ".github/workflows/rake.yml"
|
164
|
+
- ".github/workflows/release.yml"
|
165
|
+
- ".gitignore"
|
165
166
|
- ".hound.yml"
|
166
167
|
- ".rubocop.yml"
|
167
168
|
- Gemfile
|
168
|
-
- Gemfile.lock
|
169
169
|
- LICENSE.txt
|
170
170
|
- README.adoc
|
171
171
|
- Rakefile
|
172
|
-
-
|
173
|
-
-
|
172
|
+
- exe/reverse_adoc
|
173
|
+
- exe/w2a
|
174
174
|
- lib/reverse_adoc.rb
|
175
175
|
- lib/reverse_adoc/cleaner.rb
|
176
176
|
- lib/reverse_adoc/config.rb
|
@@ -275,14 +275,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
275
275
|
requirements:
|
276
276
|
- - ">="
|
277
277
|
- !ruby/object:Gem::Version
|
278
|
-
version: 2.
|
278
|
+
version: 2.5.0
|
279
279
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
280
280
|
requirements:
|
281
281
|
- - ">="
|
282
282
|
- !ruby/object:Gem::Version
|
283
283
|
version: '0'
|
284
284
|
requirements: []
|
285
|
-
rubygems_version: 3.
|
285
|
+
rubygems_version: 3.2.22
|
286
286
|
signing_key:
|
287
287
|
specification_version: 4
|
288
288
|
summary: Generate AsciiDoc from HTML and Microsoft Word via CLI or library.
|
data/.github/workflows/macos.yml
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
# Auto-generated by Cimas: Do not edit it manually!
|
2
|
-
# See https://github.com/metanorma/cimas
|
3
|
-
name: macos
|
4
|
-
|
5
|
-
on:
|
6
|
-
push:
|
7
|
-
branches: [ master ]
|
8
|
-
pull_request:
|
9
|
-
paths-ignore:
|
10
|
-
- .github/workflows/ubuntu.yml
|
11
|
-
- .github/workflows/windows.yml
|
12
|
-
|
13
|
-
jobs:
|
14
|
-
test-macos:
|
15
|
-
name: Test on Ruby ${{ matrix.ruby }} macOS
|
16
|
-
runs-on: macos-latest
|
17
|
-
continue-on-error: ${{ matrix.experimental }}
|
18
|
-
strategy:
|
19
|
-
fail-fast: false
|
20
|
-
matrix:
|
21
|
-
ruby: [ '2.6', '2.5', '2.4' ]
|
22
|
-
experimental: [false]
|
23
|
-
include:
|
24
|
-
- ruby: '2.7'
|
25
|
-
experimental: true
|
26
|
-
steps:
|
27
|
-
- uses: actions/checkout@master
|
28
|
-
- name: Use Ruby
|
29
|
-
uses: actions/setup-ruby@v1
|
30
|
-
with:
|
31
|
-
ruby-version: ${{ matrix.ruby }}
|
32
|
-
- name: Update gems
|
33
|
-
run: |
|
34
|
-
sudo gem install bundler --force
|
35
|
-
bundle install --jobs 4 --retry 3
|
36
|
-
- name: Install LibreOffice
|
37
|
-
run: |
|
38
|
-
brew cask install libreoffice
|
39
|
-
- name: Run specs
|
40
|
-
run: |
|
41
|
-
bundle exec rake
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# Auto-generated by Cimas: Do not edit it manually!
|
2
|
-
# See https://github.com/metanorma/cimas
|
3
|
-
name: ubuntu
|
4
|
-
|
5
|
-
on:
|
6
|
-
push:
|
7
|
-
branches: [ master ]
|
8
|
-
pull_request:
|
9
|
-
paths-ignore:
|
10
|
-
- .github/workflows/macos.yml
|
11
|
-
- .github/workflows/windows.yml
|
12
|
-
|
13
|
-
jobs:
|
14
|
-
test-linux:
|
15
|
-
name: Test on Ruby ${{ matrix.ruby }} Ubuntu
|
16
|
-
runs-on: ubuntu-latest
|
17
|
-
continue-on-error: ${{ matrix.experimental }}
|
18
|
-
strategy:
|
19
|
-
fail-fast: false
|
20
|
-
matrix:
|
21
|
-
ruby: [ '2.6', '2.5', '2.4' ]
|
22
|
-
experimental: [false]
|
23
|
-
include:
|
24
|
-
- ruby: '2.7'
|
25
|
-
experimental: true
|
26
|
-
steps:
|
27
|
-
- uses: actions/checkout@master
|
28
|
-
- name: Use Ruby
|
29
|
-
uses: actions/setup-ruby@v1
|
30
|
-
with:
|
31
|
-
ruby-version: ${{ matrix.ruby }}
|
32
|
-
- name: Install LibreOffice
|
33
|
-
run: sudo apt-get -y --no-install-recommends install libreoffice
|
34
|
-
- name: Update gems
|
35
|
-
run: |
|
36
|
-
gem install bundler
|
37
|
-
bundle install --jobs 4 --retry 3
|
38
|
-
- name: Run specs
|
39
|
-
run: |
|
40
|
-
bundle exec rake
|
@@ -1,44 +0,0 @@
|
|
1
|
-
# Auto-generated by Cimas: Do not edit it manually!
|
2
|
-
# See https://github.com/metanorma/cimas
|
3
|
-
name: windows
|
4
|
-
|
5
|
-
on:
|
6
|
-
push:
|
7
|
-
branches: [ master ]
|
8
|
-
pull_request:
|
9
|
-
paths-ignore:
|
10
|
-
- .github/workflows/macos.yml
|
11
|
-
- .github/workflows/ubuntu.yml
|
12
|
-
|
13
|
-
jobs:
|
14
|
-
test-windows:
|
15
|
-
name: Test on Ruby ${{ matrix.ruby }} Windows
|
16
|
-
runs-on: windows-latest
|
17
|
-
continue-on-error: ${{ matrix.experimental }}
|
18
|
-
strategy:
|
19
|
-
fail-fast: false
|
20
|
-
matrix:
|
21
|
-
ruby: [ '2.6', '2.5', '2.4' ]
|
22
|
-
experimental: [false]
|
23
|
-
include:
|
24
|
-
- ruby: '2.7'
|
25
|
-
experimental: true
|
26
|
-
steps:
|
27
|
-
- uses: actions/checkout@master
|
28
|
-
- name: Use Ruby
|
29
|
-
uses: actions/setup-ruby@v1
|
30
|
-
with:
|
31
|
-
ruby-version: ${{ matrix.ruby }}
|
32
|
-
- name: Install LibreOffice
|
33
|
-
run: |
|
34
|
-
choco install libreoffice-still
|
35
|
-
echo "::add-path::C:\Program Files\LibreOffice\program"
|
36
|
-
- name: Update gems
|
37
|
-
shell: pwsh
|
38
|
-
run: |
|
39
|
-
gem install bundler
|
40
|
-
bundle config --local path vendor/bundle
|
41
|
-
bundle install --jobs 4 --retry 3
|
42
|
-
- name: Run specs
|
43
|
-
run: |
|
44
|
-
bundle exec rake
|
data/Gemfile.lock
DELETED
@@ -1,85 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
reverse_adoc (0.2.10)
|
5
|
-
mathml2asciimath
|
6
|
-
mimemagic
|
7
|
-
nokogiri (>= 1.10.4)
|
8
|
-
premailer (~> 1.11.0)
|
9
|
-
word-to-markdown
|
10
|
-
|
11
|
-
GEM
|
12
|
-
remote: https://rubygems.org/
|
13
|
-
specs:
|
14
|
-
addressable (2.7.0)
|
15
|
-
public_suffix (>= 2.0.2, < 5.0)
|
16
|
-
byebug (11.1.1)
|
17
|
-
cliver (0.3.2)
|
18
|
-
codeclimate-test-reporter (1.0.7)
|
19
|
-
simplecov
|
20
|
-
css_parser (1.7.1)
|
21
|
-
addressable
|
22
|
-
descriptive_statistics (2.5.1)
|
23
|
-
diff-lcs (1.3)
|
24
|
-
docile (1.3.2)
|
25
|
-
ffi (1.13.1)
|
26
|
-
htmlentities (4.3.4)
|
27
|
-
mathml2asciimath (0.0.10)
|
28
|
-
htmlentities (~> 4.3.4)
|
29
|
-
nokogiri (>= 1.10.4)
|
30
|
-
mimemagic (0.3.5)
|
31
|
-
mini_portile2 (2.4.0)
|
32
|
-
nokogiri (1.10.10)
|
33
|
-
mini_portile2 (~> 2.4.0)
|
34
|
-
nokogiri-styles (0.1.2)
|
35
|
-
nokogiri
|
36
|
-
premailer (1.11.1)
|
37
|
-
addressable
|
38
|
-
css_parser (>= 1.6.0)
|
39
|
-
htmlentities (>= 4.0.0)
|
40
|
-
public_suffix (4.0.6)
|
41
|
-
rake (13.0.1)
|
42
|
-
redcarpet (3.5.0)
|
43
|
-
reverse_markdown (1.4.0)
|
44
|
-
nokogiri
|
45
|
-
rspec (3.9.0)
|
46
|
-
rspec-core (~> 3.9.0)
|
47
|
-
rspec-expectations (~> 3.9.0)
|
48
|
-
rspec-mocks (~> 3.9.0)
|
49
|
-
rspec-core (3.9.1)
|
50
|
-
rspec-support (~> 3.9.1)
|
51
|
-
rspec-expectations (3.9.0)
|
52
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
53
|
-
rspec-support (~> 3.9.0)
|
54
|
-
rspec-mocks (3.9.1)
|
55
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
56
|
-
rspec-support (~> 3.9.0)
|
57
|
-
rspec-support (3.9.2)
|
58
|
-
simplecov (0.18.5)
|
59
|
-
docile (~> 1.1)
|
60
|
-
simplecov-html (~> 0.11)
|
61
|
-
simplecov-html (0.12.1)
|
62
|
-
sys-proctable (1.2.6)
|
63
|
-
ffi
|
64
|
-
word-to-markdown (1.1.8)
|
65
|
-
cliver (~> 0.3)
|
66
|
-
descriptive_statistics (~> 2.5)
|
67
|
-
nokogiri-styles (~> 0.1)
|
68
|
-
premailer (~> 1.8)
|
69
|
-
reverse_markdown (~> 1.0)
|
70
|
-
sys-proctable (~> 1.0)
|
71
|
-
|
72
|
-
PLATFORMS
|
73
|
-
ruby
|
74
|
-
|
75
|
-
DEPENDENCIES
|
76
|
-
byebug
|
77
|
-
codeclimate-test-reporter
|
78
|
-
rake
|
79
|
-
redcarpet
|
80
|
-
reverse_adoc!
|
81
|
-
rspec
|
82
|
-
simplecov
|
83
|
-
|
84
|
-
BUNDLED WITH
|
85
|
-
2.0.2
|