gfm 0.1.0 → 0.1.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.
Files changed (5) hide show
  1. checksums.yaml +8 -8
  2. data/bin/gfm +11 -0
  3. data/lib/gfm.rb +26 -36
  4. data/lib/gfm/converter.rb +44 -0
  5. metadata +2 -1
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MzU4ZjE2MTY0YmI5N2I0ZmM1ZjNlNTQ3ODBlNWQ0N2MxNGUyMTRmYQ==
4
+ YTE3NDBjOGQyYTU0MWE3NjI1YTdmMTA4MWYzZjQ5YmY3YTJlMTUyNg==
5
5
  data.tar.gz: !binary |-
6
- Yjc1MDNiNzdiNGEzMmE5MDlmZTAzZmQyMjljMDhkMThjMDU2ZTZjMw==
6
+ ZTJkMzBmMTRlZmVlMWIyNjBkNzcyMGIxMTNlYjExMDA2NWUwNTQyYQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- MTVjYmU5Y2RhZmYwNTJhOWYyMmRiOWRmZjQzMThmY2I5ZDE1NzRiN2E3ODI2
10
- Nzg3MGZlZTRkNmI0NWM0OGNlODk3OTQ4ZjAxNmUzMDcxMzMwMmY2ZTRiYzkz
11
- NmU4N2YxZGVkNzI0YmM2ZmU5MTcyZWZkOTdjZmM1ZmYzZTljMjk=
9
+ NTNmNTY5OWNhMGUyZWQzOGFiZWI1ZGY5MGE3NWJmNzM2ZTE1OTc0ZTgxZGIx
10
+ Yzk1ZjI3MjQ4NTk4NzQzY2ExYzFkNjE4OGNmNTIzMzVjMzhmZjc0MjRkOWYw
11
+ ZGYzNWU1ZjBkODgzOTU0MGFkYzZkYjMzOTIzNTE5ZWUyMDc5ZGQ=
12
12
  data.tar.gz: !binary |-
13
- YTBmMGI5NWYwMGI3YzM5NTQyOWQ4YTE0NzZmYTJjZmI5ODUzNzVhOGY2YTNm
14
- MTIzMTAzN2RhYzc0NGZlNDdmZGZmZDE2NjJiYmJjY2Q2NDAyYzljMTA2Nzc0
15
- NDA4Njg4YTk2OWJhYTlkY2Q3MzI1NmZkYWQyZjAxZjg0NGVkYTU=
13
+ MTg3NDBkNjgyNTBjNmQ5MjAzNWYzMTE2ZDBlZjhhNTY0NzI3MzZjZDZhMzgx
14
+ YTFiZGVjZWYyZTE3NWIwMGI3OGVlYWFiZGE0MzJiNDAyZjRlNjkzYTMzN2Yz
15
+ ZDFjZjdjMjU1Yjc4ZTczZmNiNjg4NTU0NGQ2NzBlZTgwNzc5ODg=
data/bin/gfm CHANGED
@@ -1,3 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'gfm'
4
+ require 'gfm/converter'
5
+
6
+ input_file, output_file = ARGV
7
+
8
+ if input_file.nil? || ARGV.include?('--help') || ARGV.include?('-h')
9
+ puts GFM::HELP_TEXT
10
+ elsif input_file.end_with?(".md") && File.exists?(input_file)
11
+ GFM::Converter.new(input_file).write_output_file(output_file)
12
+ else
13
+ puts "Invalid markdown file #{input_file}"
14
+ end
data/lib/gfm.rb CHANGED
@@ -1,45 +1,35 @@
1
- input_file = ARGV[0]
2
-
3
- if input_file.nil? || ARGV.include?('--help') || ARGV.include?('-h')
4
- puts <<HELP
5
- Usage:
6
- gfm input_file.md [output_file] [--help, -h]
7
-
8
- input_file.md The markdown file to be parsed with GitHub Flavored Markdown.
9
-
10
- output_file Name of the output file to be generated. If no name is given,
11
- input_file.html is used.
12
-
13
- --help, -h Display this help message.
14
- HELP
15
- elsif input_file.end_with?(".md") && File.exists?(input_file)
1
+ module GFM
16
2
  require 'html/pipeline'
17
3
  require 'httpclient'
18
4
  require 'linguist'
19
5
 
20
- pipeline = HTML::Pipeline.new [
21
- HTML::Pipeline::MarkdownFilter,
22
- HTML::Pipeline::TableOfContentsFilter,
23
- HTML::Pipeline::SanitizationFilter,
24
- HTML::Pipeline::ImageMaxWidthFilter,
25
- HTML::Pipeline::HttpsFilter,
26
- HTML::Pipeline::MentionFilter,
27
- HTML::Pipeline::SyntaxHighlightFilter
28
- ]
6
+ HELP_TEXT = <<HELP
7
+ Usage:
8
+ gfm INPUT_FILE.md [OUTPUT_FILE] [--help, -h]
29
9
 
30
- stylesheet_tags = HTTPClient.new.get("https://github.com").body.split("\n").select do |line|
31
- line=~/https:.*github.*\.css/
32
- end.join
10
+ INPUT_FILE.md The markdown file to be parsed with GitHub Flavored Markdown.
33
11
 
34
- output_file_name = ARGV[1].present? ? (ARGV[1].end_with?('.html') ? ARGV[1] : ARGV[1] + '.html') : nil
35
- output_file = File.open(output_file_name || ARGV[0].gsub('md', 'html'), 'w')
12
+ OUTPUT_FILE Name of the output file to be generated. If no name is given,
13
+ INPUT_FILE.html is used.
36
14
 
37
- html_opening_tags = "<html><head><title>#{ARGV[0]}</title>"
38
- body_tags = "</head><body><div id='readme' style='width:914px;margin:20px auto'><article class='markdown-body'>"
39
- body_content = pipeline.call(File.new(ARGV[0]).readlines.join)[:output].to_s
40
- html_closing_tags = '</article></div></body></html>'
15
+ --help, -h Display this help message.
16
+ HELP
41
17
 
42
- output_file.write(html_opening_tags + stylesheet_tags + body_tags + body_content + html_closing_tags)
43
- else
44
- puts "Invalid markdown file #{ARGV[0]}"
18
+ def self.pipeline
19
+ HTML::Pipeline.new [
20
+ HTML::Pipeline::MarkdownFilter,
21
+ HTML::Pipeline::TableOfContentsFilter,
22
+ HTML::Pipeline::SanitizationFilter,
23
+ HTML::Pipeline::ImageMaxWidthFilter,
24
+ HTML::Pipeline::HttpsFilter,
25
+ HTML::Pipeline::MentionFilter,
26
+ HTML::Pipeline::SyntaxHighlightFilter
27
+ ]
28
+ end
29
+
30
+ def self.stylesheet_tags
31
+ HTTPClient.new.get("https://github.com").body.split("\n").select do |line|
32
+ line=~/https:.*github.*\.css/
33
+ end.join
34
+ end
45
35
  end
@@ -0,0 +1,44 @@
1
+ module GFM
2
+ class Converter
3
+ def initialize(input_file_name)
4
+ @input_file_name = input_file_name
5
+ end
6
+
7
+ def write_output_file(filename = nil)
8
+ File.open(sanitized_output_file_name(filename), 'w').write(html_content)
9
+ end
10
+
11
+ private
12
+
13
+ def sanitized_output_file_name(filename = nil)
14
+ if filename.present?
15
+ filename.end_with?('.html') ? filename : filename + '.html'
16
+ else
17
+ @input_file_name.gsub('md', 'html')
18
+ end
19
+ end
20
+
21
+
22
+ def html_content
23
+ %Q{
24
+ <html>
25
+ <head>
26
+ <title>#{@input_file_name}</title>
27
+ #{GFM.stylesheet_tags}
28
+ </head>
29
+ <body>
30
+ <div id='readme' style='width:914px;margin:20px auto'>
31
+ <article class='markdown-body'>
32
+ #{parse_markdown}
33
+ </article>
34
+ </div>
35
+ </body>
36
+ </html>
37
+ }
38
+ end
39
+
40
+ def parse_markdown
41
+ GFM.pipeline.call(File.new(@input_file_name).read)[:output].to_s
42
+ end
43
+ end
44
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gfm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Rose
@@ -47,6 +47,7 @@ extensions: []
47
47
  extra_rdoc_files: []
48
48
  files:
49
49
  - lib/gfm.rb
50
+ - lib/gfm/converter.rb
50
51
  - bin/gfm
51
52
  homepage: https://github.com/msrose/gfm
52
53
  licenses: