codemerger 0.5.0 → 1.0.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 +4 -4
- data/README.markdown +1 -1
- data/VERSION +1 -1
- data/codemerger.gemspec +4 -5
- data/lib/codemerger/document_with_css.html.erb +50 -0
- data/lib/codemerger/merger.rb +18 -5
- data/lib/codemerger/version.rb +1 -1
- data/test/merger_spec.rb +7 -3
- metadata +2 -3
- data/test/version_spec.rb +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d09b99a932d000dcb9c3af96d51240ff6e4d0cd2cd76f1674a2e472452bcfbf0
|
4
|
+
data.tar.gz: 0d1e40620245525fc22239c9fda3591e516e4b5e428578cb00983f8811a0646d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 127eeb53d15a84006ee79c2087182dc4cb8757b3c35a60d329478ccd5b8b47c61eed481eabc178788f00f8a2c9f481e4a0f9e70035a3548f97e4771d43dfef07
|
7
|
+
data.tar.gz: fb8b9937d27161352b9ebc2ee699525466d1f6d4423878bba4baa0bbe1911a67b2959c3aaf50a896fb01891b77ed634dde824c392a8c06d3ee1111c2727e2509
|
data/README.markdown
CHANGED
@@ -4,7 +4,7 @@ To use this GEM I usually create a new directory for the post or post group proj
|
|
4
4
|
|
5
5
|
source "http://rubygems.org"
|
6
6
|
group :rake do
|
7
|
-
gem "codemerger", "0.
|
7
|
+
gem "codemerger", "1.0.0", :require => "codemerger/rake_tasks"
|
8
8
|
end
|
9
9
|
|
10
10
|
After that I create a Rakefile like this:
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
1.0.0
|
data/codemerger.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: codemerger 0.
|
5
|
+
# stub: codemerger 1.0.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "codemerger".freeze
|
9
|
-
s.version = "0.
|
9
|
+
s.version = "1.0.0".freeze
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["Rodrigo Urubatan".freeze]
|
14
|
-
s.date = "2025-02-
|
14
|
+
s.date = "2025-02-27"
|
15
15
|
s.description = "This gem is used to help writing technical posts for wordpress.\n The output is copied and pasted to a post into my wordpress blog, and the code gets colored using the plugin wp-syntax, and the output can be turned into PDF with the plugin wp-mpdf.\n\nToday this gem supports source files in the following languages:\n\n* Ruby (including Rakefile and Gemfile)\n* Java\n* YAML\n* HTML\n* XML\n* Scala\n* CSS\n* Javascript\n* Bash\n* Batch\n\nAll other files are configured as \"text\".".freeze
|
16
16
|
s.email = "rodrigo@urubatan.com.br".freeze
|
17
17
|
s.extra_rdoc_files = [
|
@@ -36,8 +36,7 @@ Gem::Specification.new do |s|
|
|
36
36
|
"test/sample.rb",
|
37
37
|
"test/test.html",
|
38
38
|
"test/test2.markdown",
|
39
|
-
"test/test_helper.rb"
|
40
|
-
"test/version_spec.rb"
|
39
|
+
"test/test_helper.rb"
|
41
40
|
]
|
42
41
|
s.homepage = "https://github.com/urubatan/codemerger".freeze
|
43
42
|
s.licenses = ["MIT".freeze]
|
@@ -16,6 +16,56 @@ end
|
|
16
16
|
<title><%= title %></title>
|
17
17
|
<meta name="generator" content="kramdown <%= ::Kramdown::VERSION %>" />
|
18
18
|
<style>
|
19
|
+
|
20
|
+
body {
|
21
|
+
font-family: Palatino, serif;
|
22
|
+
font-size: 14pt;
|
23
|
+
line-height: 1.6;
|
24
|
+
margin: 0 30px;
|
25
|
+
/*max-width: 65ch;*/
|
26
|
+
}
|
27
|
+
|
28
|
+
header {
|
29
|
+
text-align: center;
|
30
|
+
break-after: page;
|
31
|
+
}
|
32
|
+
|
33
|
+
h1, h2, h3, h4, h5, h6 {
|
34
|
+
margin-top: 2em;
|
35
|
+
margin-bottom: 1em;
|
36
|
+
}
|
37
|
+
|
38
|
+
h2 {
|
39
|
+
break-before: page;
|
40
|
+
}
|
41
|
+
|
42
|
+
p {
|
43
|
+
margin: 0;
|
44
|
+
}
|
45
|
+
|
46
|
+
/* Add text indents to every paragraph except the first. This includes other
|
47
|
+
elements, so there will be no text indent after let's say an image or a list.
|
48
|
+
p + p {
|
49
|
+
text-indent: 2ch;
|
50
|
+
}
|
51
|
+
*/
|
52
|
+
hr {
|
53
|
+
border: none;
|
54
|
+
margin-bottom: 2em;
|
55
|
+
}
|
56
|
+
|
57
|
+
hr[data-break="hard"] {
|
58
|
+
margin: 1em auto;
|
59
|
+
font-size: 1.25em;
|
60
|
+
color: currentColor;
|
61
|
+
text-align: center;
|
62
|
+
}
|
63
|
+
|
64
|
+
hr[data-break="hard"]::before {
|
65
|
+
content: "* * *";
|
66
|
+
}
|
67
|
+
|
68
|
+
|
19
69
|
p:has(.code-title) {
|
20
70
|
margin-bottom: 0;
|
21
71
|
.code-title {
|
data/lib/codemerger/merger.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require "fileutils"
|
2
2
|
require "kramdown"
|
3
|
+
require "rouge"
|
3
4
|
|
4
5
|
module Codemerger
|
5
6
|
class Merger
|
@@ -60,17 +61,29 @@ module Codemerger
|
|
60
61
|
|
61
62
|
def build_md_merged_file_content(f_name)
|
62
63
|
ext = f_name[/(\.[a-zA-Z]+)/]
|
63
|
-
|
64
|
-
|
64
|
+
if ext =~ /^(md|markdown)$/
|
65
|
+
lang_str = get_language_str(ext)
|
66
|
+
%(_#{sanitize(f_name)}_{:.code-title}
|
65
67
|
|
66
68
|
~~~ #{lang_str}
|
67
69
|
#{read_contents(f_name)}
|
68
70
|
~~~
|
69
71
|
)
|
72
|
+
else
|
73
|
+
%(
|
74
|
+
|
75
|
+
#{read_contents(f_name)}
|
76
|
+
|
77
|
+
)
|
78
|
+
end
|
70
79
|
end
|
71
80
|
|
72
|
-
def process_files
|
73
|
-
in_files =
|
81
|
+
def process_files(html: false)
|
82
|
+
in_files = if html
|
83
|
+
Dir.glob("#{@dir_name}/**/*.{markdown,md,html}")
|
84
|
+
else
|
85
|
+
Dir.glob("#{@dir_name}/**/*.{markdown,md}")
|
86
|
+
end
|
74
87
|
in_files.sort.each do |file|
|
75
88
|
in_lines = IO.readlines(file).join("")
|
76
89
|
is_markdown = (file =~ /markdown$/) || (file =~ /md$/)
|
@@ -98,7 +111,7 @@ module Codemerger
|
|
98
111
|
end
|
99
112
|
|
100
113
|
def process_markdown(text)
|
101
|
-
template = "string://#{File.read(File.join(File.dirname(File.expand_path(__FILE__)),'document_with_css.html.erb'))}"
|
114
|
+
template = "string://#{File.read(File.join(File.dirname(File.expand_path(__FILE__)), 'document_with_css.html.erb'))}"
|
102
115
|
doc = Kramdown::Document.new(text, syntax_highlighter: :rouge, header_links: true, auto_ids: true, template: template)
|
103
116
|
doc.to_html
|
104
117
|
end
|
data/lib/codemerger/version.rb
CHANGED
data/test/merger_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative
|
1
|
+
require_relative "test_helper"
|
2
2
|
require "codemerger"
|
3
3
|
describe Codemerger::Merger do
|
4
4
|
def setup
|
@@ -37,9 +37,13 @@ describe Codemerger::Merger do
|
|
37
37
|
_(expected).must_equal actual
|
38
38
|
end
|
39
39
|
it "should process HTML and Markdown files" do
|
40
|
-
@merger.process_files
|
40
|
+
@merger.process_files(html: true)
|
41
41
|
_(File.exist?("output/test/test.html")).must_equal true
|
42
42
|
_(File.exist?("output/test/test2.html")).must_equal true
|
43
|
-
|
43
|
+
end
|
44
|
+
it "should process only Markdown files" do
|
45
|
+
@merger.clean_dirs
|
46
|
+
@merger.process_files
|
47
|
+
_(File.exist?("output/test/test2.html")).must_equal true
|
44
48
|
end
|
45
49
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: codemerger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rodrigo Urubatan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-02-
|
11
|
+
date: 2025-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kramdown
|
@@ -165,7 +165,6 @@ files:
|
|
165
165
|
- test/test.html
|
166
166
|
- test/test2.markdown
|
167
167
|
- test/test_helper.rb
|
168
|
-
- test/version_spec.rb
|
169
168
|
homepage: https://github.com/urubatan/codemerger
|
170
169
|
licenses:
|
171
170
|
- MIT
|