hubdown 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -35,7 +35,7 @@ Doing so will send converted markdown to standard output allowing you to pipe th
35
35
  $ hubdown file.md -w
36
36
  ```
37
37
 
38
- When passing the `-w` flag hubdown will render the markdown in an approximation of what Github provides and push it to STDOUT.
38
+ When passing the `-w` flag hubdown will render the markdown in an approximation of what Github provides and push it to STDOUT. See Scraping for CSS below.
39
39
  ***
40
40
  ### Output to a file
41
41
 
@@ -43,7 +43,11 @@ When passing the `-w` flag hubdown will render the markdown in an approximation
43
43
  $ hubdown my_file.md -o my_file.html
44
44
  ```
45
45
 
46
- When passing the `-o` flag with a file name, hubdown will write the full html output (as though you passed the `-w`) to the file you pass with `-o`.
46
+ When passing the `-o` flag with a file name, hubdown will write the full html output (as though you passed the `-w`) to the file you pass with `-o`. See Scraping for CSS below.
47
+ ***
48
+ ### Scraping for CSS
49
+ Note that when you use either the `-w` or `-o` flags, hubdown will use your network connection to scrap the currently used CSS from github.com.
50
+
47
51
  ***
48
52
 
49
53
  ## Contributing
data/bin/hubdown CHANGED
@@ -11,8 +11,7 @@ def init
11
11
  mdown = create_mdown
12
12
 
13
13
  if parser.config[:output] || parser.config[:wrap]
14
- p = Hubdown::PageBuilder.new mdown
15
- page_data = p.get_page
14
+ page_data = create_page mdown
16
15
  if parser.config[:output]
17
16
  File.open( parser.config[:output], "w" ) { |f| f.write page_data }
18
17
  end
@@ -27,9 +26,20 @@ def init
27
26
  puts output
28
27
  end
29
28
 
29
+ end
30
30
 
31
+ def create_page mdown
32
+ options = {
33
+ "body" => mdown,
34
+ "filename" => @file_name,
35
+ "uri" => 'https://github.com/knomedia/hubdown'
36
+ }
37
+ p = Hubdown::PageBuilder.new options
38
+ page_data = p.get_page
39
+ page_data
31
40
  end
32
41
 
42
+
33
43
  def create_mdown
34
44
  md = GitHub::Markdown.render_gfm File.read(@file_name)
35
45
  md
data/hubdown.gemspec CHANGED
@@ -14,6 +14,7 @@ Gem::Specification.new do |gem|
14
14
 
15
15
  gem.add_dependency 'github-markdown'
16
16
  gem.add_dependency 'mixlib-cli'
17
+ gem.add_dependency 'nokogiri'
17
18
 
18
19
  gem.files = `git ls-files`.split($/)
19
20
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -1,53 +1,23 @@
1
+ require 'hubdown/style_scraper'
2
+ require 'erb'
3
+
1
4
  module Hubdown
2
5
  class PageBuilder
3
6
 
4
- def initialize body
5
- @body = body
7
+ def initialize args
8
+ @body = args.fetch("body"){ '' }
9
+ @uri = args.fetch("uri"){ 'https://github.com/knomedia/hubdown' }
10
+ @filename = args.fetch("filename"){ '' }
11
+ @scraper = StyleScraper.new( @uri )
6
12
  end
7
13
 
8
14
  def get_page
9
- page = "#{get_head}#{@body}#{get_closing}"
15
+ links = @scraper.get_css_links
16
+ body = @body
17
+ filename = @filename
18
+ template = ERB.new( File.read("lib/hubdown/template.html.erb"), nil, "-" )
19
+ page = template.result(binding)
10
20
  page
11
21
  end
12
-
13
- def get_head
14
- opening = <<EOF
15
- <!DOCTYPE html>
16
- <html>
17
- <head>
18
- <title>OUTPUT</title>
19
- <link href="https://a248.e.akamai.net/assets.github.com/assets/github-8dd5c1a834790ecb6b900ff7b2d9a1377fd5aef1.css" media="screen" rel="stylesheet" type="text/css" />
20
- <link href="https://a248.e.akamai.net/assets.github.com/assets/github2-4591451faf42b997173d752065f048736e6f9872.css" media="screen" rel="stylesheet" type="text/css" />
21
- <style>
22
- #wrapper {
23
- width: 920px;
24
- margin: 20px auto;
25
- }
26
- </style>
27
- </head>
28
-
29
- <body>
30
- <div id="wrapper">
31
- <div id="slider">
32
- <div class="frames">
33
- <div class="frame">
34
- <div id="readme" class="clearfix announce instapaper_body md">
35
- <span class="name">FILE_NAME</span>
36
- <article class="markdown-body entry-content">
37
- EOF
38
- end
39
-
40
- def get_closing
41
- closing = <<EOF
42
- </article>
43
- </div>
44
- </div>
45
- </div>
46
- </div>
47
- </div>
48
- </body>
49
- </html>
50
- EOF
51
- end
52
22
  end
53
23
  end
@@ -0,0 +1,24 @@
1
+ require 'nokogiri'
2
+ require 'open-uri'
3
+
4
+ class StyleScraper
5
+
6
+ def initialize uri
7
+ @uri = uri
8
+ begin
9
+ @page = Nokogiri::HTML( open( @uri ) )
10
+ rescue
11
+ puts "It appears we are unable to connect to: #{@uri} for CSS scraping."
12
+ puts "Please check your internet connection"
13
+ exit 0
14
+ end
15
+ end
16
+
17
+ def get_css_links
18
+ links = []
19
+ links = @page.css("link").select{ |link| link['rel'] == 'stylesheet' }
20
+ links
21
+ end
22
+
23
+
24
+ end
@@ -0,0 +1,31 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title><%= filename || ''%></title>
5
+ <% links.each do |link| -%>
6
+ <%= link -%>
7
+ <% end -%>
8
+ <style>
9
+ #wrapper {
10
+ width: 920px;
11
+ margin: 20px auto;
12
+ }
13
+ </style>
14
+ </head>
15
+ <body>
16
+ <div id="wrapper">
17
+ <div id="slider">
18
+ <div class="frames">
19
+ <div class="frame">
20
+ <div id="readme" class="clearfix announce instapaper_body md">
21
+ <span class="name"><%= filename || ''%></span>
22
+ <article class="markdown-body entry-content">
23
+ <%= body -%>
24
+ </article>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ </div>
30
+ </body>
31
+ </html>
@@ -1,3 +1,3 @@
1
1
  module Hubdown
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hubdown
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-26 00:00:00.000000000 Z
12
+ date: 2012-12-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: github-markdown
@@ -43,6 +43,22 @@ dependencies:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: nokogiri
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
46
62
  description: CLI for GitHub Flavored markdown to html convervsion
47
63
  email:
48
64
  - knomedia@gmail.com
@@ -61,6 +77,8 @@ files:
61
77
  - lib/hubdown.rb
62
78
  - lib/hubdown/cli_parser.rb
63
79
  - lib/hubdown/page_builder.rb
80
+ - lib/hubdown/style_scraper.rb
81
+ - lib/hubdown/template.html.erb
64
82
  - lib/hubdown/version.rb
65
83
  homepage: https://github.com/knomedia/hubdown
66
84
  licenses: []