chopin 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/chopin.rb +57 -32
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2c1269a1d0dc69cedad15746b003d7333355f194
4
- data.tar.gz: 698038bd392e864aeff404d6f15f10d1500aabb1
3
+ metadata.gz: f1bffce48b865b18cd9f20e76216a7bd26370028
4
+ data.tar.gz: bfb36c6e825f81afad5bf2e3e4a575ef1ae99878
5
5
  SHA512:
6
- metadata.gz: 40dd5b4057f7afafa0a2745fd8f013c712bc0aedd4a8b185ee06b9259809674b233a40a1859bffc3067594b051f87ef2c7155052b54e23fe8948a88ae3dfd63b
7
- data.tar.gz: 81190674aed6a263fa0f79808bf71581dacb57df677b6fa2057906714b6138d64ee04aa4520fb8c59342ee4408953a626ef4dd16c03641c3178ae9a89a412b50
6
+ metadata.gz: 7bc29f3d758c00e2284306a8770b75a33745f02166d09f4b552317f1bb1c8231e5edb7e9d7726312eb394894135e1396e73746aab748fb4b8175807dd3d3f853
7
+ data.tar.gz: f049681ee8e4ffb696f2d59c6413eae16b9f00d8b2755dee80672495d3dc12034846075ec2d1156282112b77b60042fd05a97b9ad7aedc34176ef2429144523e
data/lib/chopin.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'chopin/namespace'
1
2
  require 'chopin/pygments_renderer'
2
3
  require 'erb'
3
4
  require 'fileutils'
@@ -5,14 +6,9 @@ require 'redcarpet'
5
6
  require 'sass'
6
7
 
7
8
  module Chopin
8
- def self.convert_sass(source, type)
9
- Sass::Engine.new(File.new(source).read,
10
- load_paths: [File.dirname(source)],
11
- syntax: type
12
- ).render
13
- end
14
-
15
9
  def self.copy(source, destination, layout = nil)
10
+ @root = source unless @root
11
+
16
12
  if File.directory?(source)
17
13
  unless Dir.exists?(destination)
18
14
  Dir.mkdir(destination)
@@ -32,39 +28,21 @@ module Chopin
32
28
  next
33
29
  end
34
30
 
35
- copy("#{source}/#{file}", "#{destination}/#{file}", layout)
31
+ copy("#{source}/#{file}", destination, layout)
36
32
  end
37
33
  else
38
34
  case File.extname(source)
39
35
  when '.erb'
40
- unless File.basename(source) == 'layout.erb'
41
- destination_html = destination.sub('.erb', '.html')
42
- puts " #{PURPLE}Parse#{WHITE} #{source} (into #{layout}) -> #{destination_html}"
43
- render = Proc.new { ERB.new(File.read(source)).result }
44
- output = ERB.new(File.read(layout)).result(nil, &render)
45
- File.new(destination_html, 'w').write(output)
46
- end
36
+ process_erb(source, destination, layout) unless File.basename(source, '.erb') == 'layout'
47
37
 
48
38
  when '.md'
49
- destination_html = destination.sub('.md', '.html')
50
- puts " #{PURPLE}Parse#{WHITE} #{source} (into #{layout}) -> #{destination_html}"
51
- render = Proc.new { MARKDOWN.render(File.new(source).read) }
52
- output = ERB.new(File.read(layout)).result(nil, &render)
53
- File.new(destination_html, 'w').write(output)
39
+ process_markdown(source, destination, layout)
54
40
 
55
41
  when '.sass'
56
- unless File.basename(source)[0] == '_'
57
- destination_css = destination.sub('.sass', '.css')
58
- puts " #{CYAN}Convert#{WHITE} #{source} -> #{destination_css}"
59
- File.new(destination_css, 'w').write(convert_sass(source, :sass))
60
- end
42
+ process_sass(source, destination, :sass) unless File.basename(source)[0] == '_'
61
43
 
62
44
  when '.scss'
63
- unless File.basename(source)[0] == '_'
64
- destination_css = destination.sub('.scss', '.css')
65
- puts " #{CYAN}Convert#{WHITE} #{source} -> #{destination_css}"
66
- File.new(destination_css, 'w').write(convert_sass(source, :scss))
67
- end
45
+ process_sass(source, destination, :scss) unless File.basename(source)[0] == '_'
68
46
 
69
47
  else
70
48
  puts " #{BLUE}Copy#{WHITE} #{source} -> #{destination}"
@@ -75,14 +53,61 @@ module Chopin
75
53
 
76
54
  private
77
55
 
56
+ def self.get_page_name(file_name)
57
+ File.dirname(file_name).sub(@root, '').split('/')
58
+ .push(File.basename(file_name, File.extname(file_name)))
59
+ .join('-')
60
+ end
61
+
62
+ def self.process_erb(source, destination, layout)
63
+ base_name = File.basename(source, '.erb')
64
+ destination_html = "#{destination}/#{base_name}.html"
65
+ puts " #{PURPLE}Parse#{WHITE} #{source} (into #{layout}) -> #{destination_html}"
66
+
67
+ render_template(destination_html, layout, Namespace.new({
68
+ page_name: get_page_name(source),
69
+ content: ERB.new(File.read(source)).result
70
+ }))
71
+ end
72
+
73
+ def self.process_markdown(source, destination, layout)
74
+ base_name = File.basename(source, '.md')
75
+ destination_html = "#{destination}/#{base_name}.html"
76
+ puts " #{PURPLE}Parse#{WHITE} #{source} (into #{layout}) -> #{destination_html}"
77
+
78
+ render_template(destination_html, layout, Namespace.new({
79
+ page_name: get_page_name(source),
80
+ content: MD.render(File.new(source).read)
81
+ }))
82
+ end
83
+
84
+ def self.process_sass(source, destination, type)
85
+ base_name = File.basename(source, File.extname(source))
86
+ destination_css = "#{destination}/#{base_name}.css"
87
+ puts " #{CYAN}Convert#{WHITE} #{source} -> #{destination_css}"
88
+
89
+ File.new(destination_css, 'w').write(
90
+ Sass::Engine.new(File.new(source).read,
91
+ load_paths: [File.dirname(source)],
92
+ syntax: type
93
+ ).render
94
+ )
95
+ end
96
+
97
+ def self.render_template(destination_html, layout, namespace)
98
+ File.new(destination_html, 'w').write(
99
+ ERB.new(File.read(layout)).result(namespace.get_binding)
100
+ )
101
+ end
102
+
78
103
  BLUE = "\033[0;34m"
104
+ CYAN = "\033[0;36m"
79
105
  GREEN = "\033[0;32m"
80
106
  PURPLE = "\033[0;35m"
81
107
  RED = "\033[0;31m"
82
- CYAN = "\033[0;36m"
83
108
  WHITE = "\033[0m"
84
109
 
85
- MARKDOWN = Redcarpet::Markdown.new(PygmentsRenderer,
110
+ MD = Redcarpet::Markdown.new(PygmentsRenderer,
86
111
  disable_indented_code_blocks: true,
87
112
  fenced_code_blocks: true,
88
113
  footnotes: true,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chopin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Forisha