chopin 0.0.5 → 0.0.6

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 (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